ngx-histaff-alpha 2.0.9 → 2.1.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.
package/esm2022/lib/app/libraries/d3/core-statistic-widget/core-statistic-widget.component.mjs
CHANGED
|
@@ -381,8 +381,6 @@ export class CoreStatisticWidgetComponent {
|
|
|
381
381
|
.attr("font-size", this.comparisonValueRectHeight + "px")
|
|
382
382
|
.attr("text-anchor", "middle")
|
|
383
383
|
.attr("alignment-baseline", "middle");
|
|
384
|
-
const startComparisonValue = 0;
|
|
385
|
-
const endComparisonValue = this.comparisonValue;
|
|
386
384
|
switch (this.metric.dataType) {
|
|
387
385
|
case EnumICoreStatisticWidgetDataType.INTEGER:
|
|
388
386
|
comparisonValueText
|
|
@@ -498,6 +496,7 @@ export class CoreStatisticWidgetComponent {
|
|
|
498
496
|
ngAfterViewInit() {
|
|
499
497
|
setTimeout(() => {
|
|
500
498
|
this.drawGraph();
|
|
499
|
+
this.updateMetricComparisonValue();
|
|
501
500
|
});
|
|
502
501
|
}
|
|
503
502
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: CoreStatisticWidgetComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
@@ -548,4 +547,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
|
|
|
548
547
|
type: ViewChild,
|
|
549
548
|
args: ['container']
|
|
550
549
|
}] } });
|
|
551
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS1zdGF0aXN0aWMtd2lkZ2V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1oaXN0YWZmLWFscGhhL3NyYy9saWIvYXBwL2xpYnJhcmllcy9kMy9jb3JlLXN0YXRpc3RpYy13aWRnZXQvY29yZS1zdGF0aXN0aWMtd2lkZ2V0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1oaXN0YWZmLWFscGhhL3NyYy9saWIvYXBwL2xpYnJhcmllcy9kMy9jb3JlLXN0YXRpc3RpYy13aWRnZXQvY29yZS1zdGF0aXN0aWMtd2lkZ2V0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUFjLEtBQUssRUFBNEIsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pILE9BQU8sS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFDOztBQUV6QixNQUFNLENBQU4sSUFBWSxvQkFHWDtBQUhELFdBQVksb0JBQW9CO0lBQzlCLG1FQUEyQyxDQUFBO0lBQzNDLGlFQUF5QyxDQUFBO0FBQzNDLENBQUMsRUFIVyxvQkFBb0IsS0FBcEIsb0JBQW9CLFFBRy9CO0FBU0QsTUFBTSxDQUFOLElBQVksZ0NBSVg7QUFKRCxXQUFZLGdDQUFnQztJQUMxQyx1REFBbUIsQ0FBQTtJQUNuQix1REFBbUIsQ0FBQTtJQUNuQiw2REFBeUIsQ0FBQTtBQUMzQixDQUFDLEVBSlcsZ0NBQWdDLEtBQWhDLGdDQUFnQyxRQUkzQztBQThCRCxNQUFNLE9BQU8sNEJBQTRCO0lBVHpDO1FBYTZCLFVBQUssR0FBVyxFQUFFLENBQUM7UUFDbkIsb0JBQWUsR0FBVyxJQUFJLENBQUM7UUFHakQsV0FBTSxHQUF3QixFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxF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QWE7c0JBQXJCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csc0JBQXNCO3NCQUE5QixLQUFLO2dCQUNHLHNCQUFzQjtzQkFBOUIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUVHLHdCQUF3QjtzQkFBaEMsS0FBSztnQkFDRyx1QkFBdUI7c0JBQS9CLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFFa0IsU0FBUztzQkFBaEMsU0FBUzt1QkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbnB1dCwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0ICogYXMgZDMgZnJvbSAnZDMnO1xyXG5cclxuZXhwb3J0IGVudW0gRW51bUhyQ29tcGFyaXNvbkNvZGUge1xyXG4gIFdJVEhfUFJFVklPVVNfTU9OVEggPSAnV0lUSF9QUkVWSU9VU19NT05USCcsXHJcbiAgV0lUSF9QUkVWSU9VU19ZRUFSID0gJ1dJVEhfUFJFVklPVVNfWUVBUicsXHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUhyTWV0cmljIHtcclxuICBpZDogbnVtYmVyO1xyXG4gIG5hbWU6IHN0cmluZztcclxuICBjb21wYXJpc29uQ29kZTogRW51bUhyQ29tcGFyaXNvbkNvZGU7XHJcbiAgZGF0YVR5cGU6IEVudW1JQ29yZVN0YXRpc3RpY1dpZGdldERhdGFUeXBlO1xyXG59XHJcblxyXG5leHBvcnQgZW51bSBFbnVtSUNvcmVTdGF0aXN0aWNXaWRnZXREYXRhVHlwZSB7XHJcbiAgSU5URUdFUiA9ICdJTlRFR0VSJyxcclxuICBERUNJTUFMID0gJ0RFQ0lNQUwnLFxyXG4gIFBFUkNFTlRBR0UgPSAnUEVSQ0VOVEFHRScsXHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUdyYXBoTWFyZ2luUGFkZGluZyB7XHJcbiAgdG9wOiBudW1iZXI7XHJcbiAgcmlnaHQ6IG51bWJlcjtcclxuICBib3R0b206IG51bWJlcjtcclxuICBsZWZ0OiBudW1iZXI7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUNvcmVTdGF0aXN0aWNXaWRnZXREYXRhc2V0IHtcclxuICB4OiBudW1iZXI7XHJcbiAgeTogbnVtYmVyO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElDb3JlU3RhdGlzdGljV2lkZ2V0SW5wdXRzIHtcclxuICBtZXRyaWM6IElIck1ldHJpYztcclxuICBkYXRhc2V0OiBJQ29yZVN0YXRpc3RpY1dpZGdldERhdGFzZXRbXTtcclxuICB2YWx1ZTogbnVtYmVyO1xyXG4gIGNvbXBhcmlzb25WYWx1ZTogbnVtYmVyO1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2NvcmUtc3RhdGlzdGljLXdpZGdldCcsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcblxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NvcmUtc3RhdGlzdGljLXdpZGdldC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL2NvcmUtc3RhdGlzdGljLXdpZGdldC5jb21wb25lbnQuc2NzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIENvcmVTdGF0aXN0aWNXaWRnZXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQge1xyXG5cclxuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KSBtZXRyaWMhOiBJSHJNZXRyaWM7XHJcbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSkgZGF0YXNldCE6IElDb3JlU3RhdGlzdGljV2lkZ2V0RGF0YXNldFtdO1xyXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pIHZhbHVlOiBudW1iZXIgPSA5NjtcclxuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KSBjb21wYXJpc29uVmFsdWU6IG51bWJlciA9IDAuNTQ7XHJcblxyXG4gIEBJbnB1dCgpIHZhbHVlRm9udFNpemUhOiBudW1iZXI7XHJcbiAgQElucHV0KCkgbWFyZ2luOiBJR3JhcGhNYXJnaW5QYWRkaW5nID0geyB0b3A6IDMwLCByaWdodDogMzAsIGJvdHRvbTogMzAsIGxlZnQ6IDMwIH07XHJcbiAgQElucHV0KCkgcGFkZGluZzogSUdyYXBoTWFyZ2luUGFkZGluZyA9IHsgdG9wOiAzMCwgcmlnaHQ6IDMwLCBib3R0b206IDMwLCBsZWZ0OiAzMCB9O1xyXG4gIEBJbnB1dCgpIG91dGVyV2lkdGg6IG51bWJlciA9IDMyMDtcclxuICBASW5wdXQoKSBvdXRlckhlaWdodDogbnVtYmVyID0gMzIwO1xyXG4gIEBJbnB1dCgpIGRpdmlzb3JMaW5lTWFyZ2luOiBJR3JhcGhNYXJnaW5QYWRkaW5nID0geyB0b3A6IDQsIHJpZ2h0OiA4LCBib3R0b206IDgsIGxlZnQ6IDggfTtcclxuICBASW5wdXQoKSB0aXRsZUZpbGxDb2xvcjogYW55ID0gZDMuY29sb3IoXCJibGFja1wiKTtcclxuICBASW5wdXQoKSBkaXZpc29yTGluZVN0cm9rZUNvbG9yOiBhbnkgPSBkMy5jb2xvcihcImdyYXlcIik7XHJcbiAgQElucHV0KCkgZGl2aXNvckxpbmVTdHJva2VXaWR0aDogbnVtYmVyID0gMztcclxuICBASW5wdXQoKSB2YWx1ZUZpbGxDb2xvcjogYW55ID0gZDMuY29sb3IoXCJibGFja1wiKTtcclxuXHJcbiAgQElucHV0KCkgY29tcGFyaXNvblZhbHVlRmlsbENvbG9yOiBhbnkgPSBkMy5jb2xvcihcImJsYWNrXCIpO1xyXG4gIEBJbnB1dCgpIGNvbXBhcmlzb25UZXh0RmlsbENvbG9yOiBhbnkgPSBkMy5jb2xvcihcImJsYWNrXCIpO1xyXG4gIEBJbnB1dCgpIHNob3dBeGVzOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2NvbnRhaW5lcicpIGNvbnRhaW5lciE6IEVsZW1lbnRSZWY7XHJcblxyXG4gIGlubmVyV2lkdGggPSB0aGlzLm91dGVyV2lkdGggLSB0aGlzLm1hcmdpbi5sZWZ0IC0gdGhpcy5tYXJnaW4ucmlnaHQ7XHJcbiAgaW5uZXJIZWlnaHQgPSB0aGlzLm91dGVySGVpZ2h0IC0gdGhpcy5tYXJnaW4udG9wIC0gdGhpcy5tYXJnaW4uYm90dG9tO1xyXG4gIHdpZHRoID0gdGhpcy5pbm5lcldpZHRoIC0gdGhpcy5wYWRkaW5nLmxlZnQgLSB0aGlzLnBhZGRpbmcucmlnaHQ7XHJcbiAgaGVpZ2h0ID0gdGhpcy5pbm5lckhlaWdodCAtIHRoaXMucGFkZGluZy50b3AgLSB0aGlzLnBhZGRpbmcuYm90dG9tO1xyXG5cclxuICBncmFwaFdpZHRoID0gdGhpcy53aWR0aCAtIHRoaXMuZGl2aXNvckxpbmVNYXJnaW4ubGVmdCAtIHRoaXMuZGl2aXNvckxpbmVNYXJnaW4ucmlnaHQ7XHJcbiAgZ3JhcGhIZWlnaHQgPSB0aGlzLmhlaWdodCAvIDQgLSB0aGlzLmRpdmlzb3JMaW5lTWFyZ2luLmJvdHRvbTtcclxuICB0aXRsZVJlY3RXaWR0aCA9IHRoaXMud2lkdGggLSB0aGlzLmRpdmlzb3JMaW5lTWFyZ2luLmxlZnQgLSB0aGlzLmRpdmlzb3JMaW5lTWFyZ2luLnJpZ2h0O1xyXG4gIHRpdGxlUmVjdEhlaWdodCA9IHRoaXMuZ3JhcGhIZWlnaHQgKiAyIC8gMyAtIHRoaXMuZGl2aXNvckxpbmVNYXJnaW4udG9wICogMjtcclxuICB2YWx1ZVJlY3RXaWR0aCA9IHRoaXMudGl0bGVSZWN0V2lkdGg7XHJcbiAgdmFsdWVSZWN0SGVpZ2h0ID0gdGhpcy5oZWlnaHQgLyAzIC0gdGhpcy5kaXZpc29yTGluZU1hcmdpbi5ib3R0b207XHJcbiAgY29tcGFyaXNvblZhbHVlUmVjdFdpZHRoID0gdGhpcy50aXRsZVJlY3RXaWR0aDtcclxuICBjb21wYXJpc29uVmFsdWVSZWN0SGVpZ2h0ID0gKHRoaXMuaGVpZ2h0IC8gNCAtIHRoaXMuZGl2aXNvckxpbmVNYXJnaW4uYm90dG9tKSAvIDI7XHJcbiAgY29tcGFyaXNvblRleHRSZWN0V2lkdGggPSB0aGlzLnRpdGxlUmVjdFdpZHRoO1xyXG4gIGNvbXBhcmlzb25UZXh0UmVjdEhlaWdodCA9ICh0aGlzLmhlaWdodCAvIDQgLSB0aGlzLmRpdmlzb3JMaW5lTWFyZ2luLmJvdHRvbSkgLyAyO1xyXG5cclxuICB4ID0gZDMuc2NhbGVMaW5lYXIoKS5yYW5nZShbMCwgdGhpcy5ncmFwaFdpZHRoXSk7XHJcbiAgeSA9IGQzLnNjYWxlTGluZWFyKCkucmFuZ2UoW3RoaXMuZ3JhcGhIZWlnaHQsIDBdKTtcclxuXHJcbiAgcHJpdmF0ZSBwcmV2aW91c1ZhbHVlOiBudW1iZXIgPSAwO1xyXG4gIHByaXZhdGUgcHJldmlvdXNDb21wYXJpc29uVmFsdWU6IG51bWJlciA9IDA7XHJcblxyXG4gIC8vVG8gcmVtb3ZlIG9ubHkgdGhlIG51bWJlcnMgd2hpbGUga2VlcGluZyB0aGUgdGlja3Mgb24gdGhlIGF4ZXMsIFxyXG4gIC8veW91IGNhbiBzZWxlY3QgdGhlIHRleHQgZWxlbWVudHMgb2YgdGhlIHRpY2tzIGFuZCBoaWRlIHRoZW0gdXNpbmcgQ1NTLiBcclxuICAvL0hlcmUncyBob3cgeW91IGNhbiBtb2RpZnkgdGhlIGNvZGUgdG8gYWNoaWV2ZSB0aGF0OlxyXG5cclxuICB4QXhpc0NhbGwgPSBkMy5heGlzQm90dG9tKHRoaXMueClcclxuICAgIC50aWNrU2l6ZUlubmVyKDEwKSAvLyBBZGp1c3QgdGhlIGxlbmd0aCBvZiB0aGUgdGlja3MgYXMgbmVlZGVkXHJcbiAgICAudGlja1NpemVPdXRlcigwKTsgLy8gSGlkZSBvdXRlciB0aWNrc1xyXG5cclxuICB5QXhpc0NhbGwgPSBkMy5heGlzTGVmdCh0aGlzLnkpXHJcbiAgICAudGlja1NpemVJbm5lcigxMCkgLy8gQWRqdXN0IHRoZSBsZW5ndGggb2YgdGhlIHRpY2tzIGFzIG5lZWRlZFxyXG4gICAgLnRpY2tTaXplT3V0ZXIoMTApOyAvLyBIaWRlIG91dGVyIHRpY2tzXHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIGlmICghIWNoYW5nZXNbJ21ldHJpYyddKSB7XHJcbiAgICAgIHRoaXMudXBkYXRlTWV0cmljTmFtZSgpO1xyXG4gICAgICB0aGlzLnVwZGF0ZU1ldHJpY1ZhbHVlKCk7XHJcbiAgICAgIHRoaXMudXBkYXRlTWV0cmljQ29tcGFyaXNvblZhbHVlKCk7XHJcbiAgICAgIHRoaXMudXBkYXRlTWV0cmljQ29tcGFyaXNvblRleHQoKTtcclxuICAgIH1cclxuICAgIGlmICghIWNoYW5nZXNbJ2RhdGFzZXQnXSkge1xyXG4gICAgICB0aGlzLnVwZGF0ZURhdGFzZXQoKTtcclxuICAgIH1cclxuICAgIGlmICghIWNoYW5nZXNbJ3ZhbHVlJ10pIHtcclxuICAgICAgdGhpcy51cGRhdGVNZXRyaWNWYWx1ZSgpO1xyXG4gICAgfVxyXG4gICAgaWYgKCEhY2hhbmdlc1snY29tcGFyaXNvblZhbHVlJ10pIHtcclxuICAgICAgdGhpcy51cGRhdGVNZXRyaWNDb21wYXJpc29uVmFsdWUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHVwZGF0ZU1ldHJpY05hbWUoKTogdm9pZCB7XHJcbiAgICB2YXIgbmFtZUVsZW1lbnQgPSBkMy5zZWxlY3QoXCIjbWV0cmljX1wiICsgdGhpcy5tZXRyaWMuaWQgKyBcIl9uYW1lXCIpXHJcbiAgICBuYW1lRWxlbWVudC50cmFuc2l0aW9uKCkudGV4dCh0aGlzLm1ldHJpYy5uYW1lKTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZU1ldHJpY1ZhbHVlKCk6IHZvaWQge1xyXG4gICAgdmFyIHZhbHVlRWxlbWVudCA9IGQzLnNlbGVjdChcIiNtZXRyaWNfXCIgKyB0aGlzLm1ldHJpYy5pZCArIFwiX3ZhbHVlXCIpO1xyXG4gICAgY29uc3Qgc3RhcnQgPSB0aGlzLnByZXZpb3VzVmFsdWU7XHJcbiAgICBjb25zdCBlbmQgPSB0aGlzLnZhbHVlO1xyXG4gICAgc3dpdGNoICh0aGlzLm1ldHJpYy5kYXRhVHlwZSkge1xyXG4gICAgICBjYXNlIEVudW1JQ29yZVN0YXRpc3RpY1dpZGdldERhdGFUeXBlLklOVEVHRVI6XHJcbiAgICAgICAgdmFsdWVFbGVtZW50XHJcbiAgICAgICAgICAudHJhbnNpdGlvbigpXHJcbiAgICAgICAgICAudHdlZW4oXCJ0ZXh0XCIsICgpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgaW50ZXJwb2xhdG9yID0gZDMuaW50ZXJwb2xhdGVOdW1iZXIoc3RhcnQsIGVuZCk7XHJcbiAgICAgICAgICAgIHJldHVybiB0ID0+IHtcclxuICAgICAgICAgICAgICB2YWx1ZUVsZW1lbnQudGV4dChNYXRoLnJvdW5kKGludGVycG9sYXRvcih0KSkpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICAuZHVyYXRpb24oNTAwKVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIEVudW1JQ29yZVN0YXRpc3RpY1dpZGdldERhdGFUeXBlLkRFQ0lNQUw6XHJcbiAgICAgICAgdmFsdWVFbGVtZW50XHJcbiAgICAgICAgICAudHJhbnNpdGlvbigpXHJcbiAgICAgICAgICAudHdlZW4oXCJ0ZXh0XCIsICgpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgaW50ZXJwb2xhdG9yID0gZDMuaW50ZXJwb2xhdGVOdW1iZXIoc3RhcnQsIGVuZCk7XHJcbiAgICAgICAgICAgIHJldHVybiB0ID0+IHtcclxuICAgICAgICAgICAgICB2YWx1ZUVsZW1lbnQudGV4dChNYXRoLnJvdW5kKGludGVycG9sYXRvcih0KSAqIDEwMCkgLyAxMDApXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICAuZHVyYXRpb24oNTAwKVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIEVudW1JQ29yZVN0YXRpc3RpY1dpZGdldERhdGFUeXBlLlBFUkNFTlRBR0U6XHJcbiAgICAgICAgdmFsdWVFbGVtZW50XHJcbiAgICAgICAgICAudHJhbnNpdGlvbigpXHJcbiAgICAgICAgICAudHdlZW4oXCJ0ZXh0XCIsICgpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgaW50ZXJwb2xhdG9yID0gZDMuaW50ZXJwb2xhdGVOdW1iZXIoc3RhcnQsIGVuZCk7XHJcbiAgICAgICAgICAgIHJldHVybiB0ID0+IHtcclxuICAgICAgICAgICAgICB2YWx1ZUVsZW1lbnQudGV4dChNYXRoLnJvdW5kKGludGVycG9sYXRvcih0KSAqIDEwMDAwKSAvIDEwMCArIFwiJVwiKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgLmR1cmF0aW9uKDUwMClcclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICB2YWx1ZUVsZW1lbnQudHJhbnNpdGlvbigpLnRleHQodGhpcy52YWx1ZS50b1N0cmluZygpKTtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIHRoaXMucHJldmlvdXNWYWx1ZSA9IHRoaXMudmFsdWU7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVNZXRyaWNDb21wYXJpc29uVmFsdWUoKTogdm9pZCB7XHJcbiAgICBjb25zdCBzdGFydCA9IHRoaXMucHJldmlvdXNDb21wYXJpc29uVmFsdWU7XHJcbiAgICBjb25zdCBlbmQgPSB0aGlzLmNvbXBhcmlzb25WYWx1ZTtcclxuICAgIHZhciBjb21wYXJpc29uVmFsdWVFbGVtZW50ID0gZDMuc2VsZWN0KFwiI21ldHJpY19cIiArIHRoaXMubWV0cmljLmlkICsgXCJfY29tcGFyaXNvblZhbHVlXCIpO1xyXG4gICAgY29tcGFyaXNvblZhbHVlRWxlbWVudC5hdHRyKFwiZmlsbFwiLCB0aGlzLmNvbXBhcmlzb25WYWx1ZSA+PSAwID8gdGhpcy5jb21wYXJpc29uVGV4dEZpbGxDb2xvciA6IGQzLmNvbG9yKFwicmVkXCIpKTtcclxuICAgIHN3aXRjaCAodGhpcy5tZXRyaWMuZGF0YVR5cGUpIHtcclxuICAgICAgY2FzZSBFbnVtSUNvcmVTdGF0aXN0aWNXaWRnZXREYXRhVHlwZS5JTlRFR0VSOlxyXG4gICAgICAgIGNvbXBhcmlzb25WYWx1ZUVsZW1lbnRcclxuICAgICAgICAgIC50cmFuc2l0aW9uKClcclxuICAgICAgICAgIC50d2VlbihcInRleHRcIiwgKCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBpbnRlcnBvbGF0b3IgPSBkMy5pbnRlcnBvbGF0ZU51bWJlcihzdGFydCwgZW5kKTtcclxuICAgICAgICAgICAgcmV0dXJuIHQgPT4ge1xyXG4gICAgICAgICAgICAgIGNvbXBhcmlzb25WYWx1ZUVsZW1lbnQudGV4dChNYXRoLnJvdW5kKGludGVycG9sYXRvcih0KSkpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICAuZHVyYXRpb24oNTAwKVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIEVudW1JQ29yZVN0YXRpc3RpY1dpZGdldERhdGFUeXBlLkRFQ0lNQUw6XHJcbiAgICAgICAgY29tcGFyaXNvblZhbHVlRWxlbWVudFxyXG4gICAgICAgICAgLnRyYW5zaXRpb24oKVxyXG4gICAgICAgICAgLnR3ZWVuKFwidGV4dFwiLCAoKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGludGVycG9sYXRvciA9IGQzLmludGVycG9sYXRlTnVtYmVyKHN0YXJ0LCBlbmQpO1xyXG4gICAgICAgICAgICByZXR1cm4gdCA9PiB7XHJcbiAgICAgICAgICAgICAgY29tcGFyaXNvblZhbHVlRWxlbWVudC50ZXh0KE1hdGgucm91bmQoaW50ZXJwb2xhdG9yKHQpICogMTAwKSAvIDEwMClcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgIC5kdXJhdGlvbig1MDApXHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgRW51bUlDb3JlU3RhdGlzdGljV2lkZ2V0RGF0YVR5cGUuUEVSQ0VOVEFHRTpcclxuICAgICAgICBjb21wYXJpc29uVmFsdWVFbGVtZW50XHJcbiAgICAgICAgICAudHJhbnNpdGlvbigpXHJcbiAgICAgICAgICAudHdlZW4oXCJ0ZXh0XCIsICgpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgaW50ZXJwb2xhdG9yID0gZDMuaW50ZXJwb2xhdGVOdW1iZXIoc3RhcnQsIGVuZCk7XHJcbiAgICAgICAgICAgIHJldHVybiB0ID0+IHtcclxuICAgICAgICAgICAgICBjb21wYXJpc29uVmFsdWVFbGVtZW50LnRleHQoTWF0aC5yb3VuZChpbnRlcnBvbGF0b3IodCkgKiAxMDAwMCkgLyAxMDAgKyBcIiVcIilcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgIC5kdXJhdGlvbig1MDApXHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgY29tcGFyaXNvblZhbHVlRWxlbWVudC50cmFuc2l0aW9uKCkudGV4dCh0aGlzLmNvbXBhcmlzb25WYWx1ZS50b1N0cmluZygpKTtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHVwZGF0ZU1ldHJpY0NvbXBhcmlzb25UZXh0KCk6IHZvaWQge1xyXG4gICAgdmFyIGNvbXBhcmlzb25UZXh0RWxlbWVudCA9IGQzLnNlbGVjdChcIiNtZXRyaWNfXCIgKyB0aGlzLm1ldHJpYy5pZCArIFwiX2NvbXBhcmlzb25UZXh0XCIpO1xyXG4gICAgc3dpdGNoICh0aGlzLm1ldHJpYy5jb21wYXJpc29uQ29kZSkge1xyXG4gICAgICBjYXNlIEVudW1IckNvbXBhcmlzb25Db2RlLldJVEhfUFJFVklPVVNfTU9OVEg6XHJcbiAgICAgICAgY29tcGFyaXNvblRleHRFbGVtZW50LnRleHQoXCJ2cy4gcHJldmlvdXMgbW9udGhcIik7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgRW51bUhyQ29tcGFyaXNvbkNvZGUuV0lUSF9QUkVWSU9VU19ZRUFSOlxyXG4gICAgICAgIGNvbXBhcmlzb25UZXh0RWxlbWVudC50ZXh0KFwidnMuIHByZXZpb3VzIHllYXJcIik7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgY29tcGFyaXNvblRleHRFbGVtZW50LnRleHQoXCItXCIpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdXBkYXRlRGF0YXNldCgpOiB2b2lkIHtcclxuXHJcbiAgICBjb25zdCBtaW5Qb2ludCA9IHRoaXMuZGF0YXNldC5yZWR1Y2UoKG1pbiwgY3VycmVudCkgPT4gY3VycmVudC55IDwgbWluLnkgPyBjdXJyZW50IDogbWluKTtcclxuICAgIGNvbnN0IG1heFBvaW50ID0gdGhpcy5kYXRhc2V0LnJlZHVjZSgobWF4LCBjdXJyZW50KSA9PiBjdXJyZW50LnkgPiBtYXgueSA/IGN1cnJlbnQgOiBtYXgpO1xyXG5cclxuICAgIC8vIFVwZGF0ZSBzY2FsZXNcclxuICAgIGNvbnN0IHhTY2FsZSA9IGQzLnNjYWxlTGluZWFyKClcclxuICAgICAgLmRvbWFpbihbMCwgZDMubWF4KHRoaXMuZGF0YXNldCwgZCA9PiBkLngpXSlcclxuICAgICAgLnJhbmdlKFswLCB0aGlzLmdyYXBoV2lkdGhdKTtcclxuXHJcbiAgICBjb25zdCB5U2NhbGUgPSBkMy5zY2FsZUxpbmVhcigpXHJcbiAgICAgIC5kb21haW4oW21pblBvaW50LnksIG1heFBvaW50LnldKVxyXG4gICAgICAucmFuZ2UoW3RoaXMuZ3JhcGhIZWlnaHQsIDBdKTtcclxuXHJcbiAgICBjb25zdCB4QXhpc0NhbGwgPSBkMy5heGlzQm90dG9tKHhTY2FsZSlcclxuICAgICAgLnRpY2tTaXplSW5uZXIoMTApIC8vIEFkanVzdCB0aGUgbGVuZ3RoIG9mIHRoZSB0aWNrcyBhcyBuZWVkZWRcclxuICAgICAgLnRpY2tTaXplT3V0ZXIoMCk7IC8vIEhpZGUgb3V0ZXIgdGlja3NcclxuXHJcbiAgICBjb25zdCB5QXhpc0NhbGwgPSBkMy5heGlzTGVmdCh5U2NhbGUpXHJcbiAgICAgIC50aWNrU2l6ZUlubmVyKDEwKSAvLyBBZGp1c3QgdGhlIGxlbmd0aCBvZiB0aGUgdGlja3MgYXMgbmVlZGVkXHJcbiAgICAgIC50aWNrU2l6ZU91dGVyKDEwKTsgLy8gRG8gbm90IGhpZGUgb3V0ZXIgdGlja3NcclxuXHJcbiAgICAvLyBVcGRhdGUgYXhlc1xyXG4gICAgLy94QXhpcy5jYWxsKHhBeGlzQ2FsbCk7XHJcbiAgICAvL3lBeGlzLmNhbGwoeUF4aXNDYWxsKTtcclxuXHJcbiAgICAvLyBVcGRhdGUgY29ubmVjdGluZyBsaW5lXHJcbiAgICB0aGlzLmNvbm5lY3RpbmdMaW5lID0gZDMubGluZSgpXHJcbiAgICAgIC54KGQgPT4geFNjYWxlKGQueCkpXHJcbiAgICAgIC55KGQgPT4geVNjYWxlKGQueSkpXHJcbiAgICAgIC5kZWZpbmVkKChkLCBpKSA9PiBpID49IDAgJiYgaSA8IHRoaXMuZGF0YXNldC5sZW5ndGgpO1xyXG5cclxuICAgIGQzLnNlbGVjdChcIiNtZXRyaWNfXCIgKyB0aGlzLm1ldHJpYy5pZCArIFwiX3NjYXR0ZXItcGxvdFwiKS5zZWxlY3QoXCJwYXRoXCIpXHJcbiAgICAgIC5kYXR1bSh0aGlzLmRhdGFzZXQpXHJcbiAgICAgIC50cmFuc2l0aW9uKClcclxuICAgICAgLmR1cmF0aW9uKDUwMClcclxuICAgICAgLmF0dHIoXCJkXCIsIHRoaXMuY29ubmVjdGluZ0xpbmUpO1xyXG5cclxuICAgIC8vIFVwZGF0ZSBjaXJjbGVzXHJcbiAgICBjb25zdCBjaXJjbGVzID0gZDMuc2VsZWN0KFwiI21ldHJpY19cIiArIHRoaXMubWV0cmljLmlkICsgXCJfc2NhdHRlci1wbG90XCIpLnNlbGVjdEFsbChcImNpcmNsZVwiKVxyXG4gICAgICAuZGF0YSh0aGlzLmRhdGFzZXQpO1xyXG5cclxuICAgIGNpcmNsZXMuZXhpdCgpLnJlbW92ZSgpO1xyXG5cclxuICAgIGNpcmNsZXMuZW50ZXIoKVxyXG4gICAgICAuYXBwZW5kKFwiY2lyY2xlXCIpXHJcbiAgICAgIC5tZXJnZShjaXJjbGVzKVxyXG4gICAgICAudHJhbnNpdGlvbigpXHJcbiAgICAgIC5kdXJhdGlvbig1MDApXHJcbiAgICAgIC5hdHRyKFwiY3hcIiwgZCA9PiB4U2NhbGUoZC54KSlcclxuICAgICAgLmF0dHIoXCJjeVwiLCBkID0+IHlTY2FsZShkLnkpKVxyXG4gICAgICAuYXR0cihcInJcIiwgNSlcclxuICAgICAgLmF0dHIoXCJmaWxsXCIsIGQgPT4ge1xyXG4gICAgICAgIGlmIChkID09PSBtaW5Qb2ludCkgcmV0dXJuIFwiI0ZGOEMwMFwiOyAvLyBTZXQgbG93ZXN0IHBvaW50IHRvICNGRjhDMDBcclxuICAgICAgICBpZiAoZCA9PT0gbWF4UG9pbnQpIHJldHVybiBcIiMzMTU4OTdcIjsgLy8gU2V0IGhpZ2hlc3QgcG9pbnQgdG8gIzMxNTg5N1xyXG4gICAgICAgIHJldHVybiBcIm5vbmVcIjsgLy8gTWFrZSB0aGUgb3RoZXIgcG9pbnRzIHRyYW5zcGFyZW50XHJcbiAgICAgIH0pXHJcbiAgICAgIC5hdHRyKFwic3Ryb2tlXCIsIGZ1bmN0aW9uIChkKSB7XHJcbiAgICAgICAgaWYgKGQgPT09IG1pblBvaW50KSByZXR1cm4gZDMuY29sb3IoXCIjRkY4QzAwXCIpLmRhcmtlcigwLjIpOyAvLyBEYXJrZW4gI0ZGOEMwMCBjb2xvclxyXG4gICAgICAgIGlmIChkID09PSBtYXhQb2ludCkgcmV0dXJuIGQzLmNvbG9yKFwiIzMxNTg5N1wiKS5kYXJrZXIoMC4yKTsgLy8gRGFya2VuICMzMTU4OTcgY29sb3JcclxuICAgICAgICByZXR1cm4gXCJub25lXCI7IC8vIE5vIHN0cm9rZSBmb3Igb3RoZXIgcG9pbnRzXHJcbiAgICAgIH0pXHJcbiAgICAgIC5hdHRyKFwic3Ryb2tlLXdpZHRoXCIsIDMpOyAvLyBTZXQgc3Ryb2tlIHdpZHRoXHJcbiAgfVxyXG5cclxuICBzdmc6IGFueTtcclxuICBpbm5lckdyb3VwOiBhbnk7XHJcbiAgZ3JlZW5Hcm91cDogYW55O1xyXG4gIHRpdGxlR3JvdXA6IGFueTtcclxuICB2YWx1ZUdyb3VwOiBhbnk7XHJcbiAgdmFsdWVUZXh0OiBhbnk7XHJcbiAgZ3JheUdyb3VwOiBhbnk7XHJcbiAgY29tcGFyaXNvblZhbHVlR3JvdXA6IGFueTtcclxuICBjb21wYXJpc29uVGV4dEdyb3VwOiBhbnk7XHJcbiAgY29tcGFyaXNvblZhbHVlVGV4dDogYW55O1xyXG4gIGNvbXBhcmlzb25UZXh0VGV4dDogYW55O1xyXG4gIGNvbm5lY3RpbmdMaW5lOiBhbnk7XHJcblxyXG4gIGludGVydmFsSWQ6IGFueTtcclxuXHJcbiAgYXN5bmMgZHJhd0dyYXBoKCkge1xyXG4gICAgdGhpcy5zdmcgPSBkMy5zZWxlY3QodGhpcy5jb250YWluZXIubmF0aXZlRWxlbWVudClcclxuICAgICAgLmFwcGVuZChcInN2Z1wiKVxyXG4gICAgICAuYXR0cihcIndpZHRoXCIsIHRoaXMub3V0ZXJXaWR0aClcclxuICAgICAgLmF0dHIoXCJoZWlnaHRcIiwgdGhpcy5vdXRlckhlaWdodCk7XHJcblxyXG4gICAgdGhpcy5zdmcuYXBwZW5kKFwicmVjdFwiKVxyXG4gICAgICAuYXR0cihcIndpZHRoXCIsIHRoaXMub3V0ZXJXaWR0aClcclxuICAgICAgLmF0dHIoXCJoZWlnaHRcIiwgdGhpcy5vdXRlckhlaWdodClcclxuICAgICAgLmF0dHIoXCJmaWxsXCIsIFwidHJhbnNwYXJlbnRcIik7XHJcblxyXG4gICAgdGhpcy5pbm5lckdyb3VwID0gdGhpcy5zdmcuYXBwZW5kKFwiZ1wiKVxyXG4gICAgICAuYXR0cihcInRyYW5zZm9ybVwiLCBcInRyYW5zbGF0ZShcIiArIHRoaXMubWFyZ2luLmxlZnQgKyBcIixcIiArIHRoaXMubWFyZ2luLnRvcCArIFwiKVwiKTtcclxuXHJcbiAgICB0aGlzLmlubmVyR3JvdXAuYXBwZW5kKFwicmVjdFwiKVxyXG4gICAgICAuYXR0cihcImNsYXNzXCIsIFwiYmx1ZS1yZWN0XCIpXHJcbiAgICAgIC5hdHRyKFwiZmlsbFwiLCBcInRyYW5zcGFyZW50XCIpXHJcbiAgICAgIC5hdHRyKFwid2lkdGhcIiwgdGhpcy5pbm5lcldpZHRoKVxyXG4gICAgICAuYXR0cihcImhlaWdodFwiLCB0aGlzLmlubmVySGVpZ2h0KTtcclxuXHJcbiAgICB0aGlzLmdyZWVuR3JvdXAgPSB0aGlzLmlubmVyR3JvdXAuYXBwZW5kKFwiZ1wiKVxyXG4gICAgICAuYXR0cihcInRyYW5zZm9ybVwiLCBcInRyYW5zbGF0ZShcIiArIHRoaXMucGFkZGluZy5sZWZ0ICsgXCIsXCIgKyB0aGlzLnBhZGRpbmcudG9wICsgXCIpXCIpO1xyXG5cclxuICAgIHRoaXMuZ3JlZW5Hcm91cC5hcHBlbmQoXCJyZWN0XCIpXHJcbiAgICAgIC5hdHRyKFwiY2xhc3NcIiwgXCJncmVlbi1yZWN0XCIpXHJcbiAgICAgIC5hdHRyKFwiZmlsbFwiLCBcInRyYW5zcGFyZW50XCIpXHJcbiAgICAgIC5hdHRyKFwid2lkdGhcIiwgdGhpcy53aWR0aClcclxuICAgICAgLmF0dHIoXCJoZWlnaHRcIiwgdGhpcy5oZWlnaHQpO1xyXG5cclxuICAgIHRoaXMudGl0bGVHcm91cCA9IHRoaXMuZ3JlZW5Hcm91cC5hcHBlbmQoXCJnXCIpXHJcbiAgICAgIC5hdHRyKFwiY2xhc3NcIiwgXCJ0aXRsZS1ncm91cFwiKVxyXG4gICAgICAuYXR0cihcInRyYW5zZm9ybVwiLCBcInRyYW5zbGF0ZShcIiArIHRoaXMuZGl2aXNvckxpbmVNYXJnaW4ubGVmdCArIFwiLFwiICsgdGhpcy5kaXZpc29yTGluZU1hcmdpbi50b3AgKyBcIilcIik7XHJcblxyXG4gICAgdGhpcy50aXRsZUdyb3VwLmFwcGVuZChcInJlY3RcIilcclxuICAgICAgLmF0dHIoXCJzdHJva2VcIiwgXCJ0cmFuc3BhcmVudFwiKVxyXG4gICAgICAuYXR0cihcImZpbGxcIiwgXCJ0cmFuc3BhcmVudFwiKVxyXG4gICAgICAuYXR0cihcImNsYXNzXCIsIFwidGl0bGUtcmVjdFwiKVxyXG4gICAgICAuYXR0cihcIndpZHRoXCIsIHRoaXMudGl0bGVSZWN0V2lkdGgpXHJcbiAgICAgIC5hdHRyKFwiaGVpZ2h0XCIsIHRoaXMudGl0bGVSZWN0SGVpZ2h0KTtcclxuXHJcbiAgICB0aGlzLnRpdGxlR3JvdXAuYXBwZW5kKFwidGV4dFwiKVxyXG4gICAgICAuYXR0cihcImlkXCIsIFwibWV0cmljX1wiICsgdGhpcy5tZXRyaWMuaWQgKyBcIl9uYW1lXCIpXHJcbiAgICAgIC5hdHRyKFwieFwiLCB0aGlzLnRpdGxlUmVjdFdpZHRoIC8gMilcclxuICAgICAgLmF0dHIoXCJ5XCIsIHRoaXMudGl0bGVSZWN0SGVpZ2h0IC8gMilcclxuICAgICAgLmF0dHIoXCJjbGFzc1wiLCBcImdyYXBoLXRpdGxlXCIpXHJcbiAgICAgIC5hdHRyKFwiZmlsbFwiLCB0aGlzLnRpdGxlRmlsbENvbG9yKVxyXG4gICAgICAuYXR0cihcImZvbnQtc2l6ZVwiLCB0aGlzLnRpdGxlUmVjdEhlaWdodClcclxuICAgICAgLmF0dHIoXCJ0ZXh0LWFuY2hvclwiLCBcIm1pZGRsZVwiKVxyXG4gICAgICAuYXR0cihcImFsaWdubWVudC1iYXNlbGluZVwiLCBcIm1pZGRsZVwiKVxyXG4gICAgICAudGV4dCh0aGlzLm1ldHJpYy5uYW1lKTtcclxuXHJcbiAgICB0aGlzLmdyZWVuR3JvdXAuYXBwZW5kKFwibGluZVwiKVxyXG4gICAgICAuYXR0cihcIngxXCIsIHRoaXMuZGl2aXNvckxpbmVNYXJnaW4ubGVmdClcclxuICAgICAgLmF0dHIoXCJ5MVwiLCB0aGlzLmdyYXBoSGVpZ2h0ICogMiAvIDMpXHJcbiAgICAgIC5hdHRyKFwieDJcIiwgdGhpcy53aWR0aCAtIHRoaXMuZGl2aXNvckxpbmVNYXJnaW4ucmlnaHQpXHJcbiAgICAgIC5hdHRyKFwieTJcIiwgdGhpcy5ncmFwaEhlaWdodCAqIDIgLyAzKVxyXG4gICAgICAuYXR0cihcInN0cm9rZVwiLCB0aGlzLmRpdmlzb3JMaW5lU3Ryb2tlQ29sb3IpXHJcbiAgICAgIC5hdHRyKFwic3Ryb2tlLXdpZHRoXCIsIHRoaXMuZGl2aXNvckxpbmVTdHJva2VXaWR0aCk7XHJcblxyXG4gICAgY29uc3QgdmFsdWVHcm91cFRyYW5zbGF0ZVkgPSB0aGlzLmhlaWdodCAvIDIgLyAzICsgdGhpcy5kaXZpc29yTGluZU1hcmdpbi5ib3R0b207XHJcbiAgICB0aGlzLnZhbHVlR3JvdXAgPSB0aGlzLmdyZWVuR3JvdXAuYXBwZW5kKFwiZ1wiKVxyXG4gICAgICAuYXR0cihcImNsYXNzXCIsIFwidmFsdWUtZ3JvdXBcIilcclxuICAgICAgLmF0dHIoXCJ0cmFuc2Zvcm1cIiwgXCJ0cmFuc2xhdGUoXCIgKyB0aGlzLmRpdmlzb3JMaW5lTWFyZ2luLmxlZnQgKyBcIixcIiArIHZhbHVlR3JvdXBUcmFuc2xhdGVZICsgXCIpXCIpO1xyXG5cclxuICAgIHRoaXMudmFsdWVHcm91cC5hcHBlbmQoXCJyZWN0XCIpXHJcbiAgICAgIC5hdHRyKFwic3Ryb2tlXCIsIFwidHJhbnNwYXJlbnRcIilcclxuICAgICAgLmF0dHIoXCJmaWxsXCIsIFwidHJhbnNwYXJlbnRcIilcclxuICAgICAgLmF0dHIoXCJjbGFzc1wiLCBcInZhbHVlLXJlY3RcIilcclxuICAgICAgLmF0dHIoXCJ3aWR0aFwiLCB0aGlzLnZhbHVlUmVjdFdpZHRoKVxyXG4gICAgICAuYXR0cihcImhlaWdodFwiLCB0aGlzLnZhbHVlUmVjdEhlaWdodCk7XHJcblxyXG4gICAgdGhpcy52YWx1ZVRleHQgPSB0aGlzLnZhbHVlR3JvdXAuYXBwZW5kKFwidGV4dFwiKVxyXG4gICAgICAuYXR0cihcImlkXCIsIFwibWV0cmljX1wiICsgdGhpcy5tZXRyaWMuaWQgKyBcIl92YWx1ZVwiKVxyXG4gICAgICAuYXR0cihcInhcIiwgdGhpcy52YWx1ZVJlY3RXaWR0aCAvIDIpXHJcbiAgICAgIC5hdHRyKFwieVwiLCB0aGlzLnZhbHVlUmVjdEhlaWdodCAvIDIpXHJcbiAgICAgIC5hdHRyKFwiY2xhc3NcIiwgXCJncmFwaC12YWx1ZVwiKVxyXG4gICAgICAuYXR0cihcImZpbGxcIiwgdGhpcy52YWx1ZUZpbGxDb2xvcilcclxuICAgICAgLmF0dHIoXCJmb250LXNpemVcIiwgKHRoaXMudmFsdWVGb250U2l6ZSB8fCB0aGlzLnZhbHVlUmVjdEhlaWdodCkgKyBcInB4XCIpXHJcbiAgICAgIC5hdHRyKFwidGV4dC1hbmNob3JcIiwgXCJtaWRkbGVcIilcclxuICAgICAgLmF0dHIoXCJhbGlnbm1lbnQtYmFzZWxpbmVcIiwgXCJtaWRkbGVcIik7XHJcblxyXG4gICAgY29uc3Qgc3RhcnRWYWx1ZSA9IDA7XHJcbiAgICBjb25zdCBlbmRWYWx1ZSA9IHRoaXMudmFsdWU7XHJcbiAgICBzd2l0Y2ggKHRoaXMubWV0cmljLmRhdGFUeXBlKSB7XHJcbiAgICAgIGNhc2UgRW51bUlDb3JlU3RhdGlzdGljV2lkZ2V0RGF0YVR5cGUuSU5URUdFUjpcclxuICAgICAgICB0aGlzLnZhbHVlVGV4dFxyXG4gICAgICAgICAgLnRyYW5zaXRpb24oKVxyXG4gICAgICAgICAgLnR3ZWVuKFwidGV4dFwiLCAoKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGludGVycG9sYXRvciA9IGQzLmludGVycG9sYXRlTnVtYmVyKHN0YXJ0VmFsdWUsIGVuZFZhbHVlKTtcclxuICAgICAgICAgICAgcmV0dXJuIHQgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMudmFsdWVUZXh0LnRleHQoTWF0aC5yb3VuZChpbnRlcnBvbGF0b3IodCkpKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgLmR1cmF0aW9uKDUwMClcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBFbnVtSUNvcmVTdGF0aXN0aWNXaWRnZXREYXRhVHlwZS5ERUNJTUFMOlxyXG4gICAgICAgIHRoaXMudmFsdWVUZXh0XHJcbiAgICAgICAgICAudHJhbnNpdGlvbigpXHJcbiAgICAgICAgICAudHdlZW4oXCJ0ZXh0XCIsICgpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgaW50ZXJwb2xhdG9yID0gZDMuaW50ZXJwb2xhdGVOdW1iZXIoc3RhcnRWYWx1ZSwgZW5kVmFsdWUpO1xyXG4gICAgICAgICAgICByZXR1cm4gdCA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy52YWx1ZVRleHQudGV4dChNYXRoLnJvdW5kKGludGVycG9sYXRvcih0KSAqIDEwMCkgLyAxMDApXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICAuZHVyYXRpb24oNTAwKVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIEVudW1JQ29yZVN0YXRpc3RpY1dpZGdldERhdGFUeXBlLlBFUkNFTlRBR0U6XHJcbiAgICAgICAgdGhpcy52YWx1ZVRleHRcclxuICAgICAgICAgIC50cmFuc2l0aW9uKClcclxuICAgICAgICAgIC50d2VlbihcInRleHRcIiwgKCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBpbnRlcnBvbGF0b3IgPSBkMy5pbnRlcnBvbGF0ZU51bWJlcihzdGFydFZhbHVlLCBlbmRWYWx1ZSk7XHJcbiAgICAgICAgICAgIHJldHVybiB0ID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLnZhbHVlVGV4dC50ZXh0KE1hdGgucm91bmQoaW50ZXJwb2xhdG9yKHQpICogMTAwMDApIC8gMTAwICsgXCIlXCIpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICAuZHVyYXRpb24oNTAwKVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHRoaXMudmFsdWVUZXh0LnRleHQodGhpcy52YWx1ZS50b1N0cmluZygpKTtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIHRoaXMucHJldmlvdXNWYWx1ZSA9IHRoaXMudmFsdWU7XHJcblxyXG4gICAgdGhpcy5ncmF5R3JvdXAgPSB0aGlzLmdyZWVuR3JvdXAuYXBwZW5kKFwiZ1wiKVxyXG4gICAgICAuYXR0cihcImlkXCIsIFwibWV0cmljX1wiICsgdGhpcy5tZXRyaWMuaWQgKyBcIl9zY2F0dGVyLXBsb3RcIilcclxuICAgICAgLmF0dHIoXCJ0cmFuc2Zvcm1cIiwgXCJ0cmFuc2xhdGUoXCIgKyB0aGlzLmRpdmlzb3JMaW5lTWFyZ2luLmxlZnQgKyBcIiwgXCIgKyB0aGlzLmhlaWdodCAvIDIgKyBcIilcIik7XHJcblxyXG4gICAgdGhpcy5ncmF5R3JvdXAuYXBwZW5kKFwicmVjdFwiKVxyXG4gICAgICAuYXR0cihcImNsYXNzXCIsIFwiZ3JhcGgtY29udGFpbmVyXCIpXHJcbiAgICAgIC5hdHRyKFwiZmlsbFwiLCBkMy5jb2xvcihcInRyYW5zcGFyZW50XCIpLmJyaWdodGVyKDEpKVxyXG4gICAgICAuYXR0cihcIndpZHRoXCIsIHRoaXMuZ3JhcGhXaWR0aClcclxuICAgICAgLmF0dHIoXCJoZWlnaHRcIiwgdGhpcy5ncmFwaEhlaWdodCk7XHJcblxyXG5cclxuICAgIGNvbnN0IHhBeGlzID0gdGhpcy5ncmF5R3JvdXAuYXBwZW5kKFwiZ1wiKVxyXG4gICAgICAuYXR0cihcImNsYXNzXCIsIFwieCBheGlzXCIpXHJcbiAgICAgIC5hdHRyKFwidHJhbnNmb3JtXCIsIFwidHJhbnNsYXRlKDAsXCIgKyB0aGlzLmdyYXBoSGVpZ2h0ICsgXCIpXCIpO1xyXG5cclxuICAgIGNvbnN0IHlBeGlzID0gdGhpcy5ncmF5R3JvdXAuYXBwZW5kKFwiZ1wiKVxyXG4gICAgICAuYXR0cihcImNsYXNzXCIsIFwieSBheGlzXCIpO1xyXG5cclxuICAgIC8veEF4aXMuY2FsbCh4QXhpc0NhbGwpO1xyXG4gICAgLy95QXhpcy5jYWxsKHlBeGlzQ2FsbCk7XHJcblxyXG4gICAgLy8gU2VsZWN0IHRleHQgZWxlbWVudHMgYXNzb2NpYXRlZCB3aXRoIHRpY2tzIGFuZCBoaWRlIHRoZW1cclxuICAgIHRoaXMuZ3JheUdyb3VwLnNlbGVjdEFsbChcIi50aWNrIHRleHRcIikuYXR0cihcImRpc3BsYXlcIiwgXCJub25lXCIpO1xyXG5cclxuICAgIGNvbnN0IGNvbXBhcmlzb25WYWx1ZUdyb3VwVHJhbnNsYXRlWSA9IHRoaXMuaGVpZ2h0ICogMyAvIDQgKyB0aGlzLmRpdmlzb3JMaW5lTWFyZ2luLmJvdHRvbTtcclxuICAgIHRoaXMuY29tcGFyaXNvblZhbHVlR3JvdXAgPSB0aGlzLmdyZWVuR3JvdXAuYXBwZW5kKFwiZ1wiKVxyXG4gICAgICAuYXR0cihcImNsYXNzXCIsIFwiY29tcGFyaXNvbi12YWx1ZS1ncm91cFwiKVxyXG4gICAgICAuYXR0cihcInRyYW5zZm9ybVwiLCBcInRyYW5zbGF0ZShcIiArIHRoaXMuZGl2aXNvckxpbmVNYXJnaW4ubGVmdCArIFwiLFwiICsgY29tcGFyaXNvblZhbHVlR3JvdXBUcmFuc2xhdGVZICsgXCIpXCIpO1xyXG5cclxuICAgIHRoaXMuY29tcGFyaXNvblZhbHVlR3JvdXAuYXBwZW5kKFwicmVjdFwiKVxyXG4gICAgICAuYXR0cihcInN0cm9rZVwiLCBcInRyYW5zcGFyZW50XCIpXHJcbiAgICAgIC5hdHRyKFwiZmlsbFwiLCBcInRyYW5zcGFyZW50XCIpXHJcbiAgICAgIC5hdHRyKFwiY2xhc3NcIiwgXCJ2YWx1ZS1yZWN0XCIpXHJcbiAgICAgIC5hdHRyKFwid2lkdGhcIiwgdGhpcy5jb21wYXJpc29uVmFsdWVSZWN0V2lkdGgpXHJcbiAgICAgIC5hdHRyKFwiaGVpZ2h0XCIsIHRoaXMuY29tcGFyaXNvblZhbHVlUmVjdEhlaWdodCk7XHJcblxyXG4gICAgY29uc3QgY29tcGFyaXNvblZhbHVlVGV4dCA9IHRoaXMuY29tcGFyaXNvblZhbHVlR3JvdXAuYXBwZW5kKFwidGV4dFwiKVxyXG4gICAgICAuYXR0cihcImlkXCIsIFwibWV0cmljX1wiICsgdGhpcy5tZXRyaWMuaWQgKyBcIl9jb21wYXJpc29uVmFsdWVcIilcclxuICAgICAgLmF0dHIoXCJ4XCIsIHRoaXMuY29tcGFyaXNvblZhbHVlUmVjdFdpZHRoIC8gMilcclxuICAgICAgLmF0dHIoXCJ5XCIsIHRoaXMuY29tcGFyaXNvblZhbHVlUmVjdEhlaWdodCAvIDIpXHJcbiAgICAgIC5hdHRyKFwiY2xhc3NcIiwgXCJncmFwaC12YWx1ZVwiKVxyXG4gICAgICAuYXR0cihcImZpbGxcIiwgdGhpcy5jb21wYXJpc29uVmFsdWUgPj0gMCA/IHRoaXMuY29tcGFyaXNvblZhbHVlRmlsbENvbG9yIDogZDMuY29sb3IoXCJyZWRcIikpXHJcbiAgICAgIC5hdHRyKFwiZm9udC1zaXplXCIsIHRoaXMuY29tcGFyaXNvblZhbHVlUmVjdEhlaWdodCArIFwicHhcIilcclxuICAgICAgLmF0dHIoXCJ0ZXh0LWFuY2hvclwiLCBcIm1pZGRsZVwiKVxyXG4gICAgICAuYXR0cihcImFsaWdubWVudC1iYXNlbGluZVwiLCBcIm1pZGRsZVwiKTtcclxuXHJcbiAgICBjb25zdCBzdGFydENvbXBhcmlzb25WYWx1ZSA9IDA7XHJcbiAgICBjb25zdCBlbmRDb21wYXJpc29uVmFsdWUgPSB0aGlzLmNvbXBhcmlzb25WYWx1ZTtcclxuICAgIHN3aXRjaCAodGhpcy5tZXRyaWMuZGF0YVR5cGUpIHtcclxuICAgICAgY2FzZSBFbnVtSUNvcmVTdGF0aXN0aWNXaWRnZXREYXRhVHlwZS5JTlRFR0VSOlxyXG4gICAgICAgIGNvbXBhcmlzb25WYWx1ZVRleHRcclxuICAgICAgICAgIC50cmFuc2l0aW9uKClcclxuICAgICAgICAgIC50d2VlbihcInRleHRcIiwgKCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBpbnRlcnBvbGF0b3IgPSBkMy5pbnRlcnBvbGF0ZU51bWJlcihzdGFydFZhbHVlLCBlbmRWYWx1ZSk7XHJcbiAgICAgICAgICAgIHJldHVybiB0ID0+IHtcclxuICAgICAgICAgICAgICBjb21wYXJpc29uVmFsdWVUZXh0LnRleHQoTWF0aC5yb3VuZChpbnRlcnBvbGF0b3IodCkpKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgLmR1cmF0aW9uKDUwMClcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBFbnVtSUNvcmVTdGF0aXN0aWNXaWRnZXREYXRhVHlwZS5ERUNJTUFMOlxyXG4gICAgICAgIGNvbXBhcmlzb25WYWx1ZVRleHRcclxuICAgICAgICAgIC50cmFuc2l0aW9uKClcclxuICAgICAgICAgIC50d2VlbihcInRleHRcIiwgKCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBpbnRlcnBvbGF0b3IgPSBkMy5pbnRlcnBvbGF0ZU51bWJlcihzdGFydFZhbHVlLCBlbmRWYWx1ZSk7XHJcbiAgICAgICAgICAgIHJldHVybiB0ID0+IHtcclxuICAgICAgICAgICAgICBjb21wYXJpc29uVmFsdWVUZXh0LnRleHQoTWF0aC5yb3VuZChpbnRlcnBvbGF0b3IodCkgKiAxMDApIC8gMTAwKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgLmR1cmF0aW9uKDUwMClcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBFbnVtSUNvcmVTdGF0aXN0aWNXaWRnZXREYXRhVHlwZS5QRVJDRU5UQUdFOlxyXG4gICAgICAgIGNvbXBhcmlzb25WYWx1ZVRleHRcclxuICAgICAgICAgIC50cmFuc2l0aW9uKClcclxuICAgICAgICAgIC50d2VlbihcInRleHRcIiwgKCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBpbnRlcnBvbGF0b3IgPSBkMy5pbnRlcnBvbGF0ZU51bWJlcihzdGFydFZhbHVlLCBlbmRWYWx1ZSk7XHJcbiAgICAgICAgICAgIHJldHVybiB0ID0+IHtcclxuICAgICAgICAgICAgICBjb21wYXJpc29uVmFsdWVUZXh0LnRleHQoTWF0aC5yb3VuZChpbnRlcnBvbGF0b3IodCkgKiAxMDAwMCkgLyAxMDAgKyBcIiVcIilcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgIC5kdXJhdGlvbig1MDApXHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgY29tcGFyaXNvblZhbHVlVGV4dC50ZXh0KHRoaXMuY29tcGFyaXNvblZhbHVlLnRvU3RyaW5nKCkpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gICAgdGhpcy5wcmV2aW91c0NvbXBhcmlzb25WYWx1ZSA9IHRoaXMuY29tcGFyaXNvblZhbHVlO1xyXG5cclxuICAgIGNvbnN0IGNvbXBhcmlzb25UZXh0R3JvdXBUcmFuc2xhdGVZID0gdGhpcy5oZWlnaHQgKiAzIC8gNCArIHRoaXMuZGl2aXNvckxpbmVNYXJnaW4uYm90dG9tICsgdGhpcy5jb21wYXJpc29uVGV4dFJlY3RIZWlnaHQ7XHJcbiAgICB0aGlzLmNvbXBhcmlzb25UZXh0R3JvdXAgPSB0aGlzLmdyZWVuR3JvdXAuYXBwZW5kKFwiZ1wiKVxyXG4gICAgICAuYXR0cihcImNsYXNzXCIsIFwiY29tcGFyaXNvbi10ZXh0LWdyb3VwXCIpXHJcbiAgICAgIC5hdHRyKFwidHJhbnNmb3JtXCIsIFwidHJhbnNsYXRlKFwiICsgdGhpcy5kaXZpc29yTGluZU1hcmdpbi5sZWZ0ICsgXCIsXCIgKyBjb21wYXJpc29uVGV4dEdyb3VwVHJhbnNsYXRlWSArIFwiKVwiKTtcclxuXHJcbiAgICB0aGlzLmNvbXBhcmlzb25UZXh0R3JvdXAuYXBwZW5kKFwicmVjdFwiKVxyXG4gICAgICAuYXR0cihcInN0cm9rZVwiLCBcInRyYW5zcGFyZW50XCIpXHJcbiAgICAgIC5hdHRyKFwiZmlsbFwiLCBcInRyYW5zcGFyZW50XCIpXHJcbiAgICAgIC5hdHRyKFwiY2xhc3NcIiwgXCJ0ZXh0LXJlY3RcIilcclxuICAgICAgLmF0dHIoXCJ3aWR0aFwiLCB0aGlzLmNvbXBhcmlzb25UZXh0UmVjdFdpZHRoKVxyXG4gICAgICAuYXR0cihcImhlaWdodFwiLCB0aGlzLmNvbXBhcmlzb25UZXh0UmVjdEhlaWdodCk7XHJcblxyXG4gICAgdGhpcy5jb21wYXJpc29uVGV4dFRleHQgPSB0aGlzLmNvbXBhcmlzb25UZXh0R3JvdXAuYXBwZW5kKFwidGV4dFwiKVxyXG4gICAgICAuYXR0cihcImlkXCIsIFwibWV0cmljX1wiICsgdGhpcy5tZXRyaWMuaWQgKyBcIl9jb21wYXJpc29uVGV4dFwiKVxyXG4gICAgICAuYXR0cihcInhcIiwgdGhpcy5jb21wYXJpc29uVGV4dFJlY3RXaWR0aCAvIDIpXHJcbiAgICAgIC5hdHRyKFwieVwiLCB0aGlzLmNvbXBhcmlzb25UZXh0UmVjdEhlaWdodCAvIDIpXHJcbiAgICAgIC5hdHRyKFwiY2xhc3NcIiwgXCJncmFwaC10ZXh0XCIpXHJcbiAgICAgIC5hdHRyKFwiZmlsbFwiLCB0aGlzLmNvbXBhcmlzb25UZXh0RmlsbENvbG9yKVxyXG4gICAgICAuYXR0cihcImZvbnQtc2l6ZVwiLCB0aGlzLmNvbXBhcmlzb25UZXh0UmVjdEhlaWdodCAvIDIgKyBcInB4XCIpXHJcbiAgICAgIC5hdHRyKFwidGV4dC1hbmNob3JcIiwgXCJtaWRkbGVcIilcclxuICAgICAgLmF0dHIoXCJhbGlnbm1lbnQtYmFzZWxpbmVcIiwgXCJtaWRkbGVcIik7XHJcblxyXG4gICAgc3dpdGNoICh0aGlzLm1ldHJpYy5jb21wYXJpc29uQ29kZSkge1xyXG4gICAgICBjYXNlIEVudW1IckNvbXBhcmlzb25Db2RlLldJVEhfUFJFVklPVVNfTU9OVEg6XHJcbiAgICAgICAgdGhpcy5jb21wYXJpc29uVGV4dFRleHQudGV4dChcInZzLiBwcmV2aW91cyBtb250aFwiKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBFbnVtSHJDb21wYXJpc29uQ29kZS5XSVRIX1BSRVZJT1VTX1lFQVI6XHJcbiAgICAgICAgdGhpcy5jb21wYXJpc29uVGV4dFRleHQudGV4dChcInZzLiBwcmV2aW91cyB5ZWFyXCIpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHRoaXMuY29tcGFyaXNvblRleHRUZXh0LnRleHQoXCItXCIpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG5cclxuICAgIC8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovXHJcblxyXG4gICAgY29uc3QgaW5pdGlhbERhdGFzZXQ6IGFueSA9IHRoaXMuZGF0YXNldDtcclxuICAgIGNvbnN0IG1pblBvaW50OiBhbnkgPSBpbml0aWFsRGF0YXNldC5yZWR1Y2UoKG1pbiwgY3VycmVudCkgPT4gY3VycmVudC55IDwgbWluLnkgPyBjdXJyZW50IDogbWluKTtcclxuICAgIGNvbnN0IG1heFBvaW50OiBhbnkgPSBpbml0aWFsRGF0YXNldC5yZWR1Y2UoKG1heCwgY3VycmVudCkgPT4gY3VycmVudC55ID4gbWF4LnkgPyBjdXJyZW50IDogbWF4KTtcclxuXHJcbiAgICBjb25zdCB4U2NhbGUgPSBkMy5zY2FsZUxpbmVhcigpXHJcbiAgICAgIC5kb21haW4oWzAsIGQzLm1heChpbml0aWFsRGF0YXNldCwgZCA9PiBkLngpXSlcclxuICAgICAgLnJhbmdlKFswLCB0aGlzLmdyYXBoV2lkdGhdKTtcclxuXHJcbiAgICBjb25zdCB5U2NhbGUgPSBkMy5zY2FsZUxpbmVhcigpXHJcbiAgICAgIC5kb21haW4oW21pblBvaW50LnksIG1heFBvaW50LnldKVxyXG4gICAgICAucmFuZ2UoW3RoaXMuZ3JhcGhIZWlnaHQsIDBdKTtcclxuXHJcbiAgICB0aGlzLmNvbm5lY3RpbmdMaW5lID0gZDMubGluZSgpXHJcbiAgICAgIC54KGQgPT4geFNjYWxlKGQueCkpXHJcbiAgICAgIC55KGQgPT4geVNjYWxlKGQueSkpXHJcbiAgICAgIC5kZWZpbmVkKChkLCBpKSA9PiBpID49IDAgJiYgaSA8IGluaXRpYWxEYXRhc2V0Lmxlbmd0aCk7XHJcblxyXG4gICAgdGhpcy5ncmF5R3JvdXAuYXBwZW5kKFwicGF0aFwiKVxyXG4gICAgICAuZGF0dW0oaW5pdGlhbERhdGFzZXQpXHJcbiAgICAgIC5hdHRyKFwiZmlsbFwiLCBcIm5vbmVcIilcclxuICAgICAgLmF0dHIoXCJzdHJva2VcIiwgXCJkYXJrZ3JheVwiKVxyXG4gICAgICAuYXR0cihcInN0cm9rZS13aWR0aFwiLCAzKVxyXG4gICAgICAuYXR0cihcImRcIiwgdGhpcy5jb25uZWN0aW5nTGluZSk7XHJcblxyXG4gICAgdGhpcy5ncmF5R3JvdXAuc2VsZWN0QWxsKFwiY2lyY2xlXCIpXHJcbiAgICAgIC5kYXRhKGluaXRpYWxEYXRhc2V0KVxyXG4gICAgICAuZW50ZXIoKVxyXG4gICAgICAuYXBwZW5kKFwiY2lyY2xlXCIpXHJcbiAgICAgIC5hdHRyKFwiY3hcIiwgZCA9PiB4U2NhbGUoZC54KSlcclxuICAgICAgLmF0dHIoXCJjeVwiLCBkID0+IHlTY2FsZShkLnkpKVxyXG4gICAgICAuYXR0cihcInJcIiwgNSlcclxuICAgICAgLmF0dHIoXCJmaWxsXCIsIGQgPT4ge1xyXG4gICAgICAgIGlmIChkID09PSBtaW5Qb2ludCkgcmV0dXJuIFwiI0ZGOEMwMFwiOyAvLyBTZXQgbG93ZXN0IHBvaW50IHRvICNGRjhDMDBcclxuICAgICAgICBpZiAoZCA9PT0gbWF4UG9pbnQpIHJldHVybiBcIiMzMTU4OTdcIjsgLy8gU2V0IGhpZ2hlc3QgcG9pbnQgdG8gIzMxNTg5N1xyXG4gICAgICAgIHJldHVybiBcIm5vbmVcIjsgLy8gU2V0IHRoZSBvdGhlciBwb2ludHMgdHJhbnNwYXJlbnRcclxuICAgICAgfSlcclxuICAgICAgLmF0dHIoXCJzdHJva2VcIiwgZnVuY3Rpb24gKGQpIHtcclxuICAgICAgICBpZiAoZCA9PT0gbWluUG9pbnQpIHJldHVybiBkMy5jb2xvcihcIiNGRjhDMDBcIikuZGFya2VyKDAuMik7IC8vIERhcmtlbiAjRkY4QzAwIGNvbG9yXHJcbiAgICAgICAgaWYgKGQgPT09IG1heFBvaW50KSByZXR1cm4gZDMuY29sb3IoXCIjMzE1ODk3XCIpLmRhcmtlcigwLjIpOyAvLyBEYXJrZW4gIzMxNTg5NyBjb2xvclxyXG4gICAgICAgIHJldHVybiBcIm5vbmVcIjsgLy8gTm8gc3Ryb2tlIGZvciBvdGhlciBwb2ludHNcclxuICAgICAgfSlcclxuICAgICAgLmF0dHIoXCJzdHJva2Utd2lkdGhcIiwgMyk7IC8vIFNldCBzdHJva2Ugd2lkdGhcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLmRyYXdHcmFwaCgpO1xyXG4gICAgfSlcclxuICB9XHJcblxyXG59IiwiPGRpdiAjY29udGFpbmVyIGNsYXNzPVwiY29yZS1zdGF0aXN0aWMtd2lkZ2V0LWNvbnRhaW5lclwiPlxyXG4gICAgXHJcbjwvZGl2PiJdfQ==
|
|
550
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS1zdGF0aXN0aWMtd2lkZ2V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1oaXN0YWZmLWFscGhhL3NyYy9saWIvYXBwL2xpYnJhcmllcy9kMy9jb3JlLXN0YXRpc3RpYy13aWRnZXQvY29yZS1zdGF0aXN0aWMtd2lkZ2V0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1oaXN0YWZmLWFscGhhL3NyYy9saWIvYXBwL2xpYnJhcmllcy9kMy9jb3JlLXN0YXRpc3RpYy13aWRnZXQvY29yZS1zdGF0aXN0aWMtd2lkZ2V0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUFjLEtBQUssRUFBNEIsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pILE9BQU8sS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFDOztBQUV6QixNQUFNLENBQU4sSUFBWSxvQkFHWDtBQUhELFdBQVksb0JBQW9CO0lBQzlCLG1FQUEyQyxDQUFBO0lBQzNDLGlFQUF5QyxDQUFBO0FBQzNDLENBQUMsRUFIVyxvQkFBb0IsS0FBcEIsb0JBQW9CLFFBRy9CO0FBU0QsTUFBTSxDQUFOLElBQVksZ0NBSVg7QUFKRCxXQUFZLGdDQUFnQztJQUMxQyx1REFBbUIsQ0FBQTtJQUNuQix1REFBbUIsQ0FBQTtJQUNuQiw2REFBeUIsQ0FBQTtBQUMzQixDQUFDLEVBSlcsZ0NBQWdDLEtBQWhDLGdDQUFnQyxRQUkzQztBQThCRCxNQUFNLE9BQU8sNEJBQTRCO0lBVHpDO1FBYTZCLFVBQUssR0FBVyxFQUFFLENBQUM7UUFDbkIsb0JBQWUsR0FBVyxJQUFJLENBQUM7UUFHakQsV0FBTSxHQUF3QixFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxF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T0FBTztzQkFBZixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxzQkFBc0I7c0JBQTlCLEtBQUs7Z0JBQ0csc0JBQXNCO3NCQUE5QixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBRUcsd0JBQXdCO3NCQUFoQyxLQUFLO2dCQUNHLHVCQUF1QjtzQkFBL0IsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUVrQixTQUFTO3NCQUFoQyxTQUFTO3VCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIElucHV0LCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgKiBhcyBkMyBmcm9tICdkMyc7XHJcblxyXG5leHBvcnQgZW51bSBFbnVtSHJDb21wYXJpc29uQ29kZSB7XHJcbiAgV0lUSF9QUkVWSU9VU19NT05USCA9ICdXSVRIX1BSRVZJT1VTX01PTlRIJyxcclxuICBXSVRIX1BSRVZJT1VTX1lFQVIgPSAnV0lUSF9QUkVWSU9VU19ZRUFSJyxcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJSHJNZXRyaWMge1xyXG4gIGlkOiBudW1iZXI7XHJcbiAgbmFtZTogc3RyaW5nO1xyXG4gIGNvbXBhcmlzb25Db2RlOiBFbnVtSHJDb21wYXJpc29uQ29kZTtcclxuICBkYXRhVHlwZTogRW51bUlDb3JlU3RhdGlzdGljV2lkZ2V0RGF0YVR5cGU7XHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIEVudW1JQ29yZVN0YXRpc3RpY1dpZGdldERhdGFUeXBlIHtcclxuICBJTlRFR0VSID0gJ0lOVEVHRVInLFxyXG4gIERFQ0lNQUwgPSAnREVDSU1BTCcsXHJcbiAgUEVSQ0VOVEFHRSA9ICdQRVJDRU5UQUdFJyxcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJR3JhcGhNYXJnaW5QYWRkaW5nIHtcclxuICB0b3A6IG51bWJlcjtcclxuICByaWdodDogbnVtYmVyO1xyXG4gIGJvdHRvbTogbnVtYmVyO1xyXG4gIGxlZnQ6IG51bWJlcjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJQ29yZVN0YXRpc3RpY1dpZGdldERhdGFzZXQge1xyXG4gIHg6IG51bWJlcjtcclxuICB5OiBudW1iZXI7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUNvcmVTdGF0aXN0aWNXaWRnZXRJbnB1dHMge1xyXG4gIG1ldHJpYzogSUhyTWV0cmljO1xyXG4gIGRhdGFzZXQ6IElDb3JlU3RhdGlzdGljV2lkZ2V0RGF0YXNldFtdO1xyXG4gIHZhbHVlOiBudW1iZXI7XHJcbiAgY29tcGFyaXNvblZhbHVlOiBudW1iZXI7XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnY29yZS1zdGF0aXN0aWMtd2lkZ2V0JyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuXHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vY29yZS1zdGF0aXN0aWMtd2lkZ2V0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vY29yZS1zdGF0aXN0aWMtd2lkZ2V0LmNvbXBvbmVudC5zY3NzJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29yZVN0YXRpc3RpY1dpZGdldENvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCB7XHJcblxyXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pIG1ldHJpYyE6IElIck1ldHJpYztcclxuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KSBkYXRhc2V0ITogSUNvcmVTdGF0aXN0aWNXaWRnZXREYXRhc2V0W107XHJcbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSkgdmFsdWU6IG51bWJlciA9IDk2O1xyXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pIGNvbXBhcmlzb25WYWx1ZTogbnVtYmVyID0gMC41NDtcclxuXHJcbiAgQElucHV0KCkgdmFsdWVGb250U2l6ZSE6IG51bWJlcjtcclxuICBASW5wdXQoKSBtYXJnaW46IElHcmFwaE1hcmdpblBhZGRpbmcgPSB7IHRvcDogMzAsIHJpZ2h0OiAzMCwgYm90dG9tOiAzMCwgbGVmdDogMzAgfTtcclxuICBASW5wdXQoKSBwYWRkaW5nOiBJR3JhcGhNYXJnaW5QYWRkaW5nID0geyB0b3A6IDMwLCByaWdodDogMzAsIGJvdHRvbTogMzAsIGxlZnQ6IDMwIH07XHJcbiAgQElucHV0KCkgb3V0ZXJXaWR0aDogbnVtYmVyID0gMzIwO1xyXG4gIEBJbnB1dCgpIG91dGVySGVpZ2h0OiBudW1iZXIgPSAzMjA7XHJcbiAgQElucHV0KCkgZGl2aXNvckxpbmVNYXJnaW46IElHcmFwaE1hcmdpblBhZGRpbmcgPSB7IHRvcDogNCwgcmlnaHQ6IDgsIGJvdHRvbTogOCwgbGVmdDogOCB9O1xyXG4gIEBJbnB1dCgpIHRpdGxlRmlsbENvbG9yOiBhbnkgPSBkMy5jb2xvcihcImJsYWNrXCIpO1xyXG4gIEBJbnB1dCgpIGRpdmlzb3JMaW5lU3Ryb2tlQ29sb3I6IGFueSA9IGQzLmNvbG9yKFwiZ3JheVwiKTtcclxuICBASW5wdXQoKSBkaXZpc29yTGluZVN0cm9rZVdpZHRoOiBudW1iZXIgPSAzO1xyXG4gIEBJbnB1dCgpIHZhbHVlRmlsbENvbG9yOiBhbnkgPSBkMy5jb2xvcihcImJsYWNrXCIpO1xyXG5cclxuICBASW5wdXQoKSBjb21wYXJpc29uVmFsdWVGaWxsQ29sb3I6IGFueSA9IGQzLmNvbG9yKFwiYmxhY2tcIik7XHJcbiAgQElucHV0KCkgY29tcGFyaXNvblRleHRGaWxsQ29sb3I6IGFueSA9IGQzLmNvbG9yKFwiYmxhY2tcIik7XHJcbiAgQElucHV0KCkgc2hvd0F4ZXM6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQFZpZXdDaGlsZCgnY29udGFpbmVyJykgY29udGFpbmVyITogRWxlbWVudFJlZjtcclxuXHJcbiAgaW5uZXJXaWR0aCA9IHRoaXMub3V0ZXJXaWR0aCAtIHRoaXMubWFyZ2luLmxlZnQgLSB0aGlzLm1hcmdpbi5yaWdodDtcclxuICBpbm5lckhlaWdodCA9IHRoaXMub3V0ZXJIZWlnaHQgLSB0aGlzLm1hcmdpbi50b3AgLSB0aGlzLm1hcmdpbi5ib3R0b207XHJcbiAgd2lkdGggPSB0aGlzLmlubmVyV2lkdGggLSB0aGlzLnBhZGRpbmcubGVmdCAtIHRoaXMucGFkZGluZy5yaWdodDtcclxuICBoZWlnaHQgPSB0aGlzLmlubmVySGVpZ2h0IC0gdGhpcy5wYWRkaW5nLnRvcCAtIHRoaXMucGFkZGluZy5ib3R0b207XHJcblxyXG4gIGdyYXBoV2lkdGggPSB0aGlzLndpZHRoIC0gdGhpcy5kaXZpc29yTGluZU1hcmdpbi5sZWZ0IC0gdGhpcy5kaXZpc29yTGluZU1hcmdpbi5yaWdodDtcclxuICBncmFwaEhlaWdodCA9IHRoaXMuaGVpZ2h0IC8gNCAtIHRoaXMuZGl2aXNvckxpbmVNYXJnaW4uYm90dG9tO1xyXG4gIHRpdGxlUmVjdFdpZHRoID0gdGhpcy53aWR0aCAtIHRoaXMuZGl2aXNvckxpbmVNYXJnaW4ubGVmdCAtIHRoaXMuZGl2aXNvckxpbmVNYXJnaW4ucmlnaHQ7XHJcbiAgdGl0bGVSZWN0SGVpZ2h0ID0gdGhpcy5ncmFwaEhlaWdodCAqIDIgLyAzIC0gdGhpcy5kaXZpc29yTGluZU1hcmdpbi50b3AgKiAyO1xyXG4gIHZhbHVlUmVjdFdpZHRoID0gdGhpcy50aXRsZVJlY3RXaWR0aDtcclxuICB2YWx1ZVJlY3RIZWlnaHQgPSB0aGlzLmhlaWdodCAvIDMgLSB0aGlzLmRpdmlzb3JMaW5lTWFyZ2luLmJvdHRvbTtcclxuICBjb21wYXJpc29uVmFsdWVSZWN0V2lkdGggPSB0aGlzLnRpdGxlUmVjdFdpZHRoO1xyXG4gIGNvbXBhcmlzb25WYWx1ZVJlY3RIZWlnaHQgPSAodGhpcy5oZWlnaHQgLyA0IC0gdGhpcy5kaXZpc29yTGluZU1hcmdpbi5ib3R0b20pIC8gMjtcclxuICBjb21wYXJpc29uVGV4dFJlY3RXaWR0aCA9IHRoaXMudGl0bGVSZWN0V2lkdGg7XHJcbiAgY29tcGFyaXNvblRleHRSZWN0SGVpZ2h0ID0gKHRoaXMuaGVpZ2h0IC8gNCAtIHRoaXMuZGl2aXNvckxpbmVNYXJnaW4uYm90dG9tKSAvIDI7XHJcblxyXG4gIHggPSBkMy5zY2FsZUxpbmVhcigpLnJhbmdlKFswLCB0aGlzLmdyYXBoV2lkdGhdKTtcclxuICB5ID0gZDMuc2NhbGVMaW5lYXIoKS5yYW5nZShbdGhpcy5ncmFwaEhlaWdodCwgMF0pO1xyXG5cclxuICBwcml2YXRlIHByZXZpb3VzVmFsdWU6IG51bWJlciA9IDA7XHJcbiAgcHJpdmF0ZSBwcmV2aW91c0NvbXBhcmlzb25WYWx1ZTogbnVtYmVyID0gMDtcclxuXHJcbiAgLy9UbyByZW1vdmUgb25seSB0aGUgbnVtYmVycyB3aGlsZSBrZWVwaW5nIHRoZSB0aWNrcyBvbiB0aGUgYXhlcywgXHJcbiAgLy95b3UgY2FuIHNlbGVjdCB0aGUgdGV4dCBlbGVtZW50cyBvZiB0aGUgdGlja3MgYW5kIGhpZGUgdGhlbSB1c2luZyBDU1MuIFxyXG4gIC8vSGVyZSdzIGhvdyB5b3UgY2FuIG1vZGlmeSB0aGUgY29kZSB0byBhY2hpZXZlIHRoYXQ6XHJcblxyXG4gIHhBeGlzQ2FsbCA9IGQzLmF4aXNCb3R0b20odGhpcy54KVxyXG4gICAgLnRpY2tTaXplSW5uZXIoMTApIC8vIEFkanVzdCB0aGUgbGVuZ3RoIG9mIHRoZSB0aWNrcyBhcyBuZWVkZWRcclxuICAgIC50aWNrU2l6ZU91dGVyKDApOyAvLyBIaWRlIG91dGVyIHRpY2tzXHJcblxyXG4gIHlBeGlzQ2FsbCA9IGQzLmF4aXNMZWZ0KHRoaXMueSlcclxuICAgIC50aWNrU2l6ZUlubmVyKDEwKSAvLyBBZGp1c3QgdGhlIGxlbmd0aCBvZiB0aGUgdGlja3MgYXMgbmVlZGVkXHJcbiAgICAudGlja1NpemVPdXRlcigxMCk7IC8vIEhpZGUgb3V0ZXIgdGlja3NcclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYgKCEhY2hhbmdlc1snbWV0cmljJ10pIHtcclxuICAgICAgdGhpcy51cGRhdGVNZXRyaWNOYW1lKCk7XHJcbiAgICAgIHRoaXMudXBkYXRlTWV0cmljVmFsdWUoKTtcclxuICAgICAgdGhpcy51cGRhdGVNZXRyaWNDb21wYXJpc29uVmFsdWUoKTtcclxuICAgICAgdGhpcy51cGRhdGVNZXRyaWNDb21wYXJpc29uVGV4dCgpO1xyXG4gICAgfVxyXG4gICAgaWYgKCEhY2hhbmdlc1snZGF0YXNldCddKSB7XHJcbiAgICAgIHRoaXMudXBkYXRlRGF0YXNldCgpO1xyXG4gICAgfVxyXG4gICAgaWYgKCEhY2hhbmdlc1sndmFsdWUnXSkge1xyXG4gICAgICB0aGlzLnVwZGF0ZU1ldHJpY1ZhbHVlKCk7XHJcbiAgICB9XHJcbiAgICBpZiAoISFjaGFuZ2VzWydjb21wYXJpc29uVmFsdWUnXSkge1xyXG4gICAgICB0aGlzLnVwZGF0ZU1ldHJpY0NvbXBhcmlzb25WYWx1ZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdXBkYXRlTWV0cmljTmFtZSgpOiB2b2lkIHtcclxuICAgIHZhciBuYW1lRWxlbWVudCA9IGQzLnNlbGVjdChcIiNtZXRyaWNfXCIgKyB0aGlzLm1ldHJpYy5pZCArIFwiX25hbWVcIilcclxuICAgIG5hbWVFbGVtZW50LnRyYW5zaXRpb24oKS50ZXh0KHRoaXMubWV0cmljLm5hbWUpO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlTWV0cmljVmFsdWUoKTogdm9pZCB7XHJcbiAgICB2YXIgdmFsdWVFbGVtZW50ID0gZDMuc2VsZWN0KFwiI21ldHJpY19cIiArIHRoaXMubWV0cmljLmlkICsgXCJfdmFsdWVcIik7XHJcbiAgICBjb25zdCBzdGFydCA9IHRoaXMucHJldmlvdXNWYWx1ZTtcclxuICAgIGNvbnN0IGVuZCA9IHRoaXMudmFsdWU7XHJcbiAgICBzd2l0Y2ggKHRoaXMubWV0cmljLmRhdGFUeXBlKSB7XHJcbiAgICAgIGNhc2UgRW51bUlDb3JlU3RhdGlzdGljV2lkZ2V0RGF0YVR5cGUuSU5URUdFUjpcclxuICAgICAgICB2YWx1ZUVsZW1lbnRcclxuICAgICAgICAgIC50cmFuc2l0aW9uKClcclxuICAgICAgICAgIC50d2VlbihcInRleHRcIiwgKCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBpbnRlcnBvbGF0b3IgPSBkMy5pbnRlcnBvbGF0ZU51bWJlcihzdGFydCwgZW5kKTtcclxuICAgICAgICAgICAgcmV0dXJuIHQgPT4ge1xyXG4gICAgICAgICAgICAgIHZhbHVlRWxlbWVudC50ZXh0KE1hdGgucm91bmQoaW50ZXJwb2xhdG9yKHQpKSlcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgIC5kdXJhdGlvbig1MDApXHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgRW51bUlDb3JlU3RhdGlzdGljV2lkZ2V0RGF0YVR5cGUuREVDSU1BTDpcclxuICAgICAgICB2YWx1ZUVsZW1lbnRcclxuICAgICAgICAgIC50cmFuc2l0aW9uKClcclxuICAgICAgICAgIC50d2VlbihcInRleHRcIiwgKCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBpbnRlcnBvbGF0b3IgPSBkMy5pbnRlcnBvbGF0ZU51bWJlcihzdGFydCwgZW5kKTtcclxuICAgICAgICAgICAgcmV0dXJuIHQgPT4ge1xyXG4gICAgICAgICAgICAgIHZhbHVlRWxlbWVudC50ZXh0KE1hdGgucm91bmQoaW50ZXJwb2xhdG9yKHQpICogMTAwKSAvIDEwMClcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgIC5kdXJhdGlvbig1MDApXHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgRW51bUlDb3JlU3RhdGlzdGljV2lkZ2V0RGF0YVR5cGUuUEVSQ0VOVEFHRTpcclxuICAgICAgICB2YWx1ZUVsZW1lbnRcclxuICAgICAgICAgIC50cmFuc2l0aW9uKClcclxuICAgICAgICAgIC50d2VlbihcInRleHRcIiwgKCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBpbnRlcnBvbGF0b3IgPSBkMy5pbnRlcnBvbGF0ZU51bWJlcihzdGFydCwgZW5kKTtcclxuICAgICAgICAgICAgcmV0dXJuIHQgPT4ge1xyXG4gICAgICAgICAgICAgIHZhbHVlRWxlbWVudC50ZXh0KE1hdGgucm91bmQoaW50ZXJwb2xhdG9yKHQpICogMTAwMDApIC8gMTAwICsgXCIlXCIpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICAuZHVyYXRpb24oNTAwKVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHZhbHVlRWxlbWVudC50cmFuc2l0aW9uKCkudGV4dCh0aGlzLnZhbHVlLnRvU3RyaW5nKCkpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gICAgdGhpcy5wcmV2aW91c1ZhbHVlID0gdGhpcy52YWx1ZTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZU1ldHJpY0NvbXBhcmlzb25WYWx1ZSgpOiB2b2lkIHtcclxuICAgIGNvbnN0IHN0YXJ0ID0gdGhpcy5wcmV2aW91c0NvbXBhcmlzb25WYWx1ZTtcclxuICAgIGNvbnN0IGVuZCA9IHRoaXMuY29tcGFyaXNvblZhbHVlO1xyXG4gICAgdmFyIGNvbXBhcmlzb25WYWx1ZUVsZW1lbnQgPSBkMy5zZWxlY3QoXCIjbWV0cmljX1wiICsgdGhpcy5tZXRyaWMuaWQgKyBcIl9jb21wYXJpc29uVmFsdWVcIik7XHJcbiAgICBjb21wYXJpc29uVmFsdWVFbGVtZW50LmF0dHIoXCJmaWxsXCIsIHRoaXMuY29tcGFyaXNvblZhbHVlID49IDAgPyB0aGlzLmNvbXBhcmlzb25UZXh0RmlsbENvbG9yIDogZDMuY29sb3IoXCJyZWRcIikpO1xyXG4gICAgc3dpdGNoICh0aGlzLm1ldHJpYy5kYXRhVHlwZSkge1xyXG4gICAgICBjYXNlIEVudW1JQ29yZVN0YXRpc3RpY1dpZGdldERhdGFUeXBlLklOVEVHRVI6XHJcbiAgICAgICAgY29tcGFyaXNvblZhbHVlRWxlbWVudFxyXG4gICAgICAgICAgLnRyYW5zaXRpb24oKVxyXG4gICAgICAgICAgLnR3ZWVuKFwidGV4dFwiLCAoKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGludGVycG9sYXRvciA9IGQzLmludGVycG9sYXRlTnVtYmVyKHN0YXJ0LCBlbmQpO1xyXG4gICAgICAgICAgICByZXR1cm4gdCA9PiB7XHJcbiAgICAgICAgICAgICAgY29tcGFyaXNvblZhbHVlRWxlbWVudC50ZXh0KE1hdGgucm91bmQoaW50ZXJwb2xhdG9yKHQpKSlcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgIC5kdXJhdGlvbig1MDApXHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgRW51bUlDb3JlU3RhdGlzdGljV2lkZ2V0RGF0YVR5cGUuREVDSU1BTDpcclxuICAgICAgICBjb21wYXJpc29uVmFsdWVFbGVtZW50XHJcbiAgICAgICAgICAudHJhbnNpdGlvbigpXHJcbiAgICAgICAgICAudHdlZW4oXCJ0ZXh0XCIsICgpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgaW50ZXJwb2xhdG9yID0gZDMuaW50ZXJwb2xhdGVOdW1iZXIoc3RhcnQsIGVuZCk7XHJcbiAgICAgICAgICAgIHJldHVybiB0ID0+IHtcclxuICAgICAgICAgICAgICBjb21wYXJpc29uVmFsdWVFbGVtZW50LnRleHQoTWF0aC5yb3VuZChpbnRlcnBvbGF0b3IodCkgKiAxMDApIC8gMTAwKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgLmR1cmF0aW9uKDUwMClcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBFbnVtSUNvcmVTdGF0aXN0aWNXaWRnZXREYXRhVHlwZS5QRVJDRU5UQUdFOlxyXG4gICAgICAgIGNvbXBhcmlzb25WYWx1ZUVsZW1lbnRcclxuICAgICAgICAgIC50cmFuc2l0aW9uKClcclxuICAgICAgICAgIC50d2VlbihcInRleHRcIiwgKCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBpbnRlcnBvbGF0b3IgPSBkMy5pbnRlcnBvbGF0ZU51bWJlcihzdGFydCwgZW5kKTtcclxuICAgICAgICAgICAgcmV0dXJuIHQgPT4ge1xyXG4gICAgICAgICAgICAgIGNvbXBhcmlzb25WYWx1ZUVsZW1lbnQudGV4dChNYXRoLnJvdW5kKGludGVycG9sYXRvcih0KSAqIDEwMDAwKSAvIDEwMCArIFwiJVwiKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgLmR1cmF0aW9uKDUwMClcclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBjb21wYXJpc29uVmFsdWVFbGVtZW50LnRyYW5zaXRpb24oKS50ZXh0KHRoaXMuY29tcGFyaXNvblZhbHVlLnRvU3RyaW5nKCkpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdXBkYXRlTWV0cmljQ29tcGFyaXNvblRleHQoKTogdm9pZCB7XHJcbiAgICB2YXIgY29tcGFyaXNvblRleHRFbGVtZW50ID0gZDMuc2VsZWN0KFwiI21ldHJpY19cIiArIHRoaXMubWV0cmljLmlkICsgXCJfY29tcGFyaXNvblRleHRcIik7XHJcbiAgICBzd2l0Y2ggKHRoaXMubWV0cmljLmNvbXBhcmlzb25Db2RlKSB7XHJcbiAgICAgIGNhc2UgRW51bUhyQ29tcGFyaXNvbkNvZGUuV0lUSF9QUkVWSU9VU19NT05USDpcclxuICAgICAgICBjb21wYXJpc29uVGV4dEVsZW1lbnQudGV4dChcInZzLiBwcmV2aW91cyBtb250aFwiKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBFbnVtSHJDb21wYXJpc29uQ29kZS5XSVRIX1BSRVZJT1VTX1lFQVI6XHJcbiAgICAgICAgY29tcGFyaXNvblRleHRFbGVtZW50LnRleHQoXCJ2cy4gcHJldmlvdXMgeWVhclwiKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBjb21wYXJpc29uVGV4dEVsZW1lbnQudGV4dChcIi1cIik7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB1cGRhdGVEYXRhc2V0KCk6IHZvaWQge1xyXG5cclxuICAgIGNvbnN0IG1pblBvaW50ID0gdGhpcy5kYXRhc2V0LnJlZHVjZSgobWluLCBjdXJyZW50KSA9PiBjdXJyZW50LnkgPCBtaW4ueSA/IGN1cnJlbnQgOiBtaW4pO1xyXG4gICAgY29uc3QgbWF4UG9pbnQgPSB0aGlzLmRhdGFzZXQucmVkdWNlKChtYXgsIGN1cnJlbnQpID0+IGN1cnJlbnQueSA+IG1heC55ID8gY3VycmVudCA6IG1heCk7XHJcblxyXG4gICAgLy8gVXBkYXRlIHNjYWxlc1xyXG4gICAgY29uc3QgeFNjYWxlID0gZDMuc2NhbGVMaW5lYXIoKVxyXG4gICAgICAuZG9tYWluKFswLCBkMy5tYXgodGhpcy5kYXRhc2V0LCBkID0+IGQueCldKVxyXG4gICAgICAucmFuZ2UoWzAsIHRoaXMuZ3JhcGhXaWR0aF0pO1xyXG5cclxuICAgIGNvbnN0IHlTY2FsZSA9IGQzLnNjYWxlTGluZWFyKClcclxuICAgICAgLmRvbWFpbihbbWluUG9pbnQueSwgbWF4UG9pbnQueV0pXHJcbiAgICAgIC5yYW5nZShbdGhpcy5ncmFwaEhlaWdodCwgMF0pO1xyXG5cclxuICAgIGNvbnN0IHhBeGlzQ2FsbCA9IGQzLmF4aXNCb3R0b20oeFNjYWxlKVxyXG4gICAgICAudGlja1NpemVJbm5lcigxMCkgLy8gQWRqdXN0IHRoZSBsZW5ndGggb2YgdGhlIHRpY2tzIGFzIG5lZWRlZFxyXG4gICAgICAudGlja1NpemVPdXRlcigwKTsgLy8gSGlkZSBvdXRlciB0aWNrc1xyXG5cclxuICAgIGNvbnN0IHlBeGlzQ2FsbCA9IGQzLmF4aXNMZWZ0KHlTY2FsZSlcclxuICAgICAgLnRpY2tTaXplSW5uZXIoMTApIC8vIEFkanVzdCB0aGUgbGVuZ3RoIG9mIHRoZSB0aWNrcyBhcyBuZWVkZWRcclxuICAgICAgLnRpY2tTaXplT3V0ZXIoMTApOyAvLyBEbyBub3QgaGlkZSBvdXRlciB0aWNrc1xyXG5cclxuICAgIC8vIFVwZGF0ZSBheGVzXHJcbiAgICAvL3hBeGlzLmNhbGwoeEF4aXNDYWxsKTtcclxuICAgIC8veUF4aXMuY2FsbCh5QXhpc0NhbGwpO1xyXG5cclxuICAgIC8vIFVwZGF0ZSBjb25uZWN0aW5nIGxpbmVcclxuICAgIHRoaXMuY29ubmVjdGluZ0xpbmUgPSBkMy5saW5lKClcclxuICAgICAgLngoZCA9PiB4U2NhbGUoZC54KSlcclxuICAgICAgLnkoZCA9PiB5U2NhbGUoZC55KSlcclxuICAgICAgLmRlZmluZWQoKGQsIGkpID0+IGkgPj0gMCAmJiBpIDwgdGhpcy5kYXRhc2V0Lmxlbmd0aCk7XHJcblxyXG4gICAgZDMuc2VsZWN0KFwiI21ldHJpY19cIiArIHRoaXMubWV0cmljLmlkICsgXCJfc2NhdHRlci1wbG90XCIpLnNlbGVjdChcInBhdGhcIilcclxuICAgICAgLmRhdHVtKHRoaXMuZGF0YXNldClcclxuICAgICAgLnRyYW5zaXRpb24oKVxyXG4gICAgICAuZHVyYXRpb24oNTAwKVxyXG4gICAgICAuYXR0cihcImRcIiwgdGhpcy5jb25uZWN0aW5nTGluZSk7XHJcblxyXG4gICAgLy8gVXBkYXRlIGNpcmNsZXNcclxuICAgIGNvbnN0IGNpcmNsZXMgPSBkMy5zZWxlY3QoXCIjbWV0cmljX1wiICsgdGhpcy5tZXRyaWMuaWQgKyBcIl9zY2F0dGVyLXBsb3RcIikuc2VsZWN0QWxsKFwiY2lyY2xlXCIpXHJcbiAgICAgIC5kYXRhKHRoaXMuZGF0YXNldCk7XHJcblxyXG4gICAgY2lyY2xlcy5leGl0KCkucmVtb3ZlKCk7XHJcblxyXG4gICAgY2lyY2xlcy5lbnRlcigpXHJcbiAgICAgIC5hcHBlbmQoXCJjaXJjbGVcIilcclxuICAgICAgLm1lcmdlKGNpcmNsZXMpXHJcbiAgICAgIC50cmFuc2l0aW9uKClcclxuICAgICAgLmR1cmF0aW9uKDUwMClcclxuICAgICAgLmF0dHIoXCJjeFwiLCBkID0+IHhTY2FsZShkLngpKVxyXG4gICAgICAuYXR0cihcImN5XCIsIGQgPT4geVNjYWxlKGQueSkpXHJcbiAgICAgIC5hdHRyKFwiclwiLCA1KVxyXG4gICAgICAuYXR0cihcImZpbGxcIiwgZCA9PiB7XHJcbiAgICAgICAgaWYgKGQgPT09IG1pblBvaW50KSByZXR1cm4gXCIjRkY4QzAwXCI7IC8vIFNldCBsb3dlc3QgcG9pbnQgdG8gI0ZGOEMwMFxyXG4gICAgICAgIGlmIChkID09PSBtYXhQb2ludCkgcmV0dXJuIFwiIzMxNTg5N1wiOyAvLyBTZXQgaGlnaGVzdCBwb2ludCB0byAjMzE1ODk3XHJcbiAgICAgICAgcmV0dXJuIFwibm9uZVwiOyAvLyBNYWtlIHRoZSBvdGhlciBwb2ludHMgdHJhbnNwYXJlbnRcclxuICAgICAgfSlcclxuICAgICAgLmF0dHIoXCJzdHJva2VcIiwgZnVuY3Rpb24gKGQpIHtcclxuICAgICAgICBpZiAoZCA9PT0gbWluUG9pbnQpIHJldHVybiBkMy5jb2xvcihcIiNGRjhDMDBcIikuZGFya2VyKDAuMik7IC8vIERhcmtlbiAjRkY4QzAwIGNvbG9yXHJcbiAgICAgICAgaWYgKGQgPT09IG1heFBvaW50KSByZXR1cm4gZDMuY29sb3IoXCIjMzE1ODk3XCIpLmRhcmtlcigwLjIpOyAvLyBEYXJrZW4gIzMxNTg5NyBjb2xvclxyXG4gICAgICAgIHJldHVybiBcIm5vbmVcIjsgLy8gTm8gc3Ryb2tlIGZvciBvdGhlciBwb2ludHNcclxuICAgICAgfSlcclxuICAgICAgLmF0dHIoXCJzdHJva2Utd2lkdGhcIiwgMyk7IC8vIFNldCBzdHJva2Ugd2lkdGhcclxuICB9XHJcblxyXG4gIHN2ZzogYW55O1xyXG4gIGlubmVyR3JvdXA6IGFueTtcclxuICBncmVlbkdyb3VwOiBhbnk7XHJcbiAgdGl0bGVHcm91cDogYW55O1xyXG4gIHZhbHVlR3JvdXA6IGFueTtcclxuICB2YWx1ZVRleHQ6IGFueTtcclxuICBncmF5R3JvdXA6IGFueTtcclxuICBjb21wYXJpc29uVmFsdWVHcm91cDogYW55O1xyXG4gIGNvbXBhcmlzb25UZXh0R3JvdXA6IGFueTtcclxuICBjb21wYXJpc29uVmFsdWVUZXh0OiBhbnk7XHJcbiAgY29tcGFyaXNvblRleHRUZXh0OiBhbnk7XHJcbiAgY29ubmVjdGluZ0xpbmU6IGFueTtcclxuXHJcbiAgaW50ZXJ2YWxJZDogYW55O1xyXG5cclxuICBhc3luYyBkcmF3R3JhcGgoKSB7XHJcbiAgICB0aGlzLnN2ZyA9IGQzLnNlbGVjdCh0aGlzLmNvbnRhaW5lci5uYXRpdmVFbGVtZW50KVxyXG4gICAgICAuYXBwZW5kKFwic3ZnXCIpXHJcbiAgICAgIC5hdHRyKFwid2lkdGhcIiwgdGhpcy5vdXRlcldpZHRoKVxyXG4gICAgICAuYXR0cihcImhlaWdodFwiLCB0aGlzLm91dGVySGVpZ2h0KTtcclxuXHJcbiAgICB0aGlzLnN2Zy5hcHBlbmQoXCJyZWN0XCIpXHJcbiAgICAgIC5hdHRyKFwid2lkdGhcIiwgdGhpcy5vdXRlcldpZHRoKVxyXG4gICAgICAuYXR0cihcImhlaWdodFwiLCB0aGlzLm91dGVySGVpZ2h0KVxyXG4gICAgICAuYXR0cihcImZpbGxcIiwgXCJ0cmFuc3BhcmVudFwiKTtcclxuXHJcbiAgICB0aGlzLmlubmVyR3JvdXAgPSB0aGlzLnN2Zy5hcHBlbmQoXCJnXCIpXHJcbiAgICAgIC5hdHRyKFwidHJhbnNmb3JtXCIsIFwidHJhbnNsYXRlKFwiICsgdGhpcy5tYXJnaW4ubGVmdCArIFwiLFwiICsgdGhpcy5tYXJnaW4udG9wICsgXCIpXCIpO1xyXG5cclxuICAgIHRoaXMuaW5uZXJHcm91cC5hcHBlbmQoXCJyZWN0XCIpXHJcbiAgICAgIC5hdHRyKFwiY2xhc3NcIiwgXCJibHVlLXJlY3RcIilcclxuICAgICAgLmF0dHIoXCJmaWxsXCIsIFwidHJhbnNwYXJlbnRcIilcclxuICAgICAgLmF0dHIoXCJ3aWR0aFwiLCB0aGlzLmlubmVyV2lkdGgpXHJcbiAgICAgIC5hdHRyKFwiaGVpZ2h0XCIsIHRoaXMuaW5uZXJIZWlnaHQpO1xyXG5cclxuICAgIHRoaXMuZ3JlZW5Hcm91cCA9IHRoaXMuaW5uZXJHcm91cC5hcHBlbmQoXCJnXCIpXHJcbiAgICAgIC5hdHRyKFwidHJhbnNmb3JtXCIsIFwidHJhbnNsYXRlKFwiICsgdGhpcy5wYWRkaW5nLmxlZnQgKyBcIixcIiArIHRoaXMucGFkZGluZy50b3AgKyBcIilcIik7XHJcblxyXG4gICAgdGhpcy5ncmVlbkdyb3VwLmFwcGVuZChcInJlY3RcIilcclxuICAgICAgLmF0dHIoXCJjbGFzc1wiLCBcImdyZWVuLXJlY3RcIilcclxuICAgICAgLmF0dHIoXCJmaWxsXCIsIFwidHJhbnNwYXJlbnRcIilcclxuICAgICAgLmF0dHIoXCJ3aWR0aFwiLCB0aGlzLndpZHRoKVxyXG4gICAgICAuYXR0cihcImhlaWdodFwiLCB0aGlzLmhlaWdodCk7XHJcblxyXG4gICAgdGhpcy50aXRsZUdyb3VwID0gdGhpcy5ncmVlbkdyb3VwLmFwcGVuZChcImdcIilcclxuICAgICAgLmF0dHIoXCJjbGFzc1wiLCBcInRpdGxlLWdyb3VwXCIpXHJcbiAgICAgIC5hdHRyKFwidHJhbnNmb3JtXCIsIFwidHJhbnNsYXRlKFwiICsgdGhpcy5kaXZpc29yTGluZU1hcmdpbi5sZWZ0ICsgXCIsXCIgKyB0aGlzLmRpdmlzb3JMaW5lTWFyZ2luLnRvcCArIFwiKVwiKTtcclxuXHJcbiAgICB0aGlzLnRpdGxlR3JvdXAuYXBwZW5kKFwicmVjdFwiKVxyXG4gICAgICAuYXR0cihcInN0cm9rZVwiLCBcInRyYW5zcGFyZW50XCIpXHJcbiAgICAgIC5hdHRyKFwiZmlsbFwiLCBcInRyYW5zcGFyZW50XCIpXHJcbiAgICAgIC5hdHRyKFwiY2xhc3NcIiwgXCJ0aXRsZS1yZWN0XCIpXHJcbiAgICAgIC5hdHRyKFwid2lkdGhcIiwgdGhpcy50aXRsZVJlY3RXaWR0aClcclxuICAgICAgLmF0dHIoXCJoZWlnaHRcIiwgdGhpcy50aXRsZVJlY3RIZWlnaHQpO1xyXG5cclxuICAgIHRoaXMudGl0bGVHcm91cC5hcHBlbmQoXCJ0ZXh0XCIpXHJcbiAgICAgIC5hdHRyKFwiaWRcIiwgXCJtZXRyaWNfXCIgKyB0aGlzLm1ldHJpYy5pZCArIFwiX25hbWVcIilcclxuICAgICAgLmF0dHIoXCJ4XCIsIHRoaXMudGl0bGVSZWN0V2lkdGggLyAyKVxyXG4gICAgICAuYXR0cihcInlcIiwgdGhpcy50aXRsZVJlY3RIZWlnaHQgLyAyKVxyXG4gICAgICAuYXR0cihcImNsYXNzXCIsIFwiZ3JhcGgtdGl0bGVcIilcclxuICAgICAgLmF0dHIoXCJmaWxsXCIsIHRoaXMudGl0bGVGaWxsQ29sb3IpXHJcbiAgICAgIC5hdHRyKFwiZm9udC1zaXplXCIsIHRoaXMudGl0bGVSZWN0SGVpZ2h0KVxyXG4gICAgICAuYXR0cihcInRleHQtYW5jaG9yXCIsIFwibWlkZGxlXCIpXHJcbiAgICAgIC5hdHRyKFwiYWxpZ25tZW50LWJhc2VsaW5lXCIsIFwibWlkZGxlXCIpXHJcbiAgICAgIC50ZXh0KHRoaXMubWV0cmljLm5hbWUpO1xyXG5cclxuICAgIHRoaXMuZ3JlZW5Hcm91cC5hcHBlbmQoXCJsaW5lXCIpXHJcbiAgICAgIC5hdHRyKFwieDFcIiwgdGhpcy5kaXZpc29yTGluZU1hcmdpbi5sZWZ0KVxyXG4gICAgICAuYXR0cihcInkxXCIsIHRoaXMuZ3JhcGhIZWlnaHQgKiAyIC8gMylcclxuICAgICAgLmF0dHIoXCJ4MlwiLCB0aGlzLndpZHRoIC0gdGhpcy5kaXZpc29yTGluZU1hcmdpbi5yaWdodClcclxuICAgICAgLmF0dHIoXCJ5MlwiLCB0aGlzLmdyYXBoSGVpZ2h0ICogMiAvIDMpXHJcbiAgICAgIC5hdHRyKFwic3Ryb2tlXCIsIHRoaXMuZGl2aXNvckxpbmVTdHJva2VDb2xvcilcclxuICAgICAgLmF0dHIoXCJzdHJva2Utd2lkdGhcIiwgdGhpcy5kaXZpc29yTGluZVN0cm9rZVdpZHRoKTtcclxuXHJcbiAgICBjb25zdCB2YWx1ZUdyb3VwVHJhbnNsYXRlWSA9IHRoaXMuaGVpZ2h0IC8gMiAvIDMgKyB0aGlzLmRpdmlzb3JMaW5lTWFyZ2luLmJvdHRvbTtcclxuICAgIHRoaXMudmFsdWVHcm91cCA9IHRoaXMuZ3JlZW5Hcm91cC5hcHBlbmQoXCJnXCIpXHJcbiAgICAgIC5hdHRyKFwiY2xhc3NcIiwgXCJ2YWx1ZS1ncm91cFwiKVxyXG4gICAgICAuYXR0cihcInRyYW5zZm9ybVwiLCBcInRyYW5zbGF0ZShcIiArIHRoaXMuZGl2aXNvckxpbmVNYXJnaW4ubGVmdCArIFwiLFwiICsgdmFsdWVHcm91cFRyYW5zbGF0ZVkgKyBcIilcIik7XHJcblxyXG4gICAgdGhpcy52YWx1ZUdyb3VwLmFwcGVuZChcInJlY3RcIilcclxuICAgICAgLmF0dHIoXCJzdHJva2VcIiwgXCJ0cmFuc3BhcmVudFwiKVxyXG4gICAgICAuYXR0cihcImZpbGxcIiwgXCJ0cmFuc3BhcmVudFwiKVxyXG4gICAgICAuYXR0cihcImNsYXNzXCIsIFwidmFsdWUtcmVjdFwiKVxyXG4gICAgICAuYXR0cihcIndpZHRoXCIsIHRoaXMudmFsdWVSZWN0V2lkdGgpXHJcbiAgICAgIC5hdHRyKFwiaGVpZ2h0XCIsIHRoaXMudmFsdWVSZWN0SGVpZ2h0KTtcclxuXHJcbiAgICB0aGlzLnZhbHVlVGV4dCA9IHRoaXMudmFsdWVHcm91cC5hcHBlbmQoXCJ0ZXh0XCIpXHJcbiAgICAgIC5hdHRyKFwiaWRcIiwgXCJtZXRyaWNfXCIgKyB0aGlzLm1ldHJpYy5pZCArIFwiX3ZhbHVlXCIpXHJcbiAgICAgIC5hdHRyKFwieFwiLCB0aGlzLnZhbHVlUmVjdFdpZHRoIC8gMilcclxuICAgICAgLmF0dHIoXCJ5XCIsIHRoaXMudmFsdWVSZWN0SGVpZ2h0IC8gMilcclxuICAgICAgLmF0dHIoXCJjbGFzc1wiLCBcImdyYXBoLXZhbHVlXCIpXHJcbiAgICAgIC5hdHRyKFwiZmlsbFwiLCB0aGlzLnZhbHVlRmlsbENvbG9yKVxyXG4gICAgICAuYXR0cihcImZvbnQtc2l6ZVwiLCAodGhpcy52YWx1ZUZvbnRTaXplIHx8IHRoaXMudmFsdWVSZWN0SGVpZ2h0KSArIFwicHhcIilcclxuICAgICAgLmF0dHIoXCJ0ZXh0LWFuY2hvclwiLCBcIm1pZGRsZVwiKVxyXG4gICAgICAuYXR0cihcImFsaWdubWVudC1iYXNlbGluZVwiLCBcIm1pZGRsZVwiKTtcclxuXHJcbiAgICBjb25zdCBzdGFydFZhbHVlID0gMDtcclxuICAgIGNvbnN0IGVuZFZhbHVlID0gdGhpcy52YWx1ZTtcclxuICAgIHN3aXRjaCAodGhpcy5tZXRyaWMuZGF0YVR5cGUpIHtcclxuICAgICAgY2FzZSBFbnVtSUNvcmVTdGF0aXN0aWNXaWRnZXREYXRhVHlwZS5JTlRFR0VSOlxyXG4gICAgICAgIHRoaXMudmFsdWVUZXh0XHJcbiAgICAgICAgICAudHJhbnNpdGlvbigpXHJcbiAgICAgICAgICAudHdlZW4oXCJ0ZXh0XCIsICgpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgaW50ZXJwb2xhdG9yID0gZDMuaW50ZXJwb2xhdGVOdW1iZXIoc3RhcnRWYWx1ZSwgZW5kVmFsdWUpO1xyXG4gICAgICAgICAgICByZXR1cm4gdCA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy52YWx1ZVRleHQudGV4dChNYXRoLnJvdW5kKGludGVycG9sYXRvcih0KSkpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICAuZHVyYXRpb24oNTAwKVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIEVudW1JQ29yZVN0YXRpc3RpY1dpZGdldERhdGFUeXBlLkRFQ0lNQUw6XHJcbiAgICAgICAgdGhpcy52YWx1ZVRleHRcclxuICAgICAgICAgIC50cmFuc2l0aW9uKClcclxuICAgICAgICAgIC50d2VlbihcInRleHRcIiwgKCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBpbnRlcnBvbGF0b3IgPSBkMy5pbnRlcnBvbGF0ZU51bWJlcihzdGFydFZhbHVlLCBlbmRWYWx1ZSk7XHJcbiAgICAgICAgICAgIHJldHVybiB0ID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLnZhbHVlVGV4dC50ZXh0KE1hdGgucm91bmQoaW50ZXJwb2xhdG9yKHQpICogMTAwKSAvIDEwMClcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgIC5kdXJhdGlvbig1MDApXHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgRW51bUlDb3JlU3RhdGlzdGljV2lkZ2V0RGF0YVR5cGUuUEVSQ0VOVEFHRTpcclxuICAgICAgICB0aGlzLnZhbHVlVGV4dFxyXG4gICAgICAgICAgLnRyYW5zaXRpb24oKVxyXG4gICAgICAgICAgLnR3ZWVuKFwidGV4dFwiLCAoKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGludGVycG9sYXRvciA9IGQzLmludGVycG9sYXRlTnVtYmVyKHN0YXJ0VmFsdWUsIGVuZFZhbHVlKTtcclxuICAgICAgICAgICAgcmV0dXJuIHQgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMudmFsdWVUZXh0LnRleHQoTWF0aC5yb3VuZChpbnRlcnBvbGF0b3IodCkgKiAxMDAwMCkgLyAxMDAgKyBcIiVcIilcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgIC5kdXJhdGlvbig1MDApXHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgdGhpcy52YWx1ZVRleHQudGV4dCh0aGlzLnZhbHVlLnRvU3RyaW5nKCkpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gICAgdGhpcy5wcmV2aW91c1ZhbHVlID0gdGhpcy52YWx1ZTtcclxuXHJcbiAgICB0aGlzLmdyYXlHcm91cCA9IHRoaXMuZ3JlZW5Hcm91cC5hcHBlbmQoXCJnXCIpXHJcbiAgICAgIC5hdHRyKFwiaWRcIiwgXCJtZXRyaWNfXCIgKyB0aGlzLm1ldHJpYy5pZCArIFwiX3NjYXR0ZXItcGxvdFwiKVxyXG4gICAgICAuYXR0cihcInRyYW5zZm9ybVwiLCBcInRyYW5zbGF0ZShcIiArIHRoaXMuZGl2aXNvckxpbmVNYXJnaW4ubGVmdCArIFwiLCBcIiArIHRoaXMuaGVpZ2h0IC8gMiArIFwiKVwiKTtcclxuXHJcbiAgICB0aGlzLmdyYXlHcm91cC5hcHBlbmQoXCJyZWN0XCIpXHJcbiAgICAgIC5hdHRyKFwiY2xhc3NcIiwgXCJncmFwaC1jb250YWluZXJcIilcclxuICAgICAgLmF0dHIoXCJmaWxsXCIsIGQzLmNvbG9yKFwidHJhbnNwYXJlbnRcIikuYnJpZ2h0ZXIoMSkpXHJcbiAgICAgIC5hdHRyKFwid2lkdGhcIiwgdGhpcy5ncmFwaFdpZHRoKVxyXG4gICAgICAuYXR0cihcImhlaWdodFwiLCB0aGlzLmdyYXBoSGVpZ2h0KTtcclxuXHJcblxyXG4gICAgY29uc3QgeEF4aXMgPSB0aGlzLmdyYXlHcm91cC5hcHBlbmQoXCJnXCIpXHJcbiAgICAgIC5hdHRyKFwiY2xhc3NcIiwgXCJ4IGF4aXNcIilcclxuICAgICAgLmF0dHIoXCJ0cmFuc2Zvcm1cIiwgXCJ0cmFuc2xhdGUoMCxcIiArIHRoaXMuZ3JhcGhIZWlnaHQgKyBcIilcIik7XHJcblxyXG4gICAgY29uc3QgeUF4aXMgPSB0aGlzLmdyYXlHcm91cC5hcHBlbmQoXCJnXCIpXHJcbiAgICAgIC5hdHRyKFwiY2xhc3NcIiwgXCJ5IGF4aXNcIik7XHJcblxyXG4gICAgLy94QXhpcy5jYWxsKHhBeGlzQ2FsbCk7XHJcbiAgICAvL3lBeGlzLmNhbGwoeUF4aXNDYWxsKTtcclxuXHJcbiAgICAvLyBTZWxlY3QgdGV4dCBlbGVtZW50cyBhc3NvY2lhdGVkIHdpdGggdGlja3MgYW5kIGhpZGUgdGhlbVxyXG4gICAgdGhpcy5ncmF5R3JvdXAuc2VsZWN0QWxsKFwiLnRpY2sgdGV4dFwiKS5hdHRyKFwiZGlzcGxheVwiLCBcIm5vbmVcIik7XHJcblxyXG4gICAgY29uc3QgY29tcGFyaXNvblZhbHVlR3JvdXBUcmFuc2xhdGVZID0gdGhpcy5oZWlnaHQgKiAzIC8gNCArIHRoaXMuZGl2aXNvckxpbmVNYXJnaW4uYm90dG9tO1xyXG4gICAgdGhpcy5jb21wYXJpc29uVmFsdWVHcm91cCA9IHRoaXMuZ3JlZW5Hcm91cC5hcHBlbmQoXCJnXCIpXHJcbiAgICAgIC5hdHRyKFwiY2xhc3NcIiwgXCJjb21wYXJpc29uLXZhbHVlLWdyb3VwXCIpXHJcbiAgICAgIC5hdHRyKFwidHJhbnNmb3JtXCIsIFwidHJhbnNsYXRlKFwiICsgdGhpcy5kaXZpc29yTGluZU1hcmdpbi5sZWZ0ICsgXCIsXCIgKyBjb21wYXJpc29uVmFsdWVHcm91cFRyYW5zbGF0ZVkgKyBcIilcIik7XHJcblxyXG4gICAgdGhpcy5jb21wYXJpc29uVmFsdWVHcm91cC5hcHBlbmQoXCJyZWN0XCIpXHJcbiAgICAgIC5hdHRyKFwic3Ryb2tlXCIsIFwidHJhbnNwYXJlbnRcIilcclxuICAgICAgLmF0dHIoXCJmaWxsXCIsIFwidHJhbnNwYXJlbnRcIilcclxuICAgICAgLmF0dHIoXCJjbGFzc1wiLCBcInZhbHVlLXJlY3RcIilcclxuICAgICAgLmF0dHIoXCJ3aWR0aFwiLCB0aGlzLmNvbXBhcmlzb25WYWx1ZVJlY3RXaWR0aClcclxuICAgICAgLmF0dHIoXCJoZWlnaHRcIiwgdGhpcy5jb21wYXJpc29uVmFsdWVSZWN0SGVpZ2h0KTtcclxuXHJcbiAgICBjb25zdCBjb21wYXJpc29uVmFsdWVUZXh0ID0gdGhpcy5jb21wYXJpc29uVmFsdWVHcm91cC5hcHBlbmQoXCJ0ZXh0XCIpXHJcbiAgICAgIC5hdHRyKFwiaWRcIiwgXCJtZXRyaWNfXCIgKyB0aGlzLm1ldHJpYy5pZCArIFwiX2NvbXBhcmlzb25WYWx1ZVwiKVxyXG4gICAgICAuYXR0cihcInhcIiwgdGhpcy5jb21wYXJpc29uVmFsdWVSZWN0V2lkdGggLyAyKVxyXG4gICAgICAuYXR0cihcInlcIiwgdGhpcy5jb21wYXJpc29uVmFsdWVSZWN0SGVpZ2h0IC8gMilcclxuICAgICAgLmF0dHIoXCJjbGFzc1wiLCBcImdyYXBoLXZhbHVlXCIpXHJcbiAgICAgIC5hdHRyKFwiZmlsbFwiLCB0aGlzLmNvbXBhcmlzb25WYWx1ZSA+PSAwID8gdGhpcy5jb21wYXJpc29uVmFsdWVGaWxsQ29sb3IgOiBkMy5jb2xvcihcInJlZFwiKSlcclxuICAgICAgLmF0dHIoXCJmb250LXNpemVcIiwgdGhpcy5jb21wYXJpc29uVmFsdWVSZWN0SGVpZ2h0ICsgXCJweFwiKVxyXG4gICAgICAuYXR0cihcInRleHQtYW5jaG9yXCIsIFwibWlkZGxlXCIpXHJcbiAgICAgIC5hdHRyKFwiYWxpZ25tZW50LWJhc2VsaW5lXCIsIFwibWlkZGxlXCIpO1xyXG5cclxuICAgIHN3aXRjaCAodGhpcy5tZXRyaWMuZGF0YVR5cGUpIHtcclxuICAgICAgY2FzZSBFbnVtSUNvcmVTdGF0aXN0aWNXaWRnZXREYXRhVHlwZS5JTlRFR0VSOlxyXG4gICAgICAgIGNvbXBhcmlzb25WYWx1ZVRleHRcclxuICAgICAgICAgIC50cmFuc2l0aW9uKClcclxuICAgICAgICAgIC50d2VlbihcInRleHRcIiwgKCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBpbnRlcnBvbGF0b3IgPSBkMy5pbnRlcnBvbGF0ZU51bWJlcihzdGFydFZhbHVlLCBlbmRWYWx1ZSk7XHJcbiAgICAgICAgICAgIHJldHVybiB0ID0+IHtcclxuICAgICAgICAgICAgICBjb21wYXJpc29uVmFsdWVUZXh0LnRleHQoTWF0aC5yb3VuZChpbnRlcnBvbGF0b3IodCkpKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgLmR1cmF0aW9uKDUwMClcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBFbnVtSUNvcmVTdGF0aXN0aWNXaWRnZXREYXRhVHlwZS5ERUNJTUFMOlxyXG4gICAgICAgIGNvbXBhcmlzb25WYWx1ZVRleHRcclxuICAgICAgICAgIC50cmFuc2l0aW9uKClcclxuICAgICAgICAgIC50d2VlbihcInRleHRcIiwgKCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBpbnRlcnBvbGF0b3IgPSBkMy5pbnRlcnBvbGF0ZU51bWJlcihzdGFydFZhbHVlLCBlbmRWYWx1ZSk7XHJcbiAgICAgICAgICAgIHJldHVybiB0ID0+IHtcclxuICAgICAgICAgICAgICBjb21wYXJpc29uVmFsdWVUZXh0LnRleHQoTWF0aC5yb3VuZChpbnRlcnBvbGF0b3IodCkgKiAxMDApIC8gMTAwKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgLmR1cmF0aW9uKDUwMClcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBFbnVtSUNvcmVTdGF0aXN0aWNXaWRnZXREYXRhVHlwZS5QRVJDRU5UQUdFOlxyXG4gICAgICAgIGNvbXBhcmlzb25WYWx1ZVRleHRcclxuICAgICAgICAgIC50cmFuc2l0aW9uKClcclxuICAgICAgICAgIC50d2VlbihcInRleHRcIiwgKCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBpbnRlcnBvbGF0b3IgPSBkMy5pbnRlcnBvbGF0ZU51bWJlcihzdGFydFZhbHVlLCBlbmRWYWx1ZSk7XHJcbiAgICAgICAgICAgIHJldHVybiB0ID0+IHtcclxuICAgICAgICAgICAgICBjb21wYXJpc29uVmFsdWVUZXh0LnRleHQoTWF0aC5yb3VuZChpbnRlcnBvbGF0b3IodCkgKiAxMDAwMCkgLyAxMDAgKyBcIiVcIilcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgIC5kdXJhdGlvbig1MDApXHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgY29tcGFyaXNvblZhbHVlVGV4dC50ZXh0KHRoaXMuY29tcGFyaXNvblZhbHVlLnRvU3RyaW5nKCkpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gICAgdGhpcy5wcmV2aW91c0NvbXBhcmlzb25WYWx1ZSA9IHRoaXMuY29tcGFyaXNvblZhbHVlO1xyXG5cclxuICAgIGNvbnN0IGNvbXBhcmlzb25UZXh0R3JvdXBUcmFuc2xhdGVZID0gdGhpcy5oZWlnaHQgKiAzIC8gNCArIHRoaXMuZGl2aXNvckxpbmVNYXJnaW4uYm90dG9tICsgdGhpcy5jb21wYXJpc29uVGV4dFJlY3RIZWlnaHQ7XHJcbiAgICB0aGlzLmNvbXBhcmlzb25UZXh0R3JvdXAgPSB0aGlzLmdyZWVuR3JvdXAuYXBwZW5kKFwiZ1wiKVxyXG4gICAgICAuYXR0cihcImNsYXNzXCIsIFwiY29tcGFyaXNvbi10ZXh0LWdyb3VwXCIpXHJcbiAgICAgIC5hdHRyKFwidHJhbnNmb3JtXCIsIFwidHJhbnNsYXRlKFwiICsgdGhpcy5kaXZpc29yTGluZU1hcmdpbi5sZWZ0ICsgXCIsXCIgKyBjb21wYXJpc29uVGV4dEdyb3VwVHJhbnNsYXRlWSArIFwiKVwiKTtcclxuXHJcbiAgICB0aGlzLmNvbXBhcmlzb25UZXh0R3JvdXAuYXBwZW5kKFwicmVjdFwiKVxyXG4gICAgICAuYXR0cihcInN0cm9rZVwiLCBcInRyYW5zcGFyZW50XCIpXHJcbiAgICAgIC5hdHRyKFwiZmlsbFwiLCBcInRyYW5zcGFyZW50XCIpXHJcbiAgICAgIC5hdHRyKFwiY2xhc3NcIiwgXCJ0ZXh0LXJlY3RcIilcclxuICAgICAgLmF0dHIoXCJ3aWR0aFwiLCB0aGlzLmNvbXBhcmlzb25UZXh0UmVjdFdpZHRoKVxyXG4gICAgICAuYXR0cihcImhlaWdodFwiLCB0aGlzLmNvbXBhcmlzb25UZXh0UmVjdEhlaWdodCk7XHJcblxyXG4gICAgdGhpcy5jb21wYXJpc29uVGV4dFRleHQgPSB0aGlzLmNvbXBhcmlzb25UZXh0R3JvdXAuYXBwZW5kKFwidGV4dFwiKVxyXG4gICAgICAuYXR0cihcImlkXCIsIFwibWV0cmljX1wiICsgdGhpcy5tZXRyaWMuaWQgKyBcIl9jb21wYXJpc29uVGV4dFwiKVxyXG4gICAgICAuYXR0cihcInhcIiwgdGhpcy5jb21wYXJpc29uVGV4dFJlY3RXaWR0aCAvIDIpXHJcbiAgICAgIC5hdHRyKFwieVwiLCB0aGlzLmNvbXBhcmlzb25UZXh0UmVjdEhlaWdodCAvIDIpXHJcbiAgICAgIC5hdHRyKFwiY2xhc3NcIiwgXCJncmFwaC10ZXh0XCIpXHJcbiAgICAgIC5hdHRyKFwiZmlsbFwiLCB0aGlzLmNvbXBhcmlzb25UZXh0RmlsbENvbG9yKVxyXG4gICAgICAuYXR0cihcImZvbnQtc2l6ZVwiLCB0aGlzLmNvbXBhcmlzb25UZXh0UmVjdEhlaWdodCAvIDIgKyBcInB4XCIpXHJcbiAgICAgIC5hdHRyKFwidGV4dC1hbmNob3JcIiwgXCJtaWRkbGVcIilcclxuICAgICAgLmF0dHIoXCJhbGlnbm1lbnQtYmFzZWxpbmVcIiwgXCJtaWRkbGVcIik7XHJcblxyXG4gICAgc3dpdGNoICh0aGlzLm1ldHJpYy5jb21wYXJpc29uQ29kZSkge1xyXG4gICAgICBjYXNlIEVudW1IckNvbXBhcmlzb25Db2RlLldJVEhfUFJFVklPVVNfTU9OVEg6XHJcbiAgICAgICAgdGhpcy5jb21wYXJpc29uVGV4dFRleHQudGV4dChcInZzLiBwcmV2aW91cyBtb250aFwiKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBFbnVtSHJDb21wYXJpc29uQ29kZS5XSVRIX1BSRVZJT1VTX1lFQVI6XHJcbiAgICAgICAgdGhpcy5jb21wYXJpc29uVGV4dFRleHQudGV4dChcInZzLiBwcmV2aW91cyB5ZWFyXCIpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHRoaXMuY29tcGFyaXNvblRleHRUZXh0LnRleHQoXCItXCIpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG5cclxuICAgIC8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovXHJcblxyXG4gICAgY29uc3QgaW5pdGlhbERhdGFzZXQ6IGFueSA9IHRoaXMuZGF0YXNldDtcclxuICAgIGNvbnN0IG1pblBvaW50OiBhbnkgPSBpbml0aWFsRGF0YXNldC5yZWR1Y2UoKG1pbiwgY3VycmVudCkgPT4gY3VycmVudC55IDwgbWluLnkgPyBjdXJyZW50IDogbWluKTtcclxuICAgIGNvbnN0IG1heFBvaW50OiBhbnkgPSBpbml0aWFsRGF0YXNldC5yZWR1Y2UoKG1heCwgY3VycmVudCkgPT4gY3VycmVudC55ID4gbWF4LnkgPyBjdXJyZW50IDogbWF4KTtcclxuXHJcbiAgICBjb25zdCB4U2NhbGUgPSBkMy5zY2FsZUxpbmVhcigpXHJcbiAgICAgIC5kb21haW4oWzAsIGQzLm1heChpbml0aWFsRGF0YXNldCwgZCA9PiBkLngpXSlcclxuICAgICAgLnJhbmdlKFswLCB0aGlzLmdyYXBoV2lkdGhdKTtcclxuXHJcbiAgICBjb25zdCB5U2NhbGUgPSBkMy5zY2FsZUxpbmVhcigpXHJcbiAgICAgIC5kb21haW4oW21pblBvaW50LnksIG1heFBvaW50LnldKVxyXG4gICAgICAucmFuZ2UoW3RoaXMuZ3JhcGhIZWlnaHQsIDBdKTtcclxuXHJcbiAgICB0aGlzLmNvbm5lY3RpbmdMaW5lID0gZDMubGluZSgpXHJcbiAgICAgIC54KGQgPT4geFNjYWxlKGQueCkpXHJcbiAgICAgIC55KGQgPT4geVNjYWxlKGQueSkpXHJcbiAgICAgIC5kZWZpbmVkKChkLCBpKSA9PiBpID49IDAgJiYgaSA8IGluaXRpYWxEYXRhc2V0Lmxlbmd0aCk7XHJcblxyXG4gICAgdGhpcy5ncmF5R3JvdXAuYXBwZW5kKFwicGF0aFwiKVxyXG4gICAgICAuZGF0dW0oaW5pdGlhbERhdGFzZXQpXHJcbiAgICAgIC5hdHRyKFwiZmlsbFwiLCBcIm5vbmVcIilcclxuICAgICAgLmF0dHIoXCJzdHJva2VcIiwgXCJkYXJrZ3JheVwiKVxyXG4gICAgICAuYXR0cihcInN0cm9rZS13aWR0aFwiLCAzKVxyXG4gICAgICAuYXR0cihcImRcIiwgdGhpcy5jb25uZWN0aW5nTGluZSk7XHJcblxyXG4gICAgdGhpcy5ncmF5R3JvdXAuc2VsZWN0QWxsKFwiY2lyY2xlXCIpXHJcbiAgICAgIC5kYXRhKGluaXRpYWxEYXRhc2V0KVxyXG4gICAgICAuZW50ZXIoKVxyXG4gICAgICAuYXBwZW5kKFwiY2lyY2xlXCIpXHJcbiAgICAgIC5hdHRyKFwiY3hcIiwgZCA9PiB4U2NhbGUoZC54KSlcclxuICAgICAgLmF0dHIoXCJjeVwiLCBkID0+IHlTY2FsZShkLnkpKVxyXG4gICAgICAuYXR0cihcInJcIiwgNSlcclxuICAgICAgLmF0dHIoXCJmaWxsXCIsIGQgPT4ge1xyXG4gICAgICAgIGlmIChkID09PSBtaW5Qb2ludCkgcmV0dXJuIFwiI0ZGOEMwMFwiOyAvLyBTZXQgbG93ZXN0IHBvaW50IHRvICNGRjhDMDBcclxuICAgICAgICBpZiAoZCA9PT0gbWF4UG9pbnQpIHJldHVybiBcIiMzMTU4OTdcIjsgLy8gU2V0IGhpZ2hlc3QgcG9pbnQgdG8gIzMxNTg5N1xyXG4gICAgICAgIHJldHVybiBcIm5vbmVcIjsgLy8gU2V0IHRoZSBvdGhlciBwb2ludHMgdHJhbnNwYXJlbnRcclxuICAgICAgfSlcclxuICAgICAgLmF0dHIoXCJzdHJva2VcIiwgZnVuY3Rpb24gKGQpIHtcclxuICAgICAgICBpZiAoZCA9PT0gbWluUG9pbnQpIHJldHVybiBkMy5jb2xvcihcIiNGRjhDMDBcIikuZGFya2VyKDAuMik7IC8vIERhcmtlbiAjRkY4QzAwIGNvbG9yXHJcbiAgICAgICAgaWYgKGQgPT09IG1heFBvaW50KSByZXR1cm4gZDMuY29sb3IoXCIjMzE1ODk3XCIpLmRhcmtlcigwLjIpOyAvLyBEYXJrZW4gIzMxNTg5NyBjb2xvclxyXG4gICAgICAgIHJldHVybiBcIm5vbmVcIjsgLy8gTm8gc3Ryb2tlIGZvciBvdGhlciBwb2ludHNcclxuICAgICAgfSlcclxuICAgICAgLmF0dHIoXCJzdHJva2Utd2lkdGhcIiwgMyk7IC8vIFNldCBzdHJva2Ugd2lkdGhcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLmRyYXdHcmFwaCgpO1xyXG4gICAgICB0aGlzLnVwZGF0ZU1ldHJpY0NvbXBhcmlzb25WYWx1ZSgpO1xyXG4gICAgfSlcclxuICB9XHJcblxyXG59IiwiPGRpdiAjY29udGFpbmVyIGNsYXNzPVwiY29yZS1zdGF0aXN0aWMtd2lkZ2V0LWNvbnRhaW5lclwiPlxyXG4gICAgXHJcbjwvZGl2PiJdfQ==
|
|
@@ -22552,8 +22552,6 @@ class CoreStatisticWidgetComponent {
|
|
|
22552
22552
|
.attr("font-size", this.comparisonValueRectHeight + "px")
|
|
22553
22553
|
.attr("text-anchor", "middle")
|
|
22554
22554
|
.attr("alignment-baseline", "middle");
|
|
22555
|
-
const startComparisonValue = 0;
|
|
22556
|
-
const endComparisonValue = this.comparisonValue;
|
|
22557
22555
|
switch (this.metric.dataType) {
|
|
22558
22556
|
case EnumICoreStatisticWidgetDataType.INTEGER:
|
|
22559
22557
|
comparisonValueText
|
|
@@ -22669,6 +22667,7 @@ class CoreStatisticWidgetComponent {
|
|
|
22669
22667
|
ngAfterViewInit() {
|
|
22670
22668
|
setTimeout(() => {
|
|
22671
22669
|
this.drawGraph();
|
|
22670
|
+
this.updateMetricComparisonValue();
|
|
22672
22671
|
});
|
|
22673
22672
|
}
|
|
22674
22673
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: CoreStatisticWidgetComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|