igniteui-angular 16.0.17 → 16.0.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/calendar/calendar.mjs +33 -6
- package/esm2022/lib/calendar/days-view/days-view.component.mjs +2 -2
- package/esm2022/lib/services/exporter-common/base-export-service.mjs +9 -2
- package/esm2022/lib/splitter/splitter-pane/splitter-pane.component.mjs +2 -3
- package/esm2022/lib/splitter/splitter.component.mjs +22 -19
- package/fesm2022/igniteui-angular.mjs +63 -27
- package/fesm2022/igniteui-angular.mjs.map +1 -1
- package/lib/calendar/calendar.d.ts +1 -1
- package/lib/splitter/splitter.component.d.ts +5 -0
- package/package.json +1 -1
|
@@ -94,9 +94,8 @@ export class IgxSplitterPaneComponent {
|
|
|
94
94
|
* Gets the `flex` property of the current `IgxSplitterPaneComponent`.
|
|
95
95
|
*/
|
|
96
96
|
get flex() {
|
|
97
|
-
const isAuto = this.size === 'auto' && !this.dragSize;
|
|
98
|
-
const grow = !isAuto ? 0 : 1;
|
|
99
97
|
const size = this.dragSize || this.size;
|
|
98
|
+
const grow = this.isPercentageSize && !this.dragSize ? 1 : 0;
|
|
100
99
|
return `${grow} ${grow} ${size}`;
|
|
101
100
|
}
|
|
102
101
|
/**
|
|
@@ -248,4 +247,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.2", ngImpor
|
|
|
248
247
|
}], collapsed: [{
|
|
249
248
|
type: Input
|
|
250
249
|
}] } });
|
|
251
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BsaXR0ZXItcGFuZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pZ25pdGV1aS1hbmd1bGFyL3NyYy9saWIvc3BsaXR0ZXIvc3BsaXR0ZXItcGFuZS9zcGxpdHRlci1wYW5lLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9zcGxpdHRlci9zcGxpdHRlci1wYW5lL3NwbGl0dGVyLXBhbmUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFjLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRWhHOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFNSCxNQUFNLE9BQU8sd0JBQXdCO0lBV2pDOzs7Ozs7Ozs7T0FTRztJQUNILElBQ1csT0FBTztRQUNkLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN6QixDQUFDO0lBQ0QsSUFBVyxPQUFPLENBQUMsS0FBYTtRQUM1QixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztRQUN0QixJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDWixJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztTQUN0QztJQUNMLENBQUM7SUFFRDs7Ozs7Ozs7O09BU0c7SUFDSCxJQUNXLE9BQU87UUFDZCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDekIsQ0FBQztJQUNELElBQVcsT0FBTyxDQUFDLEtBQWE7UUFDNUIsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDdEIsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ1osSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7U0FDdEM7SUFDTCxDQUFD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dEIsUUFBUTtzQkFEZCxXQUFXO3VCQUFDLGlCQUFpQjtnQkFRdkIsUUFBUTtzQkFEZCxXQUFXO3VCQUFDLGlCQUFpQjtnQkFRdkIsU0FBUztzQkFEZixXQUFXO3VCQUFDLGtCQUFrQjtnQkFReEIsU0FBUztzQkFEZixXQUFXO3VCQUFDLGtCQUFrQjtnQkFnQnBCLElBQUk7c0JBRGQsS0FBSztnQkFzQ0ssSUFBSTtzQkFEZCxXQUFXO3VCQUFDLFlBQVk7Z0JBaUJkLFNBQVM7c0JBRG5CLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEhvc3RCaW5kaW5nLCBJbnB1dCwgRWxlbWVudFJlZiwgT3V0cHV0LCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqXG4gKiBSZXByZXNlbnRzIGluZGl2aWR1YWwgcmVzaXphYmxlL2NvbGxhcHNpYmxlIHBhbmVzLlxuICpcbiAqIEBpZ3hNb2R1bGUgSWd4U3BsaXR0ZXJNb2R1bGVcbiAqXG4gKiBAaWd4UGFyZW50IElneFNwbGl0dGVyQ29tcG9uZW50XG4gKlxuICogQGlneEtleXdvcmRzIHBhbmVcbiAqXG4gKiBAaWd4R3JvdXAgcHJlc2VudGF0aW9uXG4gKlxuICogQHJlbWFya3NcbiAqICBVc2VycyBjYW4gY29udHJvbCB0aGUgcmVzaXplIGJlaGF2aW9yIHZpYSB0aGUgbWluIGFuZCBtYXggc2l6ZSBwcm9wZXJ0aWVzLlxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2lneC1zcGxpdHRlci1wYW5lJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vc3BsaXR0ZXItcGFuZS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBJZ3hTcGxpdHRlclBhbmVDb21wb25lbnQge1xuICAgIHByaXZhdGUgX21pblNpemU6IHN0cmluZztcbiAgICBwcml2YXRlIF9tYXhTaXplOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIEBpbnRlcm5hbFxuICAgICAqIEdldHMvU2V0cyB0aGUgJ2Rpc3BsYXknIHByb3BlcnR5IG9mIHRoZSBjdXJyZW50IHBhbmUuXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdzdHlsZS5kaXNwbGF5JylcbiAgICBwdWJsaWMgZGlzcGxheSA9ICdmbGV4JztcblxuICAgIC8qKlxuICAgICAqIEdldHMvU2V0cyB0aGUgbWluaW11bSBhbGxvd2VkIHNpemUgb2YgdGhlIGN1cnJlbnQgcGFuZS5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtc3BsaXR0ZXI+XG4gICAgICogIDxpZ3gtc3BsaXR0ZXItcGFuZSBbbWluU2l6ZV09J21pblNpemUnPi4uLjwvaWd4LXNwbGl0dGVyLXBhbmU+XG4gICAgICogPC9pZ3gtc3BsaXR0ZXI+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZ2V0IG1pblNpemUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21pblNpemU7XG4gICAgfVxuICAgIHB1YmxpYyBzZXQgbWluU2l6ZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX21pblNpemUgPSB2YWx1ZTtcbiAgICAgICAgaWYgKHRoaXMub3duZXIpIHtcbiAgICAgICAgICAgIHRoaXMub3duZXIucGFuZXMubm90aWZ5T25DaGFuZ2VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzL1NldCB0aGUgbWF4aW11bSBhbGxvd2VkIHNpemUgb2YgdGhlIGN1cnJlbnQgcGFuZS5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtc3BsaXR0ZXI+XG4gICAgICogIDxpZ3gtc3BsaXR0ZXItcGFuZSBbbWF4U2l6ZV09J21heFNpemUnPi4uLjwvaWd4LXNwbGl0dGVyLXBhbmU+XG4gICAgICogPC9pZ3gtc3BsaXR0ZXI+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZ2V0IG1heFNpemUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21heFNpemU7XG4gICAgfVxuICAgIHB1YmxpYyBzZXQgbWF4U2l6ZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX21heFNpemUgPSB2YWx1ZTtcbiAgICAgICAgaWYgKHRoaXMub3duZXIpIHtcbiAgICAgICAgICAgIHRoaXMub3duZXIucGFuZXMubm90aWZ5T25DaGFuZ2VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzL1NldHMgd2hldGhlciBwYW5lIGlzIHJlc2l6YWJsZS5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtc3BsaXR0ZXI+XG4gICAgICogIDxpZ3gtc3BsaXR0ZXItcGFuZSBbcmVzaXphYmxlXT0nZmFsc2UnPi4uLjwvaWd4LXNwbGl0dGVyLXBhbmU+XG4gICAgICogPC9pZ3gtc3BsaXR0ZXI+XG4gICAgICogYGBgXG4gICAgICogQHJlbWFya3NcbiAgICAgKiBJZiBwYW5lIGlzIG5vdCByZXNpemFibGUgaXRzIHJlbGF0ZWQgc3BsaXR0ZXIgYmFyIGNhbm5vdCBiZSBkcmFnZ2VkLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHJlc2l6YWJsZSA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiBFdmVudCBmaXJlZCB3aGVuIGNvbGxhcHNlZCBzdGF0ZSBvZiBwYW5lIGlzIGNoYW5nZWQuXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LXNwbGl0dGVyPlxuICAgICAqICA8aWd4LXNwbGl0dGVyLXBhbmUgKGNvbGxhcHNlZENoYW5nZSk9J3BhbmVDb2xsYXBzZWRDaGFuZ2UoJGV2ZW50KSc+Li4uPC9pZ3gtc3BsaXR0ZXItcGFuZT5cbiAgICAgKiA8L2lneC1zcGxpdHRlcj5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgY29sbGFwc2VkQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgQEhvc3RCaW5kaW5nKCdzdHlsZS5vcmRlcicpXG4gICAgcHVibGljIG9yZGVyITogbnVtYmVyO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBAaW50ZXJuYWxcbiAgICAgKiBHZXRzL1NldHMgdGhlIGBvdmVyZmxvd2AuXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdzdHlsZS5vdmVyZmxvdycpXG4gICAgcHVibGljIG92ZXJmbG93ID0gJ2F1dG8nO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBAaW50ZXJuYWxcbiAgICAgKiBHZXQvU2V0cyB0aGUgYG1pbldpZHRoYCBwcm9wZXJ0aWVzIG9mIHRoZSBjdXJyZW50IHBhbmUuXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdzdHlsZS5taW4td2lkdGgnKVxuICAgIHB1YmxpYyBtaW5XaWR0aCA9ICcwJztcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gQGludGVybmFsXG4gICAgICogR2V0L1NldHMgdGhlIGBtYXhXaWR0aGAgcHJvcGVydGllcyBvZiB0aGUgY3VycmVudCBwYW5lLlxuICAgICAqL1xuICAgIEBIb3N0QmluZGluZygnc3R5bGUubWF4LXdpZHRoJylcbiAgICBwdWJsaWMgbWF4V2lkdGggPSAnMTAwJSc7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIEBpbnRlcm5hbFxuICAgICAqIEdldHMvU2V0cyB0aGUgYG1pbkhlaWdodGAgcHJvcGVydGllcyBvZiB0aGUgY3VycmVudCBwYW5lLlxuICAgICAqL1xuICAgIEBIb3N0QmluZGluZygnc3R5bGUubWluLWhlaWdodCcpXG4gICAgcHVibGljIG1pbkhlaWdodCA9ICcwJztcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gQGludGVybmFsXG4gICAgICogR2V0cy9TZXRzIHRoZSBgbWF4SGVpZ2h0YCBwcm9wZXJ0aWVzIG9mIHRoZSBjdXJyZW50IGBJZ3hTcGxpdHRlclBhbmVDb21wb25lbnRgLlxuICAgICAqL1xuICAgIEBIb3N0QmluZGluZygnc3R5bGUubWF4LWhlaWdodCcpXG4gICAgcHVibGljIG1heEhlaWdodCA9ICcxMDAlJztcblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyBvd25lcjtcblxuICAgIC8qKlxuICAgICAqIEdldHMvU2V0cyB0aGUgc2l6ZSBvZiB0aGUgY3VycmVudCBwYW5lLlxuICAgICAqICAqIEBleGFtcGxlXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtc3BsaXR0ZXI+XG4gICAgICogIDxpZ3gtc3BsaXR0ZXItcGFuZSBbc2l6ZV09J3NpemUnPi4uLjwvaWd4LXNwbGl0dGVyLXBhbmU+XG4gICAgICogPC9pZ3gtc3BsaXR0ZXI+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZ2V0IHNpemUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zaXplO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXQgc2l6ZSh2YWx1ZSkge1xuICAgICAgICB0aGlzLl9zaXplID0gdmFsdWU7XG4gICAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5zdHlsZS5mbGV4ID0gdGhpcy5mbGV4O1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyBnZXQgaXNQZXJjZW50YWdlU2l6ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2l6ZSA9PT0gJ2F1dG8nIHx8IHRoaXMuc2l6ZS5pbmRleE9mKCclJykgIT09IC0xO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyBnZXQgZHJhZ1NpemUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kcmFnU2l6ZTtcbiAgICB9XG4gICAgcHVibGljIHNldCBkcmFnU2l6ZSh2YWwpIHtcbiAgICAgICAgdGhpcy5fZHJhZ1NpemUgPSB2YWw7XG4gICAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5zdHlsZS5mbGV4ID0gdGhpcy5mbGV4O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqXG4gICAgICogQGhpZGRlbiBAaW50ZXJuYWxcbiAgICAgKiBHZXRzIHRoZSBob3N0IG5hdGl2ZSBlbGVtZW50LlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgZWxlbWVudCgpOiBhbnkge1xuICAgICAgICByZXR1cm4gdGhpcy5lbC5uYXRpdmVFbGVtZW50O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gQGludGVybmFsXG4gICAgICogR2V0cyB0aGUgYGZsZXhgIHByb3BlcnR5IG9mIHRoZSBjdXJyZW50IGBJZ3hTcGxpdHRlclBhbmVDb21wb25lbnRgLlxuICAgICAqL1xuICAgIEBIb3N0QmluZGluZygnc3R5bGUuZmxleCcpXG4gICAgcHVibGljIGdldCBmbGV4KCkge1xuICAgICAgICBjb25zdCBpc0F1dG8gPSB0aGlzLnNpemUgPT09ICdhdXRvJyAmJiAhdGhpcy5kcmFnU2l6ZTtcbiAgICAgICAgY29uc3QgZ3JvdyA9ICFpc0F1dG8gPyAwIDogMTtcbiAgICAgICAgY29uc3Qgc2l6ZSA9IHRoaXMuZHJhZ1NpemUgfHwgdGhpcy5zaXplO1xuICAgICAgICByZXR1cm4gYCR7Z3Jvd30gJHtncm93fSAke3NpemV9YDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzL1NldHMgd2hldGhlciBjdXJyZW50IHBhbmUgaXMgY29sbGFwc2VkLlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogY29uc3QgaXNDb2xsYXBzZWQgPSBwYW5lLmNvbGxhcHNlZDtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZXQgY29sbGFwc2VkKHZhbHVlKSB7XG4gICAgICAgIGlmICh0aGlzLm93bmVyKSB7XG4gICAgICAgICAgICAvLyByZXNldCBzaWJsaW5nIHNpemVzIHdoZW4gcGFuZSBjb2xsYXBzZSBzdGF0ZSBjaGFuZ2VzLlxuICAgICAgICAgICAgdGhpcy5fZ2V0U2libGluZ3MoKS5mb3JFYWNoKHNpYmxpbmcgPT4ge1xuICAgICAgICAgICAgICAgIHNpYmxpbmcuc2l6ZSA9ICdhdXRvJ1xuICAgICAgICAgICAgICAgIHNpYmxpbmcuZHJhZ1NpemUgPSBudWxsO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fY29sbGFwc2VkID0gdmFsdWU7XG4gICAgICAgIHRoaXMuZGlzcGxheSA9IHRoaXMuX2NvbGxhcHNlZCA/ICdub25lJyA6ICdmbGV4JztcbiAgICAgICAgdGhpcy5jb2xsYXBzZWRDaGFuZ2UuZW1pdCh0aGlzLl9jb2xsYXBzZWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgY29sbGFwc2VkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY29sbGFwc2VkO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3NpemUgPSAnYXV0byc7XG4gICAgcHJpdmF0ZSBfZHJhZ1NpemU7XG4gICAgcHJpdmF0ZSBfY29sbGFwc2VkID0gZmFsc2U7XG5cblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZWw6IEVsZW1lbnRSZWYpIHsgfVxuXG4gICAgLyoqXG4gICAgICogVG9nZ2xlcyB0aGUgY29sbGFwc2VkIHN0YXRlIG9mIHRoZSBwYW5lLlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogcGFuZS50b2dnbGUoKTtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgdG9nZ2xlKCkge1xuICAgICAgICB0aGlzLmNvbGxhcHNlZCA9ICF0aGlzLmNvbGxhcHNlZDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwcml2YXRlIF9nZXRTaWJsaW5ncygpIHtcbiAgICAgICAgY29uc3QgcGFuZXMgPSB0aGlzLm93bmVyLnBhbmVzLnRvQXJyYXkoKTtcbiAgICAgICAgY29uc3QgaW5kZXggPSBwYW5lcy5pbmRleE9mKHRoaXMpO1xuICAgICAgICBjb25zdCBzaWJsaW5ncyA9IFtdO1xuICAgICAgICBpZiAoaW5kZXggIT09IDApIHtcbiAgICAgICAgICAgIHNpYmxpbmdzLnB1c2gocGFuZXNbaW5kZXggLSAxXSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGluZGV4ICE9PSBwYW5lcy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICBzaWJsaW5ncy5wdXNoKHBhbmVzW2luZGV4ICsgMV0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzaWJsaW5ncztcbiAgICB9XG59XG4iLCI8bmctY29udGVudD48L25nLWNvbnRlbnQ+Il19
|
|
250
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BsaXR0ZXItcGFuZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pZ25pdGV1aS1hbmd1bGFyL3NyYy9saWIvc3BsaXR0ZXIvc3BsaXR0ZXItcGFuZS9zcGxpdHRlci1wYW5lLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9zcGxpdHRlci9zcGxpdHRlci1wYW5lL3NwbGl0dGVyLXBhbmUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFjLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRWhHOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFNSCxNQUFNLE9BQU8sd0JBQXdCO0lBV2pDOzs7Ozs7Ozs7T0FTRztJQUNILElBQ1csT0FBTztRQUNkLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN6QixDQUFDO0lBQ0QsSUFBVyxPQUFPLENBQUMsS0FBYTtRQUM1QixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztRQUN0QixJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDWixJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztTQUN0QztJQUNMLENBQUM7SUFFRDs7Ozs7Ozs7O09BU0c7SUFDSCxJQUNXLE9BQU87UUFDZCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDekIsQ0FBQztJQUNELElBQVcsT0FBTyxDQUFDLEtBQWE7UUFDNUIsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDdEIsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ1osSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7U0FDdEM7SUFDTCxDQUFD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c0JBRGQsV0FBVzt1QkFBQyxpQkFBaUI7Z0JBUXZCLFNBQVM7c0JBRGYsV0FBVzt1QkFBQyxrQkFBa0I7Z0JBUXhCLFNBQVM7c0JBRGYsV0FBVzt1QkFBQyxrQkFBa0I7Z0JBZ0JwQixJQUFJO3NCQURkLEtBQUs7Z0JBc0NLLElBQUk7c0JBRGQsV0FBVzt1QkFBQyxZQUFZO2dCQWdCZCxTQUFTO3NCQURuQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBIb3N0QmluZGluZywgSW5wdXQsIEVsZW1lbnRSZWYsIE91dHB1dCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qKlxuICogUmVwcmVzZW50cyBpbmRpdmlkdWFsIHJlc2l6YWJsZS9jb2xsYXBzaWJsZSBwYW5lcy5cbiAqXG4gKiBAaWd4TW9kdWxlIElneFNwbGl0dGVyTW9kdWxlXG4gKlxuICogQGlneFBhcmVudCBJZ3hTcGxpdHRlckNvbXBvbmVudFxuICpcbiAqIEBpZ3hLZXl3b3JkcyBwYW5lXG4gKlxuICogQGlneEdyb3VwIHByZXNlbnRhdGlvblxuICpcbiAqIEByZW1hcmtzXG4gKiAgVXNlcnMgY2FuIGNvbnRyb2wgdGhlIHJlc2l6ZSBiZWhhdmlvciB2aWEgdGhlIG1pbiBhbmQgbWF4IHNpemUgcHJvcGVydGllcy5cbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdpZ3gtc3BsaXR0ZXItcGFuZScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3NwbGl0dGVyLXBhbmUuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgSWd4U3BsaXR0ZXJQYW5lQ29tcG9uZW50IHtcbiAgICBwcml2YXRlIF9taW5TaXplOiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBfbWF4U2l6ZTogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBAaW50ZXJuYWxcbiAgICAgKiBHZXRzL1NldHMgdGhlICdkaXNwbGF5JyBwcm9wZXJ0eSBvZiB0aGUgY3VycmVudCBwYW5lLlxuICAgICAqL1xuICAgIEBIb3N0QmluZGluZygnc3R5bGUuZGlzcGxheScpXG4gICAgcHVibGljIGRpc3BsYXkgPSAnZmxleCc7XG5cbiAgICAvKipcbiAgICAgKiBHZXRzL1NldHMgdGhlIG1pbmltdW0gYWxsb3dlZCBzaXplIG9mIHRoZSBjdXJyZW50IHBhbmUuXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LXNwbGl0dGVyPlxuICAgICAqICA8aWd4LXNwbGl0dGVyLXBhbmUgW21pblNpemVdPSdtaW5TaXplJz4uLi48L2lneC1zcGxpdHRlci1wYW5lPlxuICAgICAqIDwvaWd4LXNwbGl0dGVyPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGdldCBtaW5TaXplKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9taW5TaXplO1xuICAgIH1cbiAgICBwdWJsaWMgc2V0IG1pblNpemUodmFsdWU6IHN0cmluZykge1xuICAgICAgICB0aGlzLl9taW5TaXplID0gdmFsdWU7XG4gICAgICAgIGlmICh0aGlzLm93bmVyKSB7XG4gICAgICAgICAgICB0aGlzLm93bmVyLnBhbmVzLm5vdGlmeU9uQ2hhbmdlcygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cy9TZXQgdGhlIG1heGltdW0gYWxsb3dlZCBzaXplIG9mIHRoZSBjdXJyZW50IHBhbmUuXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LXNwbGl0dGVyPlxuICAgICAqICA8aWd4LXNwbGl0dGVyLXBhbmUgW21heFNpemVdPSdtYXhTaXplJz4uLi48L2lneC1zcGxpdHRlci1wYW5lPlxuICAgICAqIDwvaWd4LXNwbGl0dGVyPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGdldCBtYXhTaXplKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9tYXhTaXplO1xuICAgIH1cbiAgICBwdWJsaWMgc2V0IG1heFNpemUodmFsdWU6IHN0cmluZykge1xuICAgICAgICB0aGlzLl9tYXhTaXplID0gdmFsdWU7XG4gICAgICAgIGlmICh0aGlzLm93bmVyKSB7XG4gICAgICAgICAgICB0aGlzLm93bmVyLnBhbmVzLm5vdGlmeU9uQ2hhbmdlcygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cy9TZXRzIHdoZXRoZXIgcGFuZSBpcyByZXNpemFibGUuXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LXNwbGl0dGVyPlxuICAgICAqICA8aWd4LXNwbGl0dGVyLXBhbmUgW3Jlc2l6YWJsZV09J2ZhbHNlJz4uLi48L2lneC1zcGxpdHRlci1wYW5lPlxuICAgICAqIDwvaWd4LXNwbGl0dGVyPlxuICAgICAqIGBgYFxuICAgICAqIEByZW1hcmtzXG4gICAgICogSWYgcGFuZSBpcyBub3QgcmVzaXphYmxlIGl0cyByZWxhdGVkIHNwbGl0dGVyIGJhciBjYW5ub3QgYmUgZHJhZ2dlZC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyByZXNpemFibGUgPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICogRXZlbnQgZmlyZWQgd2hlbiBjb2xsYXBzZWQgc3RhdGUgb2YgcGFuZSBpcyBjaGFuZ2VkLlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1zcGxpdHRlcj5cbiAgICAgKiAgPGlneC1zcGxpdHRlci1wYW5lIChjb2xsYXBzZWRDaGFuZ2UpPSdwYW5lQ29sbGFwc2VkQ2hhbmdlKCRldmVudCknPi4uLjwvaWd4LXNwbGl0dGVyLXBhbmU+XG4gICAgICogPC9pZ3gtc3BsaXR0ZXI+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIGNvbGxhcHNlZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIEBIb3N0QmluZGluZygnc3R5bGUub3JkZXInKVxuICAgIHB1YmxpYyBvcmRlciE6IG51bWJlcjtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gQGludGVybmFsXG4gICAgICogR2V0cy9TZXRzIHRoZSBgb3ZlcmZsb3dgLlxuICAgICAqL1xuICAgIEBIb3N0QmluZGluZygnc3R5bGUub3ZlcmZsb3cnKVxuICAgIHB1YmxpYyBvdmVyZmxvdyA9ICdhdXRvJztcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gQGludGVybmFsXG4gICAgICogR2V0L1NldHMgdGhlIGBtaW5XaWR0aGAgcHJvcGVydGllcyBvZiB0aGUgY3VycmVudCBwYW5lLlxuICAgICAqL1xuICAgIEBIb3N0QmluZGluZygnc3R5bGUubWluLXdpZHRoJylcbiAgICBwdWJsaWMgbWluV2lkdGggPSAnMCc7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIEBpbnRlcm5hbFxuICAgICAqIEdldC9TZXRzIHRoZSBgbWF4V2lkdGhgIHByb3BlcnRpZXMgb2YgdGhlIGN1cnJlbnQgcGFuZS5cbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ3N0eWxlLm1heC13aWR0aCcpXG4gICAgcHVibGljIG1heFdpZHRoID0gJzEwMCUnO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBAaW50ZXJuYWxcbiAgICAgKiBHZXRzL1NldHMgdGhlIGBtaW5IZWlnaHRgIHByb3BlcnRpZXMgb2YgdGhlIGN1cnJlbnQgcGFuZS5cbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ3N0eWxlLm1pbi1oZWlnaHQnKVxuICAgIHB1YmxpYyBtaW5IZWlnaHQgPSAnMCc7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIEBpbnRlcm5hbFxuICAgICAqIEdldHMvU2V0cyB0aGUgYG1heEhlaWdodGAgcHJvcGVydGllcyBvZiB0aGUgY3VycmVudCBgSWd4U3BsaXR0ZXJQYW5lQ29tcG9uZW50YC5cbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ3N0eWxlLm1heC1oZWlnaHQnKVxuICAgIHB1YmxpYyBtYXhIZWlnaHQgPSAnMTAwJSc7XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgb3duZXI7XG5cbiAgICAvKipcbiAgICAgKiBHZXRzL1NldHMgdGhlIHNpemUgb2YgdGhlIGN1cnJlbnQgcGFuZS5cbiAgICAgKiAgKiBAZXhhbXBsZVxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LXNwbGl0dGVyPlxuICAgICAqICA8aWd4LXNwbGl0dGVyLXBhbmUgW3NpemVdPSdzaXplJz4uLi48L2lneC1zcGxpdHRlci1wYW5lPlxuICAgICAqIDwvaWd4LXNwbGl0dGVyPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGdldCBzaXplKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fc2l6ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0IHNpemUodmFsdWUpIHtcbiAgICAgICAgdGhpcy5fc2l6ZSA9IHZhbHVlO1xuICAgICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuc3R5bGUuZmxleCA9IHRoaXMuZmxleDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgZ2V0IGlzUGVyY2VudGFnZVNpemUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNpemUgPT09ICdhdXRvJyB8fCB0aGlzLnNpemUuaW5kZXhPZignJScpICE9PSAtMTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgZ2V0IGRyYWdTaXplKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZHJhZ1NpemU7XG4gICAgfVxuICAgIHB1YmxpYyBzZXQgZHJhZ1NpemUodmFsKSB7XG4gICAgICAgIHRoaXMuX2RyYWdTaXplID0gdmFsO1xuICAgICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuc3R5bGUuZmxleCA9IHRoaXMuZmxleDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKlxuICAgICAqIEBoaWRkZW4gQGludGVybmFsXG4gICAgICogR2V0cyB0aGUgaG9zdCBuYXRpdmUgZWxlbWVudC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGVsZW1lbnQoKTogYW55IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWwubmF0aXZlRWxlbWVudDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIEBpbnRlcm5hbFxuICAgICAqIEdldHMgdGhlIGBmbGV4YCBwcm9wZXJ0eSBvZiB0aGUgY3VycmVudCBgSWd4U3BsaXR0ZXJQYW5lQ29tcG9uZW50YC5cbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ3N0eWxlLmZsZXgnKVxuICAgIHB1YmxpYyBnZXQgZmxleCgpIHtcbiAgICAgICAgY29uc3Qgc2l6ZSA9IHRoaXMuZHJhZ1NpemUgfHwgdGhpcy5zaXplO1xuICAgICAgICBjb25zdCBncm93ID0gdGhpcy5pc1BlcmNlbnRhZ2VTaXplICYmICF0aGlzLmRyYWdTaXplID8gMSA6IDA7XG4gICAgICAgIHJldHVybiBgJHtncm93fSAke2dyb3d9ICR7c2l6ZX1gO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMvU2V0cyB3aGV0aGVyIGN1cnJlbnQgcGFuZSBpcyBjb2xsYXBzZWQuXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBjb25zdCBpc0NvbGxhcHNlZCA9IHBhbmUuY29sbGFwc2VkO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNldCBjb2xsYXBzZWQodmFsdWUpIHtcbiAgICAgICAgaWYgKHRoaXMub3duZXIpIHtcbiAgICAgICAgICAgIC8vIHJlc2V0IHNpYmxpbmcgc2l6ZXMgd2hlbiBwYW5lIGNvbGxhcHNlIHN0YXRlIGNoYW5nZXMuXG4gICAgICAgICAgICB0aGlzLl9nZXRTaWJsaW5ncygpLmZvckVhY2goc2libGluZyA9PiB7XG4gICAgICAgICAgICAgICAgc2libGluZy5zaXplID0gJ2F1dG8nXG4gICAgICAgICAgICAgICAgc2libGluZy5kcmFnU2l6ZSA9IG51bGw7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9jb2xsYXBzZWQgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5kaXNwbGF5ID0gdGhpcy5fY29sbGFwc2VkID8gJ25vbmUnIDogJ2ZsZXgnO1xuICAgICAgICB0aGlzLmNvbGxhcHNlZENoYW5nZS5lbWl0KHRoaXMuX2NvbGxhcHNlZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBjb2xsYXBzZWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jb2xsYXBzZWQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfc2l6ZSA9ICdhdXRvJztcbiAgICBwcml2YXRlIF9kcmFnU2l6ZTtcbiAgICBwcml2YXRlIF9jb2xsYXBzZWQgPSBmYWxzZTtcblxuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBlbDogRWxlbWVudFJlZikgeyB9XG5cbiAgICAvKipcbiAgICAgKiBUb2dnbGVzIHRoZSBjb2xsYXBzZWQgc3RhdGUgb2YgdGhlIHBhbmUuXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBwYW5lLnRvZ2dsZSgpO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyB0b2dnbGUoKSB7XG4gICAgICAgIHRoaXMuY29sbGFwc2VkID0gIXRoaXMuY29sbGFwc2VkO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHByaXZhdGUgX2dldFNpYmxpbmdzKCkge1xuICAgICAgICBjb25zdCBwYW5lcyA9IHRoaXMub3duZXIucGFuZXMudG9BcnJheSgpO1xuICAgICAgICBjb25zdCBpbmRleCA9IHBhbmVzLmluZGV4T2YodGhpcyk7XG4gICAgICAgIGNvbnN0IHNpYmxpbmdzID0gW107XG4gICAgICAgIGlmIChpbmRleCAhPT0gMCkge1xuICAgICAgICAgICAgc2libGluZ3MucHVzaChwYW5lc1tpbmRleCAtIDFdKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaW5kZXggIT09IHBhbmVzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgIHNpYmxpbmdzLnB1c2gocGFuZXNbaW5kZXggKyAxXSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHNpYmxpbmdzO1xuICAgIH1cbn1cbiIsIjxuZy1jb250ZW50PjwvbmctY29udGVudD4iXX0=
|
|
@@ -150,30 +150,14 @@ export class IgxSplitterComponent {
|
|
|
150
150
|
* @param delta - The difference along the X (or Y) axis between the initial and the current point when dragging the bar.
|
|
151
151
|
*/
|
|
152
152
|
onMoving(delta) {
|
|
153
|
-
const
|
|
154
|
-
const max = parseInt(this.pane.maxSize, 10) || this.initialPaneSize + this.initialSiblingSize;
|
|
155
|
-
const minSibling = parseInt(this.sibling.minSize, 10) || 0;
|
|
156
|
-
const maxSibling = parseInt(this.sibling.maxSize, 10) || this.initialPaneSize + this.initialSiblingSize;
|
|
157
|
-
const paneSize = this.initialPaneSize - delta;
|
|
158
|
-
const siblingSize = this.initialSiblingSize + delta;
|
|
159
|
-
if (paneSize < min || paneSize > max || siblingSize < minSibling || siblingSize > maxSibling) {
|
|
160
|
-
return;
|
|
161
|
-
}
|
|
153
|
+
const [paneSize, siblingSize] = this.calcNewSizes(delta);
|
|
162
154
|
this.pane.dragSize = paneSize + 'px';
|
|
163
155
|
this.sibling.dragSize = siblingSize + 'px';
|
|
164
156
|
const args = { pane: this.pane, sibling: this.sibling };
|
|
165
157
|
this.resizing.emit(args);
|
|
166
158
|
}
|
|
167
159
|
onMoveEnd(delta) {
|
|
168
|
-
const
|
|
169
|
-
const max = parseInt(this.pane.maxSize, 10) || this.initialPaneSize + this.initialSiblingSize;
|
|
170
|
-
const minSibling = parseInt(this.sibling.minSize, 10) || 0;
|
|
171
|
-
const maxSibling = parseInt(this.sibling.maxSize, 10) || this.initialPaneSize + this.initialSiblingSize;
|
|
172
|
-
const paneSize = this.initialPaneSize - delta;
|
|
173
|
-
const siblingSize = this.initialSiblingSize + delta;
|
|
174
|
-
if (paneSize < min || paneSize > max || siblingSize < minSibling || siblingSize > maxSibling) {
|
|
175
|
-
return;
|
|
176
|
-
}
|
|
160
|
+
const [paneSize, siblingSize] = this.calcNewSizes(delta);
|
|
177
161
|
if (this.pane.isPercentageSize) {
|
|
178
162
|
// handle % resizes
|
|
179
163
|
const totalSize = this.getTotalSize();
|
|
@@ -261,6 +245,25 @@ export class IgxSplitterComponent {
|
|
|
261
245
|
k += 2;
|
|
262
246
|
});
|
|
263
247
|
}
|
|
248
|
+
/**
|
|
249
|
+
* @hidden @internal
|
|
250
|
+
* Calculates new sizes for the panes based on move delta and initial sizes
|
|
251
|
+
*/
|
|
252
|
+
calcNewSizes(delta) {
|
|
253
|
+
const min = parseInt(this.pane.minSize, 10) || 0;
|
|
254
|
+
const minSibling = parseInt(this.sibling.minSize, 10) || 0;
|
|
255
|
+
const max = parseInt(this.pane.maxSize, 10) || this.initialPaneSize + this.initialSiblingSize - minSibling;
|
|
256
|
+
const maxSibling = parseInt(this.sibling.maxSize, 10) || this.initialPaneSize + this.initialSiblingSize - min;
|
|
257
|
+
if (delta < 0) {
|
|
258
|
+
const maxPossibleDelta = Math.min(max - this.initialPaneSize, this.initialSiblingSize - minSibling);
|
|
259
|
+
delta = Math.min(maxPossibleDelta, Math.abs(delta)) * -1;
|
|
260
|
+
}
|
|
261
|
+
else {
|
|
262
|
+
const maxPossibleDelta = Math.min(this.initialPaneSize - min, maxSibling - this.initialSiblingSize);
|
|
263
|
+
delta = Math.min(maxPossibleDelta, Math.abs(delta));
|
|
264
|
+
}
|
|
265
|
+
return [this.initialPaneSize - delta, this.initialSiblingSize + delta];
|
|
266
|
+
}
|
|
264
267
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.2", ngImport: i0, type: IgxSplitterComponent, deps: [{ token: DOCUMENT }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
265
268
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.2", type: IgxSplitterComponent, isStandalone: true, selector: "igx-splitter", inputs: { type: "type" }, outputs: { resizeStart: "resizeStart", resizing: "resizing", resizeEnd: "resizeEnd" }, host: { properties: { "class.igx-splitter": "this.cssClass", "style.overflow": "this.overflow", "style.display": "this.display", "attr.aria-orientation": "this.orientation", "style.flex-direction": "this.direction" } }, queries: [{ propertyName: "panes", predicate: IgxSplitterPaneComponent, read: IgxSplitterPaneComponent }], ngImport: i0, template: "<ng-content select=\"igx-splitter-pane\"></ng-content>\n<ng-container *ngFor=\"let pane of panes; let last = last; let index= index;\">\n <igx-splitter-bar *ngIf=\"!last\" [order]='pane.order + 1' role='separator'\n [type]=\"type\"\n [pane]=\"pane\"\n [siblings]='getPaneSiblingsByOrder(pane.order + 1, index)'\n (moveStart)=\"onMoveStart($event)\"\n (moving)=\"onMoving($event)\"\n (movingEnd)='onMoveEnd($event)'>\n </igx-splitter-bar>\n</ng-container>\n", dependencies: [{ kind: "directive", type: i0.forwardRef(function () { return NgFor; }), selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i0.forwardRef(function () { return NgIf; }), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i0.forwardRef(function () { return IgxSplitBarComponent; }), selector: "igx-splitter-bar", inputs: ["type", "order", "pane", "siblings"], outputs: ["moveStart", "moving", "movingEnd"] }] }); }
|
|
266
269
|
}
|
|
@@ -524,4 +527,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.2", ngImpor
|
|
|
524
527
|
type: HostListener,
|
|
525
528
|
args: ['keydown', ['$event']]
|
|
526
529
|
}] } });
|
|
527
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BsaXR0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL3NwbGl0dGVyL3NwbGl0dGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9zcGxpdHRlci9zcGxpdHRlci5jb21wb25lbnQuaHRtbCIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9zcGxpdHRlci9zcGxpdHRlci1iYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDeEQsT0FBTyxFQUFvQixTQUFTLEVBQUUsZUFBZSxFQUFjLFlBQVksRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFhLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoTCxPQUFPLEVBQUUsYUFBYSxFQUEyQyxnQkFBZ0IsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQy9KLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHlDQUF5QyxDQUFDOztBQUVuRjs7R0FFRztBQUNILE1BQU0sQ0FBTixJQUFZLFlBR1g7QUFIRCxXQUFZLFlBQVk7SUFDcEIsMkRBQVUsQ0FBQTtJQUNWLHVEQUFRLENBQUE7QUFDWixDQUFDLEVBSFcsWUFBWSxLQUFaLFlBQVksUUFHdkI7QUFPRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXlCRztBQU9ILE1BQU0sT0FBTyxvQkFBb0I7SUFpQzdCOzs7T0FHRztJQUNILElBQ1csV0FBVztRQUNsQixPQUFPLElBQUksQ0FBQyxJQUFJLEtBQUssWUFBWSxDQUFDLFVBQVUs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QW1CQSxRQUFRO3NCQURkLFlBQVk7dUJBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRE9DVU1FTlQsIE5nRm9yLCBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEFmdGVyQ29udGVudEluaXQsIENvbXBvbmVudCwgQ29udGVudENoaWxkcmVuLCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIEhvc3RCaW5kaW5nLCBIb3N0TGlzdGVuZXIsIEluamVjdCwgSW5wdXQsIE91dHB1dCwgUXVlcnlMaXN0LCBmb3J3YXJkUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEcmFnRGlyZWN0aW9uLCBJRHJhZ01vdmVFdmVudEFyZ3MsIElEcmFnU3RhcnRFdmVudEFyZ3MsIElneERyYWdEaXJlY3RpdmUsIElneERyYWdJZ25vcmVEaXJlY3RpdmUgfSBmcm9tICcuLi9kaXJlY3RpdmVzL2RyYWctZHJvcC9kcmFnLWRyb3AuZGlyZWN0aXZlJztcbmltcG9ydCB7IElneFNwbGl0dGVyUGFuZUNvbXBvbmVudCB9IGZyb20gJy4vc3BsaXR0ZXItcGFuZS9zcGxpdHRlci1wYW5lLmNvbXBvbmVudCc7XG5cbi8qKlxuICogQW4gZW51bWVyYXRpb24gdGhhdCBkZWZpbmVzIHRoZSBgU3BsaXR0ZXJDb21wb25lbnRgIHBhbmVzIG9yaWVudGF0aW9uLlxuICovXG5leHBvcnQgZW51bSBTcGxpdHRlclR5cGUge1xuICAgIEhvcml6b250YWwsXG4gICAgVmVydGljYWxcbn1cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIElTcGxpdHRlckJhclJlc2l6ZUV2ZW50QXJncyB7XG4gICAgcGFuZTogSWd4U3BsaXR0ZXJQYW5lQ29tcG9uZW50O1xuICAgIHNpYmxpbmc6IElneFNwbGl0dGVyUGFuZUNvbXBvbmVudDtcbn1cblxuLyoqXG4gKiBQcm92aWRlcyBhIGZyYW1ld29yayBmb3IgYSBzaW1wbGUgbGF5b3V0LCBzcGxpdHRpbmcgdGhlIHZpZXcgaG9yaXpvbnRhbGx5IG9yIHZlcnRpY2FsbHlcbiAqIGludG8gbXVsdGlwbGUgc21hbGxlciByZXNpemFibGUgYW5kIGNvbGxhcHNpYmxlIGFyZWFzLlxuICpcbiAqIEBpZ3hNb2R1bGUgSWd4U3BsaXR0ZXJNb2R1bGVcbiAqXG4gKiBAaWd4UGFyZW50IExheW91dHNcbiAqXG4gKiBAaWd4VGhlbWUgaWd4LXNwbGl0dGVyLXRoZW1lXG4gKlxuICogQGlneEtleXdvcmRzIHNwbGl0dGVyIHBhbmVzIGxheW91dFxuICpcbiAqIEBpZ3hHcm91cCBwcmVzZW50YXRpb25cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgaHRtbFxuICogPGlneC1zcGxpdHRlcj5cbiAqICA8aWd4LXNwbGl0dGVyLXBhbmU+XG4gKiAgICAgIC4uLlxuICogIDwvaWd4LXNwbGl0dGVyLXBhbmU+XG4gKiAgPGlneC1zcGxpdHRlci1wYW5lPlxuICogICAgICAuLi5cbiAqICA8L2lneC1zcGxpdHRlci1wYW5lPlxuICogPC9pZ3gtc3BsaXR0ZXI+XG4gKiBgYGBcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdpZ3gtc3BsaXR0ZXInLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9zcGxpdHRlci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbTmdGb3IsIE5nSWYsIGZvcndhcmRSZWYoKCkgPT4gSWd4U3BsaXRCYXJDb21wb25lbnQpXVxufSlcbmV4cG9ydCBjbGFzcyBJZ3hTcGxpdHRlckNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQge1xuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIGxpc3Qgb2Ygc3BsaXR0ZXIgcGFuZXMuXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBjb25zdCBwYW5lcyA9IHRoaXMuc3BsaXR0ZXIucGFuZXM7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZHJlbihJZ3hTcGxpdHRlclBhbmVDb21wb25lbnQsIHsgcmVhZDogSWd4U3BsaXR0ZXJQYW5lQ29tcG9uZW50IH0pXG4gICAgcHVibGljIHBhbmVzITogUXVlcnlMaXN0PElneFNwbGl0dGVyUGFuZUNvbXBvbmVudD47XG5cbiAgICAvKipcbiAgICAqIEBoaWRkZW5cbiAgICAqIEBpbnRlcm5hbFxuICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtc3BsaXR0ZXInKVxuICAgIHB1YmxpYyBjc3NDbGFzcyA9ICdpZ3gtc3BsaXR0ZXInO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBAaW50ZXJuYWxcbiAgICAgKiBHZXRzL1NldHMgdGhlIGBvdmVyZmxvd2AgcHJvcGVydHkgb2YgdGhlIGN1cnJlbnQgc3BsaXR0ZXIuXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdzdHlsZS5vdmVyZmxvdycpXG4gICAgcHVibGljIG92ZXJmbG93ID0gJ2hpZGRlbic7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIEBpbnRlcm5hbFxuICAgICAqIFNldHMvR2V0cyB0aGUgYGRpc3BsYXlgIHByb3BlcnR5IG9mIHRoZSBjdXJyZW50IHNwbGl0dGVyLlxuICAgICAqL1xuICAgIEBIb3N0QmluZGluZygnc3R5bGUuZGlzcGxheScpXG4gICAgcHVibGljIGRpc3BsYXkgPSAnZmxleCc7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtb3JpZW50YXRpb24nKVxuICAgIHB1YmxpYyBnZXQgb3JpZW50YXRpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnR5cGUgPT09IFNwbGl0dGVyVHlwZS5Ib3Jpem9udGFsID8gJ2hvcml6b250YWwnIDogJ3ZlcnRpY2FsJztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFdmVudCBmaXJlZCB3aGVuIHJlc2l6aW5nIG9mIHBhbmVzIHN0YXJ0cy5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtc3BsaXR0ZXIgKHJlc2l6ZVN0YXJ0KT0ncmVzaXplU3RhcnQoJGV2ZW50KSc+XG4gICAgICogIDxpZ3gtc3BsaXR0ZXItcGFuZT4uLi48L2lneC1zcGxpdHRlci1wYW5lPlxuICAgICAqIDwvaWd4LXNwbGl0dGVyPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyByZXNpemVTdGFydCA9IG5ldyBFdmVudEVtaXR0ZXI8SVNwbGl0dGVyQmFyUmVzaXplRXZlbnRBcmdzPigpO1xuXG4gICAgLyoqXG4gICAgICogRXZlbnQgZmlyZWQgd2hlbiByZXNpemluZyBvZiBwYW5lcyBpcyBpbiBwcm9ncmVzcy5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtc3BsaXR0ZXIgKHJlc2l6aW5nKT0ncmVzaXppbmcoJGV2ZW50KSc+XG4gICAgICogIDxpZ3gtc3BsaXR0ZXItcGFuZT4uLi48L2lneC1zcGxpdHRlci1wYW5lPlxuICAgICAqIDwvaWd4LXNwbGl0dGVyPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyByZXNpemluZyA9IG5ldyBFdmVudEVtaXR0ZXI8SVNwbGl0dGVyQmFyUmVzaXplRXZlbnRBcmdzPigpO1xuXG5cbiAgICAvKipcbiAgICAgKiBFdmVudCBmaXJlZCB3aGVuIHJlc2l6aW5nIG9mIHBhbmVzIGVuZHMuXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LXNwbGl0dGVyIChyZXNpemVFbmQpPSdyZXNpemVFbmQoJGV2ZW50KSc+XG4gICAgICogIDxpZ3gtc3BsaXR0ZXItcGFuZT4uLi48L2lneC1zcGxpdHRlci1wYW5lPlxuICAgICAqIDwvaWd4LXNwbGl0dGVyPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyByZXNpemVFbmQgPSBuZXcgRXZlbnRFbWl0dGVyPElTcGxpdHRlckJhclJlc2l6ZUV2ZW50QXJncz4oKTtcblxuICAgIHByaXZhdGUgX3R5cGU6IFNwbGl0dGVyVHlwZSA9IFNwbGl0dGVyVHlwZS5Ib3Jpem9udGFsO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBAaW50ZXJuYWxcbiAgICAgKiBBIGZpZWxkIHRoYXQgaG9sZHMgdGhlIGluaXRpYWwgc2l6ZSBvZiB0aGUgbWFpbiBgSWd4U3BsaXR0ZXJQYW5lQ29tcG9uZW50YCBpbiBlYWNoIHBhaXIgb2YgcGFuZXMgZGl2aWRlZCBieSBhIHNwbGl0dGVyIGJhci5cbiAgICAgKi9cbiAgICBwcml2YXRlIGluaXRpYWxQYW5lU2l6ZSE6IG51bWJlcjtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gQGludGVybmFsXG4gICAgICogQSBmaWVsZCB0aGF0IGhvbGRzIHRoZSBpbml0aWFsIHNpemUgb2YgdGhlIHNpYmxpbmcgcGFuZSBpbiBlYWNoIHBhaXIgb2YgcGFuZXMgZGl2aWRlZCBieSBhIGdyaXBwZXIuXG4gICAgICogQG1lbWJlcm9mIFNwbGl0dGVyQ29tcG9uZW50XG4gICAgICovXG4gICAgcHJpdmF0ZSBpbml0aWFsU2libGluZ1NpemUhOiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIEBpbnRlcm5hbFxuICAgICAqIFRoZSBtYWluIHBhbmUgaW4gZWFjaCBwYWlyIG9mIHBhbmVzIGRpdmlkZWQgYnkgYSBncmlwcGVyLlxuICAgICAqL1xuICAgIHByaXZhdGUgcGFuZSE6IElneFNwbGl0dGVyUGFuZUNvbXBvbmVudDtcblxuICAgIC8qKlxuICAgICAqIFRoZSBzaWJsaW5nIHBhbmUgaW4gZWFjaCBwYWlyIG9mIHBhbmVzIGRpdmlkZWQgYnkgYSBzcGxpdHRlciBiYXIuXG4gICAgICovXG4gICAgcHJpdmF0ZSBzaWJsaW5nITogSWd4U3BsaXR0ZXJQYW5lQ29tcG9uZW50O1xuXG4gICAgY29uc3RydWN0b3IoQEluamVjdChET0NVTUVOVCkgcHVibGljIGRvY3VtZW50LCBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYpIHsgfVxuICAgIC8qKlxuICAgICAqIEdldHMvU2V0cyB0aGUgc3BsaXR0ZXIgb3JpZW50YXRpb24uXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LXNwbGl0dGVyIFt0eXBlXT1cInR5cGVcIj4uLi48L2lneC1zcGxpdHRlcj5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBnZXQgdHlwZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3R5cGU7XG4gICAgfVxuICAgIHB1YmxpYyBzZXQgdHlwZSh2YWx1ZSkge1xuICAgICAgICB0aGlzLl90eXBlID0gdmFsdWU7XG4gICAgICAgIHRoaXMucmVzZXRQYW5lU2l6ZXMoKTtcbiAgICAgICAgdGhpcy5wYW5lcz8ubm90aWZ5T25DaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBAaW50ZXJuYWxcbiAgICAgKiBHZXRzIHRoZSBgZmxleC1kaXJlY3Rpb25gIHByb3BlcnR5IG9mIHRoZSBjdXJyZW50IGBTcGxpdHRlckNvbXBvbmVudGAuXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdzdHlsZS5mbGV4LWRpcmVjdGlvbicpXG4gICAgcHVibGljIGdldCBkaXJlY3Rpb24oKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudHlwZSA9PT0gU3BsaXR0ZXJUeXBlLkhvcml6b250YWwgPyAncm93JyA6ICdjb2x1bW4nO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaW5pdFBhbmVzKCk7XG4gICAgICAgIHRoaXMucGFuZXMuY2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5pbml0UGFuZXMoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBAaW50ZXJuYWxcbiAgICAgKiBUaGlzIG1ldGhvZCBwZXJmb3JtcyAgaW5pdGlhbGl6YXRpb24gbG9naWMgd2hlbiB0aGUgdXNlciBzdGFydHMgZHJhZ2dpbmcgdGhlIHNwbGl0dGVyIGJhciBiZXR3ZWVuIGVhY2ggcGFpciBvZiBwYW5lcy5cbiAgICAgKiBAcGFyYW0gcGFuZSAtIHRoZSBtYWluIHBhbmUgYXNzb2NpYXRlZCB3aXRoIHRoZSBjdXJyZW50bHkgZHJhZ2dlZCBiYXIuXG4gICAgICovXG4gICAgcHVibGljIG9uTW92ZVN0YXJ0KHBhbmU6IElneFNwbGl0dGVyUGFuZUNvbXBvbmVudCkge1xuICAgICAgICBjb25zdCBwYW5lcyA9IHRoaXMucGFuZXMudG9BcnJheSgpO1xuICAgICAgICB0aGlzLnBhbmUgPSBwYW5lO1xuICAgICAgICB0aGlzLnNpYmxpbmcgPSBwYW5lc1twYW5lcy5pbmRleE9mKHRoaXMucGFuZSkgKyAxXTtcblxuICAgICAgICBjb25zdCBwYW5lUmVjdCA9IHRoaXMucGFuZS5lbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICB0aGlzLmluaXRpYWxQYW5lU2l6ZSA9IHRoaXMudHlwZSA9PT0gU3BsaXR0ZXJUeXBlLkhvcml6b250YWwgPyBwYW5lUmVjdC53aWR0aCA6IHBhbmVSZWN0LmhlaWdodDtcblxuICAgICAgICBjb25zdCBzaWJsaW5nUmVjdCA9IHRoaXMuc2libGluZy5lbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICB0aGlzLmluaXRpYWxTaWJsaW5nU2l6ZSA9IHRoaXMudHlwZSA9PT0gU3BsaXR0ZXJUeXBlLkhvcml6b250YWwgPyBzaWJsaW5nUmVjdC53aWR0aCA6IHNpYmxpbmdSZWN0LmhlaWdodDtcbiAgICAgICAgY29uc3QgYXJnczogSVNwbGl0dGVyQmFyUmVzaXplRXZlbnRBcmdzID0geyBwYW5lOiB0aGlzLnBhbmUsIHNpYmxpbmc6IHRoaXMuc2libGluZyB9O1xuICAgICAgICB0aGlzLnJlc2l6ZVN0YXJ0LmVtaXQoYXJncyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBAaW50ZXJuYWxcbiAgICAgKiBUaGlzIG1ldGhvZCBwZXJmb3JtcyBjYWxjdWxhdGlvbnMgY29uY2VybmluZyB0aGUgc2l6ZXMgb2YgZWFjaCBwYWlyIG9mIHBhbmVzIHdoZW4gdGhlIGJhciBiZXR3ZWVuIHRoZW0gaXMgZHJhZ2dlZC5cbiAgICAgKiBAcGFyYW0gZGVsdGEgLSBUaGUgZGlmZmVyZW5jZSBhbG9uZyB0aGUgWCAob3IgWSkgYXhpcyBiZXR3ZWVuIHRoZSBpbml0aWFsIGFuZCB0aGUgY3VycmVudCBwb2ludCB3aGVuIGRyYWdnaW5nIHRoZSBiYXIuXG4gICAgICovXG4gICAgcHVibGljIG9uTW92aW5nKGRlbHRhOiBudW1iZXIpIHtcbiAgICAgICAgY29uc3QgbWluID0gcGFyc2VJbnQodGhpcy5wYW5lLm1pblNpemUsIDEwKSB8fCAwO1xuICAgICAgICBjb25zdCBtYXggPSBwYXJzZUludCh0aGlzLnBhbmUubWF4U2l6ZSwgMTApIHx8IHRoaXMuaW5pdGlhbFBhbmVTaXplICsgdGhpcy5pbml0aWFsU2libGluZ1NpemU7XG4gICAgICAgIGNvbnN0IG1pblNpYmxpbmcgPSBwYXJzZUludCh0aGlzLnNpYmxpbmcubWluU2l6ZSwgMTApIHx8IDA7XG4gICAgICAgIGNvbnN0IG1heFNpYmxpbmcgPSBwYXJzZUludCh0aGlzLnNpYmxpbmcubWF4U2l6ZSwgMTApIHx8IHRoaXMuaW5pdGlhbFBhbmVTaXplICsgdGhpcy5pbml0aWFsU2libGluZ1NpemU7XG5cbiAgICAgICAgY29uc3QgcGFuZVNpemUgPSB0aGlzLmluaXRpYWxQYW5lU2l6ZSAtIGRlbHRhO1xuICAgICAgICBjb25zdCBzaWJsaW5nU2l6ZSA9IHRoaXMuaW5pdGlhbFNpYmxpbmdTaXplICsgZGVsdGE7XG4gICAgICAgIGlmIChwYW5lU2l6ZSA8IG1pbiB8fCBwYW5lU2l6ZSA+IG1heCB8fCBzaWJsaW5nU2l6ZSA8IG1pblNpYmxpbmcgfHwgc2libGluZ1NpemUgPiBtYXhTaWJsaW5nKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5wYW5lLmRyYWdTaXplID0gcGFuZVNpemUgKyAncHgnO1xuICAgICAgICB0aGlzLnNpYmxpbmcuZHJhZ1NpemUgPSBzaWJsaW5nU2l6ZSArICdweCc7XG5cbiAgICAgICAgY29uc3QgYXJnczogSVNwbGl0dGVyQmFyUmVzaXplRXZlbnRBcmdzID0geyBwYW5lOiB0aGlzLnBhbmUsIHNpYmxpbmc6IHRoaXMuc2libGluZyB9O1xuICAgICAgICB0aGlzLnJlc2l6aW5nLmVtaXQoYXJncyk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uTW92ZUVuZChkZWx0YTogbnVtYmVyKSB7XG4gICAgICAgIGNvbnN0IG1pbiA9IHBhcnNlSW50KHRoaXMucGFuZS5taW5TaXplLCAxMCkgfHwgMDtcbiAgICAgICAgY29uc3QgbWF4ID0gcGFyc2VJbnQodGhpcy5wYW5lLm1heFNpemUsIDEwKSB8fCB0aGlzLmluaXRpYWxQYW5lU2l6ZSArIHRoaXMuaW5pdGlhbFNpYmxpbmdTaXplO1xuICAgICAgICBjb25zdCBtaW5TaWJsaW5nID0gcGFyc2VJbnQodGhpcy5zaWJsaW5nLm1pblNpemUsIDEwKSB8fCAwO1xuICAgICAgICBjb25zdCBtYXhTaWJsaW5nID0gcGFyc2VJbnQodGhpcy5zaWJsaW5nLm1heFNpemUsIDEwKSB8fCB0aGlzLmluaXRpYWxQYW5lU2l6ZSArIHRoaXMuaW5pdGlhbFNpYmxpbmdTaXplO1xuXG4gICAgICAgIGNvbnN0IHBhbmVTaXplID0gdGhpcy5pbml0aWFsUGFuZVNpemUgLSBkZWx0YTtcbiAgICAgICAgY29uc3Qgc2libGluZ1NpemUgPSB0aGlzLmluaXRpYWxTaWJsaW5nU2l6ZSArIGRlbHRhO1xuXG4gICAgICAgIGlmIChwYW5lU2l6ZSA8IG1pbiB8fCBwYW5lU2l6ZSA+IG1heCB8fCBzaWJsaW5nU2l6ZSA8IG1pblNpYmxpbmcgfHwgc2libGluZ1NpemUgPiBtYXhTaWJsaW5nKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMucGFuZS5pc1BlcmNlbnRhZ2VTaXplKSB7XG4gICAgICAgICAgICAvLyBoYW5kbGUgJSByZXNpemVzXG4gICAgICAgICAgICBjb25zdCB0b3RhbFNpemUgPSB0aGlzLmdldFRvdGFsU2l6ZSgpO1xuICAgICAgICAgICAgY29uc3QgcGVyY2VudFBhbmVTaXplID0gKHBhbmVTaXplIC8gdG90YWxTaXplKSAqIDEwMDtcbiAgICAgICAgICAgIHRoaXMucGFuZS5zaXplID0gcGVyY2VudFBhbmVTaXplICsgJyUnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gcHggcmVzaXplXG4gICAgICAgICAgICB0aGlzLnBhbmUuc2l6ZSA9IHBhbmVTaXplICsgJ3B4JztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnNpYmxpbmcuaXNQZXJjZW50YWdlU2l6ZSkge1xuICAgICAgICAgICAgLy8gaGFuZGxlICUgcmVzaXplc1xuICAgICAgICAgICAgY29uc3QgdG90YWxTaXplID0gdGhpcy5nZXRUb3RhbFNpemUoKTtcbiAgICAgICAgICAgIGNvbnN0IHBlcmNlbnRTaWJsaW5nUGFuZVNpemUgPSAoc2libGluZ1NpemUgLyB0b3RhbFNpemUpICogMTAwO1xuICAgICAgICAgICAgdGhpcy5zaWJsaW5nLnNpemUgPSBwZXJjZW50U2libGluZ1BhbmVTaXplICsgJyUnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gcHggcmVzaXplXG4gICAgICAgICAgICB0aGlzLnNpYmxpbmcuc2l6ZSA9IHNpYmxpbmdTaXplICsgJ3B4JztcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnBhbmUuZHJhZ1NpemUgPSBudWxsO1xuICAgICAgICB0aGlzLnNpYmxpbmcuZHJhZ1NpemUgPSBudWxsO1xuXG4gICAgICAgIGNvbnN0IGFyZ3M6IElTcGxpdHRlckJhclJlc2l6ZUV2ZW50QXJncyA9IHsgcGFuZTogdGhpcy5wYW5lLCBzaWJsaW5nOiB0aGlzLnNpYmxpbmcgfTtcbiAgICAgICAgdGhpcy5yZXNpemVFbmQuZW1pdChhcmdzKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgZ2V0UGFuZVNpYmxpbmdzQnlPcmRlcihvcmRlcjogbnVtYmVyLCBiYXJJbmRleDogbnVtYmVyKTogQXJyYXk8SWd4U3BsaXR0ZXJQYW5lQ29tcG9uZW50PiB7XG4gICAgICAgIGNvbnN0IHBhbmVzID0gdGhpcy5wYW5lcy50b0FycmF5KCk7XG4gICAgICAgIGNvbnN0IHByZXZQYW5lID0gcGFuZXNbb3JkZXIgLSBiYXJJbmRleCAtIDFdO1xuICAgICAgICBjb25zdCBuZXh0UGFuZSA9IHBhbmVzW29yZGVyIC0gYmFySW5kZXhdO1xuICAgICAgICBjb25zdCBzaWJsaW5ncyA9IFtwcmV2UGFuZSwgbmV4dFBhbmVdO1xuICAgICAgICByZXR1cm4gc2libGluZ3M7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRUb3RhbFNpemUoKSB7XG4gICAgICAgIGNvbnN0IGNvbXB1dGVkID0gdGhpcy5kb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgY29uc3QgdG90YWxTaXplID0gdGhpcy50eXBlID09PSBTcGxpdHRlclR5cGUuSG9yaXpvbnRhbCA/IGNvbXB1dGVkLmdldFByb3BlcnR5VmFsdWUoJ3dpZHRoJykgOiBjb21wdXRlZC5nZXRQcm9wZXJ0eVZhbHVlKCdoZWlnaHQnKTtcbiAgICAgICAgcmV0dXJuIHBhcnNlRmxvYXQodG90YWxTaXplKTtcbiAgICB9XG5cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gQGludGVybmFsXG4gICAgICogVGhpcyBtZXRob2QgaW5pdHMgcGFuZXMgd2l0aCBwcm9wZXJ0aWVzLlxuICAgICAqL1xuICAgIHByaXZhdGUgaW5pdFBhbmVzKCkge1xuICAgICAgICB0aGlzLnBhbmVzLmZvckVhY2gocGFuZSA9PiB7XG4gICAgICAgICAgICBwYW5lLm93bmVyID0gdGhpcztcbiAgICAgICAgICAgIGlmICh0aGlzLnR5cGUgPT09IFNwbGl0dGVyVHlwZS5Ib3Jpem9udGFsKSB7XG4gICAgICAgICAgICAgICAgcGFuZS5taW5XaWR0aCA9IHBhbmUubWluU2l6ZSA/PyAnMCc7XG4gICAgICAgICAgICAgICAgcGFuZS5tYXhXaWR0aCA9IHBhbmUubWF4U2l6ZSA/PyAnMTAwJSc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHBhbmUubWluSGVpZ2h0ID0gcGFuZS5taW5TaXplID8/ICcwJztcbiAgICAgICAgICAgICAgICBwYW5lLm1heEhlaWdodCA9IHBhbmUubWF4U2l6ZSA/PyAnMTAwJSc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmFzc2lnbkZsZXhPcmRlcigpO1xuICAgICAgICBpZiAodGhpcy5wYW5lcy5maWx0ZXIoeCA9PiB4LmNvbGxhcHNlZCkubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgLy8gaWYgYW55IHBhbmVzIGFyZSBjb2xsYXBzZWQsIHJlc2V0IHNpemVzLlxuICAgICAgICAgICAgdGhpcy5yZXNldFBhbmVTaXplcygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBAaW50ZXJuYWxcbiAgICAgKiBUaGlzIG1ldGhvZCByZXNldCBwYW5lIHNpemVzLlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVzZXRQYW5lU2l6ZXMoKSB7XG4gICAgICAgIGlmICh0aGlzLnBhbmVzKSB7XG4gICAgICAgICAgICAvLyBpZiB0eXBlIGlzIGNoYW5nZWQgcnVudGltZSwgc2hvdWxkIHJlc2V0IHNpemVzLlxuICAgICAgICAgICAgdGhpcy5wYW5lcy5mb3JFYWNoKHggPT4ge1xuICAgICAgICAgICAgICAgIHguc2l6ZSA9ICdhdXRvJ1xuICAgICAgICAgICAgICAgIHgubWluV2lkdGggPSAnMCc7XG4gICAgICAgICAgICAgICAgeC5tYXhXaWR0aCA9ICcxMDAlJztcbiAgICAgICAgICAgICAgICB4Lm1pbkhlaWdodCA9ICcwJztcbiAgICAgICAgICAgICAgICB4Lm1heEhlaWdodCA9ICcxMDAlJztcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBAaW50ZXJuYWxcbiAgICAgKiBUaGlzIG1ldGhvZCBhc3NpZ25zIHRoZSBvcmRlciBvZiBlYWNoIHBhbmUuXG4gICAgICovXG4gICAgcHJpdmF0ZSBhc3NpZ25GbGV4T3JkZXIoKSB7XG4gICAgICAgIGxldCBrID0gMDtcbiAgICAgICAgdGhpcy5wYW5lcy5mb3JFYWNoKChwYW5lOiBJZ3hTcGxpdHRlclBhbmVDb21wb25lbnQpID0+IHtcbiAgICAgICAgICAgIHBhbmUub3JkZXIgPSBrO1xuICAgICAgICAgICAgayArPSAyO1xuICAgICAgICB9KTtcbiAgICB9XG59XG5cbmV4cG9ydCBjb25zdCBTUExJVFRFUl9JTlRFUkFDVElPTl9LRVlTID0gbmV3IFNldCgncmlnaHQgZG93biBsZWZ0IHVwIGFycm93cmlnaHQgYXJyb3dkb3duIGFycm93bGVmdCBhcnJvd3VwJy5zcGxpdCgnICcpKTtcblxuLyoqXG4gKiBAaGlkZGVuIEBpbnRlcm5hbFxuICogUmVwcmVzZW50cyB0aGUgZHJhZ2dhYmxlIGJhciB0aGF0IHZpc3VhbGx5IHNlcGFyYXRlcyBwYW5lcyBhbmQgYWxsb3dzIGZvciBjaGFuZ2luZyB0aGVpciBzaXplcy5cbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdpZ3gtc3BsaXR0ZXItYmFyJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vc3BsaXR0ZXItYmFyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtJZ3hEcmFnRGlyZWN0aXZlLCBJZ3hEcmFnSWdub3JlRGlyZWN0aXZlXVxufSlcbmV4cG9ydCBjbGFzcyBJZ3hTcGxpdEJhckNvbXBvbmVudCB7XG4gICAgLyoqXG4gICAgICogU2V0IGNzcyBjbGFzcyB0byB0aGUgaG9zdCBlbGVtZW50LlxuICAgICAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaWd4LXNwbGl0dGVyLWJhci1ob3N0JylcbiAgICBwdWJsaWMgY3NzQ2xhc3MgPSAnaWd4LXNwbGl0dGVyLWJhci1ob3N0JztcblxuICAgIC8qKlxuICAgICAqIEdldHMvU2V0cyB0aGUgb3JpZW50YXRpb24uXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgdHlwZTogU3BsaXR0ZXJUeXBlID0gU3BsaXR0ZXJUeXBlLkhvcml6b250YWw7XG5cbiAgICAvKipcbiAgICAgKiBTZXRzL2dldHMgdGhlIGVsZW1lbnQgb3JkZXIuXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdzdHlsZS5vcmRlcicpXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgb3JkZXIhOiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLnRhYmluZGV4JylcbiAgICBwdWJsaWMgZ2V0IHRhYmluZGV4KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5yZXNpemVEaXNhbGxvd2VkID8gbnVsbCA6IDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLW9yaWVudGF0aW9uJylcbiAgICBwdWJsaWMgZ2V0IG9yaWVudGF0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy50eXBlID09PSBTcGxpdHRlclR5cGUuSG9yaXpvbnRhbCA/ICdob3Jpem9udGFsJyA6ICd2ZXJ0aWNhbCc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgY3Vyc29yKCkge1xuICAgICAgICBpZiAodGhpcy5yZXNpemVEaXNhbGxvd2VkKSB7XG4gICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMudHlwZSA9PT0gU3BsaXR0ZXJUeXBlLkhvcml6b250YWwgPyAnY29sLXJlc2l6ZScgOiAncm93LXJlc2l6ZSc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cy9nZXRzIHRoZSBgU3BsaXRQYW5lQ29tcG9uZW50YCBhc3NvY2lhdGVkIHdpdGggdGhlIGN1cnJlbnQgYFNwbGl0QmFyQ29tcG9uZW50YC5cbiAgICAgKlxuICAgICAqIEBtZW1iZXJvZiBTcGxpdEJhckNvbXBvbmVudFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHBhbmUhOiBJZ3hTcGxpdHRlclBhbmVDb21wb25lbnQ7XG5cbiAgICAvKipcbiAgICAgKiBTZXRzL0dldHMgdGhlIGBTcGxpdFBhbmVDb21wb25lbnRgIHNpYmxpbmcgY29tcG9uZW50cyBhc3NvY2lhdGVkIHdpdGggdGhlIGN1cnJlbnQgYFNwbGl0QmFyQ29tcG9uZW50YC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzaWJsaW5ncyE6IEFycmF5PElneFNwbGl0dGVyUGFuZUNvbXBvbmVudD47XG5cbiAgICAvKipcbiAgICAgKiBBbiBldmVudCB0aGF0IGlzIGVtaXR0ZWQgd2hlbmV2ZXIgd2Ugc3RhcnQgZHJhZ2dpbmcgdGhlIGN1cnJlbnQgYFNwbGl0QmFyQ29tcG9uZW50YC5cbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgbW92ZVN0YXJ0ID0gbmV3IEV2ZW50RW1pdHRlcjxJZ3hTcGxpdHRlclBhbmVDb21wb25lbnQ+KCk7XG5cbiAgICAvKipcbiAgICAgKiBBbiBldmVudCB0aGF0IGlzIGVtaXR0ZWQgd2hpbGUgd2UgYXJlIGRyYWdnaW5nIHRoZSBjdXJyZW50IGBTcGxpdEJhckNvbXBvbmVudGAuXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIG1vdmluZyA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIG1vdmluZ0VuZCA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuXG4gICAgLyoqXG4gICAgICogQSB0ZW1wb3JhcnkgaG9sZGVyIGZvciB0aGUgcG9pbnRlciBjb29yZGluYXRlcy5cbiAgICAgKi9cbiAgICBwcml2YXRlIHN0YXJ0UG9pbnQhOiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgcHJldkJ1dHRvbkhpZGRlbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2libGluZ3NbMF0uY29sbGFwc2VkICYmICF0aGlzLnNpYmxpbmdzWzFdLmNvbGxhcHNlZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24nLCBbJyRldmVudCddKVxuICAgIHB1YmxpYyBrZXlFdmVudChldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBjb25zdCBrZXkgPSBldmVudC5rZXkudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgY29uc3QgY3RybCA9IGV2ZW50LmN0cmxLZXk7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBpZiAoU1BMSVRURVJfSU5URVJBQ1RJT05fS0VZUy5oYXMoa2V5KSkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgICAgICBzd2l0Y2ggKGtleSkge1xuICAgICAgICAgICAgY2FzZSAnYXJyb3d1cCc6XG4gICAgICAgICAgICBjYXNlICd1cCc6XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMudHlwZSA9PT0gU3BsaXR0ZXJUeXBlLlZlcnRpY2FsKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjdHJsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9uQ29sbGFwc2luZyhmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMucmVzaXplRGlzYWxsb3dlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubW92ZVN0YXJ0LmVtaXQodGhpcy5wYW5lKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubW92aW5nLmVtaXQoMTApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnYXJyb3dkb3duJzpcbiAgICAgICAgICAgIGNhc2UgJ2Rvd24nOlxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnR5cGUgPT09IFNwbGl0dGVyVHlwZS5WZXJ0aWNhbCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoY3RybCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vbkNvbGxhcHNpbmcodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMucmVzaXplRGlzYWxsb3dlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubW92ZVN0YXJ0LmVtaXQodGhpcy5wYW5lKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubW92aW5nLmVtaXQoLTEwKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2Fycm93bGVmdCc6XG4gICAgICAgICAgICBjYXNlICdsZWZ0JzpcbiAgICAgICAgICAgICAgICBpZiAodGhpcy50eXBlID09PSBTcGxpdHRlclR5cGUuSG9yaXpvbnRhbCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoY3RybCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vbkNvbGxhcHNpbmcoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLnJlc2l6ZURpc2FsbG93ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1vdmVTdGFydC5lbWl0KHRoaXMucGFuZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1vdmluZy5lbWl0KDEwKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2Fycm93cmlnaHQnOlxuICAgICAgICAgICAgY2FzZSAncmlnaHQnOlxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnR5cGUgPT09IFNwbGl0dGVyVHlwZS5Ib3Jpem9udGFsKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjdHJsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9uQ29sbGFwc2luZyh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5yZXNpemVEaXNhbGxvd2VkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tb3ZlU3RhcnQuZW1pdCh0aGlzLnBhbmUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tb3ZpbmcuZW1pdCgtMTApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIGdldCBkcmFnRGlyKCkge1xuICAgICAgICByZXR1cm4gdGhpcy50eXBlID09PSBTcGxpdHRlclR5cGUuSG9yaXpvbnRhbCA/IERyYWdEaXJlY3Rpb24uVkVSVElDQUwgOiBEcmFnRGlyZWN0aW9uLkhPUklaT05UQUw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IG5leHRCdXR0b25IaWRkZW4oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNpYmxpbmdzWzFdLmNvbGxhcHNlZCAmJiAhdGhpcy5zaWJsaW5nc1swXS5jb2xsYXBzZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgb25EcmFnU3RhcnQoZXZlbnQ6IElEcmFnU3RhcnRFdmVudEFyZ3MpIHtcbiAgICAgICAgaWYgKHRoaXMucmVzaXplRGlzYWxsb3dlZCkge1xuICAgICAgICAgICAgZXZlbnQuY2FuY2VsID0gdHJ1ZTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnN0YXJ0UG9pbnQgPSB0aGlzLnR5cGUgPT09IFNwbGl0dGVyVHlwZS5Ib3Jpem9udGFsID8gZXZlbnQuc3RhcnRYIDogZXZlbnQuc3RhcnRZO1xuICAgICAgICB0aGlzLm1vdmVTdGFydC5lbWl0KHRoaXMucGFuZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgb25EcmFnTW92ZShldmVudDogSURyYWdNb3ZlRXZlbnRBcmdzKSB7XG4gICAgICAgIGNvbnN0IGlzSG9yaXpvbnRhbCA9IHRoaXMudHlwZSA9PT0gU3BsaXR0ZXJUeXBlLkhvcml6b250YWw7XG4gICAgICAgIGNvbnN0IGN1cnIgPSBpc0hvcml6b250YWwgPyBldmVudC5wYWdlWCA6IGV2ZW50LnBhZ2VZO1xuICAgICAgICBjb25zdCBkZWx0YSA9IHRoaXMuc3RhcnRQb2ludCAtIGN1cnI7XG4gICAgICAgIGlmIChkZWx0YSAhPT0gMCkge1xuICAgICAgICAgICAgdGhpcy5tb3ZpbmcuZW1pdChkZWx0YSk7XG4gICAgICAgICAgICBldmVudC5jYW5jZWwgPSB0cnVlO1xuICAgICAgICAgICAgZXZlbnQub3duZXIuZWxlbWVudC5uYXRpdmVFbGVtZW50LnN0eWxlLnRyYW5zZm9ybSA9ICcnO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG9uRHJhZ0VuZChldmVudDogYW55KSB7XG4gICAgICAgIGNvbnN0IGlzSG9yaXpvbnRhbCA9IHRoaXMudHlwZSA9PT0gU3BsaXR0ZXJUeXBlLkhvcml6b250YWw7XG4gICAgICAgIGNvbnN0IGN1cnIgPSBpc0hvcml6b250YWwgPyBldmVudC5wYWdlWCA6IGV2ZW50LnBhZ2VZO1xuICAgICAgICBjb25zdCBkZWx0YSA9IHRoaXMuc3RhcnRQb2ludCAtIGN1cnI7XG4gICAgICAgIGlmIChkZWx0YSAhPT0gMCkge1xuICAgICAgICAgICAgdGhpcy5tb3ZpbmdFbmQuZW1pdChkZWx0YSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IHJlc2l6ZURpc2FsbG93ZWQoKSB7XG4gICAgICAgIGNvbnN0IHJlbGF0ZWRUYWJzID0gdGhpcy5zaWJsaW5ncztcbiAgICAgICAgcmV0dXJuICEhcmVsYXRlZFRhYnMuZmluZCh4ID0+IHgucmVzaXphYmxlID09PSBmYWxzZSB8fCB4LmNvbGxhcHNlZCA9PT0gdHJ1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgb25Db2xsYXBzaW5nKG5leHQ6IGJvb2xlYW4pIHtcbiAgICAgICAgY29uc3QgcHJldlNpYmxpbmcgPSB0aGlzLnNpYmxpbmdzWzBdO1xuICAgICAgICBjb25zdCBuZXh0U2libGluZyA9IHRoaXMuc2libGluZ3NbMV07XG4gICAgICAgIGxldCB0YXJnZXQ7XG4gICAgICAgIGlmIChuZXh0KSB7XG4gICAgICAgICAgICAvLyBpZiBuZXh0IGlzIGNsaWNrZWQgd2hlbiBwcmV2IHBhbmUgaXMgaGlkZGVuLCBzaG93IHByZXYgcGFuZSwgZWxzZSBoaWRlIG5leHQgcGFuZS5cbiAgICAgICAgICAgIHRhcmdldCA9IHByZXZTaWJsaW5nLmNvbGxhcHNlZCA/IHByZXZTaWJsaW5nIDogbmV4dFNpYmxpbmc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBpZiBwcmV2IGlzIGNsaWNrZWQgd2hlbiBuZXh0IHBhbmUgaXMgaGlkZGVuLCBzaG93IG5leHQgcGFuZSwgZWxzZSBoaWRlIHByZXYgcGFuZS5cbiAgICAgICAgICAgIHRhcmdldCA9IG5leHRTaWJsaW5nLmNvbGxhcHNlZCA/IG5leHRTaWJsaW5nIDogcHJldlNpYmxpbmc7XG4gICAgICAgIH1cbiAgICAgICAgdGFyZ2V0LnRvZ2dsZSgpO1xuICAgIH1cbn1cbiIsIjxuZy1jb250ZW50IHNlbGVjdD1cImlneC1zcGxpdHRlci1wYW5lXCI+PC9uZy1jb250ZW50PlxuPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgcGFuZSBvZiBwYW5lczsgbGV0IGxhc3QgPSBsYXN0OyBsZXQgaW5kZXg9IGluZGV4O1wiPlxuICAgIDxpZ3gtc3BsaXR0ZXItYmFyICpuZ0lmPVwiIWxhc3RcIiBbb3JkZXJdPSdwYW5lLm9yZGVyICsgMScgcm9sZT0nc2VwYXJhdG9yJ1xuICAgICAgICAgICAgICAgICAgICBbdHlwZV09XCJ0eXBlXCJcbiAgICAgICAgICAgICAgICAgICAgW3BhbmVdPVwicGFuZVwiXG4gICAgICAgICAgICAgICAgICAgIFtzaWJsaW5nc109J2dldFBhbmVTaWJsaW5nc0J5T3JkZXIocGFuZS5vcmRlciArIDEsIGluZGV4KSdcbiAgICAgICAgICAgICAgICAgICAgKG1vdmVTdGFydCk9XCJvbk1vdmVTdGFydCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgKG1vdmluZyk9XCJvbk1vdmluZygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgKG1vdmluZ0VuZCk9J29uTW92ZUVuZCgkZXZlbnQpJz5cbiAgICA8L2lneC1zcGxpdHRlci1iYXI+XG48L25nLWNvbnRhaW5lcj5cbiIsIjxkaXYgY2xhc3M9XCJpZ3gtc3BsaXR0ZXItYmFyXCJcbiAgICBbY2xhc3MuaWd4LXNwbGl0dGVyLWJhci0tdmVydGljYWxdPSd0eXBlID09PSAwJ1xuICAgIFtzdHlsZS5jdXJzb3JdPSdjdXJzb3InXG4gICAgaWd4RHJhZ1xuICAgIFtnaG9zdF09XCJmYWxzZVwiXG4gICAgW2RyYWdEaXJlY3Rpb25dPSdkcmFnRGlyJ1xuICAgIChkcmFnU3RhcnQpPSdvbkRyYWdTdGFydCgkZXZlbnQpJ1xuICAgIChkcmFnTW92ZSk9XCJvbkRyYWdNb3ZlKCRldmVudClcIlxuICAgIChkcmFnRW5kKT1cIm9uRHJhZ0VuZCgkZXZlbnQpXCJcbj5cbiAgICA8ZGl2IGNsYXNzPVwiaWd4LXNwbGl0dGVyLWJhcl9fZXhwYW5kZXItLXN0YXJ0XCIgaWd4RHJhZ0lnbm9yZSAoY2xpY2spPSdvbkNvbGxhcHNpbmcoZmFsc2UpJyBbaGlkZGVuXT0ncHJldkJ1dHRvbkhpZGRlbic+PC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImlneC1zcGxpdHRlci1iYXJfX2hhbmRsZVwiID48L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiaWd4LXNwbGl0dGVyLWJhcl9fZXhwYW5kZXItLWVuZFwiIGlneERyYWdJZ25vcmUgKGNsaWNrKT0nb25Db2xsYXBzaW5nKHRydWUpJyBbaGlkZGVuXT0nbmV4dEJ1dHRvbkhpZGRlbic+PC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
530
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BsaXR0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL3NwbGl0dGVyL3NwbGl0dGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9zcGxpdHRlci9zcGxpdHRlci5jb21wb25lbnQuaHRtbCIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9zcGxpdHRlci9zcGxpdHRlci1iYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDeEQsT0FBTyxFQUFvQixTQUFTLEVBQUUsZUFBZSxFQUFjLFlBQVksRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFhLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoTCxPQUFPLEVBQUUsYUFBYSxFQUEyQyxnQkFBZ0IsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQy9KLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHlDQUF5QyxDQUFDOztBQUVuRjs7R0FFRztBQUNILE1BQU0sQ0FBTixJQUFZLFlBR1g7QUFIRCxXQUFZLFlBQVk7SUFDcEIsMkRBQVUsQ0FBQTtJQUNWLHVEQUFRLENBQUE7QUFDWixDQUFDLEVBSFcsWUFBWSxLQUFaLFlBQVksUUFHdkI7QUFPRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXlCRztBQU9ILE1BQU0sT0FBTyxvQkFBb0I7SUFpQzdCOzs7T0FHRztJQUNILElBQ1csV0FBVztRQUNsQixPQUFPLElBQUksQ0FBQyxJQUFJLEtBQUssWUFBWSxDQUFDLFVBQVUs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WyJpbXBvcnQgeyBET0NVTUVOVCwgTmdGb3IsIE5nSWYgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQWZ0ZXJDb250ZW50SW5pdCwgQ29tcG9uZW50LCBDb250ZW50Q2hpbGRyZW4sIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSG9zdEJpbmRpbmcsIEhvc3RMaXN0ZW5lciwgSW5qZWN0LCBJbnB1dCwgT3V0cHV0LCBRdWVyeUxpc3QsIGZvcndhcmRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERyYWdEaXJlY3Rpb24sIElEcmFnTW92ZUV2ZW50QXJncywgSURyYWdTdGFydEV2ZW50QXJncywgSWd4RHJhZ0RpcmVjdGl2ZSwgSWd4RHJhZ0lnbm9yZURpcmVjdGl2ZSB9IGZyb20gJy4uL2RpcmVjdGl2ZXMvZHJhZy1kcm9wL2RyYWctZHJvcC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgSWd4U3BsaXR0ZXJQYW5lQ29tcG9uZW50IH0gZnJvbSAnLi9zcGxpdHRlci1wYW5lL3NwbGl0dGVyLXBhbmUuY29tcG9uZW50JztcblxuLyoqXG4gKiBBbiBlbnVtZXJhdGlvbiB0aGF0IGRlZmluZXMgdGhlIGBTcGxpdHRlckNvbXBvbmVudGAgcGFuZXMgb3JpZW50YXRpb24uXG4gKi9cbmV4cG9ydCBlbnVtIFNwbGl0dGVyVHlwZSB7XG4gICAgSG9yaXpvbnRhbCxcbiAgICBWZXJ0aWNhbFxufVxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgSVNwbGl0dGVyQmFyUmVzaXplRXZlbnRBcmdzIHtcbiAgICBwYW5lOiBJZ3hTcGxpdHRlclBhbmVDb21wb25lbnQ7XG4gICAgc2libGluZzogSWd4U3BsaXR0ZXJQYW5lQ29tcG9uZW50O1xufVxuXG4vKipcbiAqIFByb3ZpZGVzIGEgZnJhbWV3b3JrIGZvciBhIHNpbXBsZSBsYXlvdXQsIHNwbGl0dGluZyB0aGUgdmlldyBob3Jpem9udGFsbHkgb3IgdmVydGljYWxseVxuICogaW50byBtdWx0aXBsZSBzbWFsbGVyIHJlc2l6YWJsZSBhbmQgY29sbGFwc2libGUgYXJlYXMuXG4gKlxuICogQGlneE1vZHVsZSBJZ3hTcGxpdHRlck1vZHVsZVxuICpcbiAqIEBpZ3hQYXJlbnQgTGF5b3V0c1xuICpcbiAqIEBpZ3hUaGVtZSBpZ3gtc3BsaXR0ZXItdGhlbWVcbiAqXG4gKiBAaWd4S2V5d29yZHMgc3BsaXR0ZXIgcGFuZXMgbGF5b3V0XG4gKlxuICogQGlneEdyb3VwIHByZXNlbnRhdGlvblxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGBodG1sXG4gKiA8aWd4LXNwbGl0dGVyPlxuICogIDxpZ3gtc3BsaXR0ZXItcGFuZT5cbiAqICAgICAgLi4uXG4gKiAgPC9pZ3gtc3BsaXR0ZXItcGFuZT5cbiAqICA8aWd4LXNwbGl0dGVyLXBhbmU+XG4gKiAgICAgIC4uLlxuICogIDwvaWd4LXNwbGl0dGVyLXBhbmU+XG4gKiA8L2lneC1zcGxpdHRlcj5cbiAqIGBgYFxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2lneC1zcGxpdHRlcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3NwbGl0dGVyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtOZ0ZvciwgTmdJZiwgZm9yd2FyZFJlZigoKSA9PiBJZ3hTcGxpdEJhckNvbXBvbmVudCldXG59KVxuZXhwb3J0IGNsYXNzIElneFNwbGl0dGVyQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCB7XG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgbGlzdCBvZiBzcGxpdHRlciBwYW5lcy5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGNvbnN0IHBhbmVzID0gdGhpcy5zcGxpdHRlci5wYW5lcztcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBAQ29udGVudENoaWxkcmVuKElneFNwbGl0dGVyUGFuZUNvbXBvbmVudCwgeyByZWFkOiBJZ3hTcGxpdHRlclBhbmVDb21wb25lbnQgfSlcbiAgICBwdWJsaWMgcGFuZXMhOiBRdWVyeUxpc3Q8SWd4U3BsaXR0ZXJQYW5lQ29tcG9uZW50PjtcblxuICAgIC8qKlxuICAgICogQGhpZGRlblxuICAgICogQGludGVybmFsXG4gICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1zcGxpdHRlcicpXG4gICAgcHVibGljIGNzc0NsYXNzID0gJ2lneC1zcGxpdHRlcic7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIEBpbnRlcm5hbFxuICAgICAqIEdldHMvU2V0cyB0aGUgYG92ZXJmbG93YCBwcm9wZXJ0eSBvZiB0aGUgY3VycmVudCBzcGxpdHRlci5cbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ3N0eWxlLm92ZXJmbG93JylcbiAgICBwdWJsaWMgb3ZlcmZsb3cgPSAnaGlkZGVuJztcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gQGludGVybmFsXG4gICAgICogU2V0cy9HZXRzIHRoZSBgZGlzcGxheWAgcHJvcGVydHkgb2YgdGhlIGN1cnJlbnQgc3BsaXR0ZXIuXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdzdHlsZS5kaXNwbGF5JylcbiAgICBwdWJsaWMgZGlzcGxheSA9ICdmbGV4JztcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1vcmllbnRhdGlvbicpXG4gICAgcHVibGljIGdldCBvcmllbnRhdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudHlwZSA9PT0gU3BsaXR0ZXJUeXBlLkhvcml6b250YWwgPyAnaG9yaXpvbnRhbCcgOiAndmVydGljYWwnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEV2ZW50IGZpcmVkIHdoZW4gcmVzaXppbmcgb2YgcGFuZXMgc3RhcnRzLlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1zcGxpdHRlciAocmVzaXplU3RhcnQpPSdyZXNpemVTdGFydCgkZXZlbnQpJz5cbiAgICAgKiAgPGlneC1zcGxpdHRlci1wYW5lPi4uLjwvaWd4LXNwbGl0dGVyLXBhbmU+XG4gICAgICogPC9pZ3gtc3BsaXR0ZXI+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHJlc2l6ZVN0YXJ0ID0gbmV3IEV2ZW50RW1pdHRlcjxJU3BsaXR0ZXJCYXJSZXNpemVFdmVudEFyZ3M+KCk7XG5cbiAgICAvKipcbiAgICAgKiBFdmVudCBmaXJlZCB3aGVuIHJlc2l6aW5nIG9mIHBhbmVzIGlzIGluIHByb2dyZXNzLlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1zcGxpdHRlciAocmVzaXppbmcpPSdyZXNpemluZygkZXZlbnQpJz5cbiAgICAgKiAgPGlneC1zcGxpdHRlci1wYW5lPi4uLjwvaWd4LXNwbGl0dGVyLXBhbmU+XG4gICAgICogPC9pZ3gtc3BsaXR0ZXI+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHJlc2l6aW5nID0gbmV3IEV2ZW50RW1pdHRlcjxJU3BsaXR0ZXJCYXJSZXNpemVFdmVudEFyZ3M+KCk7XG5cblxuICAgIC8qKlxuICAgICAqIEV2ZW50IGZpcmVkIHdoZW4gcmVzaXppbmcgb2YgcGFuZXMgZW5kcy5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtc3BsaXR0ZXIgKHJlc2l6ZUVuZCk9J3Jlc2l6ZUVuZCgkZXZlbnQpJz5cbiAgICAgKiAgPGlneC1zcGxpdHRlci1wYW5lPi4uLjwvaWd4LXNwbGl0dGVyLXBhbmU+XG4gICAgICogPC9pZ3gtc3BsaXR0ZXI+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHJlc2l6ZUVuZCA9IG5ldyBFdmVudEVtaXR0ZXI8SVNwbGl0dGVyQmFyUmVzaXplRXZlbnRBcmdzPigpO1xuXG4gICAgcHJpdmF0ZSBfdHlwZTogU3BsaXR0ZXJUeXBlID0gU3BsaXR0ZXJUeXBlLkhvcml6b250YWw7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIEBpbnRlcm5hbFxuICAgICAqIEEgZmllbGQgdGhhdCBob2xkcyB0aGUgaW5pdGlhbCBzaXplIG9mIHRoZSBtYWluIGBJZ3hTcGxpdHRlclBhbmVDb21wb25lbnRgIGluIGVhY2ggcGFpciBvZiBwYW5lcyBkaXZpZGVkIGJ5IGEgc3BsaXR0ZXIgYmFyLlxuICAgICAqL1xuICAgIHByaXZhdGUgaW5pdGlhbFBhbmVTaXplITogbnVtYmVyO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBAaW50ZXJuYWxcbiAgICAgKiBBIGZpZWxkIHRoYXQgaG9sZHMgdGhlIGluaXRpYWwgc2l6ZSBvZiB0aGUgc2libGluZyBwYW5lIGluIGVhY2ggcGFpciBvZiBwYW5lcyBkaXZpZGVkIGJ5IGEgZ3JpcHBlci5cbiAgICAgKiBAbWVtYmVyb2YgU3BsaXR0ZXJDb21wb25lbnRcbiAgICAgKi9cbiAgICBwcml2YXRlIGluaXRpYWxTaWJsaW5nU2l6ZSE6IG51bWJlcjtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gQGludGVybmFsXG4gICAgICogVGhlIG1haW4gcGFuZSBpbiBlYWNoIHBhaXIgb2YgcGFuZXMgZGl2aWRlZCBieSBhIGdyaXBwZXIuXG4gICAgICovXG4gICAgcHJpdmF0ZSBwYW5lITogSWd4U3BsaXR0ZXJQYW5lQ29tcG9uZW50O1xuXG4gICAgLyoqXG4gICAgICogVGhlIHNpYmxpbmcgcGFuZSBpbiBlYWNoIHBhaXIgb2YgcGFuZXMgZGl2aWRlZCBieSBhIHNwbGl0dGVyIGJhci5cbiAgICAgKi9cbiAgICBwcml2YXRlIHNpYmxpbmchOiBJZ3hTcGxpdHRlclBhbmVDb21wb25lbnQ7XG5cbiAgICBjb25zdHJ1Y3RvcihASW5qZWN0KERPQ1VNRU5UKSBwdWJsaWMgZG9jdW1lbnQsIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZikgeyB9XG4gICAgLyoqXG4gICAgICogR2V0cy9TZXRzIHRoZSBzcGxpdHRlciBvcmllbnRhdGlvbi5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtc3BsaXR0ZXIgW3R5cGVdPVwidHlwZVwiPi4uLjwvaWd4LXNwbGl0dGVyPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGdldCB0eXBlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fdHlwZTtcbiAgICB9XG4gICAgcHVibGljIHNldCB0eXBlKHZhbHVlKSB7XG4gICAgICAgIHRoaXMuX3R5cGUgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5yZXNldFBhbmVTaXplcygpO1xuICAgICAgICB0aGlzLnBhbmVzPy5ub3RpZnlPbkNoYW5nZXMoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIEBpbnRlcm5hbFxuICAgICAqIEdldHMgdGhlIGBmbGV4LWRpcmVjdGlvbmAgcHJvcGVydHkgb2YgdGhlIGN1cnJlbnQgYFNwbGl0dGVyQ29tcG9uZW50YC5cbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ3N0eWxlLmZsZXgtZGlyZWN0aW9uJylcbiAgICBwdWJsaWMgZ2V0IGRpcmVjdGlvbigpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy50eXBlID09PSBTcGxpdHRlclR5cGUuSG9yaXpvbnRhbCA/ICdyb3cnIDogJ2NvbHVtbic7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgcHVibGljIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pbml0UGFuZXMoKTtcbiAgICAgICAgdGhpcy5wYW5lcy5jaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmluaXRQYW5lcygpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIEBpbnRlcm5hbFxuICAgICAqIFRoaXMgbWV0aG9kIHBlcmZvcm1zICBpbml0aWFsaXphdGlvbiBsb2dpYyB3aGVuIHRoZSB1c2VyIHN0YXJ0cyBkcmFnZ2luZyB0aGUgc3BsaXR0ZXIgYmFyIGJldHdlZW4gZWFjaCBwYWlyIG9mIHBhbmVzLlxuICAgICAqIEBwYXJhbSBwYW5lIC0gdGhlIG1haW4gcGFuZSBhc3NvY2lhdGVkIHdpdGggdGhlIGN1cnJlbnRseSBkcmFnZ2VkIGJhci5cbiAgICAgKi9cbiAgICBwdWJsaWMgb25Nb3ZlU3RhcnQocGFuZTogSWd4U3BsaXR0ZXJQYW5lQ29tcG9uZW50KSB7XG4gICAgICAgIGNvbnN0IHBhbmVzID0gdGhpcy5wYW5lcy50b0FycmF5KCk7XG4gICAgICAgIHRoaXMucGFuZSA9IHBhbmU7XG4gICAgICAgIHRoaXMuc2libGluZyA9IHBhbmVzW3BhbmVzLmluZGV4T2YodGhpcy5wYW5lKSArIDFdO1xuXG4gICAgICAgIGNvbnN0IHBhbmVSZWN0ID0gdGhpcy5wYW5lLmVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIHRoaXMuaW5pdGlhbFBhbmVTaXplID0gdGhpcy50eXBlID09PSBTcGxpdHRlclR5cGUuSG9yaXpvbnRhbCA/IHBhbmVSZWN0LndpZHRoIDogcGFuZVJlY3QuaGVpZ2h0O1xuXG4gICAgICAgIGNvbnN0IHNpYmxpbmdSZWN0ID0gdGhpcy5zaWJsaW5nLmVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIHRoaXMuaW5pdGlhbFNpYmxpbmdTaXplID0gdGhpcy50eXBlID09PSBTcGxpdHRlclR5cGUuSG9yaXpvbnRhbCA/IHNpYmxpbmdSZWN0LndpZHRoIDogc2libGluZ1JlY3QuaGVpZ2h0O1xuICAgICAgICBjb25zdCBhcmdzOiBJU3BsaXR0ZXJCYXJSZXNpemVFdmVudEFyZ3MgPSB7IHBhbmU6IHRoaXMucGFuZSwgc2libGluZzogdGhpcy5zaWJsaW5nIH07XG4gICAgICAgIHRoaXMucmVzaXplU3RhcnQuZW1pdChhcmdzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIEBpbnRlcm5hbFxuICAgICAqIFRoaXMgbWV0aG9kIHBlcmZvcm1zIGNhbGN1bGF0aW9ucyBjb25jZXJuaW5nIHRoZSBzaXplcyBvZiBlYWNoIHBhaXIgb2YgcGFuZXMgd2hlbiB0aGUgYmFyIGJldHdlZW4gdGhlbSBpcyBkcmFnZ2VkLlxuICAgICAqIEBwYXJhbSBkZWx0YSAtIFRoZSBkaWZmZXJlbmNlIGFsb25nIHRoZSBYIChvciBZKSBheGlzIGJldHdlZW4gdGhlIGluaXRpYWwgYW5kIHRoZSBjdXJyZW50IHBvaW50IHdoZW4gZHJhZ2dpbmcgdGhlIGJhci5cbiAgICAgKi9cbiAgICBwdWJsaWMgb25Nb3ZpbmcoZGVsdGE6IG51bWJlcikge1xuICAgICAgICBjb25zdCBbIHBhbmVTaXplLCBzaWJsaW5nU2l6ZSBdID0gdGhpcy5jYWxjTmV3U2l6ZXMoZGVsdGEpO1xuXG4gICAgICAgIHRoaXMucGFuZS5kcmFnU2l6ZSA9IHBhbmVTaXplICsgJ3B4JztcbiAgICAgICAgdGhpcy5zaWJsaW5nLmRyYWdTaXplID0gc2libGluZ1NpemUgKyAncHgnO1xuXG4gICAgICAgIGNvbnN0IGFyZ3M6IElTcGxpdHRlckJhclJlc2l6ZUV2ZW50QXJncyA9IHsgcGFuZTogdGhpcy5wYW5lLCBzaWJsaW5nOiB0aGlzLnNpYmxpbmcgfTtcbiAgICAgICAgdGhpcy5yZXNpemluZy5lbWl0KGFyZ3MpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbk1vdmVFbmQoZGVsdGE6IG51bWJlcikge1xuICAgICAgICBjb25zdCBbIHBhbmVTaXplLCBzaWJsaW5nU2l6ZSBdID0gdGhpcy5jYWxjTmV3U2l6ZXMoZGVsdGEpO1xuXG4gICAgICAgIGlmICh0aGlzLnBhbmUuaXNQZXJjZW50YWdlU2l6ZSkge1xuICAgICAgICAgICAgLy8gaGFuZGxlICUgcmVzaXplc1xuICAgICAgICAgICAgY29uc3QgdG90YWxTaXplID0gdGhpcy5nZXRUb3RhbFNpemUoKTtcbiAgICAgICAgICAgIGNvbnN0IHBlcmNlbnRQYW5lU2l6ZSA9IChwYW5lU2l6ZSAvIHRvdGFsU2l6ZSkgKiAxMDA7XG4gICAgICAgICAgICB0aGlzLnBhbmUuc2l6ZSA9IHBlcmNlbnRQYW5lU2l6ZSArICclJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIHB4IHJlc2l6ZVxuICAgICAgICAgICAgdGhpcy5wYW5lLnNpemUgPSBwYW5lU2l6ZSArICdweCc7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5zaWJsaW5nLmlzUGVyY2VudGFnZVNpemUpIHtcbiAgICAgICAgICAgIC8vIGhhbmRsZSAlIHJlc2l6ZXNcbiAgICAgICAgICAgIGNvbnN0IHRvdGFsU2l6ZSA9IHRoaXMuZ2V0VG90YWxTaXplKCk7XG4gICAgICAgICAgICBjb25zdCBwZXJjZW50U2libGluZ1BhbmVTaXplID0gKHNpYmxpbmdTaXplIC8gdG90YWxTaXplKSAqIDEwMDtcbiAgICAgICAgICAgIHRoaXMuc2libGluZy5zaXplID0gcGVyY2VudFNpYmxpbmdQYW5lU2l6ZSArICclJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIHB4IHJlc2l6ZVxuICAgICAgICAgICAgdGhpcy5zaWJsaW5nLnNpemUgPSBzaWJsaW5nU2l6ZSArICdweCc7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5wYW5lLmRyYWdTaXplID0gbnVsbDtcbiAgICAgICAgdGhpcy5zaWJsaW5nLmRyYWdTaXplID0gbnVsbDtcblxuICAgICAgICBjb25zdCBhcmdzOiBJU3BsaXR0ZXJCYXJSZXNpemVFdmVudEFyZ3MgPSB7IHBhbmU6IHRoaXMucGFuZSwgc2libGluZzogdGhpcy5zaWJsaW5nIH07XG4gICAgICAgIHRoaXMucmVzaXplRW5kLmVtaXQoYXJncyk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgcHVibGljIGdldFBhbmVTaWJsaW5nc0J5T3JkZXIob3JkZXI6IG51bWJlciwgYmFySW5kZXg6IG51bWJlcik6IEFycmF5PElneFNwbGl0dGVyUGFuZUNvbXBvbmVudD4ge1xuICAgICAgICBjb25zdCBwYW5lcyA9IHRoaXMucGFuZXMudG9BcnJheSgpO1xuICAgICAgICBjb25zdCBwcmV2UGFuZSA9IHBhbmVzW29yZGVyIC0gYmFySW5kZXggLSAxXTtcbiAgICAgICAgY29uc3QgbmV4dFBhbmUgPSBwYW5lc1tvcmRlciAtIGJhckluZGV4XTtcbiAgICAgICAgY29uc3Qgc2libGluZ3MgPSBbcHJldlBhbmUsIG5leHRQYW5lXTtcbiAgICAgICAgcmV0dXJuIHNpYmxpbmdzO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0VG90YWxTaXplKCkge1xuICAgICAgICBjb25zdCBjb21wdXRlZCA9IHRoaXMuZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XG4gICAgICAgIGNvbnN0IHRvdGFsU2l6ZSA9IHRoaXMudHlwZSA9PT0gU3BsaXR0ZXJUeXBlLkhvcml6b250YWwgPyBjb21wdXRlZC5nZXRQcm9wZXJ0eVZhbHVlKCd3aWR0aCcpIDogY29tcHV0ZWQuZ2V0UHJvcGVydHlWYWx1ZSgnaGVpZ2h0Jyk7XG4gICAgICAgIHJldHVybiBwYXJzZUZsb2F0KHRvdGFsU2l6ZSk7XG4gICAgfVxuXG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIEBpbnRlcm5hbFxuICAgICAqIFRoaXMgbWV0aG9kIGluaXRzIHBhbmVzIHdpdGggcHJvcGVydGllcy5cbiAgICAgKi9cbiAgICBwcml2YXRlIGluaXRQYW5lcygpIHtcbiAgICAgICAgdGhpcy5wYW5lcy5mb3JFYWNoKHBhbmUgPT4ge1xuICAgICAgICAgICAgcGFuZS5vd25lciA9IHRoaXM7XG4gICAgICAgICAgICBpZiAodGhpcy50eXBlID09PSBTcGxpdHRlclR5cGUuSG9yaXpvbnRhbCkge1xuICAgICAgICAgICAgICAgIHBhbmUubWluV2lkdGggPSBwYW5lLm1pblNpemUgPz8gJzAnO1xuICAgICAgICAgICAgICAgIHBhbmUubWF4V2lkdGggPSBwYW5lLm1heFNpemUgPz8gJzEwMCUnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBwYW5lLm1pbkhlaWdodCA9IHBhbmUubWluU2l6ZSA/PyAnMCc7XG4gICAgICAgICAgICAgICAgcGFuZS5tYXhIZWlnaHQgPSBwYW5lLm1heFNpemUgPz8gJzEwMCUnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5hc3NpZ25GbGV4T3JkZXIoKTtcbiAgICAgICAgaWYgKHRoaXMucGFuZXMuZmlsdGVyKHggPT4geC5jb2xsYXBzZWQpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIC8vIGlmIGFueSBwYW5lcyBhcmUgY29sbGFwc2VkLCByZXNldCBzaXplcy5cbiAgICAgICAgICAgIHRoaXMucmVzZXRQYW5lU2l6ZXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gQGludGVybmFsXG4gICAgICogVGhpcyBtZXRob2QgcmVzZXQgcGFuZSBzaXplcy5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlc2V0UGFuZVNpemVzKCkge1xuICAgICAgICBpZiAodGhpcy5wYW5lcykge1xuICAgICAgICAgICAgLy8gaWYgdHlwZSBpcyBjaGFuZ2VkIHJ1bnRpbWUsIHNob3VsZCByZXNldCBzaXplcy5cbiAgICAgICAgICAgIHRoaXMucGFuZXMuZm9yRWFjaCh4ID0+IHtcbiAgICAgICAgICAgICAgICB4LnNpemUgPSAnYXV0bydcbiAgICAgICAgICAgICAgICB4Lm1pbldpZHRoID0gJzAnO1xuICAgICAgICAgICAgICAgIHgubWF4V2lkdGggPSAnMTAwJSc7XG4gICAgICAgICAgICAgICAgeC5taW5IZWlnaHQgPSAnMCc7XG4gICAgICAgICAgICAgICAgeC5tYXhIZWlnaHQgPSAnMTAwJSc7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gQGludGVybmFsXG4gICAgICogVGhpcyBtZXRob2QgYXNzaWducyB0aGUgb3JkZXIgb2YgZWFjaCBwYW5lLlxuICAgICAqL1xuICAgIHByaXZhdGUgYXNzaWduRmxleE9yZGVyKCkge1xuICAgICAgICBsZXQgayA9IDA7XG4gICAgICAgIHRoaXMucGFuZXMuZm9yRWFjaCgocGFuZTogSWd4U3BsaXR0ZXJQYW5lQ29tcG9uZW50KSA9PiB7XG4gICAgICAgICAgICBwYW5lLm9yZGVyID0gaztcbiAgICAgICAgICAgIGsgKz0gMjtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBAaW50ZXJuYWxcbiAgICAgKiBDYWxjdWxhdGVzIG5ldyBzaXplcyBmb3IgdGhlIHBhbmVzIGJhc2VkIG9uIG1vdmUgZGVsdGEgYW5kIGluaXRpYWwgc2l6ZXNcbiAgICAgKi9cbiAgICBwcml2YXRlIGNhbGNOZXdTaXplcyhkZWx0YTogbnVtYmVyKTogW251bWJlciwgbnVtYmVyXSB7XG4gICAgICAgIGNvbnN0IG1pbiA9IHBhcnNlSW50KHRoaXMucGFuZS5taW5TaXplLCAxMCkgfHwgMDtcbiAgICAgICAgY29uc3QgbWluU2libGluZyA9IHBhcnNlSW50KHRoaXMuc2libGluZy5taW5TaXplLCAxMCkgfHwgMDtcbiAgICAgICAgY29uc3QgbWF4ID0gcGFyc2VJbnQodGhpcy5wYW5lLm1heFNpemUsIDEwKSB8fCB0aGlzLmluaXRpYWxQYW5lU2l6ZSArIHRoaXMuaW5pdGlhbFNpYmxpbmdTaXplIC0gbWluU2libGluZztcbiAgICAgICAgY29uc3QgbWF4U2libGluZyA9IHBhcnNlSW50KHRoaXMuc2libGluZy5tYXhTaXplLCAxMCkgfHwgdGhpcy5pbml0aWFsUGFuZVNpemUgKyB0aGlzLmluaXRpYWxTaWJsaW5nU2l6ZSAtIG1pbjtcblxuICAgICAgICBpZiAoZGVsdGEgPCAwKSB7XG4gICAgICAgICAgICBjb25zdCBtYXhQb3NzaWJsZURlbHRhID0gTWF0aC5taW4oXG4gICAgICAgICAgICAgICAgbWF4IC0gdGhpcy5pbml0aWFsUGFuZVNpemUsXG4gICAgICAgICAgICAgICAgdGhpcy5pbml0aWFsU2libGluZ1NpemUgLSBtaW5TaWJsaW5nLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgZGVsdGEgPSBNYXRoLm1pbihtYXhQb3NzaWJsZURlbHRhLCBNYXRoLmFicyhkZWx0YSkpICogLTE7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBtYXhQb3NzaWJsZURlbHRhID0gTWF0aC5taW4oXG4gICAgICAgICAgICAgICAgdGhpcy5pbml0aWFsUGFuZVNpemUgLSBtaW4sXG4gICAgICAgICAgICAgICAgbWF4U2libGluZyAtIHRoaXMuaW5pdGlhbFNpYmxpbmdTaXplXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBkZWx0YSA9IE1hdGgubWluKG1heFBvc3NpYmxlRGVsdGEsIE1hdGguYWJzKGRlbHRhKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFt0aGlzLmluaXRpYWxQYW5lU2l6ZSAtIGRlbHRhLCB0aGlzLmluaXRpYWxTaWJsaW5nU2l6ZSArIGRlbHRhXTtcbiAgICB9XG59XG5cbmV4cG9ydCBjb25zdCBTUExJVFRFUl9JTlRFUkFDVElPTl9LRVlTID0gbmV3IFNldCgncmlnaHQgZG93biBsZWZ0IHVwIGFycm93cmlnaHQgYXJyb3dkb3duIGFycm93bGVmdCBhcnJvd3VwJy5zcGxpdCgnICcpKTtcblxuLyoqXG4gKiBAaGlkZGVuIEBpbnRlcm5hbFxuICogUmVwcmVzZW50cyB0aGUgZHJhZ2dhYmxlIGJhciB0aGF0IHZpc3VhbGx5IHNlcGFyYXRlcyBwYW5lcyBhbmQgYWxsb3dzIGZvciBjaGFuZ2luZyB0aGVpciBzaXplcy5cbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdpZ3gtc3BsaXR0ZXItYmFyJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vc3BsaXR0ZXItYmFyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtJZ3hEcmFnRGlyZWN0aXZlLCBJZ3hEcmFnSWdub3JlRGlyZWN0aXZlXVxufSlcbmV4cG9ydCBjbGFzcyBJZ3hTcGxpdEJhckNvbXBvbmVudCB7XG4gICAgLyoqXG4gICAgICogU2V0IGNzcyBjbGFzcyB0byB0aGUgaG9zdCBlbGVtZW50LlxuICAgICAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaWd4LXNwbGl0dGVyLWJhci1ob3N0JylcbiAgICBwdWJsaWMgY3NzQ2xhc3MgPSAnaWd4LXNwbGl0dGVyLWJhci1ob3N0JztcblxuICAgIC8qKlxuICAgICAqIEdldHMvU2V0cyB0aGUgb3JpZW50YXRpb24uXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgdHlwZTogU3BsaXR0ZXJUeXBlID0gU3BsaXR0ZXJUeXBlLkhvcml6b250YWw7XG5cbiAgICAvKipcbiAgICAgKiBTZXRzL2dldHMgdGhlIGVsZW1lbnQgb3JkZXIuXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdzdHlsZS5vcmRlcicpXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgb3JkZXIhOiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLnRhYmluZGV4JylcbiAgICBwdWJsaWMgZ2V0IHRhYmluZGV4KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5yZXNpemVEaXNhbGxvd2VkID8gbnVsbCA6IDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLW9yaWVudGF0aW9uJylcbiAgICBwdWJsaWMgZ2V0IG9yaWVudGF0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy50eXBlID09PSBTcGxpdHRlclR5cGUuSG9yaXpvbnRhbCA/ICdob3Jpem9udGFsJyA6ICd2ZXJ0aWNhbCc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgY3Vyc29yKCkge1xuICAgICAgICBpZiAodGhpcy5yZXNpemVEaXNhbGxvd2VkKSB7XG4gICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMudHlwZSA9PT0gU3BsaXR0ZXJUeXBlLkhvcml6b250YWwgPyAnY29sLXJlc2l6ZScgOiAncm93LXJlc2l6ZSc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cy9nZXRzIHRoZSBgU3BsaXRQYW5lQ29tcG9uZW50YCBhc3NvY2lhdGVkIHdpdGggdGhlIGN1cnJlbnQgYFNwbGl0QmFyQ29tcG9uZW50YC5cbiAgICAgKlxuICAgICAqIEBtZW1iZXJvZiBTcGxpdEJhckNvbXBvbmVudFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHBhbmUhOiBJZ3hTcGxpdHRlclBhbmVDb21wb25lbnQ7XG5cbiAgICAvKipcbiAgICAgKiBTZXRzL0dldHMgdGhlIGBTcGxpdFBhbmVDb21wb25lbnRgIHNpYmxpbmcgY29tcG9uZW50cyBhc3NvY2lhdGVkIHdpdGggdGhlIGN1cnJlbnQgYFNwbGl0QmFyQ29tcG9uZW50YC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzaWJsaW5ncyE6IEFycmF5PElneFNwbGl0dGVyUGFuZUNvbXBvbmVudD47XG5cbiAgICAvKipcbiAgICAgKiBBbiBldmVudCB0aGF0IGlzIGVtaXR0ZWQgd2hlbmV2ZXIgd2Ugc3RhcnQgZHJhZ2dpbmcgdGhlIGN1cnJlbnQgYFNwbGl0QmFyQ29tcG9uZW50YC5cbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgbW92ZVN0YXJ0ID0gbmV3IEV2ZW50RW1pdHRlcjxJZ3hTcGxpdHRlclBhbmVDb21wb25lbnQ+KCk7XG5cbiAgICAvKipcbiAgICAgKiBBbiBldmVudCB0aGF0IGlzIGVtaXR0ZWQgd2hpbGUgd2UgYXJlIGRyYWdnaW5nIHRoZSBjdXJyZW50IGBTcGxpdEJhckNvbXBvbmVudGAuXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIG1vdmluZyA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIG1vdmluZ0VuZCA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuXG4gICAgLyoqXG4gICAgICogQSB0ZW1wb3JhcnkgaG9sZGVyIGZvciB0aGUgcG9pbnRlciBjb29yZGluYXRlcy5cbiAgICAgKi9cbiAgICBwcml2YXRlIHN0YXJ0UG9pbnQhOiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgcHJldkJ1dHRvbkhpZGRlbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2libGluZ3NbMF0uY29sbGFwc2VkICYmICF0aGlzLnNpYmxpbmdzWzFdLmNvbGxhcHNlZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24nLCBbJyRldmVudCddKVxuICAgIHB1YmxpYyBrZXlFdmVudChldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBjb25zdCBrZXkgPSBldmVudC5rZXkudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgY29uc3QgY3RybCA9IGV2ZW50LmN0cmxLZXk7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBpZiAoU1BMSVRURVJfSU5URVJBQ1RJT05fS0VZUy5oYXMoa2V5KSkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgICAgICBzd2l0Y2ggKGtleSkge1xuICAgICAgICAgICAgY2FzZSAnYXJyb3d1cCc6XG4gICAgICAgICAgICBjYXNlICd1cCc6XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMudHlwZSA9PT0gU3BsaXR0ZXJUeXBlLlZlcnRpY2FsKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjdHJsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9uQ29sbGFwc2luZyhmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMucmVzaXplRGlzYWxsb3dlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubW92ZVN0YXJ0LmVtaXQodGhpcy5wYW5lKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubW92aW5nLmVtaXQoMTApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnYXJyb3dkb3duJzpcbiAgICAgICAgICAgIGNhc2UgJ2Rvd24nOlxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnR5cGUgPT09IFNwbGl0dGVyVHlwZS5WZXJ0aWNhbCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoY3RybCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vbkNvbGxhcHNpbmcodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMucmVzaXplRGlzYWxsb3dlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubW92ZVN0YXJ0LmVtaXQodGhpcy5wYW5lKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubW92aW5nLmVtaXQoLTEwKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2Fycm93bGVmdCc6XG4gICAgICAgICAgICBjYXNlICdsZWZ0JzpcbiAgICAgICAgICAgICAgICBpZiAodGhpcy50eXBlID09PSBTcGxpdHRlclR5cGUuSG9yaXpvbnRhbCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoY3RybCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vbkNvbGxhcHNpbmcoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLnJlc2l6ZURpc2FsbG93ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1vdmVTdGFydC5lbWl0KHRoaXMucGFuZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1vdmluZy5lbWl0KDEwKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2Fycm93cmlnaHQnOlxuICAgICAgICAgICAgY2FzZSAncmlnaHQnOlxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnR5cGUgPT09IFNwbGl0dGVyVHlwZS5Ib3Jpem9udGFsKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjdHJsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9uQ29sbGFwc2luZyh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5yZXNpemVEaXNhbGxvd2VkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tb3ZlU3RhcnQuZW1pdCh0aGlzLnBhbmUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tb3ZpbmcuZW1pdCgtMTApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIGdldCBkcmFnRGlyKCkge1xuICAgICAgICByZXR1cm4gdGhpcy50eXBlID09PSBTcGxpdHRlclR5cGUuSG9yaXpvbnRhbCA/IERyYWdEaXJlY3Rpb24uVkVSVElDQUwgOiBEcmFnRGlyZWN0aW9uLkhPUklaT05UQUw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IG5leHRCdXR0b25IaWRkZW4oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNpYmxpbmdzWzFdLmNvbGxhcHNlZCAmJiAhdGhpcy5zaWJsaW5nc1swXS5jb2xsYXBzZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgb25EcmFnU3RhcnQoZXZlbnQ6IElEcmFnU3RhcnRFdmVudEFyZ3MpIHtcbiAgICAgICAgaWYgKHRoaXMucmVzaXplRGlzYWxsb3dlZCkge1xuICAgICAgICAgICAgZXZlbnQuY2FuY2VsID0gdHJ1ZTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnN0YXJ0UG9pbnQgPSB0aGlzLnR5cGUgPT09IFNwbGl0dGVyVHlwZS5Ib3Jpem9udGFsID8gZXZlbnQuc3RhcnRYIDogZXZlbnQuc3RhcnRZO1xuICAgICAgICB0aGlzLm1vdmVTdGFydC5lbWl0KHRoaXMucGFuZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgb25EcmFnTW92ZShldmVudDogSURyYWdNb3ZlRXZlbnRBcmdzKSB7XG4gICAgICAgIGNvbnN0IGlzSG9yaXpvbnRhbCA9IHRoaXMudHlwZSA9PT0gU3BsaXR0ZXJUeXBlLkhvcml6b250YWw7XG4gICAgICAgIGNvbnN0IGN1cnIgPSBpc0hvcml6b250YWwgPyBldmVudC5wYWdlWCA6IGV2ZW50LnBhZ2VZO1xuICAgICAgICBjb25zdCBkZWx0YSA9IHRoaXMuc3RhcnRQb2ludCAtIGN1cnI7XG4gICAgICAgIGlmIChkZWx0YSAhPT0gMCkge1xuICAgICAgICAgICAgdGhpcy5tb3ZpbmcuZW1pdChkZWx0YSk7XG4gICAgICAgICAgICBldmVudC5jYW5jZWwgPSB0cnVlO1xuICAgICAgICAgICAgZXZlbnQub3duZXIuZWxlbWVudC5uYXRpdmVFbGVtZW50LnN0eWxlLnRyYW5zZm9ybSA9ICcnO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG9uRHJhZ0VuZChldmVudDogYW55KSB7XG4gICAgICAgIGNvbnN0IGlzSG9yaXpvbnRhbCA9IHRoaXMudHlwZSA9PT0gU3BsaXR0ZXJUeXBlLkhvcml6b250YWw7XG4gICAgICAgIGNvbnN0IGN1cnIgPSBpc0hvcml6b250YWwgPyBldmVudC5wYWdlWCA6IGV2ZW50LnBhZ2VZO1xuICAgICAgICBjb25zdCBkZWx0YSA9IHRoaXMuc3RhcnRQb2ludCAtIGN1cnI7XG4gICAgICAgIGlmIChkZWx0YSAhPT0gMCkge1xuICAgICAgICAgICAgdGhpcy5tb3ZpbmdFbmQuZW1pdChkZWx0YSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IHJlc2l6ZURpc2FsbG93ZWQoKSB7XG4gICAgICAgIGNvbnN0IHJlbGF0ZWRUYWJzID0gdGhpcy5zaWJsaW5ncztcbiAgICAgICAgcmV0dXJuICEhcmVsYXRlZFRhYnMuZmluZCh4ID0+IHgucmVzaXphYmxlID09PSBmYWxzZSB8fCB4LmNvbGxhcHNlZCA9PT0gdHJ1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgb25Db2xsYXBzaW5nKG5leHQ6IGJvb2xlYW4pIHtcbiAgICAgICAgY29uc3QgcHJldlNpYmxpbmcgPSB0aGlzLnNpYmxpbmdzWzBdO1xuICAgICAgICBjb25zdCBuZXh0U2libGluZyA9IHRoaXMuc2libGluZ3NbMV07XG4gICAgICAgIGxldCB0YXJnZXQ7XG4gICAgICAgIGlmIChuZXh0KSB7XG4gICAgICAgICAgICAvLyBpZiBuZXh0IGlzIGNsaWNrZWQgd2hlbiBwcmV2IHBhbmUgaXMgaGlkZGVuLCBzaG93IHByZXYgcGFuZSwgZWxzZSBoaWRlIG5leHQgcGFuZS5cbiAgICAgICAgICAgIHRhcmdldCA9IHByZXZTaWJsaW5nLmNvbGxhcHNlZCA/IHByZXZTaWJsaW5nIDogbmV4dFNpYmxpbmc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBpZiBwcmV2IGlzIGNsaWNrZWQgd2hlbiBuZXh0IHBhbmUgaXMgaGlkZGVuLCBzaG93IG5leHQgcGFuZSwgZWxzZSBoaWRlIHByZXYgcGFuZS5cbiAgICAgICAgICAgIHRhcmdldCA9IG5leHRTaWJsaW5nLmNvbGxhcHNlZCA/IG5leHRTaWJsaW5nIDogcHJldlNpYmxpbmc7XG4gICAgICAgIH1cbiAgICAgICAgdGFyZ2V0LnRvZ2dsZSgpO1xuICAgIH1cbn1cbiIsIjxuZy1jb250ZW50IHNlbGVjdD1cImlneC1zcGxpdHRlci1wYW5lXCI+PC9uZy1jb250ZW50PlxuPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgcGFuZSBvZiBwYW5lczsgbGV0IGxhc3QgPSBsYXN0OyBsZXQgaW5kZXg9IGluZGV4O1wiPlxuICAgIDxpZ3gtc3BsaXR0ZXItYmFyICpuZ0lmPVwiIWxhc3RcIiBbb3JkZXJdPSdwYW5lLm9yZGVyICsgMScgcm9sZT0nc2VwYXJhdG9yJ1xuICAgICAgICAgICAgICAgICAgICBbdHlwZV09XCJ0eXBlXCJcbiAgICAgICAgICAgICAgICAgICAgW3BhbmVdPVwicGFuZVwiXG4gICAgICAgICAgICAgICAgICAgIFtzaWJsaW5nc109J2dldFBhbmVTaWJsaW5nc0J5T3JkZXIocGFuZS5vcmRlciArIDEsIGluZGV4KSdcbiAgICAgICAgICAgICAgICAgICAgKG1vdmVTdGFydCk9XCJvbk1vdmVTdGFydCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgKG1vdmluZyk9XCJvbk1vdmluZygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgKG1vdmluZ0VuZCk9J29uTW92ZUVuZCgkZXZlbnQpJz5cbiAgICA8L2lneC1zcGxpdHRlci1iYXI+XG48L25nLWNvbnRhaW5lcj5cbiIsIjxkaXYgY2xhc3M9XCJpZ3gtc3BsaXR0ZXItYmFyXCJcbiAgICBbY2xhc3MuaWd4LXNwbGl0dGVyLWJhci0tdmVydGljYWxdPSd0eXBlID09PSAwJ1xuICAgIFtzdHlsZS5jdXJzb3JdPSdjdXJzb3InXG4gICAgaWd4RHJhZ1xuICAgIFtnaG9zdF09XCJmYWxzZVwiXG4gICAgW2RyYWdEaXJlY3Rpb25dPSdkcmFnRGlyJ1xuICAgIChkcmFnU3RhcnQpPSdvbkRyYWdTdGFydCgkZXZlbnQpJ1xuICAgIChkcmFnTW92ZSk9XCJvbkRyYWdNb3ZlKCRldmVudClcIlxuICAgIChkcmFnRW5kKT1cIm9uRHJhZ0VuZCgkZXZlbnQpXCJcbj5cbiAgICA8ZGl2IGNsYXNzPVwiaWd4LXNwbGl0dGVyLWJhcl9fZXhwYW5kZXItLXN0YXJ0XCIgaWd4RHJhZ0lnbm9yZSAoY2xpY2spPSdvbkNvbGxhcHNpbmcoZmFsc2UpJyBbaGlkZGVuXT0ncHJldkJ1dHRvbkhpZGRlbic+PC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImlneC1zcGxpdHRlci1iYXJfX2hhbmRsZVwiID48L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiaWd4LXNwbGl0dGVyLWJhcl9fZXhwYW5kZXItLWVuZFwiIGlneERyYWdJZ25vcmUgKGNsaWNrKT0nb25Db2xsYXBzaW5nKHRydWUpJyBbaGlkZGVuXT0nbmV4dEJ1dHRvbkhpZGRlbic+PC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -4146,7 +4146,14 @@ class IgxBaseExporter {
|
|
|
4146
4146
|
let startIndex = 0;
|
|
4147
4147
|
const key = keys[0];
|
|
4148
4148
|
const records = this.flatRecords.map(r => r.data);
|
|
4149
|
-
const groupedRecords =
|
|
4149
|
+
const groupedRecords = {};
|
|
4150
|
+
records.forEach(obj => {
|
|
4151
|
+
const keyValue = obj[key.name];
|
|
4152
|
+
if (!groupedRecords[keyValue]) {
|
|
4153
|
+
groupedRecords[keyValue] = [];
|
|
4154
|
+
}
|
|
4155
|
+
groupedRecords[keyValue].push(obj);
|
|
4156
|
+
});
|
|
4150
4157
|
if (columnGroupParent) {
|
|
4151
4158
|
const mapKeys = [...this.pivotGridKeyValueMap.keys()];
|
|
4152
4159
|
const mapValues = [...this.pivotGridKeyValueMap.values()];
|
|
@@ -30222,12 +30229,39 @@ class Calendar {
|
|
|
30222
30229
|
getPrevYear(date) {
|
|
30223
30230
|
return this.timedelta(date, TimeDeltaInterval.Year, -1);
|
|
30224
30231
|
}
|
|
30225
|
-
getWeekNumber(date) {
|
|
30226
|
-
|
|
30227
|
-
const
|
|
30232
|
+
getWeekNumber(date, weekStart) {
|
|
30233
|
+
// current year
|
|
30234
|
+
const yearStart = new Date(date.getFullYear(), 0, 1);
|
|
30235
|
+
// first day number of the current year
|
|
30236
|
+
let firstDayOfTheYear = yearStart.getDay() - weekStart;
|
|
30237
|
+
firstDayOfTheYear = firstDayOfTheYear >= 0 ? firstDayOfTheYear : firstDayOfTheYear + 7;
|
|
30228
30238
|
const dayInMilSeconds = 86400000;
|
|
30229
|
-
|
|
30230
|
-
|
|
30239
|
+
// day number in the year
|
|
30240
|
+
const dayNumber = Math.floor((date.getTime() - yearStart.getTime() -
|
|
30241
|
+
(date.getTimezoneOffset() - yearStart.getTimezoneOffset()) * 60000) / dayInMilSeconds) + 1;
|
|
30242
|
+
let weekNumber;
|
|
30243
|
+
// if 01 Jan is Monday to Thursday, is considered 1st week of the year
|
|
30244
|
+
// if 01 Jan starts Friday to Sunday, is considered last week of previous year
|
|
30245
|
+
if (firstDayOfTheYear < 4) {
|
|
30246
|
+
// when calculating the week number we add 1 for the 1st week
|
|
30247
|
+
weekNumber = Math.floor((dayNumber + firstDayOfTheYear - 1) / 7) + 1;
|
|
30248
|
+
}
|
|
30249
|
+
else {
|
|
30250
|
+
// calculating the week number
|
|
30251
|
+
weekNumber = Math.floor((dayNumber + firstDayOfTheYear - 1) / 7);
|
|
30252
|
+
}
|
|
30253
|
+
// if the week number is greater than week 52
|
|
30254
|
+
if (weekNumber > 52) {
|
|
30255
|
+
// next year
|
|
30256
|
+
let nextYear = new Date(date.getFullYear() + 1, 0, 1);
|
|
30257
|
+
// first day of the next year
|
|
30258
|
+
let nextYearFirstDay = nextYear.getDay() - weekStart;
|
|
30259
|
+
nextYearFirstDay = nextYearFirstDay >= 0 ? nextYearFirstDay : nextYearFirstDay + 7;
|
|
30260
|
+
// if 01 Jan of the next year is Monday to Thursday, is considered 1st week of the next year
|
|
30261
|
+
// if 01 Jan is Friday to Sunday, is considered 53rd week of the current year
|
|
30262
|
+
weekNumber = nextYearFirstDay < 4 ? 1 : 53;
|
|
30263
|
+
}
|
|
30264
|
+
return weekNumber;
|
|
30231
30265
|
}
|
|
30232
30266
|
generateICalendarDate(date, year, month) {
|
|
30233
30267
|
return {
|
|
@@ -32199,7 +32233,7 @@ class IgxDaysViewComponent extends IgxCalendarBaseDirective {
|
|
|
32199
32233
|
* @hidden
|
|
32200
32234
|
*/
|
|
32201
32235
|
getWeekNumber(date) {
|
|
32202
|
-
return this.calendarModel.getWeekNumber(date);
|
|
32236
|
+
return this.calendarModel.getWeekNumber(date, this.weekStart);
|
|
32203
32237
|
}
|
|
32204
32238
|
/**
|
|
32205
32239
|
* Returns the locale representation of the date in the days view.
|
|
@@ -86784,9 +86818,8 @@ class IgxSplitterPaneComponent {
|
|
|
86784
86818
|
* Gets the `flex` property of the current `IgxSplitterPaneComponent`.
|
|
86785
86819
|
*/
|
|
86786
86820
|
get flex() {
|
|
86787
|
-
const isAuto = this.size === 'auto' && !this.dragSize;
|
|
86788
|
-
const grow = !isAuto ? 0 : 1;
|
|
86789
86821
|
const size = this.dragSize || this.size;
|
|
86822
|
+
const grow = this.isPercentageSize && !this.dragSize ? 1 : 0;
|
|
86790
86823
|
return `${grow} ${grow} ${size}`;
|
|
86791
86824
|
}
|
|
86792
86825
|
/**
|
|
@@ -87086,30 +87119,14 @@ class IgxSplitterComponent {
|
|
|
87086
87119
|
* @param delta - The difference along the X (or Y) axis between the initial and the current point when dragging the bar.
|
|
87087
87120
|
*/
|
|
87088
87121
|
onMoving(delta) {
|
|
87089
|
-
const
|
|
87090
|
-
const max = parseInt(this.pane.maxSize, 10) || this.initialPaneSize + this.initialSiblingSize;
|
|
87091
|
-
const minSibling = parseInt(this.sibling.minSize, 10) || 0;
|
|
87092
|
-
const maxSibling = parseInt(this.sibling.maxSize, 10) || this.initialPaneSize + this.initialSiblingSize;
|
|
87093
|
-
const paneSize = this.initialPaneSize - delta;
|
|
87094
|
-
const siblingSize = this.initialSiblingSize + delta;
|
|
87095
|
-
if (paneSize < min || paneSize > max || siblingSize < minSibling || siblingSize > maxSibling) {
|
|
87096
|
-
return;
|
|
87097
|
-
}
|
|
87122
|
+
const [paneSize, siblingSize] = this.calcNewSizes(delta);
|
|
87098
87123
|
this.pane.dragSize = paneSize + 'px';
|
|
87099
87124
|
this.sibling.dragSize = siblingSize + 'px';
|
|
87100
87125
|
const args = { pane: this.pane, sibling: this.sibling };
|
|
87101
87126
|
this.resizing.emit(args);
|
|
87102
87127
|
}
|
|
87103
87128
|
onMoveEnd(delta) {
|
|
87104
|
-
const
|
|
87105
|
-
const max = parseInt(this.pane.maxSize, 10) || this.initialPaneSize + this.initialSiblingSize;
|
|
87106
|
-
const minSibling = parseInt(this.sibling.minSize, 10) || 0;
|
|
87107
|
-
const maxSibling = parseInt(this.sibling.maxSize, 10) || this.initialPaneSize + this.initialSiblingSize;
|
|
87108
|
-
const paneSize = this.initialPaneSize - delta;
|
|
87109
|
-
const siblingSize = this.initialSiblingSize + delta;
|
|
87110
|
-
if (paneSize < min || paneSize > max || siblingSize < minSibling || siblingSize > maxSibling) {
|
|
87111
|
-
return;
|
|
87112
|
-
}
|
|
87129
|
+
const [paneSize, siblingSize] = this.calcNewSizes(delta);
|
|
87113
87130
|
if (this.pane.isPercentageSize) {
|
|
87114
87131
|
// handle % resizes
|
|
87115
87132
|
const totalSize = this.getTotalSize();
|
|
@@ -87197,6 +87214,25 @@ class IgxSplitterComponent {
|
|
|
87197
87214
|
k += 2;
|
|
87198
87215
|
});
|
|
87199
87216
|
}
|
|
87217
|
+
/**
|
|
87218
|
+
* @hidden @internal
|
|
87219
|
+
* Calculates new sizes for the panes based on move delta and initial sizes
|
|
87220
|
+
*/
|
|
87221
|
+
calcNewSizes(delta) {
|
|
87222
|
+
const min = parseInt(this.pane.minSize, 10) || 0;
|
|
87223
|
+
const minSibling = parseInt(this.sibling.minSize, 10) || 0;
|
|
87224
|
+
const max = parseInt(this.pane.maxSize, 10) || this.initialPaneSize + this.initialSiblingSize - minSibling;
|
|
87225
|
+
const maxSibling = parseInt(this.sibling.maxSize, 10) || this.initialPaneSize + this.initialSiblingSize - min;
|
|
87226
|
+
if (delta < 0) {
|
|
87227
|
+
const maxPossibleDelta = Math.min(max - this.initialPaneSize, this.initialSiblingSize - minSibling);
|
|
87228
|
+
delta = Math.min(maxPossibleDelta, Math.abs(delta)) * -1;
|
|
87229
|
+
}
|
|
87230
|
+
else {
|
|
87231
|
+
const maxPossibleDelta = Math.min(this.initialPaneSize - min, maxSibling - this.initialSiblingSize);
|
|
87232
|
+
delta = Math.min(maxPossibleDelta, Math.abs(delta));
|
|
87233
|
+
}
|
|
87234
|
+
return [this.initialPaneSize - delta, this.initialSiblingSize + delta];
|
|
87235
|
+
}
|
|
87200
87236
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.2", ngImport: i0, type: IgxSplitterComponent, deps: [{ token: DOCUMENT }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
87201
87237
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.2", type: IgxSplitterComponent, isStandalone: true, selector: "igx-splitter", inputs: { type: "type" }, outputs: { resizeStart: "resizeStart", resizing: "resizing", resizeEnd: "resizeEnd" }, host: { properties: { "class.igx-splitter": "this.cssClass", "style.overflow": "this.overflow", "style.display": "this.display", "attr.aria-orientation": "this.orientation", "style.flex-direction": "this.direction" } }, queries: [{ propertyName: "panes", predicate: IgxSplitterPaneComponent, read: IgxSplitterPaneComponent }], ngImport: i0, template: "<ng-content select=\"igx-splitter-pane\"></ng-content>\n<ng-container *ngFor=\"let pane of panes; let last = last; let index= index;\">\n <igx-splitter-bar *ngIf=\"!last\" [order]='pane.order + 1' role='separator'\n [type]=\"type\"\n [pane]=\"pane\"\n [siblings]='getPaneSiblingsByOrder(pane.order + 1, index)'\n (moveStart)=\"onMoveStart($event)\"\n (moving)=\"onMoving($event)\"\n (movingEnd)='onMoveEnd($event)'>\n </igx-splitter-bar>\n</ng-container>\n", dependencies: [{ kind: "directive", type: i0.forwardRef(function () { return NgFor; }), selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i0.forwardRef(function () { return NgIf; }), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i0.forwardRef(function () { return IgxSplitBarComponent; }), selector: "igx-splitter-bar", inputs: ["type", "order", "pane", "siblings"], outputs: ["moveStart", "moving", "movingEnd"] }] }); }
|
|
87202
87238
|
}
|