@jax-data-science/sci-image-visualizer 0.2.0 → 0.2.2

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.
@@ -111,6 +111,7 @@ export class ChannelHistogramComponent {
111
111
  }
112
112
  selectChannel(ch) {
113
113
  this.selected = ch;
114
+ this.api.setSelectedChannel(ch.index); // a single-scalar 3D Surface follows the selected band
114
115
  this.histRetries = 0;
115
116
  this.loadHistogram();
116
117
  }
@@ -395,4 +396,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImpor
395
396
  }], visibleChange: [{
396
397
  type: Output
397
398
  }] } });
398
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbm5lbC1oaXN0b2dyYW0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9jaGFubmVsLWhpc3RvZ3JhbS9jaGFubmVsLWhpc3RvZ3JhbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvbGliL2NoYW5uZWwtaGlzdG9ncmFtL2NoYW5uZWwtaGlzdG9ncmFtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQXFCLE1BQU0sR0FDbEUsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVwQyxPQUFPLEtBQUssTUFBTSxNQUFNLG9CQUFvQixDQUFDO0FBRTdDLE9BQU8sRUFDTCxxQkFBcUIsRUFBbUQsVUFBVSxHQUNuRixNQUFNLDZDQUE2QyxDQUFDOzs7Ozs7Ozs7Ozs7OztBQUVyRDs7Ozs7Ozs7R0FRRztBQVFILE1BQU0sT0FBTyx5QkFBeUI7SUFpQ3BDLFlBQW1ELEdBQXlCO1FBQXpCLFFBQUcsR0FBSCxHQUFHLENBQXNCO1FBaEM1RSxpRkFBaUY7UUFDeEUsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUNmLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUU3QyxpQkFBWSxHQUFHLHdCQUF3QixDQUFDO1FBQ3hDLGNBQVMsR0FBRyxVQUFVLENBQUM7UUFFaEMsYUFBUSxHQUFvQixFQUFFLENBQUM7UUFDL0IsYUFBUSxHQUF5QixJQUFJLENBQUM7UUFDdEMsV0FBTSxHQUFHLEtBQUssQ0FBQztRQUNmLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIscUVBQXFFO1FBQzdELGdCQUFXLEdBQUcsQ0FBQyxDQUFDO1FBQ3hCOztxRkFFNkU7UUFDN0UsU0FBSSxHQUFzQixJQUFJLENBQUM7UUFFL0I7Ozt3RkFHZ0Y7UUFD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RyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDN0MsSUFBSSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUM1RCxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBQ0QsV0FBVyxDQUFDLEtBQVU7UUFDcEIsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRO1lBQUUsT0FBTztRQUMzQixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQy9CLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDN0MsSUFBSSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUM1RCxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBQ0QsYUFBYSxDQUFDLEtBQVU7UUFDdEIsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRO1lBQUUsT0FBTztRQUMzQixNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEIsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQUUsT0FBTztRQUNyQixJQUFJLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzVELElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENB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LEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRTtZQUNwQyxNQUFNLEVBQUUsQ0FBQztZQUNULEtBQUssRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFO1lBQ3BHLEtBQUssRUFBRTtnQkFDTCxLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxPQUFPO2dCQUM5QyxRQUFRLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLElBQUk7YUFDakQ7WUFDRCxhQUFhLEVBQUUscUJBQXFCO1lBQ3BDLFlBQVksRUFBRSxxQkFBcUI7WUFDbkMsSUFBSSxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFO1lBQ2pDLE1BQU0sRUFBRSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQzNCLFVBQVUsRUFBRSxLQUFLO1NBQ2xCLENBQUM7SUFDSixDQUFDOzhHQXpWVSx5QkFBeUIsa0JBaUNoQixxQkFBcUI7a0dBakM5Qix5QkFBeUIsc0lDM0J0Qyxrb05BNEhBOzsyRkRqR2EseUJBQXlCO2tCQVByQyxTQUFTOytCQUdFLG1CQUFtQjs7MEJBcUNoQixNQUFNOzJCQUFDLHFCQUFxQjt5Q0EvQmhDLE9BQU87c0JBQWYsS0FBSztnQkFDSSxhQUFhO3NCQUF0QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIEluamVjdCwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBUcmVlTm9kZSB9IGZyb20gJ3ByaW1lbmcvYXBpJztcbmltcG9ydCAqIGFzIFBsb3RseSBmcm9tICdwbG90bHkuanMtZGlzdC1taW4nO1xuXG5pbXBvcnQge1xuICBDSEFOTkVMX0hJU1RPR1JBTV9BUEksIElDaGFubmVsSGlzdG9ncmFtQXBpLCBJQ2hhbm5lbFN0YXRlLCBJSGlzdG9ncmFtLCBMVVRfQ09MT1JTLFxufSBmcm9tICcuLi9jb250cmFjdHMvY2hhbm5lbC1oaXN0b2dyYW0tYXBpLmNvbnRyYWN0JztcblxuLyoqXG4gKiBDaGFubmVscyAmIEhpc3RvZ3JhbSBwYW5lOiBhIG5vbi1tb2RhbCwgcmVzaXphYmxlLCBkcmFnZ2FibGUgZGlhbG9nIGZvclxuICogYnJpZ2h0bmVzcy9jb250cmFzdCAocGVyLWNoYW5uZWwgZGlzcGxheSB3aW5kb3cpLCBnYW1tYSwgY2hhbm5lbFxuICogdmlzaWJpbGl0eS9jb2xvdXIsIHRoZSBpbnRlbnNpdHkgaGlzdG9ncmFtLCBhbmQgdGhlIGNvbG9ybWFwL3JldmVyc2UvaW52ZXJ0XG4gKiBjb250cm9scyAobW92ZWQgaGVyZSBmcm9tIHRoZSB0b29sYmFyKS4gRXZlcnkgZWRpdCBmbG93cyB0aHJvdWdoXG4gKiB7QGxpbmsgQ0hBTk5FTF9ISVNUT0dSQU1fQVBJfSBpbnRvIHRoZSBzaGFyZWQgc3RvcmUsIGFuZCBib3RoIHJlbmRlcmluZ1xuICogYmFja2VuZHMgcmVjb2xvciB0aGUgZGlzcGxheWVkIGltYWdlIGxpdmUuIFRoZSBwYW5lIGRlcGVuZHMgb25seSBvbiB0aGVcbiAqIGNvbnRyYWN0LCBuZXZlciB0aGUgY29uY3JldGUgdmlzdWFsaXplci5cbiAqL1xuQENvbXBvbmVudCh7XG4gIC8vIENhbm9uaWNhbCBwcmVmaXhlZCBzZWxlY3RvciBmaXJzdDsgdGhlIHVucHJlZml4ZWQgb3JpZ2luYWwgaXMga2VwdCBhcyBhblxuICAvLyBhbGlhcyBmb3Igb25lIHJlbGVhc2UgKHByZS1wdWJsaWNhdGlvbiBiYWNrLWNvbXBhdCkuXG4gIHNlbGVjdG9yOiAnY2hhbm5lbC1oaXN0b2dyYW0nLFxuICB0ZW1wbGF0ZVVybDogJy4vY2hhbm5lbC1oaXN0b2dyYW0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jaGFubmVsLWhpc3RvZ3JhbS5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBDaGFubmVsSGlzdG9ncmFtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAvKiogRGlhbG9nIHZpc2liaWxpdHksIHR3by13YXkgYm91bmQgc28gdGhlIGhvc3QgKHRvb2xiYXIgYnV0dG9uKSBjYW4gb3BlbiBpdC4gKi9cbiAgQElucHV0KCkgdmlzaWJsZSA9IGZhbHNlO1xuICBAT3V0cHV0KCkgdmlzaWJsZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICByZWFkb25seSBoaXN0b2dyYW1EaXYgPSAnY2hhbm5lbC1oaXN0b2dyYW0tcGxvdCc7XG4gIHJlYWRvbmx5IGx1dENvbG9ycyA9IExVVF9DT0xPUlM7XG5cbiAgY2hhbm5lbHM6IElDaGFubmVsU3RhdGVbXSA9IFtdO1xuICBzZWxlY3RlZDogSUNoYW5uZWxTdGF0ZSB8IG51bGwgPSBudWxsO1xuICBpbnZlcnQgPSBmYWxzZTtcbiAgbG9nU2NhbGUgPSBmYWxzZTtcbiAgLyoqIEJvdW5kZWQgcmV0cmllcyB3aGlsZSB0aGUgKGFzeW5jKSBoaXN0b2dyYW0gc2FtcGxpbmcgcmVzb2x2ZXMuICovXG4gIHByaXZhdGUgaGlzdFJldHJpZXMgPSAwO1xuICAvKiogVGhlIHNlbGVjdGVkIGNoYW5uZWwncyBjdXJyZW50IGhpc3RvZ3JhbS4gTmF0aXZlIGJpdCBkZXB0aCAod2l0aFxuICAgKiAgb2JzZXJ2ZWQvcmFuZ2UgZmllbGRzKSBmb3IgPjgtYml0IGltYWdlcywgZWxzZSB0aGUgOC1iaXQgY2xpZW50IGhpc3RvZ3JhbS5cbiAgICogIERyaXZlcyB0aGUgcGxvdCwgdGhlIG5hdGl2ZSB3aW5kb3cgbGFiZWxzLCBhbmQgdGhlIGV4cG9ydC1idXR0b24gZ2F0ZS4gKi9cbiAgaGlzdDogSUhpc3RvZ3JhbSB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIGhpc3RTdWI/OiBTdWJzY3JpcHRpb247XG4gIC8qKiBXaGljaCB3aW5kb3cgY29udHJvbCBpcyBiZWluZyBhZGp1c3RlZCByaWdodCBub3cg4oCUIGRyaXZlcyBhIHNtYWxsXG4gICAqICBub24tYmxvY2tpbmcgYWN0aXZpdHkgc3Bpbm5lciBuZXh0IHRvIHRoYXQgc2xpZGVyLCBzaW5jZSB0aGUgaW1hZ2UgcmVjb2xvclxuICAgKiAgaXNuJ3QgaW5zdGFudCBvbiBsYXJnZSBzdGFja3MuIENsZWFyZWQgYSBzaG9ydCBtb21lbnQgYWZ0ZXIgbW92ZW1lbnQgc3RvcHNcbiAgICogICh0aGUgcmVjb2xvciBpc24ndCBkaXJlY3RseSBvYnNlcnZhYmxlLCBzbyB0aGlzIGlzIGEgdHJhaWxpbmcgaGV1cmlzdGljKS4gKi9cbiAgYWN0aXZlQWRqdXN0OiAnbWluJyB8ICdtYXgnIHwgJ2dhbW1hJyB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIGFkanVzdFRpbWVyPzogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD47XG5cbiAgY29sb3JtYXBPcHRpb25zOiBhbnk7XG4gIHNlbGVjdGVkQ29sb3JtYXA6IGFueTtcblxuICBwcml2YXRlIHN1YnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG4gIC8qKiBLZWVwcyB0aGUgUGxvdGx5IGhpc3RvZ3JhbSBzaXplZCB0byB0aGUgKHJlc2l6YWJsZSkgZGlhbG9nIGJvZHkuICovXG4gIHByaXZhdGUgcmVzaXplT2JzZXJ2ZXI/OiBSZXNpemVPYnNlcnZlcjtcblxuICBjb25zdHJ1Y3RvcihASW5qZWN0KENIQU5ORUxfSElTVE9HUkFNX0FQSSkgcHJpdmF0ZSBhcGk6IElDaGFubmVsSGlzdG9ncmFtQXBpKSB7fVxuXG4gIC8qKiBQZXItY2hhbm5lbCBwc2V1ZG8tY29sb3VyIG9ubHkgYXBwbGllcyB3aGVuIHRoZXJlJ3MgbW9yZSB0aGFuIG9uZSBjaGFubmVsXG4gICAqICAoUkdCIC8gZmx1b3Jlc2NlbmNlKS4gQSBzaW5nbGUgZ3JheXNjYWxlIGNoYW5uZWwgdXNlcyB0aGUgY29sb3JtYXAgaW5zdGVhZC4gKi9cbiAgZ2V0IG11bHRpY2hhbm5lbCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jaGFubmVscy5sZW5ndGggPiAxO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5jb2xvcm1hcE9wdGlvbnMgPSB0aGlzLmFwaS5nZXRDb2xvcm1hcE9wdGlvbnMoKTtcbiAgICB0aGlzLnN1YnMuYWRkKHRoaXMuYXBpLmdldENvbG9ybWFwKCkuc3Vic2NyaWJlKChjbSkgPT4gKHRoaXMuc2VsZWN0ZWRDb2xvcm1hcCA9IGNtKSkpO1xuICAgIHRoaXMuc3Vicy5hZGQodGhpcy5hcGkuZ2V0SW52ZXJ0JCgpLnN1YnNjcmliZSgoaSkgPT4gKHRoaXMuaW52ZXJ0ID0gISFpKSkpO1xuICAgIHRoaXMuc3Vicy5hZGQoXG4gICAgICB0aGlzLmFwaS5nZXRDaGFubmVscyQoKS5zdWJzY3JpYmUoKGNoYW5uZWxzKSA9PiB7XG4gICAgICAgIHRoaXMuY2hhbm5lbHMgPSBjaGFubmVscyA/PyBbXTtcbiAgICAgICAgLy8gS2VlcCB0aGUgc2VsZWN0ZWQgcm93IChieSBpbmRleCkgb3IgZGVmYXVsdCB0byB0aGUgZmlyc3QgY2hhbm5lbC5cbiAgICAgICAgY29uc3Qga2VlcElkeCA9IHRoaXMuc2VsZWN0ZWQ/LmluZGV4ID8/IDA7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWQgPSB0aGlzLmNoYW5uZWxzLmZpbmQoKGMpID0+IGMuaW5kZXggPT09IGtlZXBJZHgpID8/IHRoaXMuY2hhbm5lbHNbMF0gPz8gbnVsbDtcbiAgICAgICAgaWYgKHRoaXMudmlzaWJsZSkgdGhpcy51cGRhdGVNYXJrZXJzKCk7XG4gICAgICB9KSxcbiAgICApO1xuICAgIC8vIFRoZSBoaXN0b2dyYW0gaXMgb2YgdGhlIHNvdXJjZSBwaXhlbHMg4oCUIGl0IGNoYW5nZXMgd2l0aCB0aGUgaW1hZ2Uvc2xpY2UsXG4gICAgLy8gbm90IHdpdGggd2luZG93IGVkaXRzIOKAlCBzbyByZWxvYWQgaXQgd2hlbiB0aGUgaW1hZ2UgbWV0YWRhdGEgY2hhbmdlcy5cbiAgICB0aGlzLnN1YnMuYWRkKHRoaXMuYXBpLmdldEltYWdlTWV0YSgpLnN1YnNjcmliZSgoKSA9PiB7IGlmICh0aGlzLnZpc2libGUpIHRoaXMubG9hZEhpc3RvZ3JhbSgpOyB9KSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnMudW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLmhpc3RTdWI/LnVuc3Vic2NyaWJlKCk7XG4gICAgY2xlYXJUaW1lb3V0KHRoaXMuYWRqdXN0VGltZXIpO1xuICAgIHRoaXMudGVhcmRvd25SZXNpemUoKTtcbiAgICB0cnkgeyBQbG90bHkucHVyZ2UodGhpcy5oaXN0b2dyYW1EaXYpOyB9IGNhdGNoIHsgLyogbmV2ZXIgcmVuZGVyZWQgKi8gfVxuICB9XG5cbiAgb25WaXNpYmxlQ2hhbmdlKHY6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLnZpc2libGUgPSB2O1xuICAgIHRoaXMudmlzaWJsZUNoYW5nZS5lbWl0KHYpO1xuICAgIGlmICghdikgdGhpcy50ZWFyZG93blJlc2l6ZSgpO1xuICB9XG5cbiAgLyoqIHAtZGlhbG9nIChvblNob3cpOiB0aGUgcGxvdCBkaXYgbm93IGV4aXN0cywgc28gZHJhdyB0aGUgaGlzdG9ncmFtIGFuZCBrZWVwXG4gICAqICBpdCBzaXplZCB0byB0aGUgZGlhbG9nICh3aGljaCBpcyByZXNpemFibGUpIHZpYSBhIFJlc2l6ZU9ic2VydmVyLiAqL1xuICBvblNob3coKTogdm9pZCB7XG4gICAgdGhpcy5oaXN0UmV0cmllcyA9IDA7XG4gICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgIHRoaXMubG9hZEhpc3RvZ3JhbSgpO1xuICAgICAgY29uc3QgZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0aGlzLmhpc3RvZ3JhbURpdik7XG4gICAgICBpZiAoZWwgJiYgIXRoaXMucmVzaXplT2JzZXJ2ZXIgJiYgdHlwZW9mIFJlc2l6ZU9ic2VydmVyICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICB0aGlzLnJlc2l6ZU9ic2VydmVyID0gbmV3IFJlc2l6ZU9ic2VydmVyKCgpID0+IHtcbiAgICAgICAgICB0cnkgeyAoUGxvdGx5IGFzIGFueSkuUGxvdHMucmVzaXplKGVsKTsgfSBjYXRjaCB7IC8qIG5vdCByZW5kZXJlZCAqLyB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnJlc2l6ZU9ic2VydmVyLm9ic2VydmUoZWwpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSB0ZWFyZG93blJlc2l6ZSgpOiB2b2lkIHtcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyPy5kaXNjb25uZWN0KCk7XG4gICAgdGhpcy5yZXNpemVPYnNlcnZlciA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHNlbGVjdENoYW5uZWwoY2g6IElDaGFubmVsU3RhdGUpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkID0gY2g7XG4gICAgdGhpcy5oaXN0UmV0cmllcyA9IDA7XG4gICAgdGhpcy5sb2FkSGlzdG9ncmFtKCk7XG4gIH1cblxuICAvLyDilIDilIAgcGVyLWNoYW5uZWwgZWRpdHMgKGxpdmUpIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuICAvLyBQcmltZU5HIHNsaWRlci9pbnB1dE51bWJlciBldmVudHMgY2FycnkgYG51bWJlciB8IHN0cmluZyB8IG51bGxgLCBzbyB0aGVcbiAgLy8gaGFuZGxlcnMgYWNjZXB0IGBhbnlgIGFuZCBjb2VyY2UuIFZhbHVlcyBhcnJpdmUgaW4gTkFUSVZFIHVuaXRzICh0aGUgc2xpZGVyXG4gIC8vIGlzIGxhYmVsbGVkIG5hdGl2ZWx5IGZvciAxNi1iaXQpOyB3ZSBtYXAgdGhlbSBiYWNrIHRvIHRoZSBzdG9yZSdzIDgtYml0XG4gIC8vIGRpc3BsYXkgd2luZG93IHZpYSB0aGUgY2hhbm5lbCdzIG9ic2VydmVkIHJhbmdlIChpZGVudGl0eSBmb3IgOC1iaXQgaW1hZ2VzLFxuICAvLyBzbyB0aGVpciBiZWhhdmlvdXIgaXMgdW5jaGFuZ2VkKS5cbiAgb25NaW5DaGFuZ2UodmFsdWU6IGFueSk6IHZvaWQge1xuICAgIGlmICghdGhpcy5zZWxlY3RlZCkgcmV0dXJuO1xuICAgIGNvbnN0IG1pbiA9IHRoaXMudG9EaXNwKHZhbHVlKTtcbiAgICBjb25zdCBtYXggPSBNYXRoLm1heChtaW4sIHRoaXMuc2VsZWN0ZWQubWF4KTtcbiAgICB0aGlzLmFwaS5zZXRDaGFubmVsU3RhdGUodGhpcy5zZWxlY3RlZC5pbmRleCwgeyBtaW4sIG1heCB9KTtcbiAgICB0aGlzLm1hcmtCdXN5KCdtaW4nKTtcbiAgICB0aGlzLnVwZGF0ZU1hcmtlcnMoKTtcbiAgfVxuICBvbk1heENoYW5nZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnNlbGVjdGVkKSByZXR1cm47XG4gICAgY29uc3QgbWF4ID0gdGhpcy50b0Rpc3AodmFsdWUpO1xuICAgIGNvbnN0IG1pbiA9IE1hdGgubWluKG1heCwgdGhpcy5zZWxlY3RlZC5taW4pO1xuICAgIHRoaXMuYXBpLnNldENoYW5uZWxTdGF0ZSh0aGlzLnNlbGVjdGVkLmluZGV4LCB7IG1pbiwgbWF4IH0pO1xuICAgIHRoaXMubWFya0J1c3koJ21heCcpO1xuICAgIHRoaXMudXBkYXRlTWFya2VycygpO1xuICB9XG4gIG9uR2FtbWFDaGFuZ2UodmFsdWU6IGFueSk6IHZvaWQge1xuICAgIGlmICghdGhpcy5zZWxlY3RlZCkgcmV0dXJuO1xuICAgIGNvbnN0IGcgPSBOdW1iZXIodmFsdWUpO1xuICAgIGlmIChpc05hTihnKSkgcmV0dXJuO1xuICAgIHRoaXMuYXBpLnNldENoYW5uZWxTdGF0ZSh0aGlzLnNlbGVjdGVkLmluZGV4LCB7IGdhbW1hOiBnIH0pO1xuICAgIHRoaXMubWFya0J1c3koJ2dhbW1hJyk7XG4gIH1cblxuICAvKiogRmxhZyBhIGNvbnRyb2wgYXMgYWN0aXZlbHkgYWRqdXN0aW5nIHNvIGl0cyBzcGlubmVyIHNob3dzOyBhdXRvLWNsZWFycyBhXG4gICAqICBzaG9ydCBtb21lbnQgYWZ0ZXIgdGhlIGxhc3QgY2hhbmdlIChrZXB0IGFsaXZlIHdoaWxlIHRoZSB1c2VyIGtlZXBzXG4gICAqICBkcmFnZ2luZywgc2luY2UgZWFjaCBjaGFuZ2UgcmVzZXRzIHRoZSB0aW1lcikuICovXG4gIHByaXZhdGUgbWFya0J1c3kod2hpY2g6ICdtaW4nIHwgJ21heCcgfCAnZ2FtbWEnKTogdm9pZCB7XG4gICAgdGhpcy5hY3RpdmVBZGp1c3QgPSB3aGljaDtcbiAgICBjbGVhclRpbWVvdXQodGhpcy5hZGp1c3RUaW1lcik7XG4gICAgdGhpcy5hZGp1c3RUaW1lciA9IHNldFRpbWVvdXQoKCkgPT4geyB0aGlzLmFjdGl2ZUFkanVzdCA9IG51bGw7IH0sIDUwMCk7XG4gIH1cbiAgb25WaXNpYmxlVG9nZ2xlKGNoOiBJQ2hhbm5lbFN0YXRlLCB2YWx1ZTogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuYXBpLnNldENoYW5uZWxTdGF0ZShjaC5pbmRleCwgeyB2aXNpYmxlOiB2YWx1ZSB9KTtcbiAgfVxuICBvbkNvbG9yQ2hhbmdlKGNoOiBJQ2hhbm5lbFN0YXRlLCBjb2xvcjogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5hcGkuc2V0Q2hhbm5lbFN0YXRlKGNoLmluZGV4LCB7IGNvbG9yIH0pO1xuICAgIC8vIFRoZSBoaXN0b2dyYW0gYmFycyBhcmUgZHJhd24gaW4gdGhlIHNlbGVjdGVkIGNoYW5uZWwncyBjb2xvdXIg4oCUIHJlZHJhd1xuICAgIC8vIHdoZW4gdGhhdCBjaGFubmVsJ3MgY29sb3VyIGNoYW5nZXMuXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWQgJiYgY2guaW5kZXggPT09IHRoaXMuc2VsZWN0ZWQuaW5kZXgpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWQuY29sb3IgPSBjb2xvcjtcbiAgICAgIHRoaXMucmVuZGVySGlzdG9ncmFtKCk7XG4gICAgfVxuICB9XG5cbiAgLy8g4pSA4pSAIGRpc3BsYXkgb3B0aW9ucyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbiAgb25Db2xvcm1hcChub2RlOiBUcmVlTm9kZSk6IHZvaWQge1xuICAgIGlmIChub2RlICYmICFub2RlLmNoaWxkcmVuKSB0aGlzLmFwaS5zZXRDb2xvcm1hcChub2RlKTtcbiAgfVxuICBvbkludmVydCh2YWx1ZTogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuaW52ZXJ0ID0gdmFsdWU7XG4gICAgdGhpcy5hcGkuc2V0SW52ZXJ0KHZhbHVlKTtcbiAgfVxuICB0b2dnbGVMb2codmFsdWU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmxvZ1NjYWxlID0gdmFsdWU7XG4gICAgdGhpcy5yZW5kZXJIaXN0b2dyYW0oKTtcbiAgfVxuXG4gIC8qKiBRdWljay1hc3NpZ24gYSBwcmVzZXQgTFVUIGNvbG91ciB0byBhIGNoYW5uZWwgKEZpamkgcGFsZXR0ZSkuICovXG4gIHNldFByZXNldChjaDogSUNoYW5uZWxTdGF0ZSwgY29sb3I6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMub25Db2xvckNoYW5nZShjaCwgY29sb3IpO1xuICB9XG5cbiAgLyoqIEV4cG9ydCB0aGUgZGlzcGxheWVkIGNvbXBvc2l0ZSBhcyBhIHB1YmxpY2F0aW9uLXJlYWR5IFBORyAoOC1iaXQgZmlndXJlKS4gKi9cbiAgZXhwb3J0Q29tcG9zaXRlKCk6IHZvaWQge1xuICAgIHRoaXMuYXBpLmV4cG9ydENvbXBvc2l0ZSgpO1xuICB9XG5cbiAgLyoqIEV4cG9ydCB0aGUgdW5kZXJseWluZyBkYXRhIGFzIGEgdHJ1ZS0xNi1iaXQgbXVsdGktYmFuZCBUSUZGIChzZXJ2ZXItc2lkZSkuICovXG4gIGV4cG9ydERhdGEoKTogdm9pZCB7XG4gICAgdGhpcy5hcGkuZXhwb3J0RGF0YSgpO1xuICB9XG5cbiAgLy8g4pSA4pSAIG5hdGl2ZSBiaXQtZGVwdGggaGVscGVycyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbiAgLyoqIFRydWUgd2hlbiB0aGUgY3VycmVudCBjaGFubmVsIGhpc3RvZ3JhbSBpcyBuYXRpdmUgPjgtYml0ICgxNi1iaXQgZXRjLik6XG4gICAqICBnYXRlcyB0aGUgbmF0aXZlIHNsaWRlciBsYWJlbGxpbmcgYW5kIHRoZSAxNi1iaXQgVElGRiBleHBvcnQgYnV0dG9uLiAqL1xuICBnZXQgaXMxNmJpdCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKHRoaXMuaGlzdD8uYml0RGVwdGggPz8gOCkgPiA4O1xuICB9XG4gIC8qKiBUaGUgbmF0aXZlIHZhbHVlIHJhbmdlIHRoZSA4LWJpdCBkaXNwbGF5IHdpbmRvdyBtYXBzIG9udG8g4oCUIHRoZSBvYnNlcnZlZFxuICAgKiAgcGl4ZWwgZXh0cmVtZXMgZm9yIGEgbmF0aXZlIGhpc3RvZ3JhbSwgZWxzZSBwbGFpbiAwLi4yNTUgKHNvIDgtYml0IGltYWdlc1xuICAgKiAgcGFzcyB0aHJvdWdoIHVuY2hhbmdlZCkuIFRoZSA4LWJpdCB0aWxlIGlzIHNlcnZlci1zdHJldGNoZWQgYWNyb3NzIHRoaXNcbiAgICogIHJhbmdlLCBzbyBpdCdzIHRoZSBiZXN0IGNsaWVudC1zaWRlIG5hdGl2ZeKGlGRpc3BsYXkgbWFwcGluZy4gKi9cbiAgcHJpdmF0ZSBvYnNSYW5nZSgpOiB7IG1pbjogbnVtYmVyOyBtYXg6IG51bWJlciB9IHtcbiAgICBjb25zdCBoID0gdGhpcy5oaXN0O1xuICAgIGlmIChoICYmIChoLmJpdERlcHRoID8/IDgpID4gOCAmJiAoaC5vYnNlcnZlZE1heCA/PyAwKSA+IChoLm9ic2VydmVkTWluID8/IDApKSB7XG4gICAgICByZXR1cm4geyBtaW46IGgub2JzZXJ2ZWRNaW4gYXMgbnVtYmVyLCBtYXg6IGgub2JzZXJ2ZWRNYXggYXMgbnVtYmVyIH07XG4gICAgfVxuICAgIHJldHVybiB7IG1pbjogMCwgbWF4OiAyNTUgfTtcbiAgfVxuICAvKiogOC1iaXQgZGlzcGxheSB2YWx1ZSAoMC4uMjU1KSDihpIgbmF0aXZlIHVuaXRzLiAqL1xuICBwcml2YXRlIHRvTmF0aXZlKGRpc3A6IG51bWJlcik6IG51bWJlciB7XG4gICAgY29uc3QgbyA9IHRoaXMub2JzUmFuZ2UoKTtcbiAgICByZXR1cm4gTWF0aC5yb3VuZChvLm1pbiArIChkaXNwIC8gMjU1KSAqIChvLm1heCAtIG8ubWluKSk7XG4gIH1cbiAgLyoqIE5hdGl2ZSB1bml0cyDihpIgY2xhbXBlZCA4LWJpdCBkaXNwbGF5IHZhbHVlICgwLi4yNTUpLiAqL1xuICBwcml2YXRlIHRvRGlzcCh2YWx1ZTogYW55KTogbnVtYmVyIHtcbiAgICBjb25zdCB2ID0gTnVtYmVyKHZhbHVlKTtcbiAgICBpZiAodiA9PSBudWxsIHx8IGlzTmFOKHYpKSByZXR1cm4gMDtcbiAgICBjb25zdCBvID0gdGhpcy5vYnNSYW5nZSgpO1xuICAgIGNvbnN0IHNwYW4gPSBvLm1heCAtIG8ubWluIHx8IDE7XG4gICAgY29uc3QgZCA9IE1hdGgucm91bmQoMjU1ICogKHYgLSBvLm1pbikgLyBzcGFuKTtcbiAgICByZXR1cm4gZCA8IDAgPyAwIDogZCA+IDI1NSA/IDI1NSA6IGQ7XG4gIH1cbiAgLyoqIFNlbGVjdGVkIGNoYW5uZWwgd2luZG93IGVuZHBvaW50cyBpbiBuYXRpdmUgdW5pdHMgKGZvciB0aGUgc2xpZGVycykuICovXG4gIGdldCBtaW5OYXRpdmUoKTogbnVtYmVyIHsgcmV0dXJuIHRoaXMuc2VsZWN0ZWQgPyB0aGlzLnRvTmF0aXZlKHRoaXMuc2VsZWN0ZWQubWluKSA6IDA7IH1cbiAgZ2V0IG1heE5hdGl2ZSgpOiBudW1iZXIgeyByZXR1cm4gdGhpcy5zZWxlY3RlZCA/IHRoaXMudG9OYXRpdmUodGhpcy5zZWxlY3RlZC5tYXgpIDogMDsgfVxuICAvKiogTmF0aXZlIHNsaWRlciBib3VuZHMgKyBzdGVwICgyNTYgZGlzcGxheSBzdGVwcyBhY3Jvc3MgdGhlIG5hdGl2ZSByYW5nZSkuICovXG4gIGdldCBzbGlkZXJNaW4oKTogbnVtYmVyIHsgcmV0dXJuIHRoaXMub2JzUmFuZ2UoKS5taW47IH1cbiAgZ2V0IHNsaWRlck1heCgpOiBudW1iZXIgeyByZXR1cm4gdGhpcy5vYnNSYW5nZSgpLm1heDsgfVxuICBnZXQgc2xpZGVyU3RlcCgpOiBudW1iZXIge1xuICAgIGNvbnN0IHIgPSB0aGlzLm9ic1JhbmdlKCk7XG4gICAgcmV0dXJuIHRoaXMuaXMxNmJpdCA/IE1hdGgubWF4KDEsIE1hdGgucm91bmQoKHIubWF4IC0gci5taW4pIC8gMjU1KSkgOiAxO1xuICB9XG5cbiAgLy8g4pSA4pSAIGF1dG8gLyByZXNldCDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbiAgYXV0bygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuc2VsZWN0ZWQpIHJldHVybjtcbiAgICAvLyBOYXRpdmUgcGF0aDogc2F0dXJhdGUgdGhlIHRydWUgZGlzdHJpYnV0aW9uLCB0aGVuIG1hcCB0aGUgbmF0aXZlIHdpbmRvd1xuICAgIC8vIGJhY2sgdG8gdGhlIDgtYml0IHN0b3JlLiA4LWJpdCBwYXRoIGtlZXBzIHRoZSBleGlzdGluZyBjbGllbnQgYXV0by13aW5kb3cuXG4gICAgaWYgKHRoaXMuaXMxNmJpdCAmJiB0aGlzLmhpc3QpIHtcbiAgICAgIGNvbnN0IFtubWluLCBubWF4XSA9IHRoaXMuYXV0b1dpbmRvdyh0aGlzLmhpc3QsIDAuMDAxKTtcbiAgICAgIGlmIChubWF4ID4gbm1pbikge1xuICAgICAgICB0aGlzLmFwaS5zZXRDaGFubmVsU3RhdGUodGhpcy5zZWxlY3RlZC5pbmRleCwgeyBtaW46IHRoaXMudG9EaXNwKG5taW4pLCBtYXg6IHRoaXMudG9EaXNwKG5tYXgpIH0pO1xuICAgICAgICB0aGlzLnVwZGF0ZU1hcmtlcnMoKTtcbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5hcGkuYXV0b0NvbnRyYXN0KFt0aGlzLnNlbGVjdGVkLmluZGV4XSwgMC4wMDEpO1xuICB9XG4gIHJlc2V0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNlbGVjdGVkKSB0aGlzLmFwaS5yZXNldENvbnRyYXN0KFt0aGlzLnNlbGVjdGVkLmluZGV4XSk7XG4gIH1cblxuICAvKiogU2F0dXJhdGlvbi1iYXNlZCBhdXRvLXdpbmRvdyBvdmVyIGEgKG5hdGl2ZSBvciA4LWJpdCkgaGlzdG9ncmFtOiBwaWNrXG4gICAqICBbbWluLG1heF0gc28gfmBzYXR1cmF0aW9uYCBvZiBwaXhlbHMgY2xpcCBhdCBlYWNoIGVuZCwgZHJvcHBpbmcgYSBkb21pbmFudFxuICAgKiAgZmlyc3QvbGFzdCBiaW4gKGJhY2tncm91bmQvcGFkZGluZykuIFJldHVybnMgbmF0aXZlIGJpbiB2YWx1ZXMuICovXG4gIHByaXZhdGUgYXV0b1dpbmRvdyhoOiBJSGlzdG9ncmFtLCBzYXR1cmF0aW9uOiBudW1iZXIpOiBbbnVtYmVyLCBudW1iZXJdIHtcbiAgICBjb25zdCBjb3VudHMgPSBoLmNvdW50cy5zbGljZSgpO1xuICAgIGNvbnN0IG4gPSBjb3VudHMubGVuZ3RoO1xuICAgIGlmIChuID09PSAwKSByZXR1cm4gW3RoaXMuc2xpZGVyTWluLCB0aGlzLnNsaWRlck1heF07XG4gICAgaWYgKG4gPiAyICYmIGNvdW50c1swXSA+IGNvdW50c1sxXSkgY291bnRzWzBdID0gMDtcbiAgICBpZiAobiA+IDIgJiYgY291bnRzW24gLSAxXSA+IGNvdW50c1tuIC0gMl0pIGNvdW50c1tuIC0gMV0gPSAwO1xuICAgIGxldCB0b3RhbCA9IDA7XG4gICAgZm9yIChjb25zdCBjIG9mIGNvdW50cykgdG90YWwgKz0gYztcbiAgICBpZiAodG90YWwgPD0gMCkgcmV0dXJuIFt0aGlzLnNsaWRlck1pbiwgdGhpcy5zbGlkZXJNYXhdO1xuICAgIGNvbnN0IHRhcmdldCA9IHRvdGFsICogTWF0aC5tYXgoMCwgTWF0aC5taW4oMC41LCBzYXR1cmF0aW9uKSk7XG4gICAgbGV0IGFjYyA9IDA7XG4gICAgbGV0IG1pbiA9IGguYmluc1swXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG47IGkrKykgeyBhY2MgKz0gY291bnRzW2ldOyBpZiAoYWNjID4gdGFyZ2V0KSB7IG1pbiA9IGguYmluc1tpXTsgYnJlYWs7IH0gfVxuICAgIGFjYyA9IDA7XG4gICAgbGV0IG1heCA9IGguYmluc1tuIC0gMV07XG4gICAgZm9yIChsZXQgaSA9IG4gLSAxOyBpID49IDA7IGktLSkgeyBhY2MgKz0gY291bnRzW2ldOyBpZiAoYWNjID4gdGFyZ2V0KSB7IG1heCA9IGguYmluc1tpXTsgYnJlYWs7IH0gfVxuICAgIHJldHVybiBbbWluLCBtYXhdO1xuICB9XG5cbiAgLy8g4pSA4pSAIGhpc3RvZ3JhbSByZW5kZXJpbmcg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4gIC8qKiBGZXRjaCB0aGUgc2VsZWN0ZWQgY2hhbm5lbCdzIGhpc3RvZ3JhbSAobmF0aXZlIGZvciAxNi1iaXQsIGVsc2UgOC1iaXQpIGFuZFxuICAgKiAgKHJlKWRyYXcgaXQuIEFzeW5jIOKAlCB0aGUgbmF0aXZlIHBhdGggaGl0cyB0aGUgc2VydmVyOyB0aGUgOC1iaXQgcGF0aCBtYXkgYmVcbiAgICogIG51bGwgdW50aWwgdGlsZSBzYW1wbGluZyByZXNvbHZlcywgc28gd2UgcmV0cnkgYSBmZXcgdGltZXMuICovXG4gIHByaXZhdGUgbG9hZEhpc3RvZ3JhbSgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuc2VsZWN0ZWQpIHJldHVybjtcbiAgICB0aGlzLmhpc3RTdWI/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5oaXN0U3ViID0gdGhpcy5hcGkuZ2V0SGlzdG9ncmFtJCh0aGlzLnNlbGVjdGVkLmluZGV4LCAyNTYpLnN1YnNjcmliZSgoaCkgPT4ge1xuICAgICAgaWYgKCFoKSB7XG4gICAgICAgIC8vIE5vdCByZWFkeSAoYXN5bmMgc2FtcGxpbmcgLyBmaWxlIHN0aWxsIGNhY2hpbmcpIOKAlCByZXRyeSBhIGZldyB0aW1lcy5cbiAgICAgICAgaWYgKHRoaXMudmlzaWJsZSAmJiB0aGlzLmhpc3RSZXRyaWVzIDwgMTApIHtcbiAgICAgICAgICB0aGlzLmhpc3RSZXRyaWVzKys7XG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmxvYWRIaXN0b2dyYW0oKSwgNDAwKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmhpc3QgPSBudWxsO1xuICAgICAgICAgIHRoaXMucmVuZGVySGlzdG9ncmFtKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5oaXN0UmV0cmllcyA9IDA7XG4gICAgICB0aGlzLmhpc3QgPSBoO1xuICAgICAgdGhpcy5yZW5kZXJIaXN0b2dyYW0oKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcmVuZGVySGlzdG9ncmFtKCk6IHZvaWQge1xuICAgIGNvbnN0IGVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGhpcy5oaXN0b2dyYW1EaXYpO1xuICAgIGlmICghZWwgfHwgIXRoaXMuc2VsZWN0ZWQpIHJldHVybjtcbiAgICBjb25zdCBoID0gdGhpcy5oaXN0O1xuICAgIGlmICghaCkge1xuICAgICAgdHJ5IHsgUGxvdGx5LnB1cmdlKGVsKTsgfSBjYXRjaCB7IC8qIGlnbm9yZSAqLyB9XG4gICAgICBlbC5zZXRBdHRyaWJ1dGUoJ2RhdGEtZW1wdHknLCAndHJ1ZScpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBlbC5yZW1vdmVBdHRyaWJ1dGUoJ2RhdGEtZW1wdHknKTtcbiAgICBjb25zdCB5ID0gdGhpcy5sb2dTY2FsZSA/IGguY291bnRzLm1hcCgoYykgPT4gKGMgPiAwID8gTWF0aC5sb2cxMChjKSA6IDApKSA6IGguY291bnRzO1xuICAgIGNvbnN0IHRyYWNlID0ge1xuICAgICAgeDogaC5iaW5zLFxuICAgICAgeSxcbiAgICAgIHR5cGU6ICdiYXInLFxuICAgICAgbWFya2VyOiB7IGNvbG9yOiB0aGlzLnNlbGVjdGVkLmNvbG9yIHx8ICcjNGZhM2ZmJyB9LFxuICAgICAgaG92ZXJpbmZvOiAneCt5JyxcbiAgICB9O1xuICAgIFBsb3RseS5yZWFjdChlbCwgW3RyYWNlXSBhcyBhbnksIHRoaXMuaGlzdG9ncmFtTGF5b3V0KCksIHtcbiAgICAgIGRpc3BsYXlNb2RlQmFyOiBmYWxzZSwgcmVzcG9uc2l2ZTogdHJ1ZSxcbiAgICB9IGFzIGFueSk7XG4gIH1cblxuICAvKiogTW92ZSBvbmx5IHRoZSBtaW4vbWF4IG1hcmtlciBsaW5lcyAoY2hlYXApIHdpdGhvdXQgcmVjb21wdXRpbmcgY291bnRzLiAqL1xuICBwcml2YXRlIHVwZGF0ZU1hcmtlcnMoKTogdm9pZCB7XG4gICAgY29uc3QgZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0aGlzLmhpc3RvZ3JhbURpdik7XG4gICAgaWYgKCFlbCB8fCAhdGhpcy5zZWxlY3RlZCB8fCBlbC5nZXRBdHRyaWJ1dGUoJ2RhdGEtZW1wdHknKSA9PT0gJ3RydWUnKSByZXR1cm47XG4gICAgdHJ5IHtcbiAgICAgIFBsb3RseS5yZWxheW91dChlbCwgeyBzaGFwZXM6IHRoaXMubWFya2VyU2hhcGVzKCkgfSBhcyBhbnkpO1xuICAgIH0gY2F0Y2ggeyAvKiBub3QgcmVuZGVyZWQgeWV0ICovIH1cbiAgfVxuXG4gIHByaXZhdGUgbWFya2VyU2hhcGVzKCk6IGFueVtdIHtcbiAgICBjb25zdCBjID0gdGhpcy5zZWxlY3RlZDtcbiAgICBpZiAoIWMpIHJldHVybiBbXTtcbiAgICAvLyBNYXJrZXJzIHNpdCBpbiB0aGUgc2FtZSAobmF0aXZlKSBjb29yZGluYXRlIHNwYWNlIGFzIHRoZSBoaXN0b2dyYW0gYXhpcy5cbiAgICBjb25zdCBsaW5lID0gKHg6IG51bWJlciwgY29sb3I6IHN0cmluZykgPT4gKHtcbiAgICAgIHR5cGU6ICdsaW5lJywgeDA6IHgsIHgxOiB4LCB5cmVmOiAncGFwZXInLCB5MDogMCwgeTE6IDEsXG4gICAgICBsaW5lOiB7IGNvbG9yLCB3aWR0aDogMSwgZGFzaDogJ2RvdCcgfSxcbiAgICB9KTtcbiAgICByZXR1cm4gW2xpbmUodGhpcy50b05hdGl2ZShjLm1pbiksICcjMDBlMGZmJyksIGxpbmUodGhpcy50b05hdGl2ZShjLm1heCksICcjZmY3YTdhJyldO1xuICB9XG5cbiAgcHJpdmF0ZSBoaXN0b2dyYW1MYXlvdXQoKTogYW55IHtcbiAgICByZXR1cm4ge1xuICAgICAgbWFyZ2luOiB7IHQ6IDYsIHI6IDgsIGI6IDI0LCBsOiA0NCB9LFxuICAgICAgYmFyZ2FwOiAwLFxuICAgICAgeGF4aXM6IHsgcmFuZ2U6IFt0aGlzLnNsaWRlck1pbiwgdGhpcy5zbGlkZXJNYXhdLCB6ZXJvbGluZTogZmFsc2UsIGNvbG9yOiAnI2NjYycsIGZpeGVkcmFuZ2U6IHRydWUgfSxcbiAgICAgIHlheGlzOiB7XG4gICAgICAgIHRpdGxlOiB0aGlzLmxvZ1NjYWxlID8gJ2xvZ+KCgeKCgCBjb3VudCcgOiAnY291bnQnLFxuICAgICAgICB6ZXJvbGluZTogZmFsc2UsIGNvbG9yOiAnI2NjYycsIGZpeGVkcmFuZ2U6IHRydWUsXG4gICAgICB9LFxuICAgICAgcGFwZXJfYmdjb2xvcjogJ3JnYmEoMzAsMzAsMzAsMC45NSknLFxuICAgICAgcGxvdF9iZ2NvbG9yOiAncmdiYSgzMCwzMCwzMCwwLjk1KScsXG4gICAgICBmb250OiB7IGNvbG9yOiAnI2RkZCcsIHNpemU6IDEwIH0sXG4gICAgICBzaGFwZXM6IHRoaXMubWFya2VyU2hhcGVzKCksXG4gICAgICBzaG93bGVnZW5kOiBmYWxzZSxcbiAgICB9O1xuICB9XG59XG4iLCI8cC1kaWFsb2cgaGVhZGVyPVwiQ2hhbm5lbHMgJmFtcDsgSGlzdG9ncmFtXCJcbiAgICAgICAgICBbdmlzaWJsZV09XCJ2aXNpYmxlXCIgKHZpc2libGVDaGFuZ2UpPVwib25WaXNpYmxlQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgIFttb2RhbF09XCJmYWxzZVwiIFtyZXNpemFibGVdPVwidHJ1ZVwiIFtkcmFnZ2FibGVdPVwidHJ1ZVwiXG4gICAgICAgICAgW3N0eWxlXT1cInsgd2lkdGg6ICczMHJlbScgfVwiXG4gICAgICAgICAgW2JyZWFrcG9pbnRzXT1cInsgJzk2MHB4JzogJzkwdncnIH1cIlxuICAgICAgICAgIHN0eWxlQ2xhc3M9XCJjaGFubmVsLWhpc3RvZ3JhbS1kaWFsb2dcIlxuICAgICAgICAgIChvblNob3cpPVwib25TaG93KClcIj5cblxuICA8ZGl2IGNsYXNzPVwiY2gtYm9keVwiPlxuXG4gICAgPCEtLSBDaGFubmVscyAtLT5cbiAgICA8cC10YWJsZSBbdmFsdWVdPVwiY2hhbm5lbHNcIiBzZWxlY3Rpb25Nb2RlPVwic2luZ2xlXCIgWyhzZWxlY3Rpb24pXT1cInNlbGVjdGVkXCJcbiAgICAgICAgICAgICBkYXRhS2V5PVwiaW5kZXhcIiAob25Sb3dTZWxlY3QpPVwic2VsZWN0Q2hhbm5lbCgkZXZlbnQuZGF0YSlcIlxuICAgICAgICAgICAgIHN0eWxlQ2xhc3M9XCJjaC10YWJsZSBwLWRhdGF0YWJsZS1zbVwiPlxuICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImhlYWRlclwiPlxuICAgICAgICA8dHI+XG4gICAgICAgICAgPHRoIHN0eWxlPVwid2lkdGg6IDIuNXJlbVwiPjwvdGg+XG4gICAgICAgICAgPHRoPkNoYW5uZWw8L3RoPlxuICAgICAgICAgIDx0aCBzdHlsZT1cIndpZHRoOiAzLjVyZW07IHRleHQtYWxpZ246IGNlbnRlclwiPlNob3c8L3RoPlxuICAgICAgICA8L3RyPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJib2R5XCIgbGV0LWNoPlxuICAgICAgICA8dHIgW3BTZWxlY3RhYmxlUm93XT1cImNoXCI+XG4gICAgICAgICAgPHRkPlxuICAgICAgICAgICAgPGhleC1jb2xvci1waWNrZXIgKm5nSWY9XCJtdWx0aWNoYW5uZWxcIiBbY29sb3JdPVwiY2guY29sb3JcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbG9yQ2hhbmdlKT1cIm9uQ29sb3JDaGFuZ2UoY2gsICRldmVudClcIj48L2hleC1jb2xvci1waWNrZXI+XG4gICAgICAgICAgPC90ZD5cbiAgICAgICAgICA8dGQ+e3sgY2gubmFtZSB9fTwvdGQ+XG4gICAgICAgICAgPHRkIHN0eWxlPVwidGV4dC1hbGlnbjogY2VudGVyXCI+XG4gICAgICAgICAgICA8cC1jaGVja2JveCBbYmluYXJ5XT1cInRydWVcIiBbbmdNb2RlbF09XCJjaC52aXNpYmxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChvbkNoYW5nZSk9XCJvblZpc2libGVUb2dnbGUoY2gsICRldmVudC5jaGVja2VkKVwiPjwvcC1jaGVja2JveD5cbiAgICAgICAgICA8L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L3AtdGFibGU+XG5cbiAgICA8IS0tIFBzZXVkby1jb2xvciBwcmVzZXRzIGZvciB0aGUgc2VsZWN0ZWQgY2hhbm5lbCAobXVsdGljaGFubmVsIG9ubHk7XG4gICAgICAgICBncmF5c2NhbGUgdXNlcyB0aGUgY29sb3JtYXAgYmVsb3cpLiAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiY2gtcHJlc2V0c1wiICpuZ0lmPVwibXVsdGljaGFubmVsICYmIHNlbGVjdGVkXCI+XG4gICAgICA8c3BhbiBjbGFzcz1cImNoLXByZXNldHMtbGJsXCI+e3sgc2VsZWN0ZWQubmFtZSB9fSBMVVQ8L3NwYW4+XG4gICAgICA8YnV0dG9uICpuZ0Zvcj1cImxldCBwIG9mIGx1dENvbG9yc1wiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImNoLXByZXNldFwiXG4gICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kXT1cInAuY29sb3JcIiBbcFRvb2x0aXBdPVwicC5uYW1lXCIgdG9vbHRpcFBvc2l0aW9uPVwidG9wXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInNldFByZXNldChzZWxlY3RlZCwgcC5jb2xvcilcIj48L2J1dHRvbj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gSGlzdG9ncmFtIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJjaC1oaXN0LWhlYWRcIj5cbiAgICAgIDxzcGFuPkhpc3RvZ3JhbXt7IHNlbGVjdGVkID8gJyDigJQgJyArIHNlbGVjdGVkLm5hbWUgOiAnJyB9fTwvc3Bhbj5cbiAgICAgIDxwLWNoZWNrYm94IFtiaW5hcnldPVwidHJ1ZVwiIFsobmdNb2RlbCldPVwibG9nU2NhbGVcIlxuICAgICAgICAgICAgICAgICAgKG9uQ2hhbmdlKT1cInRvZ2dsZUxvZygkZXZlbnQuY2hlY2tlZClcIiBsYWJlbD1cIkxvZ1wiPjwvcC1jaGVja2JveD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IFtpZF09XCJoaXN0b2dyYW1EaXZcIiBjbGFzcz1cImNoLWhpc3QtcGxvdFwiPjwvZGl2PlxuXG4gICAgPCEtLSBEaXNwbGF5IHdpbmRvdyAvIGdhbW1hIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJjaC1zbGlkZXJzXCIgKm5nSWY9XCJzZWxlY3RlZFwiPlxuICAgICAgPCEtLSBXaW5kb3cgZW5kcG9pbnRzIGFyZSBzaG93bi9lZGl0ZWQgaW4gTkFUSVZFIHVuaXRzICgwLi4yNTUgZm9yIDgtYml0LFxuICAgICAgICAgICB0aGUgY2hhbm5lbCdzIG9ic2VydmVkIG5hdGl2ZSByYW5nZSBmb3IgMTYtYml0KS4gT25lLXdheSBib3VuZCB0byB0aGVcbiAgICAgICAgICAgbmF0aXZlIGdldHRlcnM7IHRoZSBoYW5kbGVycyBtYXAgYmFjayB0byB0aGUgOC1iaXQgZGlzcGxheSB3aW5kb3cuIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cImNoLXJvd1wiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImNoLWxibFwiPk1pbjwvc3Bhbj5cbiAgICAgICAgPHAtc2xpZGVyIFtuZ01vZGVsXT1cIm1pbk5hdGl2ZVwiIFttaW5dPVwic2xpZGVyTWluXCIgW21heF09XCJzbGlkZXJNYXhcIiBbc3RlcF09XCJzbGlkZXJTdGVwXCJcbiAgICAgICAgICAgICAgICAgIChvbkNoYW5nZSk9XCJvbk1pbkNoYW5nZSgkZXZlbnQudmFsdWUpXCIgc3R5bGVDbGFzcz1cImNoLXNsaWRlclwiPjwvcC1zbGlkZXI+XG4gICAgICAgIDxwLWlucHV0TnVtYmVyIFtuZ01vZGVsXT1cIm1pbk5hdGl2ZVwiIFttaW5dPVwic2xpZGVyTWluXCIgW21heF09XCJzbGlkZXJNYXhcIiBbc2hvd0J1dHRvbnNdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAob25JbnB1dCk9XCJvbk1pbkNoYW5nZSgkZXZlbnQudmFsdWUpXCIgc3R5bGVDbGFzcz1cImNoLW51bVwiPjwvcC1pbnB1dE51bWJlcj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJjaC1idXN5XCI+PGkgKm5nSWY9XCJhY3RpdmVBZGp1c3QgPT09ICdtaW4nXCIgY2xhc3M9XCJwaSBwaS1zcGluIHBpLXNwaW5uZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cInVwZGF0aW5nXCI+PC9pPjwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImNoLXJvd1wiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImNoLWxibFwiPk1heDwvc3Bhbj5cbiAgICAgICAgPHAtc2xpZGVyIFtuZ01vZGVsXT1cIm1heE5hdGl2ZVwiIFttaW5dPVwic2xpZGVyTWluXCIgW21heF09XCJzbGlkZXJNYXhcIiBbc3RlcF09XCJzbGlkZXJTdGVwXCJcbiAgICAgICAgICAgICAgICAgIChvbkNoYW5nZSk9XCJvbk1heENoYW5nZSgkZXZlbnQudmFsdWUpXCIgc3R5bGVDbGFzcz1cImNoLXNsaWRlclwiPjwvcC1zbGlkZXI+XG4gICAgICAgIDxwLWlucHV0TnVtYmVyIFtuZ01vZGVsXT1cIm1heE5hdGl2ZVwiIFttaW5dPVwic2xpZGVyTWluXCIgW21heF09XCJzbGlkZXJNYXhcIiBbc2hvd0J1dHRvbnNdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAob25JbnB1dCk9XCJvbk1heENoYW5nZSgkZXZlbnQudmFsdWUpXCIgc3R5bGVDbGFzcz1cImNoLW51bVwiPjwvcC1pbnB1dE51bWJlcj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJjaC1idXN5XCI+PGkgKm5nSWY9XCJhY3RpdmVBZGp1c3QgPT09ICdtYXgnXCIgY2xhc3M9XCJwaSBwaS1zcGluIHBpLXNwaW5uZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cInVwZGF0aW5nXCI+PC9pPjwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImNoLXJvd1wiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImNoLWxibFwiPkdhbW1hPC9zcGFuPlxuICAgICAgICA8cC1zbGlkZXIgWyhuZ01vZGVsKV09XCJzZWxlY3RlZC5nYW1tYVwiIFttaW5dPVwiMC4xXCIgW21heF09XCI1XCIgW3N0ZXBdPVwiMC4wMVwiXG4gICAgICAgICAgICAgICAgICAob25DaGFuZ2UpPVwib25HYW1tYUNoYW5nZSgkZXZlbnQudmFsdWUpXCIgc3R5bGVDbGFzcz1cImNoLXNsaWRlclwiPjwvcC1zbGlkZXI+XG4gICAgICAgIDxwLWlucHV0TnVtYmVyIFsobmdNb2RlbCldPVwic2VsZWN0ZWQuZ2FtbWFcIiBbbWluXT1cIjAuMVwiIFttYXhdPVwiNVwiIFttaW5GcmFjdGlvbkRpZ2l0c109XCIyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgW21heEZyYWN0aW9uRGlnaXRzXT1cIjJcIiBbc2hvd0J1dHRvbnNdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAob25JbnB1dCk9XCJvbkdhbW1hQ2hhbmdlKCRldmVudC52YWx1ZSlcIiBzdHlsZUNsYXNzPVwiY2gtbnVtXCI+PC9wLWlucHV0TnVtYmVyPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImNoLWJ1c3lcIj48aSAqbmdJZj1cImFjdGl2ZUFkanVzdCA9PT0gJ2dhbW1hJ1wiIGNsYXNzPVwicGkgcGktc3BpbiBwaS1zcGlubmVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJ1cGRhdGluZ1wiPjwvaT48L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjaC1idG5zXCI+XG4gICAgICAgIDxwLWJ1dHRvbiBsYWJlbD1cIkF1dG9cIiBzaXplPVwic21hbGxcIiAob25DbGljayk9XCJhdXRvKClcIj48L3AtYnV0dG9uPlxuICAgICAgICA8cC1idXR0b24gbGFiZWw9XCJSZXNldFwiIHNpemU9XCJzbWFsbFwiIFt0ZXh0XT1cInRydWVcIiAob25DbGljayk9XCJyZXNldCgpXCI+PC9wLWJ1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBMVVQgLyBjb2xvcm1hcCBjb250cm9scy4gVGhlIGNvbG9ybWFwIG1hcHMgc2luZ2xlLWNoYW5uZWwgaW50ZW5zaXR5IOKGklxuICAgICAgICAgY29sb3VyLCBzbyBpdCBvbmx5IGFwcGxpZXMgdG8gZ3JheXNjYWxlOyBSR0IvbXVsdGljaGFubmVsIHVzZSB0aGVcbiAgICAgICAgIHBlci1jaGFubmVsIHBzZXVkby1jb2xvdXIgcHJlc2V0cyBhYm92ZS4gLS0+XG4gICAgPGRpdiBjbGFzcz1cImNoLWRpc3BsYXlcIj5cbiAgICAgIDxwLXRyZWVTZWxlY3QgKm5nSWY9XCIhbXVsdGljaGFubmVsXCJcbiAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiY29sb3JtYXBPcHRpb25zXCIgWyhuZ01vZGVsKV09XCJzZWxlY3RlZENvbG9ybWFwXCJcbiAgICAgICAgICAgICAgICAgICAgW3NlbGVjdGlvbk1vZGVdPVwiJ3NpbmdsZSdcIiBwbGFjZWhvbGRlcj1cIkNvbG9ybWFwXCIgW3Njcm9sbEhlaWdodF09XCInMzAwcHgnXCJcbiAgICAgICAgICAgICAgICAgICAgcFRvb2x0aXA9XCJDb2xvciBMb29rdXAgVGFibGVzXCIgdG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCJcbiAgICAgICAgICAgICAgICAgICAgKG9uTm9kZVNlbGVjdCk9XCJvbkNvbG9ybWFwKCRldmVudC5ub2RlKVwiPlxuICAgICAgICA8bmctdGVtcGxhdGUgbGV0LW5vZGUgcFRlbXBsYXRlPVwiZGVmYXVsdFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMlwiPlxuICAgICAgICAgICAgPGltZyAqbmdJZj1cIiFub2RlLmNoaWxkcmVuXCIgW3NyY109XCJub2RlLmRhdGE/LnNyY1wiIGNsYXNzPVwiY29sb3JtYXBcIiAvPlxuICAgICAgICAgICAgPGRpdj57eyBub2RlLmxhYmVsIH19PC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L3AtdHJlZVNlbGVjdD5cbiAgICAgIDxwLWNoZWNrYm94IFtiaW5hcnldPVwidHJ1ZVwiIFsobmdNb2RlbCldPVwiaW52ZXJ0XCJcbiAgICAgICAgICAgICAgICAgIChvbkNoYW5nZSk9XCJvbkludmVydCgkZXZlbnQuY2hlY2tlZClcIiBsYWJlbD1cIkludmVydFwiPjwvcC1jaGVja2JveD5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gRXhwb3J0czogYW4gOC1iaXQgcHVibGljYXRpb24gY29tcG9zaXRlIChhbHdheXMpLCBwbHVzIGEgdHJ1ZS0xNi1iaXRcbiAgICAgICAgIGRhdGEtcHJlc2VydmluZyBUSUZGIHdoZW4gdGhlIGltYWdlIGNhcnJpZXMgPjgtYml0IHBpeGVscy4gLS0+XG4gICAgPGRpdiBjbGFzcz1cImNoLWV4cG9ydFwiPlxuICAgICAgPHAtYnV0dG9uIGxhYmVsPVwiRXhwb3J0IGNvbXBvc2l0ZSAoUE5HKVwiIGljb249XCJwaSBwaS1kb3dubG9hZFwiIHNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgICAgICAgKG9uQ2xpY2spPVwiZXhwb3J0Q29tcG9zaXRlKClcIj48L3AtYnV0dG9uPlxuICAgICAgPHAtYnV0dG9uICpuZ0lmPVwiaXMxNmJpdFwiIGxhYmVsPVwiRXhwb3J0IDE2LWJpdCBUSUZGXCIgaWNvbj1cInBpIHBpLWRvd25sb2FkXCIgc2l6ZT1cInNtYWxsXCJcbiAgICAgICAgICAgICAgICBbb3V0bGluZWRdPVwidHJ1ZVwiIHBUb29sdGlwPVwiRGF0YS1wcmVzZXJ2aW5nIG11bHRpLWJhbmQgVElGRiAodmlzaWJsZSBjaGFubmVscywgbmF0aXZlIGJpdCBkZXB0aClcIlxuICAgICAgICAgICAgICAgIHRvb2x0aXBQb3NpdGlvbj1cInRvcFwiIChvbkNsaWNrKT1cImV4cG9ydERhdGEoKVwiPjwvcC1idXR0b24+XG4gICAgPC9kaXY+XG5cbiAgPC9kaXY+XG48L3AtZGlhbG9nPlxuIl19
399
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbm5lbC1oaXN0b2dyYW0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9jaGFubmVsLWhpc3RvZ3JhbS9jaGFubmVsLWhpc3RvZ3JhbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvbGliL2NoYW5uZWwtaGlzdG9ncmFtL2NoYW5uZWwtaGlzdG9ncmFtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQXFCLE1BQU0sR0FDbEUsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVwQyxPQUFPLEtBQUssTUFBTSxNQUFNLG9CQUFvQixDQUFDO0FBRTdDLE9BQU8sRUFDTCxxQkFBcUIsRUFBbUQsVUFBVSxHQUNuRixNQUFNLDZDQUE2QyxDQUFDOzs7Ozs7Ozs7Ozs7OztBQUVyRDs7Ozs7Ozs7R0FRRztBQVFILE1BQU0sT0FBTyx5QkFBeUI7SUFpQ3BDLFlBQW1ELEdBQXlCO1FBQXpCLFFBQUcsR0FBSCxHQUFHLENBQXNCO1FBaEM1RSxpRkFBaUY7UUFDeEUsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUNmLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUU3QyxpQkFBWSxHQUFHLHdCQUF3QixDQUFDO1FBQ3hDLGNBQVMsR0FBRyxVQUFVLENBQUM7UUFFaEMsYUFBUSxHQUFvQixFQUFFLENBQUM7UUFDL0IsYUFBUSxHQUF5QixJQUFJLENBQUM7UUFDdEMsV0FBTSxHQUFHLEtBQUssQ0FBQztRQUNmLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIscUVBQXFFO1FBQzdELGdCQUFXLEdBQUcsQ0FBQyxDQUFDO1FBQ3hCOztxRkFFNkU7UUFDN0UsU0FBSSxHQUFzQixJQUFJLENBQUM7UUFFL0I7Ozt3RkFHZ0Y7UUFD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LENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQy9CLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDN0MsSUFBSSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUM1RCxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBQ0QsV0FBVyxDQUFDLEtBQVU7UUFDcEIsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRO1lBQUUsT0FBTztRQUMzQixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQy9CLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDN0MsSUFBSSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUM1RCxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBQ0QsYUFBYSxDQUFDLEtBQVU7UUFDdEIsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRO1lBQUUsT0FBTztRQUMzQixNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEIsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQUUsT0FBTztRQUNyQixJQUFJLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssRUFB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SW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBUcmVlTm9kZSB9IGZyb20gJ3ByaW1lbmcvYXBpJztcbmltcG9ydCAqIGFzIFBsb3RseSBmcm9tICdwbG90bHkuanMtZGlzdC1taW4nO1xuXG5pbXBvcnQge1xuICBDSEFOTkVMX0hJU1RPR1JBTV9BUEksIElDaGFubmVsSGlzdG9ncmFtQXBpLCBJQ2hhbm5lbFN0YXRlLCBJSGlzdG9ncmFtLCBMVVRfQ09MT1JTLFxufSBmcm9tICcuLi9jb250cmFjdHMvY2hhbm5lbC1oaXN0b2dyYW0tYXBpLmNvbnRyYWN0JztcblxuLyoqXG4gKiBDaGFubmVscyAmIEhpc3RvZ3JhbSBwYW5lOiBhIG5vbi1tb2RhbCwgcmVzaXphYmxlLCBkcmFnZ2FibGUgZGlhbG9nIGZvclxuICogYnJpZ2h0bmVzcy9jb250cmFzdCAocGVyLWNoYW5uZWwgZGlzcGxheSB3aW5kb3cpLCBnYW1tYSwgY2hhbm5lbFxuICogdmlzaWJpbGl0eS9jb2xvdXIsIHRoZSBpbnRlbnNpdHkgaGlzdG9ncmFtLCBhbmQgdGhlIGNvbG9ybWFwL3JldmVyc2UvaW52ZXJ0XG4gKiBjb250cm9scyAobW92ZWQgaGVyZSBmcm9tIHRoZSB0b29sYmFyKS4gRXZlcnkgZWRpdCBmbG93cyB0aHJvdWdoXG4gKiB7QGxpbmsgQ0hBTk5FTF9ISVNUT0dSQU1fQVBJfSBpbnRvIHRoZSBzaGFyZWQgc3RvcmUsIGFuZCBib3RoIHJlbmRlcmluZ1xuICogYmFja2VuZHMgcmVjb2xvciB0aGUgZGlzcGxheWVkIGltYWdlIGxpdmUuIFRoZSBwYW5lIGRlcGVuZHMgb25seSBvbiB0aGVcbiAqIGNvbnRyYWN0LCBuZXZlciB0aGUgY29uY3JldGUgdmlzdWFsaXplci5cbiAqL1xuQENvbXBvbmVudCh7XG4gIC8vIENhbm9uaWNhbCBwcmVmaXhlZCBzZWxlY3RvciBmaXJzdDsgdGhlIHVucHJlZml4ZWQgb3JpZ2luYWwgaXMga2VwdCBhcyBhblxuICAvLyBhbGlhcyBmb3Igb25lIHJlbGVhc2UgKHByZS1wdWJsaWNhdGlvbiBiYWNrLWNvbXBhdCkuXG4gIHNlbGVjdG9yOiAnY2hhbm5lbC1oaXN0b2dyYW0nLFxuICB0ZW1wbGF0ZVVybDogJy4vY2hhbm5lbC1oaXN0b2dyYW0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jaGFubmVsLWhpc3RvZ3JhbS5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBDaGFubmVsSGlzdG9ncmFtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAvKiogRGlhbG9nIHZpc2liaWxpdHksIHR3by13YXkgYm91bmQgc28gdGhlIGhvc3QgKHRvb2xiYXIgYnV0dG9uKSBjYW4gb3BlbiBpdC4gKi9cbiAgQElucHV0KCkgdmlzaWJsZSA9IGZhbHNlO1xuICBAT3V0cHV0KCkgdmlzaWJsZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICByZWFkb25seSBoaXN0b2dyYW1EaXYgPSAnY2hhbm5lbC1oaXN0b2dyYW0tcGxvdCc7XG4gIHJlYWRvbmx5IGx1dENvbG9ycyA9IExVVF9DT0xPUlM7XG5cbiAgY2hhbm5lbHM6IElDaGFubmVsU3RhdGVbXSA9IFtdO1xuICBzZWxlY3RlZDogSUNoYW5uZWxTdGF0ZSB8IG51bGwgPSBudWxsO1xuICBpbnZlcnQgPSBmYWxzZTtcbiAgbG9nU2NhbGUgPSBmYWxzZTtcbiAgLyoqIEJvdW5kZWQgcmV0cmllcyB3aGlsZSB0aGUgKGFzeW5jKSBoaXN0b2dyYW0gc2FtcGxpbmcgcmVzb2x2ZXMuICovXG4gIHByaXZhdGUgaGlzdFJldHJpZXMgPSAwO1xuICAvKiogVGhlIHNlbGVjdGVkIGNoYW5uZWwncyBjdXJyZW50IGhpc3RvZ3JhbS4gTmF0aXZlIGJpdCBkZXB0aCAod2l0aFxuICAgKiAgb2JzZXJ2ZWQvcmFuZ2UgZmllbGRzKSBmb3IgPjgtYml0IGltYWdlcywgZWxzZSB0aGUgOC1iaXQgY2xpZW50IGhpc3RvZ3JhbS5cbiAgICogIERyaXZlcyB0aGUgcGxvdCwgdGhlIG5hdGl2ZSB3aW5kb3cgbGFiZWxzLCBhbmQgdGhlIGV4cG9ydC1idXR0b24gZ2F0ZS4gKi9cbiAgaGlzdDogSUhpc3RvZ3JhbSB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIGhpc3RTdWI/OiBTdWJzY3JpcHRpb247XG4gIC8qKiBXaGljaCB3aW5kb3cgY29udHJvbCBpcyBiZWluZyBhZGp1c3RlZCByaWdodCBub3cg4oCUIGRyaXZlcyBhIHNtYWxsXG4gICAqICBub24tYmxvY2tpbmcgYWN0aXZpdHkgc3Bpbm5lciBuZXh0IHRvIHRoYXQgc2xpZGVyLCBzaW5jZSB0aGUgaW1hZ2UgcmVjb2xvclxuICAgKiAgaXNuJ3QgaW5zdGFudCBvbiBsYXJnZSBzdGFja3MuIENsZWFyZWQgYSBzaG9ydCBtb21lbnQgYWZ0ZXIgbW92ZW1lbnQgc3RvcHNcbiAgICogICh0aGUgcmVjb2xvciBpc24ndCBkaXJlY3RseSBvYnNlcnZhYmxlLCBzbyB0aGlzIGlzIGEgdHJhaWxpbmcgaGV1cmlzdGljKS4gKi9cbiAgYWN0aXZlQWRqdXN0OiAnbWluJyB8ICdtYXgnIHwgJ2dhbW1hJyB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIGFkanVzdFRpbWVyPzogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD47XG5cbiAgY29sb3JtYXBPcHRpb25zOiBhbnk7XG4gIHNlbGVjdGVkQ29sb3JtYXA6IGFueTtcblxuICBwcml2YXRlIHN1YnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG4gIC8qKiBLZWVwcyB0aGUgUGxvdGx5IGhpc3RvZ3JhbSBzaXplZCB0byB0aGUgKHJlc2l6YWJsZSkgZGlhbG9nIGJvZHkuICovXG4gIHByaXZhdGUgcmVzaXplT2JzZXJ2ZXI/OiBSZXNpemVPYnNlcnZlcjtcblxuICBjb25zdHJ1Y3RvcihASW5qZWN0KENIQU5ORUxfSElTVE9HUkFNX0FQSSkgcHJpdmF0ZSBhcGk6IElDaGFubmVsSGlzdG9ncmFtQXBpKSB7fVxuXG4gIC8qKiBQZXItY2hhbm5lbCBwc2V1ZG8tY29sb3VyIG9ubHkgYXBwbGllcyB3aGVuIHRoZXJlJ3MgbW9yZSB0aGFuIG9uZSBjaGFubmVsXG4gICAqICAoUkdCIC8gZmx1b3Jlc2NlbmNlKS4gQSBzaW5nbGUgZ3JheXNjYWxlIGNoYW5uZWwgdXNlcyB0aGUgY29sb3JtYXAgaW5zdGVhZC4gKi9cbiAgZ2V0IG11bHRpY2hhbm5lbCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jaGFubmVscy5sZW5ndGggPiAxO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5jb2xvcm1hcE9wdGlvbnMgPSB0aGlzLmFwaS5nZXRDb2xvcm1hcE9wdGlvbnMoKTtcbiAgICB0aGlzLnN1YnMuYWRkKHRoaXMuYXBpLmdldENvbG9ybWFwKCkuc3Vic2NyaWJlKChjbSkgPT4gKHRoaXMuc2VsZWN0ZWRDb2xvcm1hcCA9IGNtKSkpO1xuICAgIHRoaXMuc3Vicy5hZGQodGhpcy5hcGkuZ2V0SW52ZXJ0JCgpLnN1YnNjcmliZSgoaSkgPT4gKHRoaXMuaW52ZXJ0ID0gISFpKSkpO1xuICAgIHRoaXMuc3Vicy5hZGQoXG4gICAgICB0aGlzLmFwaS5nZXRDaGFubmVscyQoKS5zdWJzY3JpYmUoKGNoYW5uZWxzKSA9PiB7XG4gICAgICAgIHRoaXMuY2hhbm5lbHMgPSBjaGFubmVscyA/PyBbXTtcbiAgICAgICAgLy8gS2VlcCB0aGUgc2VsZWN0ZWQgcm93IChieSBpbmRleCkgb3IgZGVmYXVsdCB0byB0aGUgZmlyc3QgY2hhbm5lbC5cbiAgICAgICAgY29uc3Qga2VlcElkeCA9IHRoaXMuc2VsZWN0ZWQ/LmluZGV4ID8/IDA7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWQgPSB0aGlzLmNoYW5uZWxzLmZpbmQoKGMpID0+IGMuaW5kZXggPT09IGtlZXBJZHgpID8/IHRoaXMuY2hhbm5lbHNbMF0gPz8gbnVsbDtcbiAgICAgICAgaWYgKHRoaXMudmlzaWJsZSkgdGhpcy51cGRhdGVNYXJrZXJzKCk7XG4gICAgICB9KSxcbiAgICApO1xuICAgIC8vIFRoZSBoaXN0b2dyYW0gaXMgb2YgdGhlIHNvdXJjZSBwaXhlbHMg4oCUIGl0IGNoYW5nZXMgd2l0aCB0aGUgaW1hZ2Uvc2xpY2UsXG4gICAgLy8gbm90IHdpdGggd2luZG93IGVkaXRzIOKAlCBzbyByZWxvYWQgaXQgd2hlbiB0aGUgaW1hZ2UgbWV0YWRhdGEgY2hhbmdlcy5cbiAgICB0aGlzLnN1YnMuYWRkKHRoaXMuYXBpLmdldEltYWdlTWV0YSgpLnN1YnNjcmliZSgoKSA9PiB7IGlmICh0aGlzLnZpc2libGUpIHRoaXMubG9hZEhpc3RvZ3JhbSgpOyB9KSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnMudW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLmhpc3RTdWI/LnVuc3Vic2NyaWJlKCk7XG4gICAgY2xlYXJUaW1lb3V0KHRoaXMuYWRqdXN0VGltZXIpO1xuICAgIHRoaXMudGVhcmRvd25SZXNpemUoKTtcbiAgICB0cnkgeyBQbG90bHkucHVyZ2UodGhpcy5oaXN0b2dyYW1EaXYpOyB9IGNhdGNoIHsgLyogbmV2ZXIgcmVuZGVyZWQgKi8gfVxuICB9XG5cbiAgb25WaXNpYmxlQ2hhbmdlKHY6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLnZpc2libGUgPSB2O1xuICAgIHRoaXMudmlzaWJsZUNoYW5nZS5lbWl0KHYpO1xuICAgIGlmICghdikgdGhpcy50ZWFyZG93blJlc2l6ZSgpO1xuICB9XG5cbiAgLyoqIHAtZGlhbG9nIChvblNob3cpOiB0aGUgcGxvdCBkaXYgbm93IGV4aXN0cywgc28gZHJhdyB0aGUgaGlzdG9ncmFtIGFuZCBrZWVwXG4gICAqICBpdCBzaXplZCB0byB0aGUgZGlhbG9nICh3aGljaCBpcyByZXNpemFibGUpIHZpYSBhIFJlc2l6ZU9ic2VydmVyLiAqL1xuICBvblNob3coKTogdm9pZCB7XG4gICAgdGhpcy5oaXN0UmV0cmllcyA9IDA7XG4gICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgIHRoaXMubG9hZEhpc3RvZ3JhbSgpO1xuICAgICAgY29uc3QgZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0aGlzLmhpc3RvZ3JhbURpdik7XG4gICAgICBpZiAoZWwgJiYgIXRoaXMucmVzaXplT2JzZXJ2ZXIgJiYgdHlwZW9mIFJlc2l6ZU9ic2VydmVyICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICB0aGlzLnJlc2l6ZU9ic2VydmVyID0gbmV3IFJlc2l6ZU9ic2VydmVyKCgpID0+IHtcbiAgICAgICAgICB0cnkgeyAoUGxvdGx5IGFzIGFueSkuUGxvdHMucmVzaXplKGVsKTsgfSBjYXRjaCB7IC8qIG5vdCByZW5kZXJlZCAqLyB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnJlc2l6ZU9ic2VydmVyLm9ic2VydmUoZWwpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSB0ZWFyZG93blJlc2l6ZSgpOiB2b2lkIHtcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyPy5kaXNjb25uZWN0KCk7XG4gICAgdGhpcy5yZXNpemVPYnNlcnZlciA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHNlbGVjdENoYW5uZWwoY2g6IElDaGFubmVsU3RhdGUpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkID0gY2g7XG4gICAgdGhpcy5hcGkuc2V0U2VsZWN0ZWRDaGFubmVsKGNoLmluZGV4KTsgLy8gYSBzaW5nbGUtc2NhbGFyIDNEIFN1cmZhY2UgZm9sbG93cyB0aGUgc2VsZWN0ZWQgYmFuZFxuICAgIHRoaXMuaGlzdFJldHJpZXMgPSAwO1xuICAgIHRoaXMubG9hZEhpc3RvZ3JhbSgpO1xuICB9XG5cbiAgLy8g4pSA4pSAIHBlci1jaGFubmVsIGVkaXRzIChsaXZlKSDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbiAgLy8gUHJpbWVORyBzbGlkZXIvaW5wdXROdW1iZXIgZXZlbnRzIGNhcnJ5IGBudW1iZXIgfCBzdHJpbmcgfCBudWxsYCwgc28gdGhlXG4gIC8vIGhhbmRsZXJzIGFjY2VwdCBgYW55YCBhbmQgY29lcmNlLiBWYWx1ZXMgYXJyaXZlIGluIE5BVElWRSB1bml0cyAodGhlIHNsaWRlclxuICAvLyBpcyBsYWJlbGxlZCBuYXRpdmVseSBmb3IgMTYtYml0KTsgd2UgbWFwIHRoZW0gYmFjayB0byB0aGUgc3RvcmUncyA4LWJpdFxuICAvLyBkaXNwbGF5IHdpbmRvdyB2aWEgdGhlIGNoYW5uZWwncyBvYnNlcnZlZCByYW5nZSAoaWRlbnRpdHkgZm9yIDgtYml0IGltYWdlcyxcbiAgLy8gc28gdGhlaXIgYmVoYXZpb3VyIGlzIHVuY2hhbmdlZCkuXG4gIG9uTWluQ2hhbmdlKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuc2VsZWN0ZWQpIHJldHVybjtcbiAgICBjb25zdCBtaW4gPSB0aGlzLnRvRGlzcCh2YWx1ZSk7XG4gICAgY29uc3QgbWF4ID0gTWF0aC5tYXgobWluLCB0aGlzLnNlbGVjdGVkLm1heCk7XG4gICAgdGhpcy5hcGkuc2V0Q2hhbm5lbFN0YXRlKHRoaXMuc2VsZWN0ZWQuaW5kZXgsIHsgbWluLCBtYXggfSk7XG4gICAgdGhpcy5tYXJrQnVzeSgnbWluJyk7XG4gICAgdGhpcy51cGRhdGVNYXJrZXJzKCk7XG4gIH1cbiAgb25NYXhDaGFuZ2UodmFsdWU6IGFueSk6IHZvaWQge1xuICAgIGlmICghdGhpcy5zZWxlY3RlZCkgcmV0dXJuO1xuICAgIGNvbnN0IG1heCA9IHRoaXMudG9EaXNwKHZhbHVlKTtcbiAgICBjb25zdCBtaW4gPSBNYXRoLm1pbihtYXgsIHRoaXMuc2VsZWN0ZWQubWluKTtcbiAgICB0aGlzLmFwaS5zZXRDaGFubmVsU3RhdGUodGhpcy5zZWxlY3RlZC5pbmRleCwgeyBtaW4sIG1heCB9KTtcbiAgICB0aGlzLm1hcmtCdXN5KCdtYXgnKTtcbiAgICB0aGlzLnVwZGF0ZU1hcmtlcnMoKTtcbiAgfVxuICBvbkdhbW1hQ2hhbmdlKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuc2VsZWN0ZWQpIHJldHVybjtcbiAgICBjb25zdCBnID0gTnVtYmVyKHZhbHVlKTtcbiAgICBpZiAoaXNOYU4oZykpIHJldHVybjtcbiAgICB0aGlzLmFwaS5zZXRDaGFubmVsU3RhdGUodGhpcy5zZWxlY3RlZC5pbmRleCwgeyBnYW1tYTogZyB9KTtcbiAgICB0aGlzLm1hcmtCdXN5KCdnYW1tYScpO1xuICB9XG5cbiAgLyoqIEZsYWcgYSBjb250cm9sIGFzIGFjdGl2ZWx5IGFkanVzdGluZyBzbyBpdHMgc3Bpbm5lciBzaG93czsgYXV0by1jbGVhcnMgYVxuICAgKiAgc2hvcnQgbW9tZW50IGFmdGVyIHRoZSBsYXN0IGNoYW5nZSAoa2VwdCBhbGl2ZSB3aGlsZSB0aGUgdXNlciBrZWVwc1xuICAgKiAgZHJhZ2dpbmcsIHNpbmNlIGVhY2ggY2hhbmdlIHJlc2V0cyB0aGUgdGltZXIpLiAqL1xuICBwcml2YXRlIG1hcmtCdXN5KHdoaWNoOiAnbWluJyB8ICdtYXgnIHwgJ2dhbW1hJyk6IHZvaWQge1xuICAgIHRoaXMuYWN0aXZlQWRqdXN0ID0gd2hpY2g7XG4gICAgY2xlYXJUaW1lb3V0KHRoaXMuYWRqdXN0VGltZXIpO1xuICAgIHRoaXMuYWRqdXN0VGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHsgdGhpcy5hY3RpdmVBZGp1c3QgPSBudWxsOyB9LCA1MDApO1xuICB9XG4gIG9uVmlzaWJsZVRvZ2dsZShjaDogSUNoYW5uZWxTdGF0ZSwgdmFsdWU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmFwaS5zZXRDaGFubmVsU3RhdGUoY2guaW5kZXgsIHsgdmlzaWJsZTogdmFsdWUgfSk7XG4gIH1cbiAgb25Db2xvckNoYW5nZShjaDogSUNoYW5uZWxTdGF0ZSwgY29sb3I6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuYXBpLnNldENoYW5uZWxTdGF0ZShjaC5pbmRleCwgeyBjb2xvciB9KTtcbiAgICAvLyBUaGUgaGlzdG9ncmFtIGJhcnMgYXJlIGRyYXduIGluIHRoZSBzZWxlY3RlZCBjaGFubmVsJ3MgY29sb3VyIOKAlCByZWRyYXdcbiAgICAvLyB3aGVuIHRoYXQgY2hhbm5lbCdzIGNvbG91ciBjaGFuZ2VzLlxuICAgIGlmICh0aGlzLnNlbGVjdGVkICYmIGNoLmluZGV4ID09PSB0aGlzLnNlbGVjdGVkLmluZGV4KSB7XG4gICAgICB0aGlzLnNlbGVjdGVkLmNvbG9yID0gY29sb3I7XG4gICAgICB0aGlzLnJlbmRlckhpc3RvZ3JhbSgpO1xuICAgIH1cbiAgfVxuXG4gIC8vIOKUgOKUgCBkaXNwbGF5IG9wdGlvbnMg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4gIG9uQ29sb3JtYXAobm9kZTogVHJlZU5vZGUpOiB2b2lkIHtcbiAgICBpZiAobm9kZSAmJiAhbm9kZS5jaGlsZHJlbikgdGhpcy5hcGkuc2V0Q29sb3JtYXAobm9kZSk7XG4gIH1cbiAgb25JbnZlcnQodmFsdWU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmludmVydCA9IHZhbHVlO1xuICAgIHRoaXMuYXBpLnNldEludmVydCh2YWx1ZSk7XG4gIH1cbiAgdG9nZ2xlTG9nKHZhbHVlOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5sb2dTY2FsZSA9IHZhbHVlO1xuICAgIHRoaXMucmVuZGVySGlzdG9ncmFtKCk7XG4gIH1cblxuICAvKiogUXVpY2stYXNzaWduIGEgcHJlc2V0IExVVCBjb2xvdXIgdG8gYSBjaGFubmVsIChGaWppIHBhbGV0dGUpLiAqL1xuICBzZXRQcmVzZXQoY2g6IElDaGFubmVsU3RhdGUsIGNvbG9yOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ29sb3JDaGFuZ2UoY2gsIGNvbG9yKTtcbiAgfVxuXG4gIC8qKiBFeHBvcnQgdGhlIGRpc3BsYXllZCBjb21wb3NpdGUgYXMgYSBwdWJsaWNhdGlvbi1yZWFkeSBQTkcgKDgtYml0IGZpZ3VyZSkuICovXG4gIGV4cG9ydENvbXBvc2l0ZSgpOiB2b2lkIHtcbiAgICB0aGlzLmFwaS5leHBvcnRDb21wb3NpdGUoKTtcbiAgfVxuXG4gIC8qKiBFeHBvcnQgdGhlIHVuZGVybHlpbmcgZGF0YSBhcyBhIHRydWUtMTYtYml0IG11bHRpLWJhbmQgVElGRiAoc2VydmVyLXNpZGUpLiAqL1xuICBleHBvcnREYXRhKCk6IHZvaWQge1xuICAgIHRoaXMuYXBpLmV4cG9ydERhdGEoKTtcbiAgfVxuXG4gIC8vIOKUgOKUgCBuYXRpdmUgYml0LWRlcHRoIGhlbHBlcnMg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4gIC8qKiBUcnVlIHdoZW4gdGhlIGN1cnJlbnQgY2hhbm5lbCBoaXN0b2dyYW0gaXMgbmF0aXZlID44LWJpdCAoMTYtYml0IGV0Yy4pOlxuICAgKiAgZ2F0ZXMgdGhlIG5hdGl2ZSBzbGlkZXIgbGFiZWxsaW5nIGFuZCB0aGUgMTYtYml0IFRJRkYgZXhwb3J0IGJ1dHRvbi4gKi9cbiAgZ2V0IGlzMTZiaXQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICh0aGlzLmhpc3Q/LmJpdERlcHRoID8/IDgpID4gODtcbiAgfVxuICAvKiogVGhlIG5hdGl2ZSB2YWx1ZSByYW5nZSB0aGUgOC1iaXQgZGlzcGxheSB3aW5kb3cgbWFwcyBvbnRvIOKAlCB0aGUgb2JzZXJ2ZWRcbiAgICogIHBpeGVsIGV4dHJlbWVzIGZvciBhIG5hdGl2ZSBoaXN0b2dyYW0sIGVsc2UgcGxhaW4gMC4uMjU1IChzbyA4LWJpdCBpbWFnZXNcbiAgICogIHBhc3MgdGhyb3VnaCB1bmNoYW5nZWQpLiBUaGUgOC1iaXQgdGlsZSBpcyBzZXJ2ZXItc3RyZXRjaGVkIGFjcm9zcyB0aGlzXG4gICAqICByYW5nZSwgc28gaXQncyB0aGUgYmVzdCBjbGllbnQtc2lkZSBuYXRpdmXihpRkaXNwbGF5IG1hcHBpbmcuICovXG4gIHByaXZhdGUgb2JzUmFuZ2UoKTogeyBtaW46IG51bWJlcjsgbWF4OiBudW1iZXIgfSB7XG4gICAgY29uc3QgaCA9IHRoaXMuaGlzdDtcbiAgICBpZiAoaCAmJiAoaC5iaXREZXB0aCA/PyA4KSA+IDggJiYgKGgub2JzZXJ2ZWRNYXggPz8gMCkgPiAoaC5vYnNlcnZlZE1pbiA/PyAwKSkge1xuICAgICAgcmV0dXJuIHsgbWluOiBoLm9ic2VydmVkTWluIGFzIG51bWJlciwgbWF4OiBoLm9ic2VydmVkTWF4IGFzIG51bWJlciB9O1xuICAgIH1cbiAgICByZXR1cm4geyBtaW46IDAsIG1heDogMjU1IH07XG4gIH1cbiAgLyoqIDgtYml0IGRpc3BsYXkgdmFsdWUgKDAuLjI1NSkg4oaSIG5hdGl2ZSB1bml0cy4gKi9cbiAgcHJpdmF0ZSB0b05hdGl2ZShkaXNwOiBudW1iZXIpOiBudW1iZXIge1xuICAgIGNvbnN0IG8gPSB0aGlzLm9ic1JhbmdlKCk7XG4gICAgcmV0dXJuIE1hdGgucm91bmQoby5taW4gKyAoZGlzcCAvIDI1NSkgKiAoby5tYXggLSBvLm1pbikpO1xuICB9XG4gIC8qKiBOYXRpdmUgdW5pdHMg4oaSIGNsYW1wZWQgOC1iaXQgZGlzcGxheSB2YWx1ZSAoMC4uMjU1KS4gKi9cbiAgcHJpdmF0ZSB0b0Rpc3AodmFsdWU6IGFueSk6IG51bWJlciB7XG4gICAgY29uc3QgdiA9IE51bWJlcih2YWx1ZSk7XG4gICAgaWYgKHYgPT0gbnVsbCB8fCBpc05hTih2KSkgcmV0dXJuIDA7XG4gICAgY29uc3QgbyA9IHRoaXMub2JzUmFuZ2UoKTtcbiAgICBjb25zdCBzcGFuID0gby5tYXggLSBvLm1pbiB8fCAxO1xuICAgIGNvbnN0IGQgPSBNYXRoLnJvdW5kKDI1NSAqICh2IC0gby5taW4pIC8gc3Bhbik7XG4gICAgcmV0dXJuIGQgPCAwID8gMCA6IGQgPiAyNTUgPyAyNTUgOiBkO1xuICB9XG4gIC8qKiBTZWxlY3RlZCBjaGFubmVsIHdpbmRvdyBlbmRwb2ludHMgaW4gbmF0aXZlIHVuaXRzIChmb3IgdGhlIHNsaWRlcnMpLiAqL1xuICBnZXQgbWluTmF0aXZlKCk6IG51bWJlciB7IHJldHVybiB0aGlzLnNlbGVjdGVkID8gdGhpcy50b05hdGl2ZSh0aGlzLnNlbGVjdGVkLm1pbikgOiAwOyB9XG4gIGdldCBtYXhOYXRpdmUoKTogbnVtYmVyIHsgcmV0dXJuIHRoaXMuc2VsZWN0ZWQgPyB0aGlzLnRvTmF0aXZlKHRoaXMuc2VsZWN0ZWQubWF4KSA6IDA7IH1cbiAgLyoqIE5hdGl2ZSBzbGlkZXIgYm91bmRzICsgc3RlcCAoMjU2IGRpc3BsYXkgc3RlcHMgYWNyb3NzIHRoZSBuYXRpdmUgcmFuZ2UpLiAqL1xuICBnZXQgc2xpZGVyTWluKCk6IG51bWJlciB7IHJldHVybiB0aGlzLm9ic1JhbmdlKCkubWluOyB9XG4gIGdldCBzbGlkZXJNYXgoKTogbnVtYmVyIHsgcmV0dXJuIHRoaXMub2JzUmFuZ2UoKS5tYXg7IH1cbiAgZ2V0IHNsaWRlclN0ZXAoKTogbnVtYmVyIHtcbiAgICBjb25zdCByID0gdGhpcy5vYnNSYW5nZSgpO1xuICAgIHJldHVybiB0aGlzLmlzMTZiaXQgPyBNYXRoLm1heCgxLCBNYXRoLnJvdW5kKChyLm1heCAtIHIubWluKSAvIDI1NSkpIDogMTtcbiAgfVxuXG4gIC8vIOKUgOKUgCBhdXRvIC8gcmVzZXQg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4gIGF1dG8oKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnNlbGVjdGVkKSByZXR1cm47XG4gICAgLy8gTmF0aXZlIHBhdGg6IHNhdHVyYXRlIHRoZSB0cnVlIGRpc3RyaWJ1dGlvbiwgdGhlbiBtYXAgdGhlIG5hdGl2ZSB3aW5kb3dcbiAgICAvLyBiYWNrIHRvIHRoZSA4LWJpdCBzdG9yZS4gOC1iaXQgcGF0aCBrZWVwcyB0aGUgZXhpc3RpbmcgY2xpZW50IGF1dG8td2luZG93LlxuICAgIGlmICh0aGlzLmlzMTZiaXQgJiYgdGhpcy5oaXN0KSB7XG4gICAgICBjb25zdCBbbm1pbiwgbm1heF0gPSB0aGlzLmF1dG9XaW5kb3codGhpcy5oaXN0LCAwLjAwMSk7XG4gICAgICBpZiAobm1heCA+IG5taW4pIHtcbiAgICAgICAgdGhpcy5hcGkuc2V0Q2hhbm5lbFN0YXRlKHRoaXMuc2VsZWN0ZWQuaW5kZXgsIHsgbWluOiB0aGlzLnRvRGlzcChubWluKSwgbWF4OiB0aGlzLnRvRGlzcChubWF4KSB9KTtcbiAgICAgICAgdGhpcy51cGRhdGVNYXJrZXJzKCk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuYXBpLmF1dG9Db250cmFzdChbdGhpcy5zZWxlY3RlZC5pbmRleF0sIDAuMDAxKTtcbiAgfVxuICByZXNldCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zZWxlY3RlZCkgdGhpcy5hcGkucmVzZXRDb250cmFzdChbdGhpcy5zZWxlY3RlZC5pbmRleF0pO1xuICB9XG5cbiAgLyoqIFNhdHVyYXRpb24tYmFzZWQgYXV0by13aW5kb3cgb3ZlciBhIChuYXRpdmUgb3IgOC1iaXQpIGhpc3RvZ3JhbTogcGlja1xuICAgKiAgW21pbixtYXhdIHNvIH5gc2F0dXJhdGlvbmAgb2YgcGl4ZWxzIGNsaXAgYXQgZWFjaCBlbmQsIGRyb3BwaW5nIGEgZG9taW5hbnRcbiAgICogIGZpcnN0L2xhc3QgYmluIChiYWNrZ3JvdW5kL3BhZGRpbmcpLiBSZXR1cm5zIG5hdGl2ZSBiaW4gdmFsdWVzLiAqL1xuICBwcml2YXRlIGF1dG9XaW5kb3coaDogSUhpc3RvZ3JhbSwgc2F0dXJhdGlvbjogbnVtYmVyKTogW251bWJlciwgbnVtYmVyXSB7XG4gICAgY29uc3QgY291bnRzID0gaC5jb3VudHMuc2xpY2UoKTtcbiAgICBjb25zdCBuID0gY291bnRzLmxlbmd0aDtcbiAgICBpZiAobiA9PT0gMCkgcmV0dXJuIFt0aGlzLnNsaWRlck1pbiwgdGhpcy5zbGlkZXJNYXhdO1xuICAgIGlmIChuID4gMiAmJiBjb3VudHNbMF0gPiBjb3VudHNbMV0pIGNvdW50c1swXSA9IDA7XG4gICAgaWYgKG4gPiAyICYmIGNvdW50c1tuIC0gMV0gPiBjb3VudHNbbiAtIDJdKSBjb3VudHNbbiAtIDFdID0gMDtcbiAgICBsZXQgdG90YWwgPSAwO1xuICAgIGZvciAoY29uc3QgYyBvZiBjb3VudHMpIHRvdGFsICs9IGM7XG4gICAgaWYgKHRvdGFsIDw9IDApIHJldHVybiBbdGhpcy5zbGlkZXJNaW4sIHRoaXMuc2xpZGVyTWF4XTtcbiAgICBjb25zdCB0YXJnZXQgPSB0b3RhbCAqIE1hdGgubWF4KDAsIE1hdGgubWluKDAuNSwgc2F0dXJhdGlvbikpO1xuICAgIGxldCBhY2MgPSAwO1xuICAgIGxldCBtaW4gPSBoLmJpbnNbMF07XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuOyBpKyspIHsgYWNjICs9IGNvdW50c1tpXTsgaWYgKGFjYyA+IHRhcmdldCkgeyBtaW4gPSBoLmJpbnNbaV07IGJyZWFrOyB9IH1cbiAgICBhY2MgPSAwO1xuICAgIGxldCBtYXggPSBoLmJpbnNbbiAtIDFdO1xuICAgIGZvciAobGV0IGkgPSBuIC0gMTsgaSA+PSAwOyBpLS0pIHsgYWNjICs9IGNvdW50c1tpXTsgaWYgKGFjYyA+IHRhcmdldCkgeyBtYXggPSBoLmJpbnNbaV07IGJyZWFrOyB9IH1cbiAgICByZXR1cm4gW21pbiwgbWF4XTtcbiAgfVxuXG4gIC8vIOKUgOKUgCBoaXN0b2dyYW0gcmVuZGVyaW5nIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuICAvKiogRmV0Y2ggdGhlIHNlbGVjdGVkIGNoYW5uZWwncyBoaXN0b2dyYW0gKG5hdGl2ZSBmb3IgMTYtYml0LCBlbHNlIDgtYml0KSBhbmRcbiAgICogIChyZSlkcmF3IGl0LiBBc3luYyDigJQgdGhlIG5hdGl2ZSBwYXRoIGhpdHMgdGhlIHNlcnZlcjsgdGhlIDgtYml0IHBhdGggbWF5IGJlXG4gICAqICBudWxsIHVudGlsIHRpbGUgc2FtcGxpbmcgcmVzb2x2ZXMsIHNvIHdlIHJldHJ5IGEgZmV3IHRpbWVzLiAqL1xuICBwcml2YXRlIGxvYWRIaXN0b2dyYW0oKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnNlbGVjdGVkKSByZXR1cm47XG4gICAgdGhpcy5oaXN0U3ViPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuaGlzdFN1YiA9IHRoaXMuYXBpLmdldEhpc3RvZ3JhbSQodGhpcy5zZWxlY3RlZC5pbmRleCwgMjU2KS5zdWJzY3JpYmUoKGgpID0+IHtcbiAgICAgIGlmICghaCkge1xuICAgICAgICAvLyBOb3QgcmVhZHkgKGFzeW5jIHNhbXBsaW5nIC8gZmlsZSBzdGlsbCBjYWNoaW5nKSDigJQgcmV0cnkgYSBmZXcgdGltZXMuXG4gICAgICAgIGlmICh0aGlzLnZpc2libGUgJiYgdGhpcy5oaXN0UmV0cmllcyA8IDEwKSB7XG4gICAgICAgICAgdGhpcy5oaXN0UmV0cmllcysrO1xuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5sb2FkSGlzdG9ncmFtKCksIDQwMCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5oaXN0ID0gbnVsbDtcbiAgICAgICAgICB0aGlzLnJlbmRlckhpc3RvZ3JhbSgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMuaGlzdFJldHJpZXMgPSAwO1xuICAgICAgdGhpcy5oaXN0ID0gaDtcbiAgICAgIHRoaXMucmVuZGVySGlzdG9ncmFtKCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHJlbmRlckhpc3RvZ3JhbSgpOiB2b2lkIHtcbiAgICBjb25zdCBlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMuaGlzdG9ncmFtRGl2KTtcbiAgICBpZiAoIWVsIHx8ICF0aGlzLnNlbGVjdGVkKSByZXR1cm47XG4gICAgY29uc3QgaCA9IHRoaXMuaGlzdDtcbiAgICBpZiAoIWgpIHtcbiAgICAgIHRyeSB7IFBsb3RseS5wdXJnZShlbCk7IH0gY2F0Y2ggeyAvKiBpZ25vcmUgKi8gfVxuICAgICAgZWwuc2V0QXR0cmlidXRlKCdkYXRhLWVtcHR5JywgJ3RydWUnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZWwucmVtb3ZlQXR0cmlidXRlKCdkYXRhLWVtcHR5Jyk7XG4gICAgY29uc3QgeSA9IHRoaXMubG9nU2NhbGUgPyBoLmNvdW50cy5tYXAoKGMpID0+IChjID4gMCA/IE1hdGgubG9nMTAoYykgOiAwKSkgOiBoLmNvdW50cztcbiAgICBjb25zdCB0cmFjZSA9IHtcbiAgICAgIHg6IGguYmlucyxcbiAgICAgIHksXG4gICAgICB0eXBlOiAnYmFyJyxcbiAgICAgIG1hcmtlcjogeyBjb2xvcjogdGhpcy5zZWxlY3RlZC5jb2xvciB8fCAnIzRmYTNmZicgfSxcbiAgICAgIGhvdmVyaW5mbzogJ3greScsXG4gICAgfTtcbiAgICBQbG90bHkucmVhY3QoZWwsIFt0cmFjZV0gYXMgYW55LCB0aGlzLmhpc3RvZ3JhbUxheW91dCgpLCB7XG4gICAgICBkaXNwbGF5TW9kZUJhcjogZmFsc2UsIHJlc3BvbnNpdmU6IHRydWUsXG4gICAgfSBhcyBhbnkpO1xuICB9XG5cbiAgLyoqIE1vdmUgb25seSB0aGUgbWluL21heCBtYXJrZXIgbGluZXMgKGNoZWFwKSB3aXRob3V0IHJlY29tcHV0aW5nIGNvdW50cy4gKi9cbiAgcHJpdmF0ZSB1cGRhdGVNYXJrZXJzKCk6IHZvaWQge1xuICAgIGNvbnN0IGVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGhpcy5oaXN0b2dyYW1EaXYpO1xuICAgIGlmICghZWwgfHwgIXRoaXMuc2VsZWN0ZWQgfHwgZWwuZ2V0QXR0cmlidXRlKCdkYXRhLWVtcHR5JykgPT09ICd0cnVlJykgcmV0dXJuO1xuICAgIHRyeSB7XG4gICAgICBQbG90bHkucmVsYXlvdXQoZWwsIHsgc2hhcGVzOiB0aGlzLm1hcmtlclNoYXBlcygpIH0gYXMgYW55KTtcbiAgICB9IGNhdGNoIHsgLyogbm90IHJlbmRlcmVkIHlldCAqLyB9XG4gIH1cblxuICBwcml2YXRlIG1hcmtlclNoYXBlcygpOiBhbnlbXSB7XG4gICAgY29uc3QgYyA9IHRoaXMuc2VsZWN0ZWQ7XG4gICAgaWYgKCFjKSByZXR1cm4gW107XG4gICAgLy8gTWFya2VycyBzaXQgaW4gdGhlIHNhbWUgKG5hdGl2ZSkgY29vcmRpbmF0ZSBzcGFjZSBhcyB0aGUgaGlzdG9ncmFtIGF4aXMuXG4gICAgY29uc3QgbGluZSA9ICh4OiBudW1iZXIsIGNvbG9yOiBzdHJpbmcpID0+ICh7XG4gICAgICB0eXBlOiAnbGluZScsIHgwOiB4LCB4MTogeCwgeXJlZjogJ3BhcGVyJywgeTA6IDAsIHkxOiAxLFxuICAgICAgbGluZTogeyBjb2xvciwgd2lkdGg6IDEsIGRhc2g6ICdkb3QnIH0sXG4gICAgfSk7XG4gICAgcmV0dXJuIFtsaW5lKHRoaXMudG9OYXRpdmUoYy5taW4pLCAnIzAwZTBmZicpLCBsaW5lKHRoaXMudG9OYXRpdmUoYy5tYXgpLCAnI2ZmN2E3YScpXTtcbiAgfVxuXG4gIHByaXZhdGUgaGlzdG9ncmFtTGF5b3V0KCk6IGFueSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG1hcmdpbjogeyB0OiA2LCByOiA4LCBiOiAyNCwgbDogNDQgfSxcbiAgICAgIGJhcmdhcDogMCxcbiAgICAgIHhheGlzOiB7IHJhbmdlOiBbdGhpcy5zbGlkZXJNaW4sIHRoaXMuc2xpZGVyTWF4XSwgemVyb2xpbmU6IGZhbHNlLCBjb2xvcjogJyNjY2MnLCBmaXhlZHJhbmdlOiB0cnVlIH0sXG4gICAgICB5YXhpczoge1xuICAgICAgICB0aXRsZTogdGhpcy5sb2dTY2FsZSA/ICdsb2figoHigoAgY291bnQnIDogJ2NvdW50JyxcbiAgICAgICAgemVyb2xpbmU6IGZhbHNlLCBjb2xvcjogJyNjY2MnLCBmaXhlZHJhbmdlOiB0cnVlLFxuICAgICAgfSxcbiAgICAgIHBhcGVyX2JnY29sb3I6ICdyZ2JhKDMwLDMwLDMwLDAuOTUpJyxcbiAgICAgIHBsb3RfYmdjb2xvcjogJ3JnYmEoMzAsMzAsMzAsMC45NSknLFxuICAgICAgZm9udDogeyBjb2xvcjogJyNkZGQnLCBzaXplOiAxMCB9LFxuICAgICAgc2hhcGVzOiB0aGlzLm1hcmtlclNoYXBlcygpLFxuICAgICAgc2hvd2xlZ2VuZDogZmFsc2UsXG4gICAgfTtcbiAgfVxufVxuIiwiPHAtZGlhbG9nIGhlYWRlcj1cIkNoYW5uZWxzICZhbXA7IEhpc3RvZ3JhbVwiXG4gICAgICAgICAgW3Zpc2libGVdPVwidmlzaWJsZVwiICh2aXNpYmxlQ2hhbmdlKT1cIm9uVmlzaWJsZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICBbbW9kYWxdPVwiZmFsc2VcIiBbcmVzaXphYmxlXT1cInRydWVcIiBbZHJhZ2dhYmxlXT1cInRydWVcIlxuICAgICAgICAgIFtzdHlsZV09XCJ7IHdpZHRoOiAnMzByZW0nIH1cIlxuICAgICAgICAgIFticmVha3BvaW50c109XCJ7ICc5NjBweCc6ICc5MHZ3JyB9XCJcbiAgICAgICAgICBzdHlsZUNsYXNzPVwiY2hhbm5lbC1oaXN0b2dyYW0tZGlhbG9nXCJcbiAgICAgICAgICAob25TaG93KT1cIm9uU2hvdygpXCI+XG5cbiAgPGRpdiBjbGFzcz1cImNoLWJvZHlcIj5cblxuICAgIDwhLS0gQ2hhbm5lbHMgLS0+XG4gICAgPHAtdGFibGUgW3ZhbHVlXT1cImNoYW5uZWxzXCIgc2VsZWN0aW9uTW9kZT1cInNpbmdsZVwiIFsoc2VsZWN0aW9uKV09XCJzZWxlY3RlZFwiXG4gICAgICAgICAgICAgZGF0YUtleT1cImluZGV4XCIgKG9uUm93U2VsZWN0KT1cInNlbGVjdENoYW5uZWwoJGV2ZW50LmRhdGEpXCJcbiAgICAgICAgICAgICBzdHlsZUNsYXNzPVwiY2gtdGFibGUgcC1kYXRhdGFibGUtc21cIj5cbiAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJoZWFkZXJcIj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0aCBzdHlsZT1cIndpZHRoOiAyLjVyZW1cIj48L3RoPlxuICAgICAgICAgIDx0aD5DaGFubmVsPC90aD5cbiAgICAgICAgICA8dGggc3R5bGU9XCJ3aWR0aDogMy41cmVtOyB0ZXh0LWFsaWduOiBjZW50ZXJcIj5TaG93PC90aD5cbiAgICAgICAgPC90cj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiYm9keVwiIGxldC1jaD5cbiAgICAgICAgPHRyIFtwU2VsZWN0YWJsZVJvd109XCJjaFwiPlxuICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgIDxoZXgtY29sb3ItcGlja2VyICpuZ0lmPVwibXVsdGljaGFubmVsXCIgW2NvbG9yXT1cImNoLmNvbG9yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb2xvckNoYW5nZSk9XCJvbkNvbG9yQ2hhbmdlKGNoLCAkZXZlbnQpXCI+PC9oZXgtY29sb3ItcGlja2VyPlxuICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgPHRkPnt7IGNoLm5hbWUgfX08L3RkPlxuICAgICAgICAgIDx0ZCBzdHlsZT1cInRleHQtYWxpZ246IGNlbnRlclwiPlxuICAgICAgICAgICAgPHAtY2hlY2tib3ggW2JpbmFyeV09XCJ0cnVlXCIgW25nTW9kZWxdPVwiY2gudmlzaWJsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAob25DaGFuZ2UpPVwib25WaXNpYmxlVG9nZ2xlKGNoLCAkZXZlbnQuY2hlY2tlZClcIj48L3AtY2hlY2tib3g+XG4gICAgICAgICAgPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9wLXRhYmxlPlxuXG4gICAgPCEtLSBQc2V1ZG8tY29sb3IgcHJlc2V0cyBmb3IgdGhlIHNlbGVjdGVkIGNoYW5uZWwgKG11bHRpY2hhbm5lbCBvbmx5O1xuICAgICAgICAgZ3JheXNjYWxlIHVzZXMgdGhlIGNvbG9ybWFwIGJlbG93KS4gLS0+XG4gICAgPGRpdiBjbGFzcz1cImNoLXByZXNldHNcIiAqbmdJZj1cIm11bHRpY2hhbm5lbCAmJiBzZWxlY3RlZFwiPlxuICAgICAgPHNwYW4gY2xhc3M9XCJjaC1wcmVzZXRzLWxibFwiPnt7IHNlbGVjdGVkLm5hbWUgfX0gTFVUPC9zcGFuPlxuICAgICAgPGJ1dHRvbiAqbmdGb3I9XCJsZXQgcCBvZiBsdXRDb2xvcnNcIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJjaC1wcmVzZXRcIlxuICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZF09XCJwLmNvbG9yXCIgW3BUb29sdGlwXT1cInAubmFtZVwiIHRvb2x0aXBQb3NpdGlvbj1cInRvcFwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJzZXRQcmVzZXQoc2VsZWN0ZWQsIHAuY29sb3IpXCI+PC9idXR0b24+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIEhpc3RvZ3JhbSAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiY2gtaGlzdC1oZWFkXCI+XG4gICAgICA8c3Bhbj5IaXN0b2dyYW17eyBzZWxlY3RlZCA/ICcg4oCUICcgKyBzZWxlY3RlZC5uYW1lIDogJycgfX08L3NwYW4+XG4gICAgICA8cC1jaGVja2JveCBbYmluYXJ5XT1cInRydWVcIiBbKG5nTW9kZWwpXT1cImxvZ1NjYWxlXCJcbiAgICAgICAgICAgICAgICAgIChvbkNoYW5nZSk9XCJ0b2dnbGVMb2coJGV2ZW50LmNoZWNrZWQpXCIgbGFiZWw9XCJMb2dcIj48L3AtY2hlY2tib3g+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBbaWRdPVwiaGlzdG9ncmFtRGl2XCIgY2xhc3M9XCJjaC1oaXN0LXBsb3RcIj48L2Rpdj5cblxuICAgIDwhLS0gRGlzcGxheSB3aW5kb3cgLyBnYW1tYSAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiY2gtc2xpZGVyc1wiICpuZ0lmPVwic2VsZWN0ZWRcIj5cbiAgICAgIDwhLS0gV2luZG93IGVuZHBvaW50cyBhcmUgc2hvd24vZWRpdGVkIGluIE5BVElWRSB1bml0cyAoMC4uMjU1IGZvciA4LWJpdCxcbiAgICAgICAgICAgdGhlIGNoYW5uZWwncyBvYnNlcnZlZCBuYXRpdmUgcmFuZ2UgZm9yIDE2LWJpdCkuIE9uZS13YXkgYm91bmQgdG8gdGhlXG4gICAgICAgICAgIG5hdGl2ZSBnZXR0ZXJzOyB0aGUgaGFuZGxlcnMgbWFwIGJhY2sgdG8gdGhlIDgtYml0IGRpc3BsYXkgd2luZG93LiAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJjaC1yb3dcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJjaC1sYmxcIj5NaW48L3NwYW4+XG4gICAgICAgIDxwLXNsaWRlciBbbmdNb2RlbF09XCJtaW5OYXRpdmVcIiBbbWluXT1cInNsaWRlck1pblwiIFttYXhdPVwic2xpZGVyTWF4XCIgW3N0ZXBdPVwic2xpZGVyU3RlcFwiXG4gICAgICAgICAgICAgICAgICAob25DaGFuZ2UpPVwib25NaW5DaGFuZ2UoJGV2ZW50LnZhbHVlKVwiIHN0eWxlQ2xhc3M9XCJjaC1zbGlkZXJcIj48L3Atc2xpZGVyPlxuICAgICAgICA8cC1pbnB1dE51bWJlciBbbmdNb2RlbF09XCJtaW5OYXRpdmVcIiBbbWluXT1cInNsaWRlck1pblwiIFttYXhdPVwic2xpZGVyTWF4XCIgW3Nob3dCdXR0b25zXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgKG9uSW5wdXQpPVwib25NaW5DaGFuZ2UoJGV2ZW50LnZhbHVlKVwiIHN0eWxlQ2xhc3M9XCJjaC1udW1cIj48L3AtaW5wdXROdW1iZXI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiY2gtYnVzeVwiPjxpICpuZ0lmPVwiYWN0aXZlQWRqdXN0ID09PSAnbWluJ1wiIGNsYXNzPVwicGkgcGktc3BpbiBwaS1zcGlubmVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJ1cGRhdGluZ1wiPjwvaT48L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjaC1yb3dcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJjaC1sYmxcIj5NYXg8L3NwYW4+XG4gICAgICAgIDxwLXNsaWRlciBbbmdNb2RlbF09XCJtYXhOYXRpdmVcIiBbbWluXT1cInNsaWRlck1pblwiIFttYXhdPVwic2xpZGVyTWF4XCIgW3N0ZXBdPVwic2xpZGVyU3RlcFwiXG4gICAgICAgICAgICAgICAgICAob25DaGFuZ2UpPVwib25NYXhDaGFuZ2UoJGV2ZW50LnZhbHVlKVwiIHN0eWxlQ2xhc3M9XCJjaC1zbGlkZXJcIj48L3Atc2xpZGVyPlxuICAgICAgICA8cC1pbnB1dE51bWJlciBbbmdNb2RlbF09XCJtYXhOYXRpdmVcIiBbbWluXT1cInNsaWRlck1pblwiIFttYXhdPVwic2xpZGVyTWF4XCIgW3Nob3dCdXR0b25zXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgKG9uSW5wdXQpPVwib25NYXhDaGFuZ2UoJGV2ZW50LnZhbHVlKVwiIHN0eWxlQ2xhc3M9XCJjaC1udW1cIj48L3AtaW5wdXROdW1iZXI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiY2gtYnVzeVwiPjxpICpuZ0lmPVwiYWN0aXZlQWRqdXN0ID09PSAnbWF4J1wiIGNsYXNzPVwicGkgcGktc3BpbiBwaS1zcGlubmVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJ1cGRhdGluZ1wiPjwvaT48L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjaC1yb3dcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJjaC1sYmxcIj5HYW1tYTwvc3Bhbj5cbiAgICAgICAgPHAtc2xpZGVyIFsobmdNb2RlbCldPVwic2VsZWN0ZWQuZ2FtbWFcIiBbbWluXT1cIjAuMVwiIFttYXhdPVwiNVwiIFtzdGVwXT1cIjAuMDFcIlxuICAgICAgICAgICAgICAgICAgKG9uQ2hhbmdlKT1cIm9uR2FtbWFDaGFuZ2UoJGV2ZW50LnZhbHVlKVwiIHN0eWxlQ2xhc3M9XCJjaC1zbGlkZXJcIj48L3Atc2xpZGVyPlxuICAgICAgICA8cC1pbnB1dE51bWJlciBbKG5nTW9kZWwpXT1cInNlbGVjdGVkLmdhbW1hXCIgW21pbl09XCIwLjFcIiBbbWF4XT1cIjVcIiBbbWluRnJhY3Rpb25EaWdpdHNdPVwiMlwiXG4gICAgICAgICAgICAgICAgICAgICAgIFttYXhGcmFjdGlvbkRpZ2l0c109XCIyXCIgW3Nob3dCdXR0b25zXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgKG9uSW5wdXQpPVwib25HYW1tYUNoYW5nZSgkZXZlbnQudmFsdWUpXCIgc3R5bGVDbGFzcz1cImNoLW51bVwiPjwvcC1pbnB1dE51bWJlcj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJjaC1idXN5XCI+PGkgKm5nSWY9XCJhY3RpdmVBZGp1c3QgPT09ICdnYW1tYSdcIiBjbGFzcz1cInBpIHBpLXNwaW4gcGktc3Bpbm5lclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwidXBkYXRpbmdcIj48L2k+PC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiY2gtYnRuc1wiPlxuICAgICAgICA8cC1idXR0b24gbGFiZWw9XCJBdXRvXCIgc2l6ZT1cInNtYWxsXCIgKG9uQ2xpY2spPVwiYXV0bygpXCI+PC9wLWJ1dHRvbj5cbiAgICAgICAgPHAtYnV0dG9uIGxhYmVsPVwiUmVzZXRcIiBzaXplPVwic21hbGxcIiBbdGV4dF09XCJ0cnVlXCIgKG9uQ2xpY2spPVwicmVzZXQoKVwiPjwvcC1idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gTFVUIC8gY29sb3JtYXAgY29udHJvbHMuIFRoZSBjb2xvcm1hcCBtYXBzIHNpbmdsZS1jaGFubmVsIGludGVuc2l0eSDihpJcbiAgICAgICAgIGNvbG91ciwgc28gaXQgb25seSBhcHBsaWVzIHRvIGdyYXlzY2FsZTsgUkdCL211bHRpY2hhbm5lbCB1c2UgdGhlXG4gICAgICAgICBwZXItY2hhbm5lbCBwc2V1ZG8tY29sb3VyIHByZXNldHMgYWJvdmUuIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJjaC1kaXNwbGF5XCI+XG4gICAgICA8cC10cmVlU2VsZWN0ICpuZ0lmPVwiIW11bHRpY2hhbm5lbFwiXG4gICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cImNvbG9ybWFwT3B0aW9uc1wiIFsobmdNb2RlbCldPVwic2VsZWN0ZWRDb2xvcm1hcFwiXG4gICAgICAgICAgICAgICAgICAgIFtzZWxlY3Rpb25Nb2RlXT1cIidzaW5nbGUnXCIgcGxhY2Vob2xkZXI9XCJDb2xvcm1hcFwiIFtzY3JvbGxIZWlnaHRdPVwiJzMwMHB4J1wiXG4gICAgICAgICAgICAgICAgICAgIHBUb29sdGlwPVwiQ29sb3IgTG9va3VwIFRhYmxlc1wiIHRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbVwiXG4gICAgICAgICAgICAgICAgICAgIChvbk5vZGVTZWxlY3QpPVwib25Db2xvcm1hcCgkZXZlbnQubm9kZSlcIj5cbiAgICAgICAgPG5nLXRlbXBsYXRlIGxldC1ub2RlIHBUZW1wbGF0ZT1cImRlZmF1bHRcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTJcIj5cbiAgICAgICAgICAgIDxpbWcgKm5nSWY9XCIhbm9kZS5jaGlsZHJlblwiIFtzcmNdPVwibm9kZS5kYXRhPy5zcmNcIiBjbGFzcz1cImNvbG9ybWFwXCIgLz5cbiAgICAgICAgICAgIDxkaXY+e3sgbm9kZS5sYWJlbCB9fTwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPC9wLXRyZWVTZWxlY3Q+XG4gICAgICA8cC1jaGVja2JveCBbYmluYXJ5XT1cInRydWVcIiBbKG5nTW9kZWwpXT1cImludmVydFwiXG4gICAgICAgICAgICAgICAgICAob25DaGFuZ2UpPVwib25JbnZlcnQoJGV2ZW50LmNoZWNrZWQpXCIgbGFiZWw9XCJJbnZlcnRcIj48L3AtY2hlY2tib3g+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIEV4cG9ydHM6IGFuIDgtYml0IHB1YmxpY2F0aW9uIGNvbXBvc2l0ZSAoYWx3YXlzKSwgcGx1cyBhIHRydWUtMTYtYml0XG4gICAgICAgICBkYXRhLXByZXNlcnZpbmcgVElGRiB3aGVuIHRoZSBpbWFnZSBjYXJyaWVzID44LWJpdCBwaXhlbHMuIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJjaC1leHBvcnRcIj5cbiAgICAgIDxwLWJ1dHRvbiBsYWJlbD1cIkV4cG9ydCBjb21wb3NpdGUgKFBORylcIiBpY29uPVwicGkgcGktZG93bmxvYWRcIiBzaXplPVwic21hbGxcIlxuICAgICAgICAgICAgICAgIChvbkNsaWNrKT1cImV4cG9ydENvbXBvc2l0ZSgpXCI+PC9wLWJ1dHRvbj5cbiAgICAgIDxwLWJ1dHRvbiAqbmdJZj1cImlzMTZiaXRcIiBsYWJlbD1cIkV4cG9ydCAxNi1iaXQgVElGRlwiIGljb249XCJwaSBwaS1kb3dubG9hZFwiIHNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgICAgICAgW291dGxpbmVkXT1cInRydWVcIiBwVG9vbHRpcD1cIkRhdGEtcHJlc2VydmluZyBtdWx0aS1iYW5kIFRJRkYgKHZpc2libGUgY2hhbm5lbHMsIG5hdGl2ZSBiaXQgZGVwdGgpXCJcbiAgICAgICAgICAgICAgICB0b29sdGlwUG9zaXRpb249XCJ0b3BcIiAob25DbGljayk9XCJleHBvcnREYXRhKClcIj48L3AtYnV0dG9uPlxuICAgIDwvZGl2PlxuXG4gIDwvZGl2PlxuPC9wLWRpYWxvZz5cbiJdfQ==
@@ -11,4 +11,4 @@ export const LUT_COLORS = [
11
11
  { name: 'Yellow', color: '#ffff00' },
12
12
  ];
13
13
  export const CHANNEL_HISTOGRAM_API = new InjectionToken('CHANNEL_HISTOGRAM_API');
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbm5lbC1oaXN0b2dyYW0tYXBpLmNvbnRyYWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9jb250cmFjdHMvY2hhbm5lbC1oaXN0b2dyYW0tYXBpLmNvbnRyYWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFzQi9DO29DQUNvQztBQUNwQyxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQW1EO0lBQ3hFLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO0lBQ2pDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO0lBQ25DLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO0lBQ2xDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO0lBQ2xDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO0lBQ2xDLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO0lBQ3JDLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO0NBQ3JDLENBQUM7QUFvRkYsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsSUFBSSxjQUFjLENBQXVCLHVCQUF1QixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgSUltYWdlTWV0YWRhdGEgfSBmcm9tICcuL2ltYWdlLmNvbnRyYWN0JztcbmltcG9ydCB7IENvbG9ybWFwTm9kZSB9IGZyb20gJy4vZGlzcGxheS10eXBlcyc7XG5cbi8qKlxuICogRGlzcGxheSBzdGF0ZSBmb3Igb25lIGltYWdlIGNoYW5uZWwgaW4gdGhlIENoYW5uZWxzICYgSGlzdG9ncmFtIHBhbmUuXG4gKiBgbWluYC9gbWF4YCBhcmUgdGhlIGRpc3BsYXkgd2luZG93IChjb250cmFzdC9icmlnaHRuZXNzKSBpbiByYXcgMC4uMjU1IHNwYWNlO1xuICogYGdhbW1hYCBzaGFwZXMgdGhlIHRyYW5zZmVyIGN1cnZlOyBgY29sb3JgIGlzIHRoZSBjaGFubmVsJ3MgZGlzcGxheSB0aW50XG4gKiAodXNlZCB3aGVuIGNvbXBvc2l0aW5nIG11bHRpcGxlIGNoYW5uZWxzKTsgYHZpc2libGVgIHRvZ2dsZXMgaXQgb24vb2ZmLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElDaGFubmVsU3RhdGUge1xuICBpbmRleDogbnVtYmVyO1xuICBuYW1lOiBzdHJpbmc7XG4gIC8qKiBEaXNwbGF5IHRpbnQgYXMgYCNycmdnYmJgLiAqL1xuICBjb2xvcjogc3RyaW5nO1xuICBtaW46IG51bWJlcjtcbiAgbWF4OiBudW1iZXI7XG4gIGdhbW1hOiBudW1iZXI7XG4gIHZpc2libGU6IGJvb2xlYW47XG59XG5cbi8qKiBUaGUgc3RhbmRhcmQgTFVUIHBzZXVkby1jb2xvdXJzIChtaXJyb3JzIEZpamkncyBNZXJnZSBDaGFubmVscyBwYWxldHRlKSBmb3JcbiAqICBxdWljayBwZXItY2hhbm5lbCBhc3NpZ25tZW50LiAqL1xuZXhwb3J0IGNvbnN0IExVVF9DT0xPUlM6IFJlYWRvbmx5QXJyYXk8eyBuYW1lOiBzdHJpbmc7IGNvbG9yOiBzdHJpbmcgfT4gPSBbXG4gIHsgbmFtZTogJ1JlZCcsIGNvbG9yOiAnI2ZmMDAwMCcgfSxcbiAgeyBuYW1lOiAnR3JlZW4nLCBjb2xvcjogJyMwMGZmMDAnIH0sXG4gIHsgbmFtZTogJ0JsdWUnLCBjb2xvcjogJyMwMDAwZmYnIH0sXG4gIHsgbmFtZTogJ0dyYXknLCBjb2xvcjogJyNmZmZmZmYnIH0sXG4gIHsgbmFtZTogJ0N5YW4nLCBjb2xvcjogJyMwMGZmZmYnIH0sXG4gIHsgbmFtZTogJ01hZ2VudGEnLCBjb2xvcjogJyNmZjAwZmYnIH0sXG4gIHsgbmFtZTogJ1llbGxvdycsIGNvbG9yOiAnI2ZmZmYwMCcgfSxcbl07XG5cbi8qKiBBIGJpbm5lZCBpbnRlbnNpdHkgaGlzdG9ncmFtIGZvciBvbmUgY2hhbm5lbC5cbiAqXG4gKiBUaGUgOC1iaXQgY2xpZW50IHBhdGggKFJHQiAvIDgtYml0IGdyYXlzY2FsZSwgc2FtcGxlZCBmcm9tIGRpc3BsYXllZCB0aWxlcylcbiAqIGxlYXZlcyB0aGUgbmF0aXZlIGZpZWxkcyB1bmRlZmluZWQgYW5kIGBiaW5zYCBzcGFuIDAuLjI1NS4gVGhlIG5hdGl2ZSBwYXRoXG4gKiAoPjgtYml0IGltYWdlcywgZnJvbSB0aGUgc2VydmVyIGAvaGlzdG9ncmFtYCBlbmRwb2ludCkgZmlsbHMgYGJpdERlcHRoYCxcbiAqIGByYW5nZU1pbmAvYHJhbmdlTWF4YCAodGhlIHBpeGVsLXR5cGUgc3BhbiB0aGUgYmlucyBjb3ZlcikgYW5kXG4gKiBgb2JzZXJ2ZWRNaW5gL2BvYnNlcnZlZE1heGAgKHRoZSBhY3R1YWwgZXh0cmVtZXMgc2VlbiksIHNvIHRoZSBkaWFsb2cgY2FuXG4gKiBsYWJlbCB0aGUgd2luZG93L2F4aXMgaW4gbmF0aXZlIHVuaXRzLiAqL1xuZXhwb3J0IGludGVyZmFjZSBJSGlzdG9ncmFtIHtcbiAgLyoqIExlZnQgZWRnZSBvZiBlYWNoIGJpbiAoMC4uMjU1IGZvciB0aGUgOC1iaXQgcGF0aCwgbmF0aXZlIHVuaXRzIG90aGVyd2lzZSkuICovXG4gIGJpbnM6IG51bWJlcltdO1xuICAvKiogUGl4ZWwgY291bnQgcGVyIGJpbiwgbGVuZ3RoID0gYmluIGNvdW50LiAqL1xuICBjb3VudHM6IG51bWJlcltdO1xuICAvKiogTGFyZ2VzdCBiaW4gY291bnQsIGZvciB5LWF4aXMgc2NhbGluZy4gKi9cbiAgbWF4OiBudW1iZXI7XG4gIC8qKiBOYXRpdmUgYml0IGRlcHRoICg4LCAxNiwg4oCmKSDigJQgcHJlc2VudCBvbmx5IG9uIHRoZSBuYXRpdmUgc2VydmVyIHBhdGguICovXG4gIGJpdERlcHRoPzogbnVtYmVyO1xuICAvKiogUGl4ZWwtdHlwZSByYW5nZSB0aGUgYmlucyBzcGFuIChlLmcuIDAuLjY1NTM1KSwgbmF0aXZlIHBhdGggb25seS4gKi9cbiAgcmFuZ2VNaW4/OiBudW1iZXI7XG4gIHJhbmdlTWF4PzogbnVtYmVyO1xuICAvKiogQWN0dWFsIG1pbi9tYXggcGl4ZWwgb2JzZXJ2ZWQgKGF1dG8tY29udHJhc3Qgc2VlZCksIG5hdGl2ZSBwYXRoIG9ubHkuICovXG4gIG9ic2VydmVkTWluPzogbnVtYmVyO1xuICBvYnNlcnZlZE1heD86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBQdWJsaWMsIGltcGxlbWVudGF0aW9uLWFnbm9zdGljIHN1cmZhY2UgdGhlIENoYW5uZWxzICYgSGlzdG9ncmFtIHBhbmUgKGFuXG4gKiBleHRlcm5hbCBjb25zdW1lciBvZiB0aGUgdmlzdWFsaXphdGlvbiBwYWNrYWdlKSBkZXBlbmRzIG9uLiBJdCBleHBvc2VzIHRoZVxuICogcGVyLWNoYW5uZWwgZGlzcGxheSB3aW5kb3cvZ2FtbWEvdmlzaWJpbGl0eSwgYW4gaW50ZW5zaXR5IGhpc3RvZ3JhbSBjb21wdXRlZFxuICogZnJvbSB0aGUgY3VycmVudGx5LWRpc3BsYXllZCBwaXhlbHMsIGFuZCB0aGUgTFVUL2NvbG9ybWFwIGNvbnRyb2xzIHRoYXQgdXNlZFxuICogdG8gbGl2ZSBpbiB0aGUgdG9vbGJhci4gVGhlIHBhbmUgaW5qZWN0cyB0aGlzIHZpYSB7QGxpbmsgQ0hBTk5FTF9ISVNUT0dSQU1fQVBJfVxuICogKGJvdW5kIHRvIHRoZSBjb25jcmV0ZSBgUm91dGluZ1Zpc3VhbGl6ZXJTZXJ2aWNlYCB3aXRoIGB1c2VFeGlzdGluZ2ApIHNvIGl0XG4gKiBuZXZlciByZWFjaGVzIHRoZSBpbXBsZW1lbnRhdGlvbi4gRXZlcnkgc2V0dGVyIGxpdmUtdXBkYXRlcyB3aGljaGV2ZXIgYmFja2VuZFxuICogKFBsb3RseSBvciBPcGVuU2VhZHJhZ29uKSBpcyBvbiBzY3JlZW4uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUNoYW5uZWxIaXN0b2dyYW1BcGkge1xuICAvLyDilIDilIAgY2hhbm5lbHMg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4gIC8qKiBUaGUgY2hhbm5lbHMgb2YgdGhlIGN1cnJlbnQgaW1hZ2UgKDEgZm9yIGdyYXlzY2FsZSwgMyBmb3IgUkdCKS4gKi9cbiAgZ2V0Q2hhbm5lbHMkKCk6IE9ic2VydmFibGU8SUNoYW5uZWxTdGF0ZVtdPjtcbiAgLyoqIFBhdGNoIG9uZSBjaGFubmVsJ3Mgc3RhdGUgKHdpbmRvdy9nYW1tYS92aXNpYmlsaXR5L2NvbG9yKTsgbGl2ZS11cGRhdGVzLiAqL1xuICBzZXRDaGFubmVsU3RhdGUoaW5kZXg6IG51bWJlciwgcGFydGlhbDogUGFydGlhbDxJQ2hhbm5lbFN0YXRlPik6IHZvaWQ7XG4gIC8qKiBBdXRvLXdpbmRvdyB0aGUgZ2l2ZW4gY2hhbm5lbHMgYnkgc2F0dXJhdGluZyBgc2F0dXJhdGlvbmAgKDAuLjEpIG9mIHBpeGVsc1xuICAgKiAgYXQgZWFjaCBlbmQgb2YgdGhlaXIgaGlzdG9ncmFtLiAqL1xuICBhdXRvQ29udHJhc3QoaW5kaWNlczogbnVtYmVyW10sIHNhdHVyYXRpb246IG51bWJlcik6IHZvaWQ7XG4gIC8qKiBSZXNldCB0aGUgZ2l2ZW4gY2hhbm5lbHMgdG8gdGhlaXIgZGVyaXZlZCBkZWZhdWx0czogZnVsbCBkaXNwbGF5IHJhbmdlXG4gICAqICAoMC4uMjU1KSwgZ2FtbWEgMSwgYW5kIHRoZSBjaGFubmVsJ3MgZGVmYXVsdCB0aW50IGNvbG91ci4gKi9cbiAgcmVzZXRDb250cmFzdChpbmRpY2VzOiBudW1iZXJbXSk6IHZvaWQ7XG5cbiAgLy8g4pSA4pSAIGhpc3RvZ3JhbSDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbiAgLyoqIEJpbm5lZCBoaXN0b2dyYW0gZm9yIGEgY2hhbm5lbCBmcm9tIHRoZSBkaXNwbGF5ZWQgcGl4ZWxzLCBvciBudWxsIHdoZW4gbm9cbiAgICogIGltYWdlL3BpeGVscyBhcmUgYXZhaWxhYmxlLiBTeW5jaHJvbm91cyA4LWJpdCBwYXRoICh1c2VkIGJ5IGF1dG8tY29udHJhc3QpLiAqL1xuICBnZXRIaXN0b2dyYW0oY2hhbm5lbEluZGV4OiBudW1iZXIsIGJpbnM6IG51bWJlcik6IElIaXN0b2dyYW0gfCBudWxsO1xuICAvKiogSGlzdG9ncmFtIGZvciBhIGNoYW5uZWwgYXMgYW4gYXN5bmMgc3RyZWFtOiBlbWl0cyB0aGUgKipuYXRpdmUqKiBiaXQtZGVwdGhcbiAgICogIGhpc3RvZ3JhbSAoZnJvbSB0aGUgc2VydmVyKSBmb3IgPjgtYml0IGltYWdlcywgZWxzZSB0aGUgOC1iaXQgY2xpZW50XG4gICAqICBoaXN0b2dyYW0uIFRoZSBkaWFsb2cgdXNlcyB0aGlzIHNvIDE2LWJpdCBzdGFja3MgZ2V0IGEgdHJ1ZSBkaXN0cmlidXRpb24uICovXG4gIGdldEhpc3RvZ3JhbSQoY2hhbm5lbEluZGV4OiBudW1iZXIsIGJpbnM6IG51bWJlcik6IE9ic2VydmFibGU8SUhpc3RvZ3JhbSB8IG51bGw+O1xuXG4gIC8vIOKUgOKUgCBkaXNwbGF5IG9wdGlvbnMgKG1vdmVkIG91dCBvZiB0aGUgdG9vbGJhcikg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4gIGdldENvbG9ybWFwKCk6IE9ic2VydmFibGU8Q29sb3JtYXBOb2RlIHwgbnVsbD47XG4gIHNldENvbG9ybWFwKGNvbG9ybWFwOiBDb2xvcm1hcE5vZGUpOiB2b2lkO1xuICBnZXRDb2xvcm1hcE9wdGlvbnMoKTogQ29sb3JtYXBOb2RlW107XG4gIGdldFJldmVyc2VTY2FsZSgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBzZXRSZXZlcnNlU2NhbGUocmV2ZXJzZTogYm9vbGVhbik6IHZvaWQ7XG4gIGdldEdyYXlzY2FsZSQoKTogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgc2V0R3JheXNjYWxlKG9uOiBib29sZWFuKTogdm9pZDtcbiAgZ2V0SW52ZXJ0JCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBzZXRJbnZlcnQob246IGJvb2xlYW4pOiB2b2lkO1xuXG4gIC8vIOKUgOKUgCBpbWFnZSDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbiAgZ2V0SW1hZ2VNZXRhKCk6IE9ic2VydmFibGU8SUltYWdlTWV0YWRhdGFbXT47XG5cbiAgLyoqIEV4cG9ydCB0aGUgZGlzcGxheWVkIGltYWdlIOKAlCBjb21wb3NpdGVkIHdpdGggdGhlIGN1cnJlbnQgcGVyLWNoYW5uZWxcbiAgICogIHBzZXVkby1jb2xvdXJzIC8gd2luZG93IC8gY29sb3JtYXAg4oCUIGFzIGEgcHVibGljYXRpb24tcmVhZHkgUE5HIGRvd25sb2FkLiAqL1xuICBleHBvcnRDb21wb3NpdGUoKTogdm9pZDtcblxuICAvKiogRXhwb3J0IHRoZSB1bmRlcmx5aW5nIGltYWdlIGRhdGEg4oCUIGFsbCAob3IgdGhlIHZpc2libGUpIGNoYW5uZWxzIGF0IG5hdGl2ZVxuICAgKiAgYml0IGRlcHRoIOKAlCBhcyBhIGRhdGEtcHJlc2VydmluZyBtdWx0aS1iYW5kIFRJRkYgZG93bmxvYWQuIFNlcnZlci1zaWRlLCBzb1xuICAgKiAgaXQga2VlcHMgdHJ1ZSAxNi1iaXQgdmFsdWVzICh0aGUgUE5HIGNvbXBvc2l0ZSBpcyBhbiA4LWJpdCBmaWd1cmUpLiBPbmx5XG4gICAqICBtZWFuaW5nZnVsIGZvciA+OC1iaXQgaW1hZ2VzOyBhIG5vLW9wIG9uIGJhY2tlbmRzIHRoYXQgY2FuJ3QgcHJvdmlkZSBpdC4gKi9cbiAgZXhwb3J0RGF0YSgpOiB2b2lkO1xufVxuXG5leHBvcnQgY29uc3QgQ0hBTk5FTF9ISVNUT0dSQU1fQVBJID0gbmV3IEluamVjdGlvblRva2VuPElDaGFubmVsSGlzdG9ncmFtQXBpPignQ0hBTk5FTF9ISVNUT0dSQU1fQVBJJyk7XG4iXX0=
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbm5lbC1oaXN0b2dyYW0tYXBpLmNvbnRyYWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9jb250cmFjdHMvY2hhbm5lbC1oaXN0b2dyYW0tYXBpLmNvbnRyYWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFzQi9DO29DQUNvQztBQUNwQyxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQW1EO0lBQ3hFLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO0lBQ2pDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO0lBQ25DLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO0lBQ2xDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO0lBQ2xDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO0lBQ2xDLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO0lBQ3JDLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO0NBQ3JDLENBQUM7QUFzRkYsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsSUFBSSxjQUFjLENBQXVCLHVCQUF1QixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgSUltYWdlTWV0YWRhdGEgfSBmcm9tICcuL2ltYWdlLmNvbnRyYWN0JztcbmltcG9ydCB7IENvbG9ybWFwTm9kZSB9IGZyb20gJy4vZGlzcGxheS10eXBlcyc7XG5cbi8qKlxuICogRGlzcGxheSBzdGF0ZSBmb3Igb25lIGltYWdlIGNoYW5uZWwgaW4gdGhlIENoYW5uZWxzICYgSGlzdG9ncmFtIHBhbmUuXG4gKiBgbWluYC9gbWF4YCBhcmUgdGhlIGRpc3BsYXkgd2luZG93IChjb250cmFzdC9icmlnaHRuZXNzKSBpbiByYXcgMC4uMjU1IHNwYWNlO1xuICogYGdhbW1hYCBzaGFwZXMgdGhlIHRyYW5zZmVyIGN1cnZlOyBgY29sb3JgIGlzIHRoZSBjaGFubmVsJ3MgZGlzcGxheSB0aW50XG4gKiAodXNlZCB3aGVuIGNvbXBvc2l0aW5nIG11bHRpcGxlIGNoYW5uZWxzKTsgYHZpc2libGVgIHRvZ2dsZXMgaXQgb24vb2ZmLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElDaGFubmVsU3RhdGUge1xuICBpbmRleDogbnVtYmVyO1xuICBuYW1lOiBzdHJpbmc7XG4gIC8qKiBEaXNwbGF5IHRpbnQgYXMgYCNycmdnYmJgLiAqL1xuICBjb2xvcjogc3RyaW5nO1xuICBtaW46IG51bWJlcjtcbiAgbWF4OiBudW1iZXI7XG4gIGdhbW1hOiBudW1iZXI7XG4gIHZpc2libGU6IGJvb2xlYW47XG59XG5cbi8qKiBUaGUgc3RhbmRhcmQgTFVUIHBzZXVkby1jb2xvdXJzIChtaXJyb3JzIEZpamkncyBNZXJnZSBDaGFubmVscyBwYWxldHRlKSBmb3JcbiAqICBxdWljayBwZXItY2hhbm5lbCBhc3NpZ25tZW50LiAqL1xuZXhwb3J0IGNvbnN0IExVVF9DT0xPUlM6IFJlYWRvbmx5QXJyYXk8eyBuYW1lOiBzdHJpbmc7IGNvbG9yOiBzdHJpbmcgfT4gPSBbXG4gIHsgbmFtZTogJ1JlZCcsIGNvbG9yOiAnI2ZmMDAwMCcgfSxcbiAgeyBuYW1lOiAnR3JlZW4nLCBjb2xvcjogJyMwMGZmMDAnIH0sXG4gIHsgbmFtZTogJ0JsdWUnLCBjb2xvcjogJyMwMDAwZmYnIH0sXG4gIHsgbmFtZTogJ0dyYXknLCBjb2xvcjogJyNmZmZmZmYnIH0sXG4gIHsgbmFtZTogJ0N5YW4nLCBjb2xvcjogJyMwMGZmZmYnIH0sXG4gIHsgbmFtZTogJ01hZ2VudGEnLCBjb2xvcjogJyNmZjAwZmYnIH0sXG4gIHsgbmFtZTogJ1llbGxvdycsIGNvbG9yOiAnI2ZmZmYwMCcgfSxcbl07XG5cbi8qKiBBIGJpbm5lZCBpbnRlbnNpdHkgaGlzdG9ncmFtIGZvciBvbmUgY2hhbm5lbC5cbiAqXG4gKiBUaGUgOC1iaXQgY2xpZW50IHBhdGggKFJHQiAvIDgtYml0IGdyYXlzY2FsZSwgc2FtcGxlZCBmcm9tIGRpc3BsYXllZCB0aWxlcylcbiAqIGxlYXZlcyB0aGUgbmF0aXZlIGZpZWxkcyB1bmRlZmluZWQgYW5kIGBiaW5zYCBzcGFuIDAuLjI1NS4gVGhlIG5hdGl2ZSBwYXRoXG4gKiAoPjgtYml0IGltYWdlcywgZnJvbSB0aGUgc2VydmVyIGAvaGlzdG9ncmFtYCBlbmRwb2ludCkgZmlsbHMgYGJpdERlcHRoYCxcbiAqIGByYW5nZU1pbmAvYHJhbmdlTWF4YCAodGhlIHBpeGVsLXR5cGUgc3BhbiB0aGUgYmlucyBjb3ZlcikgYW5kXG4gKiBgb2JzZXJ2ZWRNaW5gL2BvYnNlcnZlZE1heGAgKHRoZSBhY3R1YWwgZXh0cmVtZXMgc2VlbiksIHNvIHRoZSBkaWFsb2cgY2FuXG4gKiBsYWJlbCB0aGUgd2luZG93L2F4aXMgaW4gbmF0aXZlIHVuaXRzLiAqL1xuZXhwb3J0IGludGVyZmFjZSBJSGlzdG9ncmFtIHtcbiAgLyoqIExlZnQgZWRnZSBvZiBlYWNoIGJpbiAoMC4uMjU1IGZvciB0aGUgOC1iaXQgcGF0aCwgbmF0aXZlIHVuaXRzIG90aGVyd2lzZSkuICovXG4gIGJpbnM6IG51bWJlcltdO1xuICAvKiogUGl4ZWwgY291bnQgcGVyIGJpbiwgbGVuZ3RoID0gYmluIGNvdW50LiAqL1xuICBjb3VudHM6IG51bWJlcltdO1xuICAvKiogTGFyZ2VzdCBiaW4gY291bnQsIGZvciB5LWF4aXMgc2NhbGluZy4gKi9cbiAgbWF4OiBudW1iZXI7XG4gIC8qKiBOYXRpdmUgYml0IGRlcHRoICg4LCAxNiwg4oCmKSDigJQgcHJlc2VudCBvbmx5IG9uIHRoZSBuYXRpdmUgc2VydmVyIHBhdGguICovXG4gIGJpdERlcHRoPzogbnVtYmVyO1xuICAvKiogUGl4ZWwtdHlwZSByYW5nZSB0aGUgYmlucyBzcGFuIChlLmcuIDAuLjY1NTM1KSwgbmF0aXZlIHBhdGggb25seS4gKi9cbiAgcmFuZ2VNaW4/OiBudW1iZXI7XG4gIHJhbmdlTWF4PzogbnVtYmVyO1xuICAvKiogQWN0dWFsIG1pbi9tYXggcGl4ZWwgb2JzZXJ2ZWQgKGF1dG8tY29udHJhc3Qgc2VlZCksIG5hdGl2ZSBwYXRoIG9ubHkuICovXG4gIG9ic2VydmVkTWluPzogbnVtYmVyO1xuICBvYnNlcnZlZE1heD86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBQdWJsaWMsIGltcGxlbWVudGF0aW9uLWFnbm9zdGljIHN1cmZhY2UgdGhlIENoYW5uZWxzICYgSGlzdG9ncmFtIHBhbmUgKGFuXG4gKiBleHRlcm5hbCBjb25zdW1lciBvZiB0aGUgdmlzdWFsaXphdGlvbiBwYWNrYWdlKSBkZXBlbmRzIG9uLiBJdCBleHBvc2VzIHRoZVxuICogcGVyLWNoYW5uZWwgZGlzcGxheSB3aW5kb3cvZ2FtbWEvdmlzaWJpbGl0eSwgYW4gaW50ZW5zaXR5IGhpc3RvZ3JhbSBjb21wdXRlZFxuICogZnJvbSB0aGUgY3VycmVudGx5LWRpc3BsYXllZCBwaXhlbHMsIGFuZCB0aGUgTFVUL2NvbG9ybWFwIGNvbnRyb2xzIHRoYXQgdXNlZFxuICogdG8gbGl2ZSBpbiB0aGUgdG9vbGJhci4gVGhlIHBhbmUgaW5qZWN0cyB0aGlzIHZpYSB7QGxpbmsgQ0hBTk5FTF9ISVNUT0dSQU1fQVBJfVxuICogKGJvdW5kIHRvIHRoZSBjb25jcmV0ZSBgUm91dGluZ1Zpc3VhbGl6ZXJTZXJ2aWNlYCB3aXRoIGB1c2VFeGlzdGluZ2ApIHNvIGl0XG4gKiBuZXZlciByZWFjaGVzIHRoZSBpbXBsZW1lbnRhdGlvbi4gRXZlcnkgc2V0dGVyIGxpdmUtdXBkYXRlcyB3aGljaGV2ZXIgYmFja2VuZFxuICogKFBsb3RseSBvciBPcGVuU2VhZHJhZ29uKSBpcyBvbiBzY3JlZW4uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUNoYW5uZWxIaXN0b2dyYW1BcGkge1xuICAvLyDilIDilIAgY2hhbm5lbHMg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4gIC8qKiBUaGUgY2hhbm5lbHMgb2YgdGhlIGN1cnJlbnQgaW1hZ2UgKDEgZm9yIGdyYXlzY2FsZSwgMyBmb3IgUkdCKS4gKi9cbiAgZ2V0Q2hhbm5lbHMkKCk6IE9ic2VydmFibGU8SUNoYW5uZWxTdGF0ZVtdPjtcbiAgLyoqIFBhdGNoIG9uZSBjaGFubmVsJ3Mgc3RhdGUgKHdpbmRvdy9nYW1tYS92aXNpYmlsaXR5L2NvbG9yKTsgbGl2ZS11cGRhdGVzLiAqL1xuICBzZXRDaGFubmVsU3RhdGUoaW5kZXg6IG51bWJlciwgcGFydGlhbDogUGFydGlhbDxJQ2hhbm5lbFN0YXRlPik6IHZvaWQ7XG4gIC8qKiBTZXQgdGhlIGNoYW5uZWwgc2VsZWN0ZWQgaW4gdGhlIHBhbmUg4oCUIHRoZSBiYW5kIGEgc2luZ2xlLXNjYWxhciAzRCBTdXJmYWNlIGZvbGxvd3MuICovXG4gIHNldFNlbGVjdGVkQ2hhbm5lbChpbmRleDogbnVtYmVyKTogdm9pZDtcbiAgLyoqIEF1dG8td2luZG93IHRoZSBnaXZlbiBjaGFubmVscyBieSBzYXR1cmF0aW5nIGBzYXR1cmF0aW9uYCAoMC4uMSkgb2YgcGl4ZWxzXG4gICAqICBhdCBlYWNoIGVuZCBvZiB0aGVpciBoaXN0b2dyYW0uICovXG4gIGF1dG9Db250cmFzdChpbmRpY2VzOiBudW1iZXJbXSwgc2F0dXJhdGlvbjogbnVtYmVyKTogdm9pZDtcbiAgLyoqIFJlc2V0IHRoZSBnaXZlbiBjaGFubmVscyB0byB0aGVpciBkZXJpdmVkIGRlZmF1bHRzOiBmdWxsIGRpc3BsYXkgcmFuZ2VcbiAgICogICgwLi4yNTUpLCBnYW1tYSAxLCBhbmQgdGhlIGNoYW5uZWwncyBkZWZhdWx0IHRpbnQgY29sb3VyLiAqL1xuICByZXNldENvbnRyYXN0KGluZGljZXM6IG51bWJlcltdKTogdm9pZDtcblxuICAvLyDilIDilIAgaGlzdG9ncmFtIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuICAvKiogQmlubmVkIGhpc3RvZ3JhbSBmb3IgYSBjaGFubmVsIGZyb20gdGhlIGRpc3BsYXllZCBwaXhlbHMsIG9yIG51bGwgd2hlbiBub1xuICAgKiAgaW1hZ2UvcGl4ZWxzIGFyZSBhdmFpbGFibGUuIFN5bmNocm9ub3VzIDgtYml0IHBhdGggKHVzZWQgYnkgYXV0by1jb250cmFzdCkuICovXG4gIGdldEhpc3RvZ3JhbShjaGFubmVsSW5kZXg6IG51bWJlciwgYmluczogbnVtYmVyKTogSUhpc3RvZ3JhbSB8IG51bGw7XG4gIC8qKiBIaXN0b2dyYW0gZm9yIGEgY2hhbm5lbCBhcyBhbiBhc3luYyBzdHJlYW06IGVtaXRzIHRoZSAqKm5hdGl2ZSoqIGJpdC1kZXB0aFxuICAgKiAgaGlzdG9ncmFtIChmcm9tIHRoZSBzZXJ2ZXIpIGZvciA+OC1iaXQgaW1hZ2VzLCBlbHNlIHRoZSA4LWJpdCBjbGllbnRcbiAgICogIGhpc3RvZ3JhbS4gVGhlIGRpYWxvZyB1c2VzIHRoaXMgc28gMTYtYml0IHN0YWNrcyBnZXQgYSB0cnVlIGRpc3RyaWJ1dGlvbi4gKi9cbiAgZ2V0SGlzdG9ncmFtJChjaGFubmVsSW5kZXg6IG51bWJlciwgYmluczogbnVtYmVyKTogT2JzZXJ2YWJsZTxJSGlzdG9ncmFtIHwgbnVsbD47XG5cbiAgLy8g4pSA4pSAIGRpc3BsYXkgb3B0aW9ucyAobW92ZWQgb3V0IG9mIHRoZSB0b29sYmFyKSDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbiAgZ2V0Q29sb3JtYXAoKTogT2JzZXJ2YWJsZTxDb2xvcm1hcE5vZGUgfCBudWxsPjtcbiAgc2V0Q29sb3JtYXAoY29sb3JtYXA6IENvbG9ybWFwTm9kZSk6IHZvaWQ7XG4gIGdldENvbG9ybWFwT3B0aW9ucygpOiBDb2xvcm1hcE5vZGVbXTtcbiAgZ2V0UmV2ZXJzZVNjYWxlKCk6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIHNldFJldmVyc2VTY2FsZShyZXZlcnNlOiBib29sZWFuKTogdm9pZDtcbiAgZ2V0R3JheXNjYWxlJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBzZXRHcmF5c2NhbGUob246IGJvb2xlYW4pOiB2b2lkO1xuICBnZXRJbnZlcnQkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIHNldEludmVydChvbjogYm9vbGVhbik6IHZvaWQ7XG5cbiAgLy8g4pSA4pSAIGltYWdlIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuICBnZXRJbWFnZU1ldGEoKTogT2JzZXJ2YWJsZTxJSW1hZ2VNZXRhZGF0YVtdPjtcblxuICAvKiogRXhwb3J0IHRoZSBkaXNwbGF5ZWQgaW1hZ2Ug4oCUIGNvbXBvc2l0ZWQgd2l0aCB0aGUgY3VycmVudCBwZXItY2hhbm5lbFxuICAgKiAgcHNldWRvLWNvbG91cnMgLyB3aW5kb3cgLyBjb2xvcm1hcCDigJQgYXMgYSBwdWJsaWNhdGlvbi1yZWFkeSBQTkcgZG93bmxvYWQuICovXG4gIGV4cG9ydENvbXBvc2l0ZSgpOiB2b2lkO1xuXG4gIC8qKiBFeHBvcnQgdGhlIHVuZGVybHlpbmcgaW1hZ2UgZGF0YSDigJQgYWxsIChvciB0aGUgdmlzaWJsZSkgY2hhbm5lbHMgYXQgbmF0aXZlXG4gICAqICBiaXQgZGVwdGgg4oCUIGFzIGEgZGF0YS1wcmVzZXJ2aW5nIG11bHRpLWJhbmQgVElGRiBkb3dubG9hZC4gU2VydmVyLXNpZGUsIHNvXG4gICAqICBpdCBrZWVwcyB0cnVlIDE2LWJpdCB2YWx1ZXMgKHRoZSBQTkcgY29tcG9zaXRlIGlzIGFuIDgtYml0IGZpZ3VyZSkuIE9ubHlcbiAgICogIG1lYW5pbmdmdWwgZm9yID44LWJpdCBpbWFnZXM7IGEgbm8tb3Agb24gYmFja2VuZHMgdGhhdCBjYW4ndCBwcm92aWRlIGl0LiAqL1xuICBleHBvcnREYXRhKCk6IHZvaWQ7XG59XG5cbmV4cG9ydCBjb25zdCBDSEFOTkVMX0hJU1RPR1JBTV9BUEkgPSBuZXcgSW5qZWN0aW9uVG9rZW48SUNoYW5uZWxIaXN0b2dyYW1BcGk+KCdDSEFOTkVMX0hJU1RPR1JBTV9BUEknKTtcbiJdfQ==
@@ -62,7 +62,7 @@ export const PLOT_TYPE_DESCRIPTORS = {
62
62
  // ── napari-js WebGPU (jit-ui#102). The 3D types take a runtime decimate factor. ──
63
63
  [PlotType.NAPARI_IMAGE]: { type: PlotType.NAPARI_IMAGE, label: 'Image (napari · WebGPU)', icon: 'pi pi-image', dimensions: '2d', source: 'image' },
64
64
  [PlotType.NAPARI_SCATTER]: { type: PlotType.NAPARI_SCATTER, label: 'Scatter 2D (napari · WebGPU)', icon: 'pi pi-chart-scatter', dimensions: '2d', source: 'regions' },
65
- [PlotType.NAPARI_SURFACE]: { type: PlotType.NAPARI_SURFACE, label: 'Surface (napari · WebGPU)', productionLabel: 'Surface', icon: 'assets/plotting/surface.svg', dimensions: '3d', source: 'image', requiresGrayscale: true },
65
+ [PlotType.NAPARI_SURFACE]: { type: PlotType.NAPARI_SURFACE, label: 'Surface (napari · WebGPU)', productionLabel: 'Surface', icon: 'assets/plotting/surface.svg', dimensions: '3d', source: 'image' }, // a height-field is z=intensity of one plane — works for any grayscale/RGB image (RGB→luminance), no stack needed
66
66
  [PlotType.NAPARI_SCATTER3D]: { type: PlotType.NAPARI_SCATTER3D, label: 'Scatter 3D (napari · WebGPU)', icon: 'assets/plotting/3d-coordinates.svg', dimensions: '3d', source: 'image', requiresStack: true, requiresGrayscale: true },
67
67
  [PlotType.NAPARI_VOLUME]: { type: PlotType.NAPARI_VOLUME, label: 'Volume (napari · WebGPU)', productionLabel: 'Volume', icon: 'assets/plotting/cube-3d.svg', dimensions: '3d', source: 'image', requiresStack: true, requiresGrayscale: true },
68
68
  [PlotType.NAPARI_ISOSURFACE]: { type: PlotType.NAPARI_ISOSURFACE, label: 'Isosurface (napari · WebGPU)', productionLabel: 'Isosurface', icon: 'assets/plotting/isosurface.svg', dimensions: '3d', source: 'image', requiresStack: true, requiresGrayscale: true },
@@ -109,4 +109,4 @@ export const NAPARI_DECIMATE_OPTIONS = [
109
109
  /** Default decimate factor: ¼. The caps are set so ¼ is a sensible default resolution while ½ and
110
110
  * Full offer 2× and 4× the detail for opt-in high-resolution renders. */
111
111
  export const NAPARI_DEFAULT_DECIMATE = 4;
112
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxvdC10eXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9jb250cmFjdHMvcGxvdC10eXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztHQVdHO0FBQ0gsTUFBTSxDQUFOLElBQVksUUF1Qlg7QUF2QkQsV0FBWSxRQUFRO0lBQ2xCO2lGQUM2RTtJQUM3RSwyQkFBZSxDQUFBO0lBQ2YsK0JBQW1CLENBQUE7SUFDbkIsK0JBQW1CLENBQUE7SUFDbkIsK0JBQW1CLENBQUE7SUFDbkIsK0JBQW1CLENBQUE7SUFDbkIseUZBQXlGO0lBQ3pGLHlCQUFhLENBQUE7SUFDYixtQ0FBdUIsQ0FBQTtJQUN2QixxQ0FBeUIsQ0FBQTtJQUN6Qjt1R0FDbUc7SUFDbkcseUNBQTZCLENBQUE7SUFDN0IsMkNBQStCLENBQUE7SUFDL0IsbURBQXVDLENBQUE7SUFDdkMsZ0dBQWdHO0lBQ2hHLDZDQUFpQyxDQUFBO0lBQ2pDLGtGQUFrRjtJQUNsRiw2Q0FBaUMsQ0FBQTtJQUNqQywrRkFBK0Y7SUFDL0YsaURBQXFDLENBQUE7QUFDdkMsQ0FBQyxFQXZCVyxRQUFRLEtBQVIsUUFBUSxRQXVCbkI7QUFnREQ7Ozs7O0dBS0c7QUFDSCwrRkFBK0Y7QUFDL0Ysb0RBQW9EO0FBQ3BELGtGQUFrRjtBQUNsRixpRkFBaUY7QUFDakYsbUVBQW1FO0FBQ25FLDJFQUEyRTtBQUMzRSxzRUFBc0U7QUFDdEUsNEVBQTRFO0FBQzVFLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFrRDtJQUNsRixnQkFBZ0I7SUFDaEIsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQU8sRUFBRSxJQUFJLEVBQUUsUUFBUSxDQUFDLEtBQUssRUFBTyxLQUFLLEVBQUUsYUFBYSxFQUFZLGVBQWUsRUFBRSxPQUFPLEVBQU8sSUFBSSxFQUFFLGFBQWEsRUFBcUIsVUFBVSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFO0lBQzlM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SUFBYztJQUM1QyxPQUFPLElBQUksS0FBSyxRQUFRLENBQUMsY0FBYyxDQUFDO0FBQzFDLENBQUM7QUFDRCwrQ0FBK0M7QUFDL0MsTUFBTSxVQUFVLGVBQWUsQ0FBQyxJQUFjO0lBQzVDLE9BQU8sSUFBSSxLQUFLLFFBQVEsQ0FBQyxjQUFjLENBQUM7QUFDMUMsQ0FBQztBQUNELGdEQUFnRDtBQUNoRCxNQUFNLFVBQVUsaUJBQWlCLENBQUMsSUFBYztJQUM5QyxPQUFPLElBQUksS0FBSyxRQUFRLENBQUMsZ0JBQWdCLENBQUM7QUFDNUMsQ0FBQztBQUNEO2dGQUNnRjtBQUNoRixNQUFNLFVBQVUsVUFBVSxDQUFDLElBQWM7SUFDdkMsT0FBTyxDQUNMLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQ3JHLENBQUM7QUFDSixDQUFDO0FBRUQsNkVBQTZFO0FBQzdFLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUF1QztJQUN6RSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRTtJQUMzQixFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRTtJQUN4QixFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRTtJQUN4QixFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRTtDQUN6QixDQUFDO0FBRUY7MEVBQzBFO0FBQzFFLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVGhlIGtpbmQgb2YgcmVuZGVyaW5nIGEgdmlld2VyIGJhY2tlbmQgc2hvdWxkIHByb2R1Y2UgZm9yIHRoZSBsb2FkZWQgZGF0YS5cbiAqXG4gKiBMaXZlcyBpbiBgY29udHJhY3RzL2AgKHJhdGhlciB0aGFuIGluc2lkZSBhIHNwZWNpZmljIGJhY2tlbmQpIGJlY2F1c2UgaXQgaXNcbiAqIHBhcnQgb2YgdGhlIGJhY2tlbmQtbmV1dHJhbCBwbG90dGluZyBjb250cmFjdDogYm90aCB0aGUgUGxvdGx5IGJhY2tlbmQgYW5kXG4gKiBhbnkgZnV0dXJlIGJhY2tlbmQgKGUuZy4gT3BlblNlYWRyYWdvbikgYWNjZXB0IGEgYFBsb3RUeXBlYCBvbiBgcGxvdCgpYC5cbiAqXG4gKiBOT1RFOiBhIGJhY2tlbmQgbWF5IG5vdCBzdXBwb3J0IGV2ZXJ5IHR5cGUg4oCUIDNEIHR5cGVzIChgU1VSRkFDRWAsXG4gKiBgU0NBVFRFUjNEYCwgYElTT1NVUkZBQ0VgKSBhcmUgZ2F0ZWQgYmVoaW5kIGBWaWV3ZXJGZWF0dXJlLlN1cmZhY2UzRGAgaW4gdGhlXG4gKiBjYXBhYmlsaXRpZXMgY29udHJhY3QsIHNvIGEgMkQtb25seSBiYWNrZW5kIGNhbiBhZHZlcnRpc2UgdGhhdCBpdCBjYW4ndFxuICogcmVuZGVyIHRoZW0gYW5kIHRoZSBVSSBjYW4gaGlkZSB0aGUgb3B0aW9uLlxuICovXG5leHBvcnQgZW51bSBQbG90VHlwZSB7XG4gIC8qKiBOYXRpdmVseS10aWxlZCwgem9vbWFibGUgcmFzdGVyIHJlbmRlcmVkIGJ5IE9wZW5TZWFkcmFnb24gKHRoZSBkZWZhdWx0XG4gICAqICB2aWV3IGZvciBhbiBpbWFnZSkuIEhlYXRtYXAgcmVtYWlucyB0aGUgUGxvdGx5IHNjYWxhci1pbWFnZSByZW5kZXJpbmcuICovXG4gIElNQUdFID0gJ2ltYWdlJyxcbiAgSEVBVE1BUCA9ICdoZWF0bWFwJyxcbiAgU1VSRkFDRSA9ICdzdXJmYWNlJyxcbiAgQ09OVE9VUiA9ICdjb250b3VyJyxcbiAgU0NBVFRFUiA9ICdzY2F0dGVyJyxcbiAgLy8gTElORTogcmVzZXJ2ZWQvc3R1YmJlZCDigJQgaW50ZW5zaXR5IHByb2ZpbGVzIGFyZSBub3cgUmVnaW9uLWJhc2VkIChrZXB0IGZvciBmdXR1cmUgdXNlKVxuICBMSU5FID0gJ2xpbmUnLFxuICBTQ0FUVEVSM0QgPSAnc2NhdHRlcjNkJyxcbiAgSVNPU1VSRkFDRSA9ICdpc29zdXJmYWNlJyxcbiAgLyoqIFdlYkdQVSBuYXBhcmktanMgcmVuZGVyaW5ncyAoaml0LXVpIzEwMiksIHNlbGVjdGFibGUgYWxvbmdzaWRlIHRoZSBPU0QvUGxvdGx5IHR5cGVzLiBUaGUgM0RcbiAgICogIHR5cGVzIHRha2UgYSBydW50aW1lIGRlY2ltYXRlIGZhY3RvciAoRnVsbCAvIMK9IC8gwrwgLyDihZspIGluc3RlYWQgb2YgZml4ZWQgaGkvbG8tcmVzIHZhcmlhbnRzLiAqL1xuICBOQVBBUklfSU1BR0UgPSAnbmFwYXJpLWltYWdlJyxcbiAgTkFQQVJJX1ZPTFVNRSA9ICduYXBhcmktdm9sdW1lJyxcbiAgTkFQQVJJX0lTT1NVUkZBQ0UgPSAnbmFwYXJpLWlzb3N1cmZhY2UnLFxuICAvKiogV2ViR1BVIGhlaWdodC1maWVsZCBzdXJmYWNlIG1lc2ggKHogPSBpbnRlbnNpdHkpLCB0aGUgbmFwYXJpLWpzIGFuYWxvZyBvZiBQbG90bHkgU1VSRkFDRS4gKi9cbiAgTkFQQVJJX1NVUkZBQ0UgPSAnbmFwYXJpLXN1cmZhY2UnLFxuICAvKiogV2ViR1BVIDJEIHNjYXR0ZXIgb2YgcmVnaW9uIGNlbnRyb2lkcyAobmFwYXJpLWpzIGFuYWxvZyBvZiBQbG90bHkgU0NBVFRFUikuICovXG4gIE5BUEFSSV9TQ0FUVEVSID0gJ25hcGFyaS1zY2F0dGVyJyxcbiAgLyoqIFdlYkdQVSAzRCBzY2F0dGVyIG9mIHRoZSBkb3duc2FtcGxlZCB2b3hlbCBjbG91ZCAobmFwYXJpLWpzIGFuYWxvZyBvZiBQbG90bHkgU0NBVFRFUjNEKS4gKi9cbiAgTkFQQVJJX1NDQVRURVIzRCA9ICduYXBhcmktc2NhdHRlcjNkJyxcbn1cblxuLyoqIEhvdyBtYW55IHNwYXRpYWwgZGltZW5zaW9ucyBhIHBsb3QgdHlwZSByZW5kZXJzIGluLiAqL1xuZXhwb3J0IHR5cGUgUGxvdERpbWVuc2lvbnMgPSAnMmQnIHwgJzNkJztcblxuLyoqXG4gKiBXaGVyZSBhIHBsb3QgdHlwZSBwdWxscyBpdHMgZGF0YSBmcm9tOlxuICogIC0gYGltYWdlYCAgIOKAlCB0aGUgbG9hZGVkIHBpeGVsIG1hdHJpY2VzIC8gei1zdGFjayAoSEVBVE1BUCwgU1VSRkFDRSwg4oCmKVxuICogIC0gYHJlZ2lvbnNgIOKAlCB0aGUgZHJhd24vZGVyaXZlZCByZWdpb25zIChTQ0FUVEVSIG9mIHJlZ2lvbiBjZW50cm9pZHMsIOKApilcbiAqL1xuZXhwb3J0IHR5cGUgUGxvdERhdGFTb3VyY2UgPSAnaW1hZ2UnIHwgJ3JlZ2lvbnMnO1xuXG4vKipcbiAqIEJhY2tlbmQtbmV1dHJhbCBtZXRhZGF0YSBhYm91dCBhIHBsb3QgdHlwZS4gRHJpdmVzIFVJIGFmZm9yZGFuY2VzICh3aGljaFxuICogdHlwZXMgYXJlIDNELCB3aGljaCBuZWVkIGFuIGltYWdlIHN0YWNrLCBob3cgdG8gbGFiZWwgdGhlbSBpbiBhIGRyb3Bkb3duKVxuICogd2l0aG91dCBhbnkgYmFja2VuZCdzIHRyYWNlLWJ1aWxkaW5nIGxvZ2ljIGxlYWtpbmcgaW50byB0aGUgY29udHJhY3QuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGxvdFR5cGVEZXNjcmlwdG9yIHtcbiAgdHlwZTogUGxvdFR5cGU7XG4gIC8qKiBIdW1hbi1yZWFkYWJsZSBsYWJlbCBmb3IgbWVudXMvZHJvcGRvd25zLiBTaG93biBpbiAqKnRlc3QgbW9kZSoqLCB3aGVyZVxuICAgKiAgZXZlcnkgYmFja2VuZCdzIHR5cGUgaXMgb2ZmZXJlZCwgc28gaXQgY2FycmllcyB0aGUgYmFja2VuZCBzdWZmaXggKGUuZy5cbiAgICogIFwiU3VyZmFjZSAobmFwYXJpIMK3IFdlYkdQVSlcIikgdG8gZGlzYW1iaWd1YXRlIHNhbWUtbmFtZWQgbW9kZXMuICovXG4gIGxhYmVsOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBMYWJlbCBzaG93biBpbiB0aGUgKipkZWZhdWx0IChub24tdGVzdCkgc2VsZWN0b3IqKiwgd2hlcmUgYSBzaW5nbGUgY3VyYXRlZFxuICAgKiBtb2RlIG93bnMgZWFjaCBuYW1lIOKAlCBzbyBpdCBkcm9wcyB0aGUgYmFja2VuZCBzdWZmaXggKGUuZy4ganVzdCBcIlN1cmZhY2VcIikuXG4gICAqIEEgdHlwZSBXSVRIT1VUIGEgYHByb2R1Y3Rpb25MYWJlbGAgaXMgKip0ZXN0LW9ubHkqKjogaGlkZGVuIGZyb20gdGhlIGRlZmF1bHRcbiAgICogc2VsZWN0b3IgYW5kIHNob3duIG9ubHkgd2hlbiB0aGUgaG9zdCBlbmFibGVzIHRlc3QgbW9kZS4gVGhpcyBpcyB0aGUgc2luZ2xlXG4gICAqIGtub2IgdGhhdCBjdXJhdGVzIHRoZSBkZWZhdWx0IHBsb3QtbW9kZSBsaXN0IChqYXgtaW1hZ2UtdmlzdWFsaXphdGlvbikuXG4gICAqL1xuICBwcm9kdWN0aW9uTGFiZWw/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBJY29uIHNob3duIHRvIHRoZSBsZWZ0IG9mIHRoZSBsYWJlbCBpbiB0aGUgcGxvdC10eXBlIHNlbGVjdG9yLiBFaXRoZXIgYVxuICAgKiBQcmltZU5HIGljb24gY2xhc3MgKHN0YXJ0cyB3aXRoIGBwaSBgLCBlLmcuIGBwaSBwaS1pbWFnZWApIHJlbmRlcmVkIGFzIGFcbiAgICogZm9udCBnbHlwaCwgb3IgYSBzZXJ2ZWQgU1ZHIGFzc2V0IHBhdGggKGUuZy4gYGFzc2V0cy9wbG90dGluZy9zdXJmYWNlLnN2Z2ApXG4gICAqIHJlbmRlcmVkIGFzIGFuIGA8aW1nPmAuIEJvdGggYXJlIHRpbnRlZCB0byB0aGUgdG9vbGJhcidzIHByaW1hcnkgYmx1ZS5cbiAgICovXG4gIGljb24/OiBzdHJpbmc7XG4gIGRpbWVuc2lvbnM6IFBsb3REaW1lbnNpb25zO1xuICBzb3VyY2U6IFBsb3REYXRhU291cmNlO1xuICAvKiogVHJ1ZSB3aGVuIHRoZSB0eXBlIG9ubHkgbWFrZXMgc2Vuc2Ugb3ZlciBhIG11bHRpLWZyYW1lIHotc3RhY2suICovXG4gIHJlcXVpcmVzU3RhY2s/OiBib29sZWFuO1xuICAvKiogVHJ1ZSB3aGVuIHRoZSB0eXBlIG1hcHMgYSBzaW5nbGUgc2NhbGFyIGludGVuc2l0eSBwZXIgcGl4ZWwgKGNvbnRvdXIsXG4gICAqICBzdXJmYWNlLCBpbnRlbnNpdHkgcHJvZmlsZSwgaXNvc3VyZmFjZSkg4oCUIG9ubHkgbWVhbmluZ2Z1bCBmb3IgZ3JheXNjYWxlLlxuICAgKiAgSW1hZ2UvSGVhdG1hcCByZW5kZXIgUkdCIGZpbmU7IFNjYXR0ZXIgdXNlcyByZWdpb25zLiAqL1xuICByZXF1aXJlc0dyYXlzY2FsZT86IGJvb2xlYW47XG59XG5cbi8qKlxuICogU2luZ2xlIHNvdXJjZSBvZiB0cnV0aCBmb3IgcGxvdC10eXBlIG1ldGFkYXRhLiBMSU5FIGlzIGludGVudGlvbmFsbHkgYWJzZW50IOKAlFxuICogaW50ZW5zaXR5IHByb2ZpbGVzIGFyZSBub3cgUmVnaW9uLWJhc2VkIGxpbmUgUk9JcyAoYXZhaWxhYmxlIGluIEhlYXRtYXAvSW1hZ2VcbiAqIG1vZGUpLCBzbyBMSU5FIGlzIG5vIGxvbmdlciBvZmZlcmVkIGluIHRoZSBzZWxlY3RvciAodGhlIGVudW0gbWVtYmVyIGlzIGtlcHRcbiAqIGZvciBmdXR1cmUgdXNlKS4gSGVuY2UgdGhlIGBQYXJ0aWFsYCByZWNvcmQuXG4gKi9cbi8vIERyb3Bkb3duIG9yZGVyID0gaW5zZXJ0aW9uIG9yZGVyOiBJbWFnZSAoT1NEKSBkZWZhdWx0IGF0IHRoZSB0b3AsIHRoZW4gYWxsIFBsb3RseSBwbG90IG1vZGVzXG4vLyBncm91cGVkLCB0aGVuIGFsbCBuYXBhcmktanMgV2ViR1BVIG1vZGVzIGdyb3VwZWQuXG4vLyBgcHJvZHVjdGlvbkxhYmVsYCBtYXJrcyB0aGUgY3VyYXRlZCBkZWZhdWx0LXNlbGVjdG9yIHNldCAoaml0LXVpIzcwIGZvbGxvdy11cCk6XG4vLyAgLSBJTUFHRSAvIEhFQVRNQVAgLyBDT05UT1VSICgyRCkgYW5kIHRoZSBuYXBhcmkgU1VSRkFDRSAvIFZPTFVNRSAvIElTT1NVUkZBQ0Vcbi8vICAgICgzRCkgYXJlIHRoZSBtb2RlcyBzaG93biBieSBkZWZhdWx0LCB1bmRlciBzdWZmaXgtZnJlZSBuYW1lcy5cbi8vICAtIEV2ZXJ5dGhpbmcgZWxzZSAoYWxsIFNjYXR0ZXJzLCBOQVBBUklfSU1BR0UsIGFuZCB0aGUgUGxvdGx5IFNVUkZBQ0UgL1xuLy8gICAgSVNPU1VSRkFDRSB0aGF0IHRoZSBuYXBhcmkgdmVyc2lvbnMgc3VwZXJzZWRlKSBpcyB0ZXN0LW9ubHkg4oCUIG5vXG4vLyAgICBgcHJvZHVjdGlvbkxhYmVsYCwgc28gaXQgYXBwZWFycyBvbmx5IHdoZW4gdGhlIGhvc3QgZW5hYmxlcyB0ZXN0IG1vZGUuXG5leHBvcnQgY29uc3QgUExPVF9UWVBFX0RFU0NSSVBUT1JTOiBQYXJ0aWFsPFJlY29yZDxQbG90VHlwZSwgUGxvdFR5cGVEZXNjcmlwdG9yPj4gPSB7XG4gIC8vIOKUgOKUgCBEZWZhdWx0IOKUgOKUgFxuICBbUGxvdFR5cGUuSU1BR0VdOiAgICAgIHsgdHlwZTogUGxvdFR5cGUuSU1BR0UsICAgICAgbGFiZWw6ICdJbWFnZSAoT1NEKScsICAgICAgICAgICBwcm9kdWN0aW9uTGFiZWw6ICdJbWFnZScsICAgICAgaWNvbjogJ3BpIHBpLWltYWdlJywgICAgICAgICAgICAgICAgICAgIGRpbWVuc2lvbnM6ICcyZCcsIHNvdXJjZTogJ2ltYWdlJyB9LFxuICAvLyDilIDilIAgUGxvdGx5IOKUgOKUgFxuICBbUGxvdFR5cGUuSEVBVE1BUF06ICAgIHsgdHlwZTogUGxvdFR5cGUuSEVBVE1BUCwgICAgbGFiZWw6ICdIZWF0bWFwIChQbG90bHkpJywgICAgICBwcm9kdWN0aW9uTGFiZWw6ICdIZWF0bWFwJywgICAgaWNvbjogJ2Fzc2V0cy9wbG90dGluZy9oZWF0bWFwLnN2ZycsICAgIGRpbWVuc2lvbnM6ICcyZCcsIHNvdXJjZTogJ2ltYWdlJyB9LFxuICBbUGxvdFR5cGUuQ09OVE9VUl06ICAgIHsgdHlwZTogUGxvdFR5cGUuQ09OVE9VUiwgICAgbGFiZWw6ICdDb250b3VyIChQbG90bHkpJywgICAgICBwcm9kdWN0aW9uTGFiZWw6ICdDb250b3VyJywgICAgaWNvbjogJ2Fzc2V0cy9wbG90dGluZy9jb250b3VyLnN2ZycsICAgIGRpbWVuc2lvbnM6ICcyZCcsIHNvdXJjZTogJ2ltYWdlJywgcmVxdWlyZXNHcmF5c2NhbGU6IHRydWUgfSxcbiAgW1Bsb3RUeXBlLlNDQVRURVJdOiAgICB7IHR5cGU6IFBsb3RUeXBlLlNDQVRURVIsICAgIGxhYmVsOiAnU2NhdHRlciAyRCAoUGxvdGx5KScsICAgaWNvbjogJ3BpIHBpLWNoYXJ0LXNjYXR0ZXInLCAgICAgICAgICAgIGRpbWVuc2lvbnM6ICcyZCcsIHNvdXJjZTogJ3JlZ2lvbnMnIH0sXG4gIFtQbG90VHlwZS5TVVJGQUNFXTogICAgeyB0eXBlOiBQbG90VHlwZS5TVVJGQUNFLCAgICBsYWJlbDogJ1N1cmZhY2UgKFBsb3RseSknLCAgICAgIGljb246ICdhc3NldHMvcGxvdHRpbmcvc3VyZmFjZS5zdmcnLCAgICBkaW1lbnNpb25zOiAnM2QnLCBzb3VyY2U6ICdpbWFnZScsIHJlcXVpcmVzR3JheXNjYWxlOiB0cnVlIH0sXG4gIFtQbG90VHlwZS5TQ0FUVEVSM0RdOiAgeyB0eXBlOiBQbG90VHlwZS5TQ0FUVEVSM0QsICBsYWJlbDogJ1NjYXR0ZXIgM0QgKFBsb3RseSknLCAgIGljb246ICdhc3NldHMvcGxvdHRpbmcvM2QtY29vcmRpbmF0ZXMuc3ZnJywgZGltZW5zaW9uczogJzNkJywgc291cmNlOiAnaW1hZ2UnLCByZXF1aXJlc1N0YWNrOiB0cnVlLCByZXF1aXJlc0dyYXlzY2FsZTogdHJ1ZSB9LFxuICBbUGxvdFR5cGUuSVNPU1VSRkFDRV06IHsgdHlwZTogUGxvdFR5cGUuSVNPU1VSRkFDRSwgbGFiZWw6ICdJc29zdXJmYWNlIChQbG90bHkpJywgICBpY29uOiAnYXNzZXRzL3Bsb3R0aW5nL2lzb3N1cmZhY2Uuc3ZnJywgZGltZW5zaW9uczogJzNkJywgc291cmNlOiAnaW1hZ2UnLCByZXF1aXJlc1N0YWNrOiB0cnVlLCByZXF1aXJlc0dyYXlzY2FsZTogdHJ1ZSB9LFxuICAvLyDilIDilIAgbmFwYXJpLWpzIFdlYkdQVSAoaml0LXVpIzEwMikuIFRoZSAzRCB0eXBlcyB0YWtlIGEgcnVudGltZSBkZWNpbWF0ZSBmYWN0b3IuIOKUgOKUgFxuICBbUGxvdFR5cGUuTkFQQVJJX0lNQUdFXTogICAgICB7IHR5cGU6IFBsb3RUeXBlLk5BUEFSSV9JTUFHRSwgICAgICBsYWJlbDogJ0ltYWdlIChuYXBhcmkgwrcgV2ViR1BVKScsICAgICAgaWNvbjogJ3BpIHBpLWltYWdlJywgICAgICAgICAgICAgICAgICAgICAgICBkaW1lbnNpb25zOiAnMmQnLCBzb3VyY2U6ICdpbWFnZScgfSxcbiAgW1Bsb3RUeXBlLk5BUEFSSV9TQ0FUVEVSXTogICAgeyB0eXBlOiBQbG90VHlwZS5OQVBBUklfU0NBVFRFUiwgICAgbGFiZWw6ICdTY2F0dGVyIDJEIChuYXBhcmkgwrcgV2ViR1BVKScsIGljb246ICdwaSBwaS1jaGFydC1zY2F0dGVyJywgICAgICAgICAgICAgICAgZGltZW5zaW9uczogJzJkJywgc291cmNlOiAncmVnaW9ucycgfSxcbiAgW1Bsb3RUeXBlLk5BUEFSSV9TVVJGQUNFXTogICAgeyB0eXBlOiBQbG90VHlwZS5OQVBBUklfU1VSRkFDRSwgICAgbGFiZWw6ICdTdXJmYWNlIChuYXBhcmkgwrcgV2ViR1BVKScsICAgIHByb2R1Y3Rpb25MYWJlbDogJ1N1cmZhY2UnLCAgICBpY29uOiAnYXNzZXRzL3Bsb3R0aW5nL3N1cmZhY2Uuc3ZnJywgICAgICAgIGRpbWVuc2lvbnM6ICczZCcsIHNvdXJjZTogJ2ltYWdlJywgcmVxdWlyZXNHcmF5c2NhbGU6IHRydWUgfSxcbiAgW1Bsb3RUeXBlLk5BUEFSSV9TQ0FUVEVSM0RdOiAgeyB0eXBlOiBQbG90VHlwZS5OQVBBUklfU0NBVFRFUjNELCAgbGFiZWw6ICdTY2F0dGVyIDNEIChuYXBhcmkgwrcgV2ViR1BVKScsIGljb246ICdhc3NldHMvcGxvdHRpbmcvM2QtY29vcmRpbmF0ZXMuc3ZnJywgZGltZW5zaW9uczogJzNkJywgc291cmNlOiAnaW1hZ2UnLCByZXF1aXJlc1N0YWNrOiB0cnVlLCByZXF1aXJlc0dyYXlzY2FsZTogdHJ1ZSB9LFxuICBbUGxvdFR5cGUuTkFQQVJJX1ZPTFVNRV06ICAgICB7IHR5cGU6IFBsb3RUeXBlLk5BUEFSSV9WT0xVTUUsICAgICBsYWJlbDogJ1ZvbHVtZSAobmFwYXJpIMK3IFdlYkdQVSknLCAgICAgcHJvZHVjdGlvbkxhYmVsOiAnVm9sdW1lJywgICAgIGljb246ICdhc3NldHMvcGxvdHRpbmcvY3ViZS0zZC5zdmcnLCAgICAgICAgZGltZW5zaW9uczogJzNkJywgc291cmNlOiAnaW1hZ2UnLCByZXF1aXJlc1N0YWNrOiB0cnVlLCByZXF1aXJlc0dyYXlzY2FsZTogdHJ1ZSB9LFxuICBbUGxvdFR5cGUuTkFQQVJJX0lTT1NVUkZBQ0VdOiB7IHR5cGU6IFBsb3RUeXBlLk5BUEFSSV9JU09TVVJGQUNFLCBsYWJlbDogJ0lzb3N1cmZhY2UgKG5hcGFyaSDCtyBXZWJHUFUpJywgcHJvZHVjdGlvbkxhYmVsOiAnSXNvc3VyZmFjZScsIGljb246ICdhc3NldHMvcGxvdHRpbmcvaXNvc3VyZmFjZS5zdmcnLCAgICAgZGltZW5zaW9uczogJzNkJywgc291cmNlOiAnaW1hZ2UnLCByZXF1aXJlc1N0YWNrOiB0cnVlLCByZXF1aXJlc0dyYXlzY2FsZTogdHJ1ZSB9LFxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFBsb3RUeXBlRGVzY3JpcHRvcih0eXBlOiBQbG90VHlwZSk6IFBsb3RUeXBlRGVzY3JpcHRvciB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiBQTE9UX1RZUEVfREVTQ1JJUFRPUlNbdHlwZV07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1RocmVlRGltZW5zaW9uYWwodHlwZTogUGxvdFR5cGUpOiBib29sZWFuIHtcbiAgcmV0dXJuIFBMT1RfVFlQRV9ERVNDUklQVE9SU1t0eXBlXT8uZGltZW5zaW9ucyA9PT0gJzNkJztcbn1cblxuLy8g4pSA4pSAIG5hcGFyaS1qcyAzRCBwbG90LXR5cGUgcHJlZGljYXRlcyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbi8qKiBuYXBhcmktanMgdm9sdW1lLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzTmFwYXJpVm9sdW1lKHR5cGU6IFBsb3RUeXBlKTogYm9vbGVhbiB7XG4gIHJldHVybiB0eXBlID09PSBQbG90VHlwZS5OQVBBUklfVk9MVU1FO1xufVxuLyoqIG5hcGFyaS1qcyBpc29zdXJmYWNlLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzTmFwYXJpSXNvc3VyZmFjZSh0eXBlOiBQbG90VHlwZSk6IGJvb2xlYW4ge1xuICByZXR1cm4gdHlwZSA9PT0gUGxvdFR5cGUuTkFQQVJJX0lTT1NVUkZBQ0U7XG59XG4vKiogbmFwYXJpLWpzIGhlaWdodC1maWVsZCBzdXJmYWNlIG1lc2guICovXG5leHBvcnQgZnVuY3Rpb24gaXNOYXBhcmlTdXJmYWNlKHR5cGU6IFBsb3RUeXBlKTogYm9vbGVhbiB7XG4gIHJldHVybiB0eXBlID09PSBQbG90VHlwZS5OQVBBUklfU1VSRkFDRTtcbn1cbi8qKiBuYXBhcmktanMgMkQgc2NhdHRlciAocmVnaW9uIGNlbnRyb2lkcykuICovXG5leHBvcnQgZnVuY3Rpb24gaXNOYXBhcmlTY2F0dGVyKHR5cGU6IFBsb3RUeXBlKTogYm9vbGVhbiB7XG4gIHJldHVybiB0eXBlID09PSBQbG90VHlwZS5OQVBBUklfU0NBVFRFUjtcbn1cbi8qKiBuYXBhcmktanMgM0Qgc2NhdHRlciAodm94ZWwgcG9pbnQgY2xvdWQpLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzTmFwYXJpU2NhdHRlcjNkKHR5cGU6IFBsb3RUeXBlKTogYm9vbGVhbiB7XG4gIHJldHVybiB0eXBlID09PSBQbG90VHlwZS5OQVBBUklfU0NBVFRFUjNEO1xufVxuLyoqIEFueSBuYXBhcmktanMgM0QgcGxvdCB0eXBlICh2b2x1bWUsIGlzb3N1cmZhY2UsIHN1cmZhY2UsIG9yIDNEIHNjYXR0ZXIpLiBSZXNvbHV0aW9uIGlzIGEgcnVudGltZVxuICogIGRlY2ltYXRlIGZhY3RvciAoRnVsbCAvIMK9IC8gwrwgLyDihZspIOKAlCBzZWUgdGhlIHNlcnZpY2UncyBgcmVzb2x1dGlvblNjYWxlYC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc05hcGFyaTNkKHR5cGU6IFBsb3RUeXBlKTogYm9vbGVhbiB7XG4gIHJldHVybiAoXG4gICAgaXNOYXBhcmlWb2x1bWUodHlwZSkgfHwgaXNOYXBhcmlJc29zdXJmYWNlKHR5cGUpIHx8IGlzTmFwYXJpU3VyZmFjZSh0eXBlKSB8fCBpc05hcGFyaVNjYXR0ZXIzZCh0eXBlKVxuICApO1xufVxuXG4vKiogRGVjaW1hdGUgZmFjdG9ycyBvZmZlcmVkIGJ5IHRoZSBSZXNvbHV0aW9uIGNvbnRyb2wgKDEgPSBGdWxsIOKApiA4ID0g4oWbKS4gKi9cbmV4cG9ydCBjb25zdCBOQVBBUklfREVDSU1BVEVfT1BUSU9OUzogeyBsYWJlbDogc3RyaW5nOyB2YWx1ZTogbnVtYmVyIH1bXSA9IFtcbiAgeyBsYWJlbDogJ0Z1bGwnLCB2YWx1ZTogMSB9LFxuICB7IGxhYmVsOiAnwr0nLCB2YWx1ZTogMiB9LFxuICB7IGxhYmVsOiAnwrwnLCB2YWx1ZTogNCB9LFxuICB7IGxhYmVsOiAn4oWbJywgdmFsdWU6IDggfSxcbl07XG5cbi8qKiBEZWZhdWx0IGRlY2ltYXRlIGZhY3RvcjogwrwuIFRoZSBjYXBzIGFyZSBzZXQgc28gwrwgaXMgYSBzZW5zaWJsZSBkZWZhdWx0IHJlc29sdXRpb24gd2hpbGUgwr0gYW5kXG4gKiAgRnVsbCBvZmZlciAyw5cgYW5kIDTDlyB0aGUgZGV0YWlsIGZvciBvcHQtaW4gaGlnaC1yZXNvbHV0aW9uIHJlbmRlcnMuICovXG5leHBvcnQgY29uc3QgTkFQQVJJX0RFRkFVTFRfREVDSU1BVEUgPSA0O1xuIl19
112
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxvdC10eXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9jb250cmFjdHMvcGxvdC10eXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztHQVdHO0FBQ0gsTUFBTSxDQUFOLElBQVksUUF1Qlg7QUF2QkQsV0FBWSxRQUFRO0lBQ2xCO2lGQUM2RTtJQUM3RSwyQkFBZSxDQUFBO0lBQ2YsK0JBQW1CLENBQUE7SUFDbkIsK0JBQW1CLENBQUE7SUFDbkIsK0JBQW1CLENBQUE7SUFDbkIsK0JBQW1CLENBQUE7SUFDbkIseUZBQXlGO0lBQ3pGLHlCQUFhLENBQUE7SUFDYixtQ0FBdUIsQ0FBQTtJQUN2QixxQ0FBeUIsQ0FBQTtJQUN6Qjt1R0FDbUc7SUFDbkcseUNBQTZCLENBQUE7SUFDN0IsMkNBQStCLENBQUE7SUFDL0IsbURBQXVDLENBQUE7SUFDdkMsZ0dBQWdHO0lBQ2hHLDZDQUFpQyxDQUFBO0lBQ2pDLGtGQUFrRjtJQUNsRiw2Q0FBaUMsQ0FBQTtJQUNqQywrRkFBK0Y7SUFDL0YsaURBQXFDLENBQUE7QUFDdkMsQ0FBQyxFQXZCVyxRQUFRLEtBQVIsUUFBUSxRQXVCbkI7QUFnREQ7Ozs7O0dBS0c7QUFDSCwrRkFBK0Y7QUFDL0Ysb0RBQW9EO0FBQ3BELGtGQUFrRjtBQUNsRixpRkFBaUY7QUFDakYsbUVBQW1FO0FBQ25FLDJFQUEyRTtBQUMzRSxzRUFBc0U7QUFDdEUsNEVBQTRFO0FBQzVFLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFrRDtJQUNsRixnQkFBZ0I7SUFDaEIsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQU8sRUFBRSxJQUFJLEVBQUUsUUFBUSxDQUFDLEtBQUssRUFBTyxLQUFLLEVBQUUsYUFBYSxFQUFZLGVBQWUsRUFBRSxPQUFPLEVBQU8sSUFBSSxFQUFFLGFBQWEsRUFBcUIsVUFBVSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFO0lBQzlM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LE9BQU8sSUFBSSxLQUFLLFFBQVEsQ0FBQyxjQUFjLENBQUM7QUFDMUMsQ0FBQztBQUNELCtDQUErQztBQUMvQyxNQUFNLFVBQVUsZUFBZSxDQUFDLElBQWM7SUFDNUMsT0FBTyxJQUFJLEtBQUssUUFBUSxDQUFDLGNBQWMsQ0FBQztBQUMxQyxDQUFDO0FBQ0QsZ0RBQWdEO0FBQ2hELE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxJQUFjO0lBQzlDLE9BQU8sSUFBSSxLQUFLLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQztBQUM1QyxDQUFDO0FBQ0Q7Z0ZBQ2dGO0FBQ2hGLE1BQU0sVUFBVSxVQUFVLENBQUMsSUFBYztJQUN2QyxPQUFPLENBQ0wsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLGtCQUFrQixDQUFDLElBQUksQ0FBQyxJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FDckcsQ0FBQztBQUNKLENBQUM7QUFFRCw2RUFBNkU7QUFDN0UsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQXVDO0lBQ3pFLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFO0lBQzNCLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFO0lBQ3hCLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFO0lBQ3hCLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFO0NBQ3pCLENBQUM7QUFFRjswRUFDMEU7QUFDMUUsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUaGUga2luZCBvZiByZW5kZXJpbmcgYSB2aWV3ZXIgYmFja2VuZCBzaG91bGQgcHJvZHVjZSBmb3IgdGhlIGxvYWRlZCBkYXRhLlxuICpcbiAqIExpdmVzIGluIGBjb250cmFjdHMvYCAocmF0aGVyIHRoYW4gaW5zaWRlIGEgc3BlY2lmaWMgYmFja2VuZCkgYmVjYXVzZSBpdCBpc1xuICogcGFydCBvZiB0aGUgYmFja2VuZC1uZXV0cmFsIHBsb3R0aW5nIGNvbnRyYWN0OiBib3RoIHRoZSBQbG90bHkgYmFja2VuZCBhbmRcbiAqIGFueSBmdXR1cmUgYmFja2VuZCAoZS5nLiBPcGVuU2VhZHJhZ29uKSBhY2NlcHQgYSBgUGxvdFR5cGVgIG9uIGBwbG90KClgLlxuICpcbiAqIE5PVEU6IGEgYmFja2VuZCBtYXkgbm90IHN1cHBvcnQgZXZlcnkgdHlwZSDigJQgM0QgdHlwZXMgKGBTVVJGQUNFYCxcbiAqIGBTQ0FUVEVSM0RgLCBgSVNPU1VSRkFDRWApIGFyZSBnYXRlZCBiZWhpbmQgYFZpZXdlckZlYXR1cmUuU3VyZmFjZTNEYCBpbiB0aGVcbiAqIGNhcGFiaWxpdGllcyBjb250cmFjdCwgc28gYSAyRC1vbmx5IGJhY2tlbmQgY2FuIGFkdmVydGlzZSB0aGF0IGl0IGNhbid0XG4gKiByZW5kZXIgdGhlbSBhbmQgdGhlIFVJIGNhbiBoaWRlIHRoZSBvcHRpb24uXG4gKi9cbmV4cG9ydCBlbnVtIFBsb3RUeXBlIHtcbiAgLyoqIE5hdGl2ZWx5LXRpbGVkLCB6b29tYWJsZSByYXN0ZXIgcmVuZGVyZWQgYnkgT3BlblNlYWRyYWdvbiAodGhlIGRlZmF1bHRcbiAgICogIHZpZXcgZm9yIGFuIGltYWdlKS4gSGVhdG1hcCByZW1haW5zIHRoZSBQbG90bHkgc2NhbGFyLWltYWdlIHJlbmRlcmluZy4gKi9cbiAgSU1BR0UgPSAnaW1hZ2UnLFxuICBIRUFUTUFQID0gJ2hlYXRtYXAnLFxuICBTVVJGQUNFID0gJ3N1cmZhY2UnLFxuICBDT05UT1VSID0gJ2NvbnRvdXInLFxuICBTQ0FUVEVSID0gJ3NjYXR0ZXInLFxuICAvLyBMSU5FOiByZXNlcnZlZC9zdHViYmVkIOKAlCBpbnRlbnNpdHkgcHJvZmlsZXMgYXJlIG5vdyBSZWdpb24tYmFzZWQgKGtlcHQgZm9yIGZ1dHVyZSB1c2UpXG4gIExJTkUgPSAnbGluZScsXG4gIFNDQVRURVIzRCA9ICdzY2F0dGVyM2QnLFxuICBJU09TVVJGQUNFID0gJ2lzb3N1cmZhY2UnLFxuICAvKiogV2ViR1BVIG5hcGFyaS1qcyByZW5kZXJpbmdzIChqaXQtdWkjMTAyKSwgc2VsZWN0YWJsZSBhbG9uZ3NpZGUgdGhlIE9TRC9QbG90bHkgdHlwZXMuIFRoZSAzRFxuICAgKiAgdHlwZXMgdGFrZSBhIHJ1bnRpbWUgZGVjaW1hdGUgZmFjdG9yIChGdWxsIC8gwr0gLyDCvCAvIOKFmykgaW5zdGVhZCBvZiBmaXhlZCBoaS9sby1yZXMgdmFyaWFudHMuICovXG4gIE5BUEFSSV9JTUFHRSA9ICduYXBhcmktaW1hZ2UnLFxuICBOQVBBUklfVk9MVU1FID0gJ25hcGFyaS12b2x1bWUnLFxuICBOQVBBUklfSVNPU1VSRkFDRSA9ICduYXBhcmktaXNvc3VyZmFjZScsXG4gIC8qKiBXZWJHUFUgaGVpZ2h0LWZpZWxkIHN1cmZhY2UgbWVzaCAoeiA9IGludGVuc2l0eSksIHRoZSBuYXBhcmktanMgYW5hbG9nIG9mIFBsb3RseSBTVVJGQUNFLiAqL1xuICBOQVBBUklfU1VSRkFDRSA9ICduYXBhcmktc3VyZmFjZScsXG4gIC8qKiBXZWJHUFUgMkQgc2NhdHRlciBvZiByZWdpb24gY2VudHJvaWRzIChuYXBhcmktanMgYW5hbG9nIG9mIFBsb3RseSBTQ0FUVEVSKS4gKi9cbiAgTkFQQVJJX1NDQVRURVIgPSAnbmFwYXJpLXNjYXR0ZXInLFxuICAvKiogV2ViR1BVIDNEIHNjYXR0ZXIgb2YgdGhlIGRvd25zYW1wbGVkIHZveGVsIGNsb3VkIChuYXBhcmktanMgYW5hbG9nIG9mIFBsb3RseSBTQ0FUVEVSM0QpLiAqL1xuICBOQVBBUklfU0NBVFRFUjNEID0gJ25hcGFyaS1zY2F0dGVyM2QnLFxufVxuXG4vKiogSG93IG1hbnkgc3BhdGlhbCBkaW1lbnNpb25zIGEgcGxvdCB0eXBlIHJlbmRlcnMgaW4uICovXG5leHBvcnQgdHlwZSBQbG90RGltZW5zaW9ucyA9ICcyZCcgfCAnM2QnO1xuXG4vKipcbiAqIFdoZXJlIGEgcGxvdCB0eXBlIHB1bGxzIGl0cyBkYXRhIGZyb206XG4gKiAgLSBgaW1hZ2VgICAg4oCUIHRoZSBsb2FkZWQgcGl4ZWwgbWF0cmljZXMgLyB6LXN0YWNrIChIRUFUTUFQLCBTVVJGQUNFLCDigKYpXG4gKiAgLSBgcmVnaW9uc2Ag4oCUIHRoZSBkcmF3bi9kZXJpdmVkIHJlZ2lvbnMgKFNDQVRURVIgb2YgcmVnaW9uIGNlbnRyb2lkcywg4oCmKVxuICovXG5leHBvcnQgdHlwZSBQbG90RGF0YVNvdXJjZSA9ICdpbWFnZScgfCAncmVnaW9ucyc7XG5cbi8qKlxuICogQmFja2VuZC1uZXV0cmFsIG1ldGFkYXRhIGFib3V0IGEgcGxvdCB0eXBlLiBEcml2ZXMgVUkgYWZmb3JkYW5jZXMgKHdoaWNoXG4gKiB0eXBlcyBhcmUgM0QsIHdoaWNoIG5lZWQgYW4gaW1hZ2Ugc3RhY2ssIGhvdyB0byBsYWJlbCB0aGVtIGluIGEgZHJvcGRvd24pXG4gKiB3aXRob3V0IGFueSBiYWNrZW5kJ3MgdHJhY2UtYnVpbGRpbmcgbG9naWMgbGVha2luZyBpbnRvIHRoZSBjb250cmFjdC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQbG90VHlwZURlc2NyaXB0b3Ige1xuICB0eXBlOiBQbG90VHlwZTtcbiAgLyoqIEh1bWFuLXJlYWRhYmxlIGxhYmVsIGZvciBtZW51cy9kcm9wZG93bnMuIFNob3duIGluICoqdGVzdCBtb2RlKiosIHdoZXJlXG4gICAqICBldmVyeSBiYWNrZW5kJ3MgdHlwZSBpcyBvZmZlcmVkLCBzbyBpdCBjYXJyaWVzIHRoZSBiYWNrZW5kIHN1ZmZpeCAoZS5nLlxuICAgKiAgXCJTdXJmYWNlIChuYXBhcmkgwrcgV2ViR1BVKVwiKSB0byBkaXNhbWJpZ3VhdGUgc2FtZS1uYW1lZCBtb2Rlcy4gKi9cbiAgbGFiZWw6IHN0cmluZztcbiAgLyoqXG4gICAqIExhYmVsIHNob3duIGluIHRoZSAqKmRlZmF1bHQgKG5vbi10ZXN0KSBzZWxlY3RvcioqLCB3aGVyZSBhIHNpbmdsZSBjdXJhdGVkXG4gICAqIG1vZGUgb3ducyBlYWNoIG5hbWUg4oCUIHNvIGl0IGRyb3BzIHRoZSBiYWNrZW5kIHN1ZmZpeCAoZS5nLiBqdXN0IFwiU3VyZmFjZVwiKS5cbiAgICogQSB0eXBlIFdJVEhPVVQgYSBgcHJvZHVjdGlvbkxhYmVsYCBpcyAqKnRlc3Qtb25seSoqOiBoaWRkZW4gZnJvbSB0aGUgZGVmYXVsdFxuICAgKiBzZWxlY3RvciBhbmQgc2hvd24gb25seSB3aGVuIHRoZSBob3N0IGVuYWJsZXMgdGVzdCBtb2RlLiBUaGlzIGlzIHRoZSBzaW5nbGVcbiAgICoga25vYiB0aGF0IGN1cmF0ZXMgdGhlIGRlZmF1bHQgcGxvdC1tb2RlIGxpc3QgKGpheC1pbWFnZS12aXN1YWxpemF0aW9uKS5cbiAgICovXG4gIHByb2R1Y3Rpb25MYWJlbD86IHN0cmluZztcbiAgLyoqXG4gICAqIEljb24gc2hvd24gdG8gdGhlIGxlZnQgb2YgdGhlIGxhYmVsIGluIHRoZSBwbG90LXR5cGUgc2VsZWN0b3IuIEVpdGhlciBhXG4gICAqIFByaW1lTkcgaWNvbiBjbGFzcyAoc3RhcnRzIHdpdGggYHBpIGAsIGUuZy4gYHBpIHBpLWltYWdlYCkgcmVuZGVyZWQgYXMgYVxuICAgKiBmb250IGdseXBoLCBvciBhIHNlcnZlZCBTVkcgYXNzZXQgcGF0aCAoZS5nLiBgYXNzZXRzL3Bsb3R0aW5nL3N1cmZhY2Uuc3ZnYClcbiAgICogcmVuZGVyZWQgYXMgYW4gYDxpbWc+YC4gQm90aCBhcmUgdGludGVkIHRvIHRoZSB0b29sYmFyJ3MgcHJpbWFyeSBibHVlLlxuICAgKi9cbiAgaWNvbj86IHN0cmluZztcbiAgZGltZW5zaW9uczogUGxvdERpbWVuc2lvbnM7XG4gIHNvdXJjZTogUGxvdERhdGFTb3VyY2U7XG4gIC8qKiBUcnVlIHdoZW4gdGhlIHR5cGUgb25seSBtYWtlcyBzZW5zZSBvdmVyIGEgbXVsdGktZnJhbWUgei1zdGFjay4gKi9cbiAgcmVxdWlyZXNTdGFjaz86IGJvb2xlYW47XG4gIC8qKiBUcnVlIHdoZW4gdGhlIHR5cGUgbWFwcyBhIHNpbmdsZSBzY2FsYXIgaW50ZW5zaXR5IHBlciBwaXhlbCAoY29udG91cixcbiAgICogIHN1cmZhY2UsIGludGVuc2l0eSBwcm9maWxlLCBpc29zdXJmYWNlKSDigJQgb25seSBtZWFuaW5nZnVsIGZvciBncmF5c2NhbGUuXG4gICAqICBJbWFnZS9IZWF0bWFwIHJlbmRlciBSR0IgZmluZTsgU2NhdHRlciB1c2VzIHJlZ2lvbnMuICovXG4gIHJlcXVpcmVzR3JheXNjYWxlPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBTaW5nbGUgc291cmNlIG9mIHRydXRoIGZvciBwbG90LXR5cGUgbWV0YWRhdGEuIExJTkUgaXMgaW50ZW50aW9uYWxseSBhYnNlbnQg4oCUXG4gKiBpbnRlbnNpdHkgcHJvZmlsZXMgYXJlIG5vdyBSZWdpb24tYmFzZWQgbGluZSBST0lzIChhdmFpbGFibGUgaW4gSGVhdG1hcC9JbWFnZVxuICogbW9kZSksIHNvIExJTkUgaXMgbm8gbG9uZ2VyIG9mZmVyZWQgaW4gdGhlIHNlbGVjdG9yICh0aGUgZW51bSBtZW1iZXIgaXMga2VwdFxuICogZm9yIGZ1dHVyZSB1c2UpLiBIZW5jZSB0aGUgYFBhcnRpYWxgIHJlY29yZC5cbiAqL1xuLy8gRHJvcGRvd24gb3JkZXIgPSBpbnNlcnRpb24gb3JkZXI6IEltYWdlIChPU0QpIGRlZmF1bHQgYXQgdGhlIHRvcCwgdGhlbiBhbGwgUGxvdGx5IHBsb3QgbW9kZXNcbi8vIGdyb3VwZWQsIHRoZW4gYWxsIG5hcGFyaS1qcyBXZWJHUFUgbW9kZXMgZ3JvdXBlZC5cbi8vIGBwcm9kdWN0aW9uTGFiZWxgIG1hcmtzIHRoZSBjdXJhdGVkIGRlZmF1bHQtc2VsZWN0b3Igc2V0IChqaXQtdWkjNzAgZm9sbG93LXVwKTpcbi8vICAtIElNQUdFIC8gSEVBVE1BUCAvIENPTlRPVVIgKDJEKSBhbmQgdGhlIG5hcGFyaSBTVVJGQUNFIC8gVk9MVU1FIC8gSVNPU1VSRkFDRVxuLy8gICAgKDNEKSBhcmUgdGhlIG1vZGVzIHNob3duIGJ5IGRlZmF1bHQsIHVuZGVyIHN1ZmZpeC1mcmVlIG5hbWVzLlxuLy8gIC0gRXZlcnl0aGluZyBlbHNlIChhbGwgU2NhdHRlcnMsIE5BUEFSSV9JTUFHRSwgYW5kIHRoZSBQbG90bHkgU1VSRkFDRSAvXG4vLyAgICBJU09TVVJGQUNFIHRoYXQgdGhlIG5hcGFyaSB2ZXJzaW9ucyBzdXBlcnNlZGUpIGlzIHRlc3Qtb25seSDigJQgbm9cbi8vICAgIGBwcm9kdWN0aW9uTGFiZWxgLCBzbyBpdCBhcHBlYXJzIG9ubHkgd2hlbiB0aGUgaG9zdCBlbmFibGVzIHRlc3QgbW9kZS5cbmV4cG9ydCBjb25zdCBQTE9UX1RZUEVfREVTQ1JJUFRPUlM6IFBhcnRpYWw8UmVjb3JkPFBsb3RUeXBlLCBQbG90VHlwZURlc2NyaXB0b3I+PiA9IHtcbiAgLy8g4pSA4pSAIERlZmF1bHQg4pSA4pSAXG4gIFtQbG90VHlwZS5JTUFHRV06ICAgICAgeyB0eXBlOiBQbG90VHlwZS5JTUFHRSwgICAgICBsYWJlbDogJ0ltYWdlIChPU0QpJywgICAgICAgICAgIHByb2R1Y3Rpb25MYWJlbDogJ0ltYWdlJywgICAgICBpY29uOiAncGkgcGktaW1hZ2UnLCAgICAgICAgICAgICAgICAgICAgZGltZW5zaW9uczogJzJkJywgc291cmNlOiAnaW1hZ2UnIH0sXG4gIC8vIOKUgOKUgCBQbG90bHkg4pSA4pSAXG4gIFtQbG90VHlwZS5IRUFUTUFQXTogICAgeyB0eXBlOiBQbG90VHlwZS5IRUFUTUFQLCAgICBsYWJlbDogJ0hlYXRtYXAgKFBsb3RseSknLCAgICAgIHByb2R1Y3Rpb25MYWJlbDogJ0hlYXRtYXAnLCAgICBpY29uOiAnYXNzZXRzL3Bsb3R0aW5nL2hlYXRtYXAuc3ZnJywgICAgZGltZW5zaW9uczogJzJkJywgc291cmNlOiAnaW1hZ2UnIH0sXG4gIFtQbG90VHlwZS5DT05UT1VSXTogICAgeyB0eXBlOiBQbG90VHlwZS5DT05UT1VSLCAgICBsYWJlbDogJ0NvbnRvdXIgKFBsb3RseSknLCAgICAgIHByb2R1Y3Rpb25MYWJlbDogJ0NvbnRvdXInLCAgICBpY29uOiAnYXNzZXRzL3Bsb3R0aW5nL2NvbnRvdXIuc3ZnJywgICAgZGltZW5zaW9uczogJzJkJywgc291cmNlOiAnaW1hZ2UnLCByZXF1aXJlc0dyYXlzY2FsZTogdHJ1ZSB9LFxuICBbUGxvdFR5cGUuU0NBVFRFUl06ICAgIHsgdHlwZTogUGxvdFR5cGUuU0NBVFRFUiwgICAgbGFiZWw6ICdTY2F0dGVyIDJEIChQbG90bHkpJywgICBpY29uOiAncGkgcGktY2hhcnQtc2NhdHRlcicsICAgICAgICAgICAgZGltZW5zaW9uczogJzJkJywgc291cmNlOiAncmVnaW9ucycgfSxcbiAgW1Bsb3RUeXBlLlNVUkZBQ0VdOiAgICB7IHR5cGU6IFBsb3RUeXBlLlNVUkZBQ0UsICAgIGxhYmVsOiAnU3VyZmFjZSAoUGxvdGx5KScsICAgICAgaWNvbjogJ2Fzc2V0cy9wbG90dGluZy9zdXJmYWNlLnN2ZycsICAgIGRpbWVuc2lvbnM6ICczZCcsIHNvdXJjZTogJ2ltYWdlJywgcmVxdWlyZXNHcmF5c2NhbGU6IHRydWUgfSxcbiAgW1Bsb3RUeXBlLlNDQVRURVIzRF06ICB7IHR5cGU6IFBsb3RUeXBlLlNDQVRURVIzRCwgIGxhYmVsOiAnU2NhdHRlciAzRCAoUGxvdGx5KScsICAgaWNvbjogJ2Fzc2V0cy9wbG90dGluZy8zZC1jb29yZGluYXRlcy5zdmcnLCBkaW1lbnNpb25zOiAnM2QnLCBzb3VyY2U6ICdpbWFnZScsIHJlcXVpcmVzU3RhY2s6IHRydWUsIHJlcXVpcmVzR3JheXNjYWxlOiB0cnVlIH0sXG4gIFtQbG90VHlwZS5JU09TVVJGQUNFXTogeyB0eXBlOiBQbG90VHlwZS5JU09TVVJGQUNFLCBsYWJlbDogJ0lzb3N1cmZhY2UgKFBsb3RseSknLCAgIGljb246ICdhc3NldHMvcGxvdHRpbmcvaXNvc3VyZmFjZS5zdmcnLCBkaW1lbnNpb25zOiAnM2QnLCBzb3VyY2U6ICdpbWFnZScsIHJlcXVpcmVzU3RhY2s6IHRydWUsIHJlcXVpcmVzR3JheXNjYWxlOiB0cnVlIH0sXG4gIC8vIOKUgOKUgCBuYXBhcmktanMgV2ViR1BVIChqaXQtdWkjMTAyKS4gVGhlIDNEIHR5cGVzIHRha2UgYSBydW50aW1lIGRlY2ltYXRlIGZhY3Rvci4g4pSA4pSAXG4gIFtQbG90VHlwZS5OQVBBUklfSU1BR0VdOiAgICAgIHsgdHlwZTogUGxvdFR5cGUuTkFQQVJJX0lNQUdFLCAgICAgIGxhYmVsOiAnSW1hZ2UgKG5hcGFyaSDCtyBXZWJHUFUpJywgICAgICBpY29uOiAncGkgcGktaW1hZ2UnLCAgICAgICAgICAgICAgICAgICAgICAgIGRpbWVuc2lvbnM6ICcyZCcsIHNvdXJjZTogJ2ltYWdlJyB9LFxuICBbUGxvdFR5cGUuTkFQQVJJX1NDQVRURVJdOiAgICB7IHR5cGU6IFBsb3RUeXBlLk5BUEFSSV9TQ0FUVEVSLCAgICBsYWJlbDogJ1NjYXR0ZXIgMkQgKG5hcGFyaSDCtyBXZWJHUFUpJywgaWNvbjogJ3BpIHBpLWNoYXJ0LXNjYXR0ZXInLCAgICAgICAgICAgICAgICBkaW1lbnNpb25zOiAnMmQnLCBzb3VyY2U6ICdyZWdpb25zJyB9LFxuICBbUGxvdFR5cGUuTkFQQVJJX1NVUkZBQ0VdOiAgICB7IHR5cGU6IFBsb3RUeXBlLk5BUEFSSV9TVVJGQUNFLCAgICBsYWJlbDogJ1N1cmZhY2UgKG5hcGFyaSDCtyBXZWJHUFUpJywgICAgcHJvZHVjdGlvbkxhYmVsOiAnU3VyZmFjZScsICAgIGljb246ICdhc3NldHMvcGxvdHRpbmcvc3VyZmFjZS5zdmcnLCAgICAgICAgZGltZW5zaW9uczogJzNkJywgc291cmNlOiAnaW1hZ2UnIH0sIC8vIGEgaGVpZ2h0LWZpZWxkIGlzIHo9aW50ZW5zaXR5IG9mIG9uZSBwbGFuZSDigJQgd29ya3MgZm9yIGFueSBncmF5c2NhbGUvUkdCIGltYWdlIChSR0LihpJsdW1pbmFuY2UpLCBubyBzdGFjayBuZWVkZWRcbiAgW1Bsb3RUeXBlLk5BUEFSSV9TQ0FUVEVSM0RdOiAgeyB0eXBlOiBQbG90VHlwZS5OQVBBUklfU0NBVFRFUjNELCAgbGFiZWw6ICdTY2F0dGVyIDNEIChuYXBhcmkgwrcgV2ViR1BVKScsIGljb246ICdhc3NldHMvcGxvdHRpbmcvM2QtY29vcmRpbmF0ZXMuc3ZnJywgZGltZW5zaW9uczogJzNkJywgc291cmNlOiAnaW1hZ2UnLCByZXF1aXJlc1N0YWNrOiB0cnVlLCByZXF1aXJlc0dyYXlzY2FsZTogdHJ1ZSB9LFxuICBbUGxvdFR5cGUuTkFQQVJJX1ZPTFVNRV06ICAgICB7IHR5cGU6IFBsb3RUeXBlLk5BUEFSSV9WT0xVTUUsICAgICBsYWJlbDogJ1ZvbHVtZSAobmFwYXJpIMK3IFdlYkdQVSknLCAgICAgcHJvZHVjdGlvbkxhYmVsOiAnVm9sdW1lJywgICAgIGljb246ICdhc3NldHMvcGxvdHRpbmcvY3ViZS0zZC5zdmcnLCAgICAgICAgZGltZW5zaW9uczogJzNkJywgc291cmNlOiAnaW1hZ2UnLCByZXF1aXJlc1N0YWNrOiB0cnVlLCByZXF1aXJlc0dyYXlzY2FsZTogdHJ1ZSB9LFxuICBbUGxvdFR5cGUuTkFQQVJJX0lTT1NVUkZBQ0VdOiB7IHR5cGU6IFBsb3RUeXBlLk5BUEFSSV9JU09TVVJGQUNFLCBsYWJlbDogJ0lzb3N1cmZhY2UgKG5hcGFyaSDCtyBXZWJHUFUpJywgcHJvZHVjdGlvbkxhYmVsOiAnSXNvc3VyZmFjZScsIGljb246ICdhc3NldHMvcGxvdHRpbmcvaXNvc3VyZmFjZS5zdmcnLCAgICAgZGltZW5zaW9uczogJzNkJywgc291cmNlOiAnaW1hZ2UnLCByZXF1aXJlc1N0YWNrOiB0cnVlLCByZXF1aXJlc0dyYXlzY2FsZTogdHJ1ZSB9LFxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFBsb3RUeXBlRGVzY3JpcHRvcih0eXBlOiBQbG90VHlwZSk6IFBsb3RUeXBlRGVzY3JpcHRvciB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiBQTE9UX1RZUEVfREVTQ1JJUFRPUlNbdHlwZV07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1RocmVlRGltZW5zaW9uYWwodHlwZTogUGxvdFR5cGUpOiBib29sZWFuIHtcbiAgcmV0dXJuIFBMT1RfVFlQRV9ERVNDUklQVE9SU1t0eXBlXT8uZGltZW5zaW9ucyA9PT0gJzNkJztcbn1cblxuLy8g4pSA4pSAIG5hcGFyaS1qcyAzRCBwbG90LXR5cGUgcHJlZGljYXRlcyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbi8qKiBuYXBhcmktanMgdm9sdW1lLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzTmFwYXJpVm9sdW1lKHR5cGU6IFBsb3RUeXBlKTogYm9vbGVhbiB7XG4gIHJldHVybiB0eXBlID09PSBQbG90VHlwZS5OQVBBUklfVk9MVU1FO1xufVxuLyoqIG5hcGFyaS1qcyBpc29zdXJmYWNlLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzTmFwYXJpSXNvc3VyZmFjZSh0eXBlOiBQbG90VHlwZSk6IGJvb2xlYW4ge1xuICByZXR1cm4gdHlwZSA9PT0gUGxvdFR5cGUuTkFQQVJJX0lTT1NVUkZBQ0U7XG59XG4vKiogbmFwYXJpLWpzIGhlaWdodC1maWVsZCBzdXJmYWNlIG1lc2guICovXG5leHBvcnQgZnVuY3Rpb24gaXNOYXBhcmlTdXJmYWNlKHR5cGU6IFBsb3RUeXBlKTogYm9vbGVhbiB7XG4gIHJldHVybiB0eXBlID09PSBQbG90VHlwZS5OQVBBUklfU1VSRkFDRTtcbn1cbi8qKiBuYXBhcmktanMgMkQgc2NhdHRlciAocmVnaW9uIGNlbnRyb2lkcykuICovXG5leHBvcnQgZnVuY3Rpb24gaXNOYXBhcmlTY2F0dGVyKHR5cGU6IFBsb3RUeXBlKTogYm9vbGVhbiB7XG4gIHJldHVybiB0eXBlID09PSBQbG90VHlwZS5OQVBBUklfU0NBVFRFUjtcbn1cbi8qKiBuYXBhcmktanMgM0Qgc2NhdHRlciAodm94ZWwgcG9pbnQgY2xvdWQpLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzTmFwYXJpU2NhdHRlcjNkKHR5cGU6IFBsb3RUeXBlKTogYm9vbGVhbiB7XG4gIHJldHVybiB0eXBlID09PSBQbG90VHlwZS5OQVBBUklfU0NBVFRFUjNEO1xufVxuLyoqIEFueSBuYXBhcmktanMgM0QgcGxvdCB0eXBlICh2b2x1bWUsIGlzb3N1cmZhY2UsIHN1cmZhY2UsIG9yIDNEIHNjYXR0ZXIpLiBSZXNvbHV0aW9uIGlzIGEgcnVudGltZVxuICogIGRlY2ltYXRlIGZhY3RvciAoRnVsbCAvIMK9IC8gwrwgLyDihZspIOKAlCBzZWUgdGhlIHNlcnZpY2UncyBgcmVzb2x1dGlvblNjYWxlYC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc05hcGFyaTNkKHR5cGU6IFBsb3RUeXBlKTogYm9vbGVhbiB7XG4gIHJldHVybiAoXG4gICAgaXNOYXBhcmlWb2x1bWUodHlwZSkgfHwgaXNOYXBhcmlJc29zdXJmYWNlKHR5cGUpIHx8IGlzTmFwYXJpU3VyZmFjZSh0eXBlKSB8fCBpc05hcGFyaVNjYXR0ZXIzZCh0eXBlKVxuICApO1xufVxuXG4vKiogRGVjaW1hdGUgZmFjdG9ycyBvZmZlcmVkIGJ5IHRoZSBSZXNvbHV0aW9uIGNvbnRyb2wgKDEgPSBGdWxsIOKApiA4ID0g4oWbKS4gKi9cbmV4cG9ydCBjb25zdCBOQVBBUklfREVDSU1BVEVfT1BUSU9OUzogeyBsYWJlbDogc3RyaW5nOyB2YWx1ZTogbnVtYmVyIH1bXSA9IFtcbiAgeyBsYWJlbDogJ0Z1bGwnLCB2YWx1ZTogMSB9LFxuICB7IGxhYmVsOiAnwr0nLCB2YWx1ZTogMiB9LFxuICB7IGxhYmVsOiAnwrwnLCB2YWx1ZTogNCB9LFxuICB7IGxhYmVsOiAn4oWbJywgdmFsdWU6IDggfSxcbl07XG5cbi8qKiBEZWZhdWx0IGRlY2ltYXRlIGZhY3RvcjogwrwuIFRoZSBjYXBzIGFyZSBzZXQgc28gwrwgaXMgYSBzZW5zaWJsZSBkZWZhdWx0IHJlc29sdXRpb24gd2hpbGUgwr0gYW5kXG4gKiAgRnVsbCBvZmZlciAyw5cgYW5kIDTDlyB0aGUgZGV0YWlsIGZvciBvcHQtaW4gaGlnaC1yZXNvbHV0aW9uIHJlbmRlcnMuICovXG5leHBvcnQgY29uc3QgTkFQQVJJX0RFRkFVTFRfREVDSU1BVEUgPSA0O1xuIl19