@idea-ionic/agenda 6.0.0 → 6.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/esm2020/src/agenda.component.mjs +2 -1
- package/esm2020/src/calendar.component.mjs +1 -1
- package/esm2020/src/calendars.service.mjs +2 -3
- package/fesm2015/idea-ionic-agenda.mjs +2 -3
- package/fesm2015/idea-ionic-agenda.mjs.map +1 -1
- package/fesm2020/idea-ionic-agenda.mjs +2 -3
- package/fesm2020/idea-ionic-agenda.mjs.map +1 -1
- package/package.json +4 -3
package/README.md
CHANGED
|
@@ -15,8 +15,8 @@ _Be sure to install all the requested peer dependencies._
|
|
|
15
15
|
Then, add this imports into the `global.scss` file, after the import on the top of the page:
|
|
16
16
|
|
|
17
17
|
```
|
|
18
|
-
@import '
|
|
19
|
-
@import '
|
|
18
|
+
@import '~angular-calendar/css/angular-calendar.css';
|
|
19
|
+
@import '~@idea-ionic/agenda/css/global.scss';
|
|
20
20
|
```
|
|
21
21
|
|
|
22
22
|
To make sure the translations are loaded into the project:
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Component, ChangeDetectionStrategy, Input, Output, EventEmitter } from '@angular/core';
|
|
2
2
|
import { Subject } from 'rxjs';
|
|
3
3
|
import { CalendarView } from 'angular-calendar';
|
|
4
|
+
// @ts-ignore
|
|
4
5
|
import { isFuture, isToday, isSameDay } from 'date-fns';
|
|
5
6
|
// @ts-ignore
|
|
6
7
|
import ColorParse from 'color-parse';
|
|
@@ -245,4 +246,4 @@ export var EventAttendance;
|
|
|
245
246
|
EventAttendance[EventAttendance["TENTATIVE"] = 1] = "TENTATIVE";
|
|
246
247
|
EventAttendance[EventAttendance["ACCEPTED"] = 2] = "ACCEPTED";
|
|
247
248
|
})(EventAttendance || (EventAttendance = {}));
|
|
248
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdlbmRhLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL21vZHVsZXMvYWdlbmRhL3NyYy9hZ2VuZGEuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vbW9kdWxlcy9hZ2VuZGEvc3JjL2FnZW5kYS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLHVCQUF1QixFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBRXhHLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUF1RSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNySCxPQUFPLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDeEQsYUFBYTtBQUNiLE9BQU8sVUFBVSxNQUFNLGFBQWEsQ0FBQzs7Ozs7O0FBR3JDOztHQUVHO0FBQ0gsTUFBTSxtQkFBbUIsR0FBRyw2QkFBNkIsQ0FBQztBQVExRCxNQUFNLE9BQU8sbUJBQW1CO0lBb0Y5QixZQUFtQixRQUFrQixFQUFTLEVBQXFCLEVBQVMsQ0FBMEI7UUFBbkYsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUFTLE9BQUUsR0FBRixFQUFFLENBQW1CO1FBQVMsTUFBQyxHQUFELENBQUMsQ0FBeUI7UUFuRnRHOztXQUVHO1FBQ2EsV0FBTSxHQUFrQixFQUFFLENBQUM7UUFDM0M7O1dBRUc7UUFDYSxnQkFBVyxHQUFhLEVBQUUsQ0FBQztRQUMzQzs7V0FFRztRQUNhLGlCQUFZLEdBQUcsQ0FBQyxDQUFDO1FBQ2pDOztXQUVHO1FBQ2EsZUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNoQzs7V0FFRztRQUNhLGlCQUFZLEdBQUcsQ0FBQyxDQUFDO1FBQ2pDOztXQUVHO1FBQ2Esb0JBQWUsR0FBRyxLQUFLLENBQUM7UUFDeEM7O1dB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RztBQUNILE1BQU0sQ0FBTixJQUFZLGVBS1g7QUFMRCxXQUFZLGVBQWU7SUFDekIsOERBQWEsQ0FBQTtJQUNiLHFFQUFnQixDQUFBO0lBQ2hCLCtEQUFTLENBQUE7SUFDVCw2REFBUSxDQUFBO0FBQ1YsQ0FBQyxFQUxXLGVBQWUsS0FBZixlQUFlLFFBSzFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFBsYXRmb3JtIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ2FsZW5kYXJFdmVudCwgQ2FsZW5kYXJFdmVudFRpbWVzQ2hhbmdlZEV2ZW50LCBDYWxlbmRhck1vbnRoVmlld0RheSwgQ2FsZW5kYXJWaWV3IH0gZnJvbSAnYW5ndWxhci1jYWxlbmRhcic7XG5pbXBvcnQgeyBpc0Z1dHVyZSwgaXNUb2RheSwgaXNTYW1lRGF5IH0gZnJvbSAnZGF0ZS1mbnMnO1xuLy8gQHRzLWlnbm9yZVxuaW1wb3J0IENvbG9yUGFyc2UgZnJvbSAnY29sb3ItcGFyc2UnO1xuaW1wb3J0IHsgSURFQVRpbkNhblNlcnZpY2UsIElERUFUcmFuc2xhdGlvbnNTZXJ2aWNlIH0gZnJvbSAnQGlkZWEtaW9uaWMvY29tbW9uJztcblxuLyoqXG4gKiBBIGxvY2FsIGZhbGxiYWNrIFVSTCBmb3IgdGhlIGF2YXRhcnMuXG4gKi9cbmNvbnN0IEFWQVRBUl9GQUxMQkFDS19VUkwgPSAnLi9hc3NldHMvaW1ncy9uby1hdmF0YXIuanBnJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaWRlYS1hZ2VuZGEnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGVVcmw6ICdhZ2VuZGEuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnYWdlbmRhLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgSURFQUFnZW5kYUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIC8qKlxuICAgKiBUaGUgZXZlbnRzIHRvIGRpc3BsYXkgaW4gdGhlIGNhbGVuZGFyLlxuICAgKi9cbiAgQElucHV0KCkgcHVibGljIGV2ZW50czogQWdlbmRhRXZlbnRbXSA9IFtdO1xuICAvKipcbiAgICogQW4gYXJyYXkgb2YgZGF5IGluZGV4ZXMgKDAgPSBzdW5kYXksIDEgPSBtb25kYXksIGV0Yy4pIHRoYXQgd2lsbCBiZSBoaWRkZW4gb24gdGhlIHZpZXcuXG4gICAqL1xuICBASW5wdXQoKSBwdWJsaWMgZXhjbHVkZURheXM6IG51bWJlcltdID0gW107XG4gIC8qKlxuICAgKiBUaGUgZGF5IHN0YXJ0IGhvdXJzIGluIDI0IGhvdXIgdGltZS4gTXVzdCBiZSAwLTIzXG4gICAqL1xuICBASW5wdXQoKSBwdWJsaWMgZGF5U3RhcnRIb3VyID0gMDtcbiAgLyoqXG4gICAqIFRoZSBkYXkgc3RhcnQgaG91cnMgaW4gMjQgaG91ciB0aW1lLiBNdXN0IGJlIDAtMjNcbiAgICovXG4gIEBJbnB1dCgpIHB1YmxpYyBkYXlFbmRIb3VyID0gMjM7XG4gIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIHNlZ21lbnRzIGluIGFuIGhvdXIuIE11c3QgZGl2aWRlIGVxdWFsbHkgaW50byA2MC5cbiAgICovXG4gIEBJbnB1dCgpIHB1YmxpYyBob3VyU2VnbWVudHMgPSAyO1xuICAvKipcbiAgICogV2hldGhlciB0byBvcGVuIHRoZSBjdXJyZW50IGRheSdzIGRldGFpbHMgcmlnaHQgYXdheSBpbiBtb250aCB2aWV3LlxuICAgKi9cbiAgQElucHV0KCkgcHVibGljIGFjdGl2ZURheUlzT3BlbiA9IGZhbHNlO1xuICAvKipcbiAgICogVGhlIHZpZXcgbW9kZSBmb3IgdGhlIGFnZW5kYS5cbiAgICovXG4gIEBJbnB1dCgpIHB1YmxpYyB2aWV3OiBDYWxlbmRhclZpZXcgPSBDYWxlbmRhclZpZXcuV2VlaztcbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gYmxvY2sgYW55IGRheS9zbG90IGluIHRoZSBwYXN0LlxuICAgKi9cbiAgQElucHV0KCkgcHVibGljIG9ubHlGdXR1cmUgPSBmYWxzZTtcbiAgLyoqXG4gICAqIFVSTCB0byB0aGUgZmFsbGJhY2sgYXZhdGFyIHRvIHNob3cgaW4gY2FzZSB0aGUgYXZhdGFyIG9mIGFuIGV2ZW50IGlzbid0IGZvdW5kLlxuICAgKi9cbiAgQElucHV0KCkgcHVibGljIGZhbGxiYWNrQXZhdGFyOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUcmlnZ2VyIHdoZW4gYW4gZXZlbnQgaXMgc2VsZWN0ZWQuXG4gICAqL1xuICBAT3V0cHV0KCkgcHVibGljIHNlbGVjdEV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxBZ2VuZGFFdmVudD4oKTtcbiAgLyoqXG4gICAqIFRyaWdnZXIgd2hlbiBhIGRheSBpcyBzZWxlY3RlZC5cbiAgICovXG4gIEBPdXRwdXQoKSBwdWJsaWMgc2VsZWN0RGF5ID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlPigpO1xuICAvKipcbiAgICogVHJpZ2dlciB3aGVuIGEgdGltZSBzbG90IGlzIHNlbGVjdGVkLlxuICAgKi9cbiAgQE91dHB1dCgpIHB1YmxpYyBzZWxlY3RTbG90ID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlPigpO1xuICAvKipcbiAgICogVHJpZ2dlciB3aGVuIGFuIGV2ZW50IGNoYW5nZWQgZGF0ZSAoZHJhZyZkcm9wIG9yIHJlc2l6ZSkuXG4gICAqL1xuICBAT3V0cHV0KCkgcHVibGljIGNoYW5nZUV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxBZ2VuZGFFdmVudD4oKTtcbiAgLyoqXG4gICAqIFRyaWdnZXIgd2hlbiB0aGUgdmlldyBkYXRlIG9mIHJlZmVyZW5jZSBjaGFuZ2VkIChiZWNhdXNlIHdlIG1vdmVkIGluc2lkZSB0aGUgY2FsZW5kYXIpLlxuICAgKi9cbiAgQE91dHB1dCgpIHB1YmxpYyBjaGFuZ2VEYXRlID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlPigpO1xuICAvKipcbiAgICogSGVscGVyIHRvIHVzZSB0aGUgZW51bSBpbiB0aGUgVVguXG4gICAqL1xuICBwdWJsaWMgQ2FsZW5kYXJWaWV3ID0gQ2FsZW5kYXJWaWV3O1xuICAvKipcbiAgICogVGhlIGN1cnJlbnRseSBzZWxlY3RlZCBkYXRlLlxuICAgKi9cbiAgcHVibGljIHZpZXdEYXRlOiBEYXRlID0gbmV3IERhdGUoKTtcbiAgLyoqXG4gICAqIEEgY29udHJvbGxlciB0byByZWZyZXNoIHRoZSBjdXJyZW50IHZpZXcuXG4gICAqL1xuICBwdWJsaWMgcmVmcmVzaDogU3ViamVjdDxhbnk+ID0gbmV3IFN1YmplY3QoKTtcbiAgLyoqXG4gICAqIFRoZSBsb2NhbGUgdXNlZCB0byBmb3JtYXQgZGF0ZXMuXG4gICAqIEBoaWRlXG4gICAqL1xuICBwdWJsaWMgbG9jYWxlOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgc3RhcnRpbmcgZGF5IGZvciB0aGUgd2VlaywgYWNjb3JkaW5nIHRvIHRoZSBsb2NhbGUgKDAgPSBzdW5kYXkpLlxuICAgKiBAaGlkZVxuICAgKi9cbiAgcHVibGljIHdlZWtTdGFydHNPbjogbnVtYmVyO1xuICAvKipcbiAgICogSGVscGVyIHRvIHVzZSB0aGUgZW51bSBpbiB0aGUgVUkuXG4gICAqL1xuICBwdWJsaWMgQXR0ZW5kYW5jZSA9IEV2ZW50QXR0ZW5kYW5jZTtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgcGxhdGZvcm06IFBsYXRmb3JtLCBwdWJsaWMgdGM6IElERUFUaW5DYW5TZXJ2aWNlLCBwdWJsaWMgdDogSURFQVRyYW5zbGF0aW9uc1NlcnZpY2UpIHt9XG4gIHB1YmxpYyBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmxvY2FsZSA9IHRoaXMudC5nZXRDdXJyZW50TGFuZygpO1xuICAgIC8vIGluIGNhc2Ugb2YgSXRhbGlhbiBsb2NhbGUgdGhlIHN0YXJ0aW5nIGRheSBmb3IgdGhlIHdlZWsgaXMgbW9uZGF5ICgxKSwgb3RoZXJ3aXNlIHN1bmRheSAoMClcbiAgICB0aGlzLndlZWtTdGFydHNPbiA9IHRoaXMubG9jYWxlID09PSAnaXQnID8gMSA6IDA7XG4gIH1cblxuICAvKipcbiAgICogUnVuIHNvbWUgY2hlY2tzIGJlZm9yZSB0aGUgbW9udGggdmlldyBpcyByZW5kZXJlZCAoZS5nLiBkaXNhYmxlIGludmFsaWQgZGF5cykuXG4gICAqL1xuICBwdWJsaWMgYmVmb3JlTW9udGhWaWV3UmVuZGVyKHsgYm9keSB9OiB7IGJvZHk6IENhbGVuZGFyTW9udGhWaWV3RGF5W10gfSkge1xuICAgIGJvZHkuZm9yRWFjaChkYXkgPT4ge1xuICAgICAgaWYgKCF0aGlzLmRhdGVJc1ZhbGlkKGRheS5kYXRlLCB0cnVlKSkgZGF5LmNzc0NsYXNzID0gJ2NhbC1kaXNhYmxlZCc7XG4gICAgfSk7XG4gIH1cbiAgLyoqXG4gICAqIFJ1biBzb21lIGNoZWNrcyBiZWZvcmUgdGhlIHdlZWwvZGF5IHZpZXcgaXMgcmVuZGVyZWQgKGUuZy4gZGlzYWJsZSBpbnZhbGlkIGRheXMpLlxuICAgKi9cbiAgcHVibGljIGJlZm9yZVdlZWtPckRheVZpZXdSZW5kZXIoeyBoZWFkZXIgfTogeyBoZWFkZXI6IGFueSB9KSB7XG4gICAgaGVhZGVyLmZvckVhY2goKGRheTogYW55KSA9PiB7XG4gICAgICBpZiAoIXRoaXMuZGF0ZUlzVmFsaWQoZGF5LmRhdGUsIHRydWUpKSBkYXkuY3NzQ2xhc3MgPSAnY2FsLWRpc2FibGVkJztcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayB3aGV0aGVyIGEgZGF0ZSBpcyB2YWxpZCBiYXNlZCBvbiB0aGUgY29uZmlndXJlZCBwYXJhbWV0ZXJzLlxuICAgKi9cbiAgcHVibGljIGRhdGVJc1ZhbGlkKGRhdGU6IERhdGUsIHNhbWVEYXlJc1ZhbGlkPzogYm9vbGVhbik6IGJvb2xlYW4ge1xuICAgIGlmICghdGhpcy5vbmx5RnV0dXJlKSByZXR1cm4gdHJ1ZTtcbiAgICByZXR1cm4gaXNGdXR1cmUoZGF0ZSkgfHwgKHNhbWVEYXlJc1ZhbGlkID8gaXNUb2RheShkYXRlKSA6IGZhbHNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGFuZ2UgdGhlIGN1cnJlbnQgdmlldyBmb3IgdGhlIGFnZW5kYS5cbiAgICovXG4gIHB1YmxpYyBzZXRWaWV3KHZpZXc6IENhbGVuZGFyVmlldykge1xuICAgIHRoaXMudmlldyA9IHZpZXc7XG4gIH1cblxuICAvKipcbiAgICogRW1pdCB0aGUgY2hhbmdlIG9mIHRoZSB2aWV3IGRhdGUgYW5kIGNsb3NlIHRoZSBkZXRhaWwgY29tcG9uZW50IG9mIHRoZSBtb250aCB2aWV3LCBpZiBuZWVkZWQuXG4gICAqL1xuICBwdWJsaWMgdmlld0RhdGVDaGFuZ2VkKG5ld0RhdGU6IERhdGUpIHtcbiAgICBpZiAodGhpcy52aWV3ID09PSBDYWxlbmRhclZpZXcuTW9udGgpIHRoaXMuYWN0aXZlRGF5SXNPcGVuID0gZmFsc2U7XG4gICAgdGhpcy5jaGFuZ2VEYXRlLmVtaXQobmV3RGF0ZSk7XG4gIH1cblxuICAvKipcbiAgICogQSBkYXkgd2FzIHNlbGVjdGVkOiBtYW5hZ2UgdGhlIGRldGFpbGVkIHZpZXcuXG4gICAqL1xuICBwdWJsaWMgY2hhbmdlRGF5KHsgZGF0ZSwgZXZlbnRzIH06IHsgZGF0ZTogRGF0ZTsgZXZlbnRzOiBBZ2VuZGFFdmVudFtdIH0pIHtcbiAgICAvLyBza2lwIGlmIHRoZSBkYXRlIGlzbid0IHZhbGlkXG4gICAgaWYgKCF0aGlzLmRhdGVJc1ZhbGlkKGRhdGUsIHRydWUpKSByZXR1cm47XG4gICAgLy8gaWYgdGhlIHNlbGVjdGVkIGRheSBjaGFuZ2VkLCBpZiB0aGUgbmV3IGRheSBoYXMgZXZlbnRzLCBvcGVuIHRoZSBkZXRhaWxzIGluIG1vbnRoIHZpZXcgKG90aGVyd2lzZSBjbG9zZSB0aGVtKVxuICAgIGlmICgoaXNTYW1lRGF5KHRoaXMudmlld0RhdGUsIGRhdGUpICYmIHRoaXMuYWN0aXZlRGF5SXNPcGVuID09PSB0cnVlKSB8fCAhZXZlbnRzIHx8IGV2ZW50cy5sZW5ndGggPT09IDApXG4gICAgICB0aGlzLmFjdGl2ZURheUlzT3BlbiA9IGZhbHNlO1xuICAgIGVsc2UgdGhpcy5hY3RpdmVEYXlJc09wZW4gPSB0cnVlO1xuICAgIC8vIHVwZGF0ZSB0aGUgY3VycmVudCBkYXRlIGluIHRoZSBhZ2VuZGFcbiAgICB0aGlzLnZpZXdEYXRlID0gZGF0ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgdGltZSBvZiBhbiBldmVudCB3YXMgY2hhbmdlZC5cbiAgICovXG4gIHB1YmxpYyBldmVudFRpbWVzQ2hhbmdlZCh7IGV2ZW50LCBuZXdTdGFydCwgbmV3RW5kIH06IENhbGVuZGFyRXZlbnRUaW1lc0NoYW5nZWRFdmVudCkge1xuICAgIC8vIHVwZGF0ZSB0aGUgZXZlbnRcbiAgICBldmVudC5zdGFydCA9IG5ld1N0YXJ0O1xuICAgIGV2ZW50LmVuZCA9IG5ld0VuZDtcbiAgICAvLyByZS1tYXAgdGhlIGFycmF5IHRvIHRyaWdnZXIgdGhlIFVJIHJlZnJlc2hcbiAgICB0aGlzLmV2ZW50cyA9IHRoaXMuZXZlbnRzLnNsaWNlKCk7XG4gICAgLy8gdHJpZ2dlciB0aGUgZXZlbnQgdG8gdGhlIHBhcmVudCBjb21wb25lbnRcbiAgICB0aGlzLmNoYW5nZUV2ZW50LmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdpdmVuIGEgY29sb3IsIGl0IHJldHVybnMgYW4gb3BhcXVlIHZlcnNpb24gb2YgaXQuXG4gICAqL1xuICBwdWJsaWMgZ2V0QWx0ZXJuYXRlQ29sb3IoY29sb3I6IHN0cmluZywgYW1vdW50OiBudW1iZXIsIG9wYWNpdHk/OiBudW1iZXIpOiBzdHJpbmcge1xuICAgIGNvbnN0IGFsdCA9IENvbG9yUGFyc2UoY29sb3IpO1xuICAgIGNvbnN0IHIgPSBNYXRoLm1heChNYXRoLm1pbigyNTUsIE51bWJlcihhbHQudmFsdWVzWzBdKSArIGFtb3VudCksIDApO1xuICAgIGNvbnN0IGcgPSBNYXRoLm1heChNYXRoLm1pbigyNTUsIE51bWJlcihhbHQudmFsdWVzWzFdKSArIGFtb3VudCksIDApO1xuICAgIGNvbnN0IGIgPSBNYXRoLm1heChNYXRoLm1pbigyNTUsIE51bWJlcihhbHQudmFsdWVzWzJdKSArIGFtb3VudCksIDApO1xuICAgIHJldHVybiBgcmdiYSgke3J9LCAke2d9LCAke2J9LCAke29wYWNpdHkgfHwgMX0pYDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGNvbnRlbnQgb2YgdGhlIHRvb2x0aXAgYmFzZWQgb24gdGhlIGV2ZW50LlxuICAgKi9cbiAgcHVibGljIGdldFRvb2x0aXBDb250ZW50KGV2ZW50OiBBZ2VuZGFFdmVudCk6IHN0cmluZyB7XG4gICAgaWYgKCFldmVudCkgcmV0dXJuICcnO1xuICAgIGxldCBzdHIgPSBldmVudC50aXRsZSA/ICc8Yj4nICsgZXZlbnQudGl0bGUgKyAnPC9iPicgOiAnJztcbiAgICBpZiAoZXZlbnQuZGVzY3JpcHRpb24pIHN0ciA9IHN0ci5jb25jYXQoJzxicj4nLCBldmVudC5kZXNjcmlwdGlvbik7XG4gICAgaWYgKGV2ZW50Lmljb25zKSBldmVudC5pY29ucy5mb3JFYWNoKHggPT4gKHN0ciA9IHN0ci5jb25jYXQoJzxicj4nLCAnPGk+JywgeC50aXRsZSwgJzwvaT4nKSkpO1xuICAgIGlmIChldmVudC5hdmF0YXJzICYmIGV2ZW50LmF2YXRhcnMubGVuZ3RoKSB7XG4gICAgICBzdHIgPSBzdHIuY29uY2F0KCc8YnI+PGJyPn4nKTtcbiAgICAgIGV2ZW50LmF2YXRhcnMuZm9yRWFjaCh4ID0+IChzdHIgPSBzdHIuY29uY2F0KCc8YnI+JywgeC50aXRsZSkpKTtcbiAgICB9XG4gICAgcmV0dXJuIHN0cjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYSBzaG9ydGVuZWQgdmVyc2lvbiBvZiB0aGUgZGVzY3JpcHRpb24gYXMgcHJldmlldy5cbiAgICovXG4gIHB1YmxpYyBnZXRQcmV2aWV3RGVzY3JpcHRpb24oZGVzY3JpcHRpb246IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGRlc2NyaXB0aW9uICYmIGRlc2NyaXB0aW9uLmxlbmd0aCA+IDEwMCA/IGRlc2NyaXB0aW9uLnNsaWNlKDAsIDEwMCkuY29uY2F0KCcuLi4nKSA6IGRlc2NyaXB0aW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIExvYWQgYSBmYWxsYmFjayB1cmwgd2hlbiB0aGUgYXZhdGFyIGlzIG1pc3NpbmcuXG4gICAqL1xuICBwdWJsaWMgbG9hZEZhbGxiYWNrQXZhdGFyKHRhcmdldEltZzogYW55KSB7XG4gICAgY29uc3QgZmFsbGJhY2sgPSB0aGlzLmZhbGxiYWNrQXZhdGFyIHx8IEFWQVRBUl9GQUxMQkFDS19VUkw7XG4gICAgaWYgKHRhcmdldEltZyAmJiB0YXJnZXRJbWcuc3JjICE9PSBmYWxsYmFjaykgdGFyZ2V0SW1nLnNyYyA9IGZhbGxiYWNrO1xuICB9XG59XG5cbi8qKlxuICogQSByaWNoZXIgdmVyc2lvbiBvZiB0aGUgY2xhc3NpYyBDYWxlbmRhckV2ZW50LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFnZW5kYUV2ZW50IGV4dGVuZHMgQ2FsZW5kYXJFdmVudCB7XG4gIC8qKlxuICAgKiBBIGJyaWVmIGRlc2NyaXB0aW9uIGZvciB0aGUgZXZlbnQgKGUuZy4gY3VzdG9tZXIsIGFkZHJlc3MsIGV0Yy4pLlxuICAgKi9cbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgbG9jYXRpb24gb2YgdGhlIGV2ZW50LlxuICAgKi9cbiAgbG9jYXRpb24/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBIGxpc3Qgb2YgVVJMcyBvZiBpbWFnZXMgdG8gc2hvdyBhcyBzbWFsbCBhdmF0YXJzLlxuICAgKi9cbiAgYXZhdGFycz86IHsgaWQ6IHN0cmluZzsgdXJsOiBzdHJpbmc7IHRpdGxlOiBzdHJpbmcgfVtdO1xuICAvKipcbiAgICogQSBsaXN0IG9mIGlvbi1pY29ucyB0byBzaG93LlxuICAgKi9cbiAgaWNvbnM/OiB7IG5hbWU6IHN0cmluZzsgdGl0bGU6IHN0cmluZyB9W107XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBldmVudCBpcyBleHRlcm5hbDsgZXh0ZXJuYWwgZXZlbnRzIGFyZSBsZXNzIGltcG9ydGFudCBVSS13aXNlLlxuICAgKi9cbiAgZXh0ZXJuYWw/OiBib29sZWFuO1xuICAvKipcbiAgICogVGhlIGF0dGVuZGFuY2Ugc3RhdHVzIHRvIHRoaXMgZXZlbnQsIGlmIGFueS5cbiAgICovXG4gIGF0dGVuZGFuY2U/OiBFdmVudEF0dGVuZGFuY2U7XG4gIC8qKlxuICAgKiBBIHN0YW5kYXJkIGFuZCB1bmlxdWUgaWQgZm9yIHRoZSBldmVudCwgdmFsaWQgYWNyb3NzIG11bHRpcGxlIHNvdXJjZXMuXG4gICAqL1xuICBpQ2FsVUlEPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFBvc3NpYmxlIGF0dGVuZGFuY2Ugc3RhdHVzZXMgZm9yIHRoZSBldmVudC5cbiAqL1xuZXhwb3J0IGVudW0gRXZlbnRBdHRlbmRhbmNlIHtcbiAgREVDTElORUQgPSAtMSxcbiAgTkVFRFNfQUNUSU9OID0gMCxcbiAgVEVOVEFUSVZFLFxuICBBQ0NFUFRFRFxufVxuIiwiPGRpdiBjbGFzcz1cImFnZW5kYVwiPlxuICA8IS0tIFRPT0xCQVIgLS0+XG4gIDxpb24tcm93IGNsYXNzPVwiaW9uLWFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgIDxpb24tY29sXG4gICAgICBjbGFzcz1cImlvbi1hbGlnbi1zZWxmLWNlbnRlciBpb24tdGV4dC1yaWdodFwiXG4gICAgICBbc2l6ZV09XCI1XCJcbiAgICAgIFtzaXplU21dPVwiM1wiXG4gICAgICBbcHVzaFNtXT1cIjVcIlxuICAgICAgW3NpemVMZ109XCIyXCJcbiAgICAgIFtwdXNoTGddPVwiOFwiXG4gICAgPlxuICAgICAgPGlvbi1pdGVtIGxpbmVzPVwibm9uZVwiIGNsYXNzPVwiY2FsZW5kYXJWaWV3U2VsZWN0b3JcIj5cbiAgICAgICAgPGlvbi1zZWxlY3RcbiAgICAgICAgICBpbnRlcmZhY2U9XCJwb3BvdmVyXCJcbiAgICAgICAgICBbdmFsdWVdPVwidmlld1wiXG4gICAgICAgICAgKGlvbkNoYW5nZSk9XCIkZXZlbnQ/LmRldGFpbCA/IHNldFZpZXcoJGV2ZW50LmRldGFpbC52YWx1ZSkgOiBudWxsXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxpb24tc2VsZWN0LW9wdGlvbiBbdmFsdWVdPVwiQ2FsZW5kYXJWaWV3Lk1vbnRoXCI+e3sgJ0lERUFfQUdFTkRBLk1PTlRIJyB8IHRyYW5zbGF0ZSB9fTwvaW9uLXNlbGVjdC1vcHRpb24+XG4gICAgICAgICAgPGlvbi1zZWxlY3Qtb3B0aW9uIFt2YWx1ZV09XCJDYWxlbmRhclZpZXcuV2Vla1wiPnt7ICdJREVBX0FHRU5EQS5XRUVLJyB8IHRyYW5zbGF0ZSB9fTwvaW9uLXNlbGVjdC1vcHRpb24+XG4gICAgICAgICAgPGlvbi1zZWxlY3Qtb3B0aW9uIFt2YWx1ZV09XCJDYWxlbmRhclZpZXcuRGF5XCI+e3sgJ0lERUFfQUdFTkRBLkRBWScgfCB0cmFuc2xhdGUgfX08L2lvbi1zZWxlY3Qtb3B0aW9uPlxuICAgICAgICA8L2lvbi1zZWxlY3Q+XG4gICAgICA8L2lvbi1pdGVtPlxuICAgIDwvaW9uLWNvbD5cbiAgICA8aW9uLWNvbFxuICAgICAgY2xhc3M9XCJpb24tYWxpZ24tc2VsZi1jZW50ZXIgaW9uLXRleHQtcmlnaHRcIlxuICAgICAgW3NpemVdPVwiN1wiXG4gICAgICBbc2l6ZVNtXT1cIjRcIlxuICAgICAgW3B1c2hTbV09XCI1XCJcbiAgICAgIFtzaXplTGddPVwiMlwiXG4gICAgICBbcHVzaExnXT1cIjhcIlxuICAgID5cbiAgICAgIDxpb24tYnV0dG9uXG4gICAgICAgIGZpbGw9XCJjbGVhclwiXG4gICAgICAgIGNvbG9yPVwiZGFya1wiXG4gICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgIG13bENhbGVuZGFyUHJldmlvdXNWaWV3XG4gICAgICAgIFt2aWV3XT1cInZpZXdcIlxuICAgICAgICBbKHZpZXdEYXRlKV09XCJ2aWV3RGF0ZVwiXG4gICAgICAgICh2aWV3RGF0ZUNoYW5nZSk9XCJ2aWV3RGF0ZUNoYW5nZWQoJGV2ZW50KVwiXG4gICAgICA+XG4gICAgICAgIDxpb24taWNvbiBuYW1lPVwiY2hldnJvbi1iYWNrLW91dGxpbmVcIiBzbG90PVwiaWNvbi1vbmx5XCI+PC9pb24taWNvbj5cbiAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgIDxpb24tYnV0dG9uXG4gICAgICAgIGZpbGw9XCJjbGVhclwiXG4gICAgICAgIGNvbG9yPVwiZGFya1wiXG4gICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgIG13bENhbGVuZGFyVG9kYXlcbiAgICAgICAgWyh2aWV3RGF0ZSldPVwidmlld0RhdGVcIlxuICAgICAgICAodmlld0RhdGVDaGFuZ2UpPVwidmlld0RhdGVDaGFuZ2VkKCRldmVudClcIlxuICAgICAgPlxuICAgICAgICA8aW9uLWljb24gbmFtZT1cInRvZGF5LW91dGxpbmVcIiBzbG90PVwiaWNvbi1vbmx5XCI+PC9pb24taWNvbj5cbiAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgIDxpb24tYnV0dG9uXG4gICAgICAgIGZpbGw9XCJjbGVhclwiXG4gICAgICAgIGNvbG9yPVwiZGFya1wiXG4gICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgIG13bENhbGVuZGFyTmV4dFZpZXdcbiAgICAgICAgW3ZpZXddPVwidmlld1wiXG4gICAgICAgIFsodmlld0RhdGUpXT1cInZpZXdEYXRlXCJcbiAgICAgICAgKHZpZXdEYXRlQ2hhbmdlKT1cInZpZXdEYXRlQ2hhbmdlZCgkZXZlbnQpXCJcbiAgICAgID5cbiAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJjaGV2cm9uLWZvcndhcmQtb3V0bGluZVwiIHNsb3Q9XCJpY29uLW9ubHlcIj48L2lvbi1pY29uPlxuICAgICAgPC9pb24tYnV0dG9uPlxuICAgIDwvaW9uLWNvbD5cbiAgICA8aW9uLWNvbCBjbGFzcz1cImlvbi1hbGlnbi1zZWxmLWNlbnRlclwiIFtzaXplXT1cIjEyXCIgW3NpemVTbV09XCI1XCIgW3B1bGxTbV09XCI3XCIgW3NpemVMZ109XCI4XCIgW3B1bGxMZ109XCI0XCI+XG4gICAgICA8aDI+e3sgdmlld0RhdGUgfCBjYWxlbmRhckRhdGU6IHZpZXcgKyAnVmlld1RpdGxlJzp0LmdldEN1cnJlbnRMYW5nKCkgfX08L2gyPlxuICAgIDwvaW9uLWNvbD5cbiAgPC9pb24tcm93PlxuICA8IS0tIFRFTVBMQVRFUyAodG91Y2ggb25seSB3aGF0J3MgbmVjZXNzYXJ5IGFuZCBsZWF2ZSBldmVyeXRoaW5nIGVsc2UgYXMgaXQgaXMpIC0tPlxuICA8bmctdGVtcGxhdGUgI2V2ZW50VGl0bGVUZW1wbGF0ZSBsZXQtZXZlbnQ9XCJldmVudFwiIGxldC12aWV3PVwidmlld1wiPlxuICAgIDxzcGFuXG4gICAgICBjbGFzcz1cImNhbC1ldmVudC10aXRsZVwiXG4gICAgICBbY2xhc3Mubm9XcmFwXT1cImV2ZW50LmFsbERheVwiXG4gICAgICBbYXR0ci5hcmlhLWhpZGRlbl09XCJ7fSB8IGNhbGVuZGFyQTExeTogJ2hpZGVFdmVudFRpdGxlJ1wiXG4gICAgPlxuICAgICAge3sgZXZlbnQudGl0bGUgfCBjYWxlbmRhckV2ZW50VGl0bGU6IHZpZXc6ZXZlbnQgfX1cbiAgICAgIDxwICpuZ0lmPVwiIWV2ZW50LmFsbERheVwiPnt7IGdldFByZXZpZXdEZXNjcmlwdGlvbihldmVudC5kZXNjcmlwdGlvbikgfX08L3A+XG4gICAgPC9zcGFuPlxuICA8L25nLXRlbXBsYXRlPlxuICA8bmctdGVtcGxhdGVcbiAgICAjZXZlbnRUZW1wbGF0ZVxuICAgIGxldC13ZWVrRXZlbnQ9XCJ3ZWVrRXZlbnRcIlxuICAgIGxldC10b29sdGlwUGxhY2VtZW50PVwidG9vbHRpcFBsYWNlbWVudFwiXG4gICAgbGV0LWV2ZW50Q2xpY2tlZD1cImV2ZW50Q2xpY2tlZFwiXG4gICAgbGV0LXRvb2x0aXBUZW1wbGF0ZT1cInRvb2x0aXBUZW1wbGF0ZVwiXG4gICAgbGV0LXRvb2x0aXBBcHBlbmRUb0JvZHk9XCJ0b29sdGlwQXBwZW5kVG9Cb2R5XCJcbiAgICBsZXQtdG9vbHRpcERpc2FibGVkPVwidG9vbHRpcERpc2FibGVkXCJcbiAgICBsZXQtdG9vbHRpcERlbGF5PVwidG9vbHRpcERlbGF5XCJcbiAgICBsZXQtY29sdW1uPVwiY29sdW1uXCJcbiAgICBsZXQtZGF5c0luV2Vlaz1cImRheXNJbldlZWtcIlxuICA+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJjYWwtZXZlbnRcIlxuICAgICAgW2NsYXNzLmV4dGVybmFsXT1cIndlZWtFdmVudC5ldmVudC5leHRlcm5hbFwiXG4gICAgICBbY2xhc3MubmVlZHNBY3Rpb25dPVwiQXR0ZW5kYW5jZS5ORUVEU19BQ1RJT04gPT09IHdlZWtFdmVudC5ldmVudC5hdHRlbmRhbmNlXCJcbiAgICAgIFtjbGFzcy5kZWNsaW5lZF09XCJBdHRlbmRhbmNlLkRFQ0xJTkVEID09PSB3ZWVrRXZlbnQuZXZlbnQuYXR0ZW5kYW5jZVwiXG4gICAgICBbY2xhc3MudGVudGF0aXZlXT1cIkF0dGVuZGFuY2UuVEVOVEFUSVZFID09PSB3ZWVrRXZlbnQuZXZlbnQuYXR0ZW5kYW5jZVwiXG4gICAgICBbc3R5bGUuYm9yZGVyLWxlZnQtY29sb3JdPVwid2Vla0V2ZW50LmV2ZW50LmNvbG9yLnByaW1hcnlcIlxuICAgICAgW3N0eWxlLmNvbG9yXT1cImdldEFsdGVybmF0ZUNvbG9yKHdlZWtFdmVudC5ldmVudC5jb2xvci5wcmltYXJ5LCB0Yy5nZXQoJ2RhcmtNb2RlJykgPyA4MCA6IC00MClcIlxuICAgICAgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwiZ2V0QWx0ZXJuYXRlQ29sb3Iod2Vla0V2ZW50LmV2ZW50LmNvbG9yLnByaW1hcnksIHRjLmdldCgnZGFya01vZGUnKSA/IDYwIDogODAsIDAuMilcIlxuICAgICAgW213bENhbGVuZGFyVG9vbHRpcF09XCIhdG9vbHRpcERpc2FibGVkICYmICFwbGF0Zm9ybS5pcygnbW9iaWxlJykgPyBnZXRUb29sdGlwQ29udGVudCh3ZWVrRXZlbnQuZXZlbnQpIDogJydcIlxuICAgICAgW3Rvb2x0aXBQbGFjZW1lbnRdPVwidG9vbHRpcFBsYWNlbWVudFwiXG4gICAgICBbdG9vbHRpcEV2ZW50XT1cIndlZWtFdmVudC50ZW1wRXZlbnQgfHwgd2Vla0V2ZW50LmV2ZW50XCJcbiAgICAgIFt0b29sdGlwVGVtcGxhdGVdPVwidG9vbHRpcFRlbXBsYXRlXCJcbiAgICAgIFt0b29sdGlwQXBwZW5kVG9Cb2R5XT1cInRvb2x0aXBBcHBlbmRUb0JvZHlcIlxuICAgICAgW3Rvb2x0aXBEZWxheV09XCJ0b29sdGlwRGVsYXlcIlxuICAgICAgKG13bENsaWNrKT1cImV2ZW50Q2xpY2tlZC5lbWl0KHsgc291cmNlRXZlbnQ6ICRldmVudCB9KVwiXG4gICAgICAobXdsS2V5ZG93bkVudGVyKT1cImV2ZW50Q2xpY2tlZC5lbWl0KHsgc291cmNlRXZlbnQ6ICRldmVudCB9KVwiXG4gICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgcm9sZT1cImFwcGxpY2F0aW9uXCJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiXG4gICAgICAgIHsgZXZlbnQ6IHdlZWtFdmVudC50ZW1wRXZlbnQgfHwgd2Vla0V2ZW50LmV2ZW50LCBsb2NhbGU6IGxvY2FsZSB9IHwgY2FsZW5kYXJBMTF5OiAnZXZlbnREZXNjcmlwdGlvbidcbiAgICAgIFwiXG4gICAgPlxuICAgICAgPG13bC1jYWxlbmRhci1ldmVudC1hY3Rpb25zIFtldmVudF09XCJ3ZWVrRXZlbnQudGVtcEV2ZW50IHx8IHdlZWtFdmVudC5ldmVudFwiPiA8L213bC1jYWxlbmRhci1ldmVudC1hY3Rpb25zPlxuICAgICAgJm5nc3A7XG4gICAgICA8bXdsLWNhbGVuZGFyLWV2ZW50LXRpdGxlXG4gICAgICAgIFtldmVudF09XCJ3ZWVrRXZlbnQudGVtcEV2ZW50IHx8IHdlZWtFdmVudC5ldmVudFwiXG4gICAgICAgIFtjdXN0b21UZW1wbGF0ZV09XCJldmVudFRpdGxlVGVtcGxhdGVcIlxuICAgICAgICBbdmlld109XCJkYXlzSW5XZWVrID09PSAxID8gJ2RheScgOiAnd2VlaydcIlxuICAgICAgPlxuICAgICAgPC9td2wtY2FsZW5kYXItZXZlbnQtdGl0bGU+XG4gICAgICA8ZGl2IGNsYXNzPVwiZXZlbnRHYWRnZXRzXCIgKm5nSWY9XCIhd2Vla0V2ZW50LmV2ZW50LmFsbERheVwiPlxuICAgICAgICA8aW9uLWljb24gKm5nRm9yPVwibGV0IGljb24gb2Ygd2Vla0V2ZW50LmV2ZW50Lmljb25zXCIgW25hbWVdPVwiaWNvbi5uYW1lXCIgW3RpdGxlXT1cImljb24udGl0bGVcIj48L2lvbi1pY29uPlxuICAgICAgICA8aW9uLWF2YXRhciAqbmdGb3I9XCJsZXQgYXZhdGFyIG9mIHdlZWtFdmVudC5ldmVudC5hdmF0YXJzXCIgW3RpdGxlXT1cImF2YXRhci50aXRsZVwiPlxuICAgICAgICAgIDxpb24taW1nIFtzcmNdPVwiYXZhdGFyLnVybFwiIChpb25FcnJvcik9XCJsb2FkRmFsbGJhY2tBdmF0YXIoJGV2ZW50Py50YXJnZXQpXCI+PC9pb24taW1nPlxuICAgICAgICA8L2lvbi1hdmF0YXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9uZy10ZW1wbGF0ZT5cbiAgPCEtLSBWSUVXUyAtLT5cbiAgPGRpdiBbbmdTd2l0Y2hdPVwidmlld1wiPlxuICAgIDxtd2wtY2FsZW5kYXItbW9udGgtdmlld1xuICAgICAgKm5nU3dpdGNoQ2FzZT1cIkNhbGVuZGFyVmlldy5Nb250aFwiXG4gICAgICBbdmlld0RhdGVdPVwidmlld0RhdGVcIlxuICAgICAgW2V2ZW50c109XCJldmVudHNcIlxuICAgICAgW3JlZnJlc2hdPVwicmVmcmVzaFwiXG4gICAgICBbYWN0aXZlRGF5SXNPcGVuXT1cImFjdGl2ZURheUlzT3BlblwiXG4gICAgICBbbG9jYWxlXT1cImxvY2FsZVwiXG4gICAgICBbZXhjbHVkZURheXNdPVwiZXhjbHVkZURheXNcIlxuICAgICAgW3dlZWtTdGFydHNPbl09XCJ3ZWVrU3RhcnRzT25cIlxuICAgICAgW2V2ZW50VGl0bGVUZW1wbGF0ZV09XCJldmVudFRpdGxlVGVtcGxhdGVcIlxuICAgICAgKGV2ZW50Q2xpY2tlZCk9XCJzZWxlY3RFdmVudC5lbWl0KCRldmVudC5ldmVudClcIlxuICAgICAgKGV2ZW50VGltZXNDaGFuZ2VkKT1cImV2ZW50VGltZXNDaGFuZ2VkKCRldmVudClcIlxuICAgICAgKGRheUNsaWNrZWQpPVwiY2hhbmdlRGF5KCRldmVudC5kYXkpXCJcbiAgICAgIChiZWZvcmVWaWV3UmVuZGVyKT1cImJlZm9yZU1vbnRoVmlld1JlbmRlcigkZXZlbnQpXCJcbiAgICA+XG4gICAgPC9td2wtY2FsZW5kYXItbW9udGgtdmlldz5cbiAgICA8bXdsLWNhbGVuZGFyLXdlZWstdmlld1xuICAgICAgKm5nU3dpdGNoQ2FzZT1cIkNhbGVuZGFyVmlldy5XZWVrXCJcbiAgICAgIFt2aWV3RGF0ZV09XCJ2aWV3RGF0ZVwiXG4gICAgICBbZXZlbnRzXT1cImV2ZW50c1wiXG4gICAgICBbcmVmcmVzaF09XCJyZWZyZXNoXCJcbiAgICAgIFtsb2NhbGVdPVwibG9jYWxlXCJcbiAgICAgIFtleGNsdWRlRGF5c109XCJleGNsdWRlRGF5c1wiXG4gICAgICBbd2Vla1N0YXJ0c09uXT1cIndlZWtTdGFydHNPblwiXG4gICAgICBbZGF5U3RhcnRIb3VyXT1cImRheVN0YXJ0SG91clwiXG4gICAgICBbZGF5RW5kSG91cl09XCJkYXlFbmRIb3VyXCJcbiAgICAgIFtob3VyU2VnbWVudHNdPVwiaG91clNlZ21lbnRzXCJcbiAgICAgIFtldmVudFRlbXBsYXRlXT1cImV2ZW50VGVtcGxhdGVcIlxuICAgICAgKGV2ZW50Q2xpY2tlZCk9XCJzZWxlY3RFdmVudC5lbWl0KCRldmVudC5ldmVudClcIlxuICAgICAgKGV2ZW50VGltZXNDaGFuZ2VkKT1cImV2ZW50VGltZXNDaGFuZ2VkKCRldmVudClcIlxuICAgICAgKGRheUhlYWRlckNsaWNrZWQpPVwiZGF0ZUlzVmFsaWQoJGV2ZW50LmRheS5kYXRlKSA/IHNlbGVjdERheS5lbWl0KCRldmVudC5kYXkuZGF0ZSkgOiBudWxsXCJcbiAgICAgIChob3VyU2VnbWVudENsaWNrZWQpPVwiZGF0ZUlzVmFsaWQoJGV2ZW50LmRhdGUpID8gc2VsZWN0U2xvdC5lbWl0KCRldmVudC5kYXRlKSA6IG51bGxcIlxuICAgICAgKGJlZm9yZVZpZXdSZW5kZXIpPVwiYmVmb3JlV2Vla09yRGF5Vmlld1JlbmRlcigkZXZlbnQpXCJcbiAgICA+XG4gICAgPC9td2wtY2FsZW5kYXItd2Vlay12aWV3PlxuICAgIDxtd2wtY2FsZW5kYXItZGF5LXZpZXdcbiAgICAgICpuZ1N3aXRjaENhc2U9XCJDYWxlbmRhclZpZXcuRGF5XCJcbiAgICAgIFt2aWV3RGF0ZV09XCJ2aWV3RGF0ZVwiXG4gICAgICBbZXZlbnRzXT1cImV2ZW50c1wiXG4gICAgICBbcmVmcmVzaF09XCJyZWZyZXNoXCJcbiAgICAgIFtsb2NhbGVdPVwibG9jYWxlXCJcbiAgICAgIFtkYXlTdGFydEhvdXJdPVwiZGF5U3RhcnRIb3VyXCJcbiAgICAgIFtkYXlFbmRIb3VyXT1cImRheUVuZEhvdXJcIlxuICAgICAgW2hvdXJTZWdtZW50c109XCJob3VyU2VnbWVudHNcIlxuICAgICAgW2V2ZW50VGVtcGxhdGVdPVwiZXZlbnRUZW1wbGF0ZVwiXG4gICAgICAoZXZlbnRDbGlja2VkKT1cInNlbGVjdEV2ZW50LmVtaXQoJGV2ZW50LmV2ZW50KVwiXG4gICAgICAoZXZlbnRUaW1lc0NoYW5nZWQpPVwiZXZlbnRUaW1lc0NoYW5nZWQoJGV2ZW50KVwiXG4gICAgICAoaG91clNlZ21lbnRDbGlja2VkKT1cImRhdGVJc1ZhbGlkKCRldmVudC5kYXRlKSA/IHNlbGVjdFNsb3QuZW1pdCgkZXZlbnQuZGF0ZSkgOiBudWxsXCJcbiAgICAgIChiZWZvcmVWaWV3UmVuZGVyKT1cImJlZm9yZVdlZWtPckRheVZpZXdSZW5kZXIoJGV2ZW50KVwiXG4gICAgPlxuICAgIDwvbXdsLWNhbGVuZGFyLWRheS12aWV3PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
249
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdlbmRhLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL21vZHVsZXMvYWdlbmRhL3NyYy9hZ2VuZGEuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vbW9kdWxlcy9hZ2VuZGEvc3JjL2FnZW5kYS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLHVCQUF1QixFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBRXhHLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUF1RSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNySCxhQUFhO0FBQ2IsT0FBTyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3hELGFBQWE7QUFDYixPQUFPLFVBQVUsTUFBTSxhQUFhLENBQUM7Ozs7OztBQUdyQzs7R0FFRztBQUNILE1BQU0sbUJBQW1CLEdBQUcsNkJBQTZCLENBQUM7QUFRMUQsTUFBTSxPQUFPLG1CQUFtQjtJQW9GOUIsWUFBbUIsUUFBa0IsRUFBUyxFQUFxQixFQUFTLENBQTBCO1FBQW5GLGFBQVEsR0FBUixRQUFRLENBQVU7UUFBUyxPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQUFTLE1BQUMsR0FBRCxDQUFDLENBQXlCO1FBbkZ0Rzs7V0FFRztRQUNhLFdBQU0sR0FBa0IsRUFBRSxDQUFDO1FBQzNDOztXQUVHO1FBQ2EsZ0JBQVcsR0FBYSxFQUFFLENBQUM7UUFDM0M7O1dBRUc7UUFDYSxpQkFBWSxHQUFHLENBQUMsQ0FBQztRQUNqQzs7V0FFRztRQUNhLGVBQVUsR0FBRyxFQUFFLENBQUM7UUFDaEM7O1dBRUc7UUFDYSxpQkFBWSxHQUFHLENBQUMsQ0FBQztRQUNqQzs7V0FFRztRQUNhLG9CQUFlLEdBQUcsS0FBSyxDQUFD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QUFrTFQ7O0dBRUc7QUFDSCxNQUFNLENBQU4sSUFBWSxlQUtYO0FBTEQsV0FBWSxlQUFlO0lBQ3pCLDhEQUFhLENBQUE7SUFDYixxRUFBZ0IsQ0FBQTtJQUNoQiwrREFBUyxDQUFBO0lBQ1QsNkRBQVEsQ0FBQTtBQUNWLENBQUMsRUFMVyxlQUFlLEtBQWYsZUFBZSxRQUsxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBQbGF0Zm9ybSB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IENhbGVuZGFyRXZlbnQsIENhbGVuZGFyRXZlbnRUaW1lc0NoYW5nZWRFdmVudCwgQ2FsZW5kYXJNb250aFZpZXdEYXksIENhbGVuZGFyVmlldyB9IGZyb20gJ2FuZ3VsYXItY2FsZW5kYXInO1xuLy8gQHRzLWlnbm9yZVxuaW1wb3J0IHsgaXNGdXR1cmUsIGlzVG9kYXksIGlzU2FtZURheSB9IGZyb20gJ2RhdGUtZm5zJztcbi8vIEB0cy1pZ25vcmVcbmltcG9ydCBDb2xvclBhcnNlIGZyb20gJ2NvbG9yLXBhcnNlJztcbmltcG9ydCB7IElERUFUaW5DYW5TZXJ2aWNlLCBJREVBVHJhbnNsYXRpb25zU2VydmljZSB9IGZyb20gJ0BpZGVhLWlvbmljL2NvbW1vbic7XG5cbi8qKlxuICogQSBsb2NhbCBmYWxsYmFjayBVUkwgZm9yIHRoZSBhdmF0YXJzLlxuICovXG5jb25zdCBBVkFUQVJfRkFMTEJBQ0tfVVJMID0gJy4vYXNzZXRzL2ltZ3Mvbm8tYXZhdGFyLmpwZyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2lkZWEtYWdlbmRhJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlVXJsOiAnYWdlbmRhLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJ2FnZW5kYS5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIElERUFBZ2VuZGFDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAvKipcbiAgICogVGhlIGV2ZW50cyB0byBkaXNwbGF5IGluIHRoZSBjYWxlbmRhci5cbiAgICovXG4gIEBJbnB1dCgpIHB1YmxpYyBldmVudHM6IEFnZW5kYUV2ZW50W10gPSBbXTtcbiAgLyoqXG4gICAqIEFuIGFycmF5IG9mIGRheSBpbmRleGVzICgwID0gc3VuZGF5LCAxID0gbW9uZGF5LCBldGMuKSB0aGF0IHdpbGwgYmUgaGlkZGVuIG9uIHRoZSB2aWV3LlxuICAgKi9cbiAgQElucHV0KCkgcHVibGljIGV4Y2x1ZGVEYXlzOiBudW1iZXJbXSA9IFtdO1xuICAvKipcbiAgICogVGhlIGRheSBzdGFydCBob3VycyBpbiAyNCBob3VyIHRpbWUuIE11c3QgYmUgMC0yM1xuICAgKi9cbiAgQElucHV0KCkgcHVibGljIGRheVN0YXJ0SG91ciA9IDA7XG4gIC8qKlxuICAgKiBUaGUgZGF5IHN0YXJ0IGhvdXJzIGluIDI0IGhvdXIgdGltZS4gTXVzdCBiZSAwLTIzXG4gICAqL1xuICBASW5wdXQoKSBwdWJsaWMgZGF5RW5kSG91ciA9IDIzO1xuICAvKipcbiAgICogVGhlIG51bWJlciBvZiBzZWdtZW50cyBpbiBhbiBob3VyLiBNdXN0IGRpdmlkZSBlcXVhbGx5IGludG8gNjAuXG4gICAqL1xuICBASW5wdXQoKSBwdWJsaWMgaG91clNlZ21lbnRzID0gMjtcbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gb3BlbiB0aGUgY3VycmVudCBkYXkncyBkZXRhaWxzIHJpZ2h0IGF3YXkgaW4gbW9udGggdmlldy5cbiAgICovXG4gIEBJbnB1dCgpIHB1YmxpYyBhY3RpdmVEYXlJc09wZW4gPSBmYWxzZTtcbiAgLyoqXG4gICAqIFRoZSB2aWV3IG1vZGUgZm9yIHRoZSBhZ2VuZGEuXG4gICAqL1xuICBASW5wdXQoKSBwdWJsaWMgdmlldzogQ2FsZW5kYXJWaWV3ID0gQ2FsZW5kYXJWaWV3LldlZWs7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGJsb2NrIGFueSBkYXkvc2xvdCBpbiB0aGUgcGFzdC5cbiAgICovXG4gIEBJbnB1dCgpIHB1YmxpYyBvbmx5RnV0dXJlID0gZmFsc2U7XG4gIC8qKlxuICAgKiBVUkwgdG8gdGhlIGZhbGxiYWNrIGF2YXRhciB0byBzaG93IGluIGNhc2UgdGhlIGF2YXRhciBvZiBhbiBldmVudCBpc24ndCBmb3VuZC5cbiAgICovXG4gIEBJbnB1dCgpIHB1YmxpYyBmYWxsYmFja0F2YXRhcjogc3RyaW5nO1xuICAvKipcbiAgICogVHJpZ2dlciB3aGVuIGFuIGV2ZW50IGlzIHNlbGVjdGVkLlxuICAgKi9cbiAgQE91dHB1dCgpIHB1YmxpYyBzZWxlY3RFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8QWdlbmRhRXZlbnQ+KCk7XG4gIC8qKlxuICAgKiBUcmlnZ2VyIHdoZW4gYSBkYXkgaXMgc2VsZWN0ZWQuXG4gICAqL1xuICBAT3V0cHV0KCkgcHVibGljIHNlbGVjdERheSA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0ZT4oKTtcbiAgLyoqXG4gICAqIFRyaWdnZXIgd2hlbiBhIHRpbWUgc2xvdCBpcyBzZWxlY3RlZC5cbiAgICovXG4gIEBPdXRwdXQoKSBwdWJsaWMgc2VsZWN0U2xvdCA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0ZT4oKTtcbiAgLyoqXG4gICAqIFRyaWdnZXIgd2hlbiBhbiBldmVudCBjaGFuZ2VkIGRhdGUgKGRyYWcmZHJvcCBvciByZXNpemUpLlxuICAgKi9cbiAgQE91dHB1dCgpIHB1YmxpYyBjaGFuZ2VFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8QWdlbmRhRXZlbnQ+KCk7XG4gIC8qKlxuICAgKiBUcmlnZ2VyIHdoZW4gdGhlIHZpZXcgZGF0ZSBvZiByZWZlcmVuY2UgY2hhbmdlZCAoYmVjYXVzZSB3ZSBtb3ZlZCBpbnNpZGUgdGhlIGNhbGVuZGFyKS5cbiAgICovXG4gIEBPdXRwdXQoKSBwdWJsaWMgY2hhbmdlRGF0ZSA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0ZT4oKTtcbiAgLyoqXG4gICAqIEhlbHBlciB0byB1c2UgdGhlIGVudW0gaW4gdGhlIFVYLlxuICAgKi9cbiAgcHVibGljIENhbGVuZGFyVmlldyA9IENhbGVuZGFyVmlldztcbiAgLyoqXG4gICAqIFRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgZGF0ZS5cbiAgICovXG4gIHB1YmxpYyB2aWV3RGF0ZTogRGF0ZSA9IG5ldyBEYXRlKCk7XG4gIC8qKlxuICAgKiBBIGNvbnRyb2xsZXIgdG8gcmVmcmVzaCB0aGUgY3VycmVudCB2aWV3LlxuICAgKi9cbiAgcHVibGljIHJlZnJlc2g6IFN1YmplY3Q8YW55PiA9IG5ldyBTdWJqZWN0KCk7XG4gIC8qKlxuICAgKiBUaGUgbG9jYWxlIHVzZWQgdG8gZm9ybWF0IGRhdGVzLlxuICAgKiBAaGlkZVxuICAgKi9cbiAgcHVibGljIGxvY2FsZTogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIHN0YXJ0aW5nIGRheSBmb3IgdGhlIHdlZWssIGFjY29yZGluZyB0byB0aGUgbG9jYWxlICgwID0gc3VuZGF5KS5cbiAgICogQGhpZGVcbiAgICovXG4gIHB1YmxpYyB3ZWVrU3RhcnRzT246IG51bWJlcjtcbiAgLyoqXG4gICAqIEhlbHBlciB0byB1c2UgdGhlIGVudW0gaW4gdGhlIFVJLlxuICAgKi9cbiAgcHVibGljIEF0dGVuZGFuY2UgPSBFdmVudEF0dGVuZGFuY2U7XG5cbiAgY29uc3RydWN0b3IocHVibGljIHBsYXRmb3JtOiBQbGF0Zm9ybSwgcHVibGljIHRjOiBJREVBVGluQ2FuU2VydmljZSwgcHVibGljIHQ6IElERUFUcmFuc2xhdGlvbnNTZXJ2aWNlKSB7fVxuICBwdWJsaWMgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5sb2NhbGUgPSB0aGlzLnQuZ2V0Q3VycmVudExhbmcoKTtcbiAgICAvLyBpbiBjYXNlIG9mIEl0YWxpYW4gbG9jYWxlIHRoZSBzdGFydGluZyBkYXkgZm9yIHRoZSB3ZWVrIGlzIG1vbmRheSAoMSksIG90aGVyd2lzZSBzdW5kYXkgKDApXG4gICAgdGhpcy53ZWVrU3RhcnRzT24gPSB0aGlzLmxvY2FsZSA9PT0gJ2l0JyA/IDEgOiAwO1xuICB9XG5cbiAgLyoqXG4gICAqIFJ1biBzb21lIGNoZWNrcyBiZWZvcmUgdGhlIG1vbnRoIHZpZXcgaXMgcmVuZGVyZWQgKGUuZy4gZGlzYWJsZSBpbnZhbGlkIGRheXMpLlxuICAgKi9cbiAgcHVibGljIGJlZm9yZU1vbnRoVmlld1JlbmRlcih7IGJvZHkgfTogeyBib2R5OiBDYWxlbmRhck1vbnRoVmlld0RheVtdIH0pIHtcbiAgICBib2R5LmZvckVhY2goZGF5ID0+IHtcbiAgICAgIGlmICghdGhpcy5kYXRlSXNWYWxpZChkYXkuZGF0ZSwgdHJ1ZSkpIGRheS5jc3NDbGFzcyA9ICdjYWwtZGlzYWJsZWQnO1xuICAgIH0pO1xuICB9XG4gIC8qKlxuICAgKiBSdW4gc29tZSBjaGVja3MgYmVmb3JlIHRoZSB3ZWVsL2RheSB2aWV3IGlzIHJlbmRlcmVkIChlLmcuIGRpc2FibGUgaW52YWxpZCBkYXlzKS5cbiAgICovXG4gIHB1YmxpYyBiZWZvcmVXZWVrT3JEYXlWaWV3UmVuZGVyKHsgaGVhZGVyIH06IHsgaGVhZGVyOiBhbnkgfSkge1xuICAgIGhlYWRlci5mb3JFYWNoKChkYXk6IGFueSkgPT4ge1xuICAgICAgaWYgKCF0aGlzLmRhdGVJc1ZhbGlkKGRheS5kYXRlLCB0cnVlKSkgZGF5LmNzc0NsYXNzID0gJ2NhbC1kaXNhYmxlZCc7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgd2hldGhlciBhIGRhdGUgaXMgdmFsaWQgYmFzZWQgb24gdGhlIGNvbmZpZ3VyZWQgcGFyYW1ldGVycy5cbiAgICovXG4gIHB1YmxpYyBkYXRlSXNWYWxpZChkYXRlOiBEYXRlLCBzYW1lRGF5SXNWYWxpZD86IGJvb2xlYW4pOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMub25seUZ1dHVyZSkgcmV0dXJuIHRydWU7XG4gICAgcmV0dXJuIGlzRnV0dXJlKGRhdGUpIHx8IChzYW1lRGF5SXNWYWxpZCA/IGlzVG9kYXkoZGF0ZSkgOiBmYWxzZSk7XG4gIH1cblxuICAvKipcbiAgICogQ2hhbmdlIHRoZSBjdXJyZW50IHZpZXcgZm9yIHRoZSBhZ2VuZGEuXG4gICAqL1xuICBwdWJsaWMgc2V0Vmlldyh2aWV3OiBDYWxlbmRhclZpZXcpIHtcbiAgICB0aGlzLnZpZXcgPSB2aWV3O1xuICB9XG5cbiAgLyoqXG4gICAqIEVtaXQgdGhlIGNoYW5nZSBvZiB0aGUgdmlldyBkYXRlIGFuZCBjbG9zZSB0aGUgZGV0YWlsIGNvbXBvbmVudCBvZiB0aGUgbW9udGggdmlldywgaWYgbmVlZGVkLlxuICAgKi9cbiAgcHVibGljIHZpZXdEYXRlQ2hhbmdlZChuZXdEYXRlOiBEYXRlKSB7XG4gICAgaWYgKHRoaXMudmlldyA9PT0gQ2FsZW5kYXJWaWV3Lk1vbnRoKSB0aGlzLmFjdGl2ZURheUlzT3BlbiA9IGZhbHNlO1xuICAgIHRoaXMuY2hhbmdlRGF0ZS5lbWl0KG5ld0RhdGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEEgZGF5IHdhcyBzZWxlY3RlZDogbWFuYWdlIHRoZSBkZXRhaWxlZCB2aWV3LlxuICAgKi9cbiAgcHVibGljIGNoYW5nZURheSh7IGRhdGUsIGV2ZW50cyB9OiB7IGRhdGU6IERhdGU7IGV2ZW50czogQWdlbmRhRXZlbnRbXSB9KSB7XG4gICAgLy8gc2tpcCBpZiB0aGUgZGF0ZSBpc24ndCB2YWxpZFxuICAgIGlmICghdGhpcy5kYXRlSXNWYWxpZChkYXRlLCB0cnVlKSkgcmV0dXJuO1xuICAgIC8vIGlmIHRoZSBzZWxlY3RlZCBkYXkgY2hhbmdlZCwgaWYgdGhlIG5ldyBkYXkgaGFzIGV2ZW50cywgb3BlbiB0aGUgZGV0YWlscyBpbiBtb250aCB2aWV3IChvdGhlcndpc2UgY2xvc2UgdGhlbSlcbiAgICBpZiAoKGlzU2FtZURheSh0aGlzLnZpZXdEYXRlLCBkYXRlKSAmJiB0aGlzLmFjdGl2ZURheUlzT3BlbiA9PT0gdHJ1ZSkgfHwgIWV2ZW50cyB8fCBldmVudHMubGVuZ3RoID09PSAwKVxuICAgICAgdGhpcy5hY3RpdmVEYXlJc09wZW4gPSBmYWxzZTtcbiAgICBlbHNlIHRoaXMuYWN0aXZlRGF5SXNPcGVuID0gdHJ1ZTtcbiAgICAvLyB1cGRhdGUgdGhlIGN1cnJlbnQgZGF0ZSBpbiB0aGUgYWdlbmRhXG4gICAgdGhpcy52aWV3RGF0ZSA9IGRhdGU7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHRpbWUgb2YgYW4gZXZlbnQgd2FzIGNoYW5nZWQuXG4gICAqL1xuICBwdWJsaWMgZXZlbnRUaW1lc0NoYW5nZWQoeyBldmVudCwgbmV3U3RhcnQsIG5ld0VuZCB9OiBDYWxlbmRhckV2ZW50VGltZXNDaGFuZ2VkRXZlbnQpIHtcbiAgICAvLyB1cGRhdGUgdGhlIGV2ZW50XG4gICAgZXZlbnQuc3RhcnQgPSBuZXdTdGFydDtcbiAgICBldmVudC5lbmQgPSBuZXdFbmQ7XG4gICAgLy8gcmUtbWFwIHRoZSBhcnJheSB0byB0cmlnZ2VyIHRoZSBVSSByZWZyZXNoXG4gICAgdGhpcy5ldmVudHMgPSB0aGlzLmV2ZW50cy5zbGljZSgpO1xuICAgIC8vIHRyaWdnZXIgdGhlIGV2ZW50IHRvIHRoZSBwYXJlbnQgY29tcG9uZW50XG4gICAgdGhpcy5jaGFuZ2VFdmVudC5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHaXZlbiBhIGNvbG9yLCBpdCByZXR1cm5zIGFuIG9wYXF1ZSB2ZXJzaW9uIG9mIGl0LlxuICAgKi9cbiAgcHVibGljIGdldEFsdGVybmF0ZUNvbG9yKGNvbG9yOiBzdHJpbmcsIGFtb3VudDogbnVtYmVyLCBvcGFjaXR5PzogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBjb25zdCBhbHQgPSBDb2xvclBhcnNlKGNvbG9yKTtcbiAgICBjb25zdCByID0gTWF0aC5tYXgoTWF0aC5taW4oMjU1LCBOdW1iZXIoYWx0LnZhbHVlc1swXSkgKyBhbW91bnQpLCAwKTtcbiAgICBjb25zdCBnID0gTWF0aC5tYXgoTWF0aC5taW4oMjU1LCBOdW1iZXIoYWx0LnZhbHVlc1sxXSkgKyBhbW91bnQpLCAwKTtcbiAgICBjb25zdCBiID0gTWF0aC5tYXgoTWF0aC5taW4oMjU1LCBOdW1iZXIoYWx0LnZhbHVlc1syXSkgKyBhbW91bnQpLCAwKTtcbiAgICByZXR1cm4gYHJnYmEoJHtyfSwgJHtnfSwgJHtifSwgJHtvcGFjaXR5IHx8IDF9KWA7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBjb250ZW50IG9mIHRoZSB0b29sdGlwIGJhc2VkIG9uIHRoZSBldmVudC5cbiAgICovXG4gIHB1YmxpYyBnZXRUb29sdGlwQ29udGVudChldmVudDogQWdlbmRhRXZlbnQpOiBzdHJpbmcge1xuICAgIGlmICghZXZlbnQpIHJldHVybiAnJztcbiAgICBsZXQgc3RyID0gZXZlbnQudGl0bGUgPyAnPGI+JyArIGV2ZW50LnRpdGxlICsgJzwvYj4nIDogJyc7XG4gICAgaWYgKGV2ZW50LmRlc2NyaXB0aW9uKSBzdHIgPSBzdHIuY29uY2F0KCc8YnI+JywgZXZlbnQuZGVzY3JpcHRpb24pO1xuICAgIGlmIChldmVudC5pY29ucykgZXZlbnQuaWNvbnMuZm9yRWFjaCh4ID0+IChzdHIgPSBzdHIuY29uY2F0KCc8YnI+JywgJzxpPicsIHgudGl0bGUsICc8L2k+JykpKTtcbiAgICBpZiAoZXZlbnQuYXZhdGFycyAmJiBldmVudC5hdmF0YXJzLmxlbmd0aCkge1xuICAgICAgc3RyID0gc3RyLmNvbmNhdCgnPGJyPjxicj5+Jyk7XG4gICAgICBldmVudC5hdmF0YXJzLmZvckVhY2goeCA9PiAoc3RyID0gc3RyLmNvbmNhdCgnPGJyPicsIHgudGl0bGUpKSk7XG4gICAgfVxuICAgIHJldHVybiBzdHI7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGEgc2hvcnRlbmVkIHZlcnNpb24gb2YgdGhlIGRlc2NyaXB0aW9uIGFzIHByZXZpZXcuXG4gICAqL1xuICBwdWJsaWMgZ2V0UHJldmlld0Rlc2NyaXB0aW9uKGRlc2NyaXB0aW9uOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBkZXNjcmlwdGlvbiAmJiBkZXNjcmlwdGlvbi5sZW5ndGggPiAxMDAgPyBkZXNjcmlwdGlvbi5zbGljZSgwLCAxMDApLmNvbmNhdCgnLi4uJykgOiBkZXNjcmlwdGlvbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb2FkIGEgZmFsbGJhY2sgdXJsIHdoZW4gdGhlIGF2YXRhciBpcyBtaXNzaW5nLlxuICAgKi9cbiAgcHVibGljIGxvYWRGYWxsYmFja0F2YXRhcih0YXJnZXRJbWc6IGFueSkge1xuICAgIGNvbnN0IGZhbGxiYWNrID0gdGhpcy5mYWxsYmFja0F2YXRhciB8fCBBVkFUQVJfRkFMTEJBQ0tfVVJMO1xuICAgIGlmICh0YXJnZXRJbWcgJiYgdGFyZ2V0SW1nLnNyYyAhPT0gZmFsbGJhY2spIHRhcmdldEltZy5zcmMgPSBmYWxsYmFjaztcbiAgfVxufVxuXG4vKipcbiAqIEEgcmljaGVyIHZlcnNpb24gb2YgdGhlIGNsYXNzaWMgQ2FsZW5kYXJFdmVudC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBZ2VuZGFFdmVudCBleHRlbmRzIENhbGVuZGFyRXZlbnQge1xuICAvKipcbiAgICogQSBicmllZiBkZXNjcmlwdGlvbiBmb3IgdGhlIGV2ZW50IChlLmcuIGN1c3RvbWVyLCBhZGRyZXNzLCBldGMuKS5cbiAgICovXG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIGxvY2F0aW9uIG9mIHRoZSBldmVudC5cbiAgICovXG4gIGxvY2F0aW9uPzogc3RyaW5nO1xuICAvKipcbiAgICogQSBsaXN0IG9mIFVSTHMgb2YgaW1hZ2VzIHRvIHNob3cgYXMgc21hbGwgYXZhdGFycy5cbiAgICovXG4gIGF2YXRhcnM/OiB7IGlkOiBzdHJpbmc7IHVybDogc3RyaW5nOyB0aXRsZTogc3RyaW5nIH1bXTtcbiAgLyoqXG4gICAqIEEgbGlzdCBvZiBpb24taWNvbnMgdG8gc2hvdy5cbiAgICovXG4gIGljb25zPzogeyBuYW1lOiBzdHJpbmc7IHRpdGxlOiBzdHJpbmcgfVtdO1xuICAvKipcbiAgICogV2hldGhlciB0aGUgZXZlbnQgaXMgZXh0ZXJuYWw7IGV4dGVybmFsIGV2ZW50cyBhcmUgbGVzcyBpbXBvcnRhbnQgVUktd2lzZS5cbiAgICovXG4gIGV4dGVybmFsPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFRoZSBhdHRlbmRhbmNlIHN0YXR1cyB0byB0aGlzIGV2ZW50LCBpZiBhbnkuXG4gICAqL1xuICBhdHRlbmRhbmNlPzogRXZlbnRBdHRlbmRhbmNlO1xuICAvKipcbiAgICogQSBzdGFuZGFyZCBhbmQgdW5pcXVlIGlkIGZvciB0aGUgZXZlbnQsIHZhbGlkIGFjcm9zcyBtdWx0aXBsZSBzb3VyY2VzLlxuICAgKi9cbiAgaUNhbFVJRD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBQb3NzaWJsZSBhdHRlbmRhbmNlIHN0YXR1c2VzIGZvciB0aGUgZXZlbnQuXG4gKi9cbmV4cG9ydCBlbnVtIEV2ZW50QXR0ZW5kYW5jZSB7XG4gIERFQ0xJTkVEID0gLTEsXG4gIE5FRURTX0FDVElPTiA9IDAsXG4gIFRFTlRBVElWRSxcbiAgQUNDRVBURURcbn1cbiIsIjxkaXYgY2xhc3M9XCJhZ2VuZGFcIj5cbiAgPCEtLSBUT09MQkFSIC0tPlxuICA8aW9uLXJvdyBjbGFzcz1cImlvbi1hbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICA8aW9uLWNvbFxuICAgICAgY2xhc3M9XCJpb24tYWxpZ24tc2VsZi1jZW50ZXIgaW9uLXRleHQtcmlnaHRcIlxuICAgICAgW3NpemVdPVwiNVwiXG4gICAgICBbc2l6ZVNtXT1cIjNcIlxuICAgICAgW3B1c2hTbV09XCI1XCJcbiAgICAgIFtzaXplTGddPVwiMlwiXG4gICAgICBbcHVzaExnXT1cIjhcIlxuICAgID5cbiAgICAgIDxpb24taXRlbSBsaW5lcz1cIm5vbmVcIiBjbGFzcz1cImNhbGVuZGFyVmlld1NlbGVjdG9yXCI+XG4gICAgICAgIDxpb24tc2VsZWN0XG4gICAgICAgICAgaW50ZXJmYWNlPVwicG9wb3ZlclwiXG4gICAgICAgICAgW3ZhbHVlXT1cInZpZXdcIlxuICAgICAgICAgIChpb25DaGFuZ2UpPVwiJGV2ZW50Py5kZXRhaWwgPyBzZXRWaWV3KCRldmVudC5kZXRhaWwudmFsdWUpIDogbnVsbFwiXG4gICAgICAgID5cbiAgICAgICAgICA8aW9uLXNlbGVjdC1vcHRpb24gW3ZhbHVlXT1cIkNhbGVuZGFyVmlldy5Nb250aFwiPnt7ICdJREVBX0FHRU5EQS5NT05USCcgfCB0cmFuc2xhdGUgfX08L2lvbi1zZWxlY3Qtb3B0aW9uPlxuICAgICAgICAgIDxpb24tc2VsZWN0LW9wdGlvbiBbdmFsdWVdPVwiQ2FsZW5kYXJWaWV3LldlZWtcIj57eyAnSURFQV9BR0VOREEuV0VFSycgfCB0cmFuc2xhdGUgfX08L2lvbi1zZWxlY3Qtb3B0aW9uPlxuICAgICAgICAgIDxpb24tc2VsZWN0LW9wdGlvbiBbdmFsdWVdPVwiQ2FsZW5kYXJWaWV3LkRheVwiPnt7ICdJREVBX0FHRU5EQS5EQVknIHwgdHJhbnNsYXRlIH19PC9pb24tc2VsZWN0LW9wdGlvbj5cbiAgICAgICAgPC9pb24tc2VsZWN0PlxuICAgICAgPC9pb24taXRlbT5cbiAgICA8L2lvbi1jb2w+XG4gICAgPGlvbi1jb2xcbiAgICAgIGNsYXNzPVwiaW9uLWFsaWduLXNlbGYtY2VudGVyIGlvbi10ZXh0LXJpZ2h0XCJcbiAgICAgIFtzaXplXT1cIjdcIlxuICAgICAgW3NpemVTbV09XCI0XCJcbiAgICAgIFtwdXNoU21dPVwiNVwiXG4gICAgICBbc2l6ZUxnXT1cIjJcIlxuICAgICAgW3B1c2hMZ109XCI4XCJcbiAgICA+XG4gICAgICA8aW9uLWJ1dHRvblxuICAgICAgICBmaWxsPVwiY2xlYXJcIlxuICAgICAgICBjb2xvcj1cImRhcmtcIlxuICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICBtd2xDYWxlbmRhclByZXZpb3VzVmlld1xuICAgICAgICBbdmlld109XCJ2aWV3XCJcbiAgICAgICAgWyh2aWV3RGF0ZSldPVwidmlld0RhdGVcIlxuICAgICAgICAodmlld0RhdGVDaGFuZ2UpPVwidmlld0RhdGVDaGFuZ2VkKCRldmVudClcIlxuICAgICAgPlxuICAgICAgICA8aW9uLWljb24gbmFtZT1cImNoZXZyb24tYmFjay1vdXRsaW5lXCIgc2xvdD1cImljb24tb25seVwiPjwvaW9uLWljb24+XG4gICAgICA8L2lvbi1idXR0b24+XG4gICAgICA8aW9uLWJ1dHRvblxuICAgICAgICBmaWxsPVwiY2xlYXJcIlxuICAgICAgICBjb2xvcj1cImRhcmtcIlxuICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICBtd2xDYWxlbmRhclRvZGF5XG4gICAgICAgIFsodmlld0RhdGUpXT1cInZpZXdEYXRlXCJcbiAgICAgICAgKHZpZXdEYXRlQ2hhbmdlKT1cInZpZXdEYXRlQ2hhbmdlZCgkZXZlbnQpXCJcbiAgICAgID5cbiAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJ0b2RheS1vdXRsaW5lXCIgc2xvdD1cImljb24tb25seVwiPjwvaW9uLWljb24+XG4gICAgICA8L2lvbi1idXR0b24+XG4gICAgICA8aW9uLWJ1dHRvblxuICAgICAgICBmaWxsPVwiY2xlYXJcIlxuICAgICAgICBjb2xvcj1cImRhcmtcIlxuICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICBtd2xDYWxlbmRhck5leHRWaWV3XG4gICAgICAgIFt2aWV3XT1cInZpZXdcIlxuICAgICAgICBbKHZpZXdEYXRlKV09XCJ2aWV3RGF0ZVwiXG4gICAgICAgICh2aWV3RGF0ZUNoYW5nZSk9XCJ2aWV3RGF0ZUNoYW5nZWQoJGV2ZW50KVwiXG4gICAgICA+XG4gICAgICAgIDxpb24taWNvbiBuYW1lPVwiY2hldnJvbi1mb3J3YXJkLW91dGxpbmVcIiBzbG90PVwiaWNvbi1vbmx5XCI+PC9pb24taWNvbj5cbiAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICA8L2lvbi1jb2w+XG4gICAgPGlvbi1jb2wgY2xhc3M9XCJpb24tYWxpZ24tc2VsZi1jZW50ZXJcIiBbc2l6ZV09XCIxMlwiIFtzaXplU21dPVwiNVwiIFtwdWxsU21dPVwiN1wiIFtzaXplTGddPVwiOFwiIFtwdWxsTGddPVwiNFwiPlxuICAgICAgPGgyPnt7IHZpZXdEYXRlIHwgY2FsZW5kYXJEYXRlOiB2aWV3ICsgJ1ZpZXdUaXRsZSc6dC5nZXRDdXJyZW50TGFuZygpIH19PC9oMj5cbiAgICA8L2lvbi1jb2w+XG4gIDwvaW9uLXJvdz5cbiAgPCEtLSBURU1QTEFURVMgKHRvdWNoIG9ubHkgd2hhdCdzIG5lY2Vzc2FyeSBhbmQgbGVhdmUgZXZlcnl0aGluZyBlbHNlIGFzIGl0IGlzKSAtLT5cbiAgPG5nLXRlbXBsYXRlICNldmVudFRpdGxlVGVtcGxhdGUgbGV0LWV2ZW50PVwiZXZlbnRcIiBsZXQtdmlldz1cInZpZXdcIj5cbiAgICA8c3BhblxuICAgICAgY2xhc3M9XCJjYWwtZXZlbnQtdGl0bGVcIlxuICAgICAgW2NsYXNzLm5vV3JhcF09XCJldmVudC5hbGxEYXlcIlxuICAgICAgW2F0dHIuYXJpYS1oaWRkZW5dPVwie30gfCBjYWxlbmRhckExMXk6ICdoaWRlRXZlbnRUaXRsZSdcIlxuICAgID5cbiAgICAgIHt7IGV2ZW50LnRpdGxlIHwgY2FsZW5kYXJFdmVudFRpdGxlOiB2aWV3OmV2ZW50IH19XG4gICAgICA8cCAqbmdJZj1cIiFldmVudC5hbGxEYXlcIj57eyBnZXRQcmV2aWV3RGVzY3JpcHRpb24oZXZlbnQuZGVzY3JpcHRpb24pIH19PC9wPlxuICAgIDwvc3Bhbj5cbiAgPC9uZy10ZW1wbGF0ZT5cbiAgPG5nLXRlbXBsYXRlXG4gICAgI2V2ZW50VGVtcGxhdGVcbiAgICBsZXQtd2Vla0V2ZW50PVwid2Vla0V2ZW50XCJcbiAgICBsZXQtdG9vbHRpcFBsYWNlbWVudD1cInRvb2x0aXBQbGFjZW1lbnRcIlxuICAgIGxldC1ldmVudENsaWNrZWQ9XCJldmVudENsaWNrZWRcIlxuICAgIGxldC10b29sdGlwVGVtcGxhdGU9XCJ0b29sdGlwVGVtcGxhdGVcIlxuICAgIGxldC10b29sdGlwQXBwZW5kVG9Cb2R5PVwidG9vbHRpcEFwcGVuZFRvQm9keVwiXG4gICAgbGV0LXRvb2x0aXBEaXNhYmxlZD1cInRvb2x0aXBEaXNhYmxlZFwiXG4gICAgbGV0LXRvb2x0aXBEZWxheT1cInRvb2x0aXBEZWxheVwiXG4gICAgbGV0LWNvbHVtbj1cImNvbHVtblwiXG4gICAgbGV0LWRheXNJbldlZWs9XCJkYXlzSW5XZWVrXCJcbiAgPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiY2FsLWV2ZW50XCJcbiAgICAgIFtjbGFzcy5leHRlcm5hbF09XCJ3ZWVrRXZlbnQuZXZlbnQuZXh0ZXJuYWxcIlxuICAgICAgW2NsYXNzLm5lZWRzQWN0aW9uXT1cIkF0dGVuZGFuY2UuTkVFRFNfQUNUSU9OID09PSB3ZWVrRXZlbnQuZXZlbnQuYXR0ZW5kYW5jZVwiXG4gICAgICBbY2xhc3MuZGVjbGluZWRdPVwiQXR0ZW5kYW5jZS5ERUNMSU5FRCA9PT0gd2Vla0V2ZW50LmV2ZW50LmF0dGVuZGFuY2VcIlxuICAgICAgW2NsYXNzLnRlbnRhdGl2ZV09XCJBdHRlbmRhbmNlLlRFTlRBVElWRSA9PT0gd2Vla0V2ZW50LmV2ZW50LmF0dGVuZGFuY2VcIlxuICAgICAgW3N0eWxlLmJvcmRlci1sZWZ0LWNvbG9yXT1cIndlZWtFdmVudC5ldmVudC5jb2xvci5wcmltYXJ5XCJcbiAgICAgIFtzdHlsZS5jb2xvcl09XCJnZXRBbHRlcm5hdGVDb2xvcih3ZWVrRXZlbnQuZXZlbnQuY29sb3IucHJpbWFyeSwgdGMuZ2V0KCdkYXJrTW9kZScpID8gODAgOiAtNDApXCJcbiAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cImdldEFsdGVybmF0ZUNvbG9yKHdlZWtFdmVudC5ldmVudC5jb2xvci5wcmltYXJ5LCB0Yy5nZXQoJ2RhcmtNb2RlJykgPyA2MCA6IDgwLCAwLjIpXCJcbiAgICAgIFttd2xDYWxlbmRhclRvb2x0aXBdPVwiIXRvb2x0aXBEaXNhYmxlZCAmJiAhcGxhdGZvcm0uaXMoJ21vYmlsZScpID8gZ2V0VG9vbHRpcENvbnRlbnQod2Vla0V2ZW50LmV2ZW50KSA6ICcnXCJcbiAgICAgIFt0b29sdGlwUGxhY2VtZW50XT1cInRvb2x0aXBQbGFjZW1lbnRcIlxuICAgICAgW3Rvb2x0aXBFdmVudF09XCJ3ZWVrRXZlbnQudGVtcEV2ZW50IHx8IHdlZWtFdmVudC5ldmVudFwiXG4gICAgICBbdG9vbHRpcFRlbXBsYXRlXT1cInRvb2x0aXBUZW1wbGF0ZVwiXG4gICAgICBbdG9vbHRpcEFwcGVuZFRvQm9keV09XCJ0b29sdGlwQXBwZW5kVG9Cb2R5XCJcbiAgICAgIFt0b29sdGlwRGVsYXldPVwidG9vbHRpcERlbGF5XCJcbiAgICAgIChtd2xDbGljayk9XCJldmVudENsaWNrZWQuZW1pdCh7IHNvdXJjZUV2ZW50OiAkZXZlbnQgfSlcIlxuICAgICAgKG13bEtleWRvd25FbnRlcik9XCJldmVudENsaWNrZWQuZW1pdCh7IHNvdXJjZUV2ZW50OiAkZXZlbnQgfSlcIlxuICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgIHJvbGU9XCJhcHBsaWNhdGlvblwiXG4gICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIlxuICAgICAgICB7IGV2ZW50OiB3ZWVrRXZlbnQudGVtcEV2ZW50IHx8IHdlZWtFdmVudC5ldmVudCwgbG9jYWxlOiBsb2NhbGUgfSB8IGNhbGVuZGFyQTExeTogJ2V2ZW50RGVzY3JpcHRpb24nXG4gICAgICBcIlxuICAgID5cbiAgICAgIDxtd2wtY2FsZW5kYXItZXZlbnQtYWN0aW9ucyBbZXZlbnRdPVwid2Vla0V2ZW50LnRlbXBFdmVudCB8fCB3ZWVrRXZlbnQuZXZlbnRcIj4gPC9td2wtY2FsZW5kYXItZXZlbnQtYWN0aW9ucz5cbiAgICAgICZuZ3NwO1xuICAgICAgPG13bC1jYWxlbmRhci1ldmVudC10aXRsZVxuICAgICAgICBbZXZlbnRdPVwid2Vla0V2ZW50LnRlbXBFdmVudCB8fCB3ZWVrRXZlbnQuZXZlbnRcIlxuICAgICAgICBbY3VzdG9tVGVtcGxhdGVdPVwiZXZlbnRUaXRsZVRlbXBsYXRlXCJcbiAgICAgICAgW3ZpZXddPVwiZGF5c0luV2VlayA9PT0gMSA/ICdkYXknIDogJ3dlZWsnXCJcbiAgICAgID5cbiAgICAgIDwvbXdsLWNhbGVuZGFyLWV2ZW50LXRpdGxlPlxuICAgICAgPGRpdiBjbGFzcz1cImV2ZW50R2FkZ2V0c1wiICpuZ0lmPVwiIXdlZWtFdmVudC5ldmVudC5hbGxEYXlcIj5cbiAgICAgICAgPGlvbi1pY29uICpuZ0Zvcj1cImxldCBpY29uIG9mIHdlZWtFdmVudC5ldmVudC5pY29uc1wiIFtuYW1lXT1cImljb24ubmFtZVwiIFt0aXRsZV09XCJpY29uLnRpdGxlXCI+PC9pb24taWNvbj5cbiAgICAgICAgPGlvbi1hdmF0YXIgKm5nRm9yPVwibGV0IGF2YXRhciBvZiB3ZWVrRXZlbnQuZXZlbnQuYXZhdGFyc1wiIFt0aXRsZV09XCJhdmF0YXIudGl0bGVcIj5cbiAgICAgICAgICA8aW9uLWltZyBbc3JjXT1cImF2YXRhci51cmxcIiAoaW9uRXJyb3IpPVwibG9hZEZhbGxiYWNrQXZhdGFyKCRldmVudD8udGFyZ2V0KVwiPjwvaW9uLWltZz5cbiAgICAgICAgPC9pb24tYXZhdGFyPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvbmctdGVtcGxhdGU+XG4gIDwhLS0gVklFV1MgLS0+XG4gIDxkaXYgW25nU3dpdGNoXT1cInZpZXdcIj5cbiAgICA8bXdsLWNhbGVuZGFyLW1vbnRoLXZpZXdcbiAgICAgICpuZ1N3aXRjaENhc2U9XCJDYWxlbmRhclZpZXcuTW9udGhcIlxuICAgICAgW3ZpZXdEYXRlXT1cInZpZXdEYXRlXCJcbiAgICAgIFtldmVudHNdPVwiZXZlbnRzXCJcbiAgICAgIFtyZWZyZXNoXT1cInJlZnJlc2hcIlxuICAgICAgW2FjdGl2ZURheUlzT3Blbl09XCJhY3RpdmVEYXlJc09wZW5cIlxuICAgICAgW2xvY2FsZV09XCJsb2NhbGVcIlxuICAgICAgW2V4Y2x1ZGVEYXlzXT1cImV4Y2x1ZGVEYXlzXCJcbiAgICAgIFt3ZWVrU3RhcnRzT25dPVwid2Vla1N0YXJ0c09uXCJcbiAgICAgIFtldmVudFRpdGxlVGVtcGxhdGVdPVwiZXZlbnRUaXRsZVRlbXBsYXRlXCJcbiAgICAgIChldmVudENsaWNrZWQpPVwic2VsZWN0RXZlbnQuZW1pdCgkZXZlbnQuZXZlbnQpXCJcbiAgICAgIChldmVudFRpbWVzQ2hhbmdlZCk9XCJldmVudFRpbWVzQ2hhbmdlZCgkZXZlbnQpXCJcbiAgICAgIChkYXlDbGlja2VkKT1cImNoYW5nZURheSgkZXZlbnQuZGF5KVwiXG4gICAgICAoYmVmb3JlVmlld1JlbmRlcik9XCJiZWZvcmVNb250aFZpZXdSZW5kZXIoJGV2ZW50KVwiXG4gICAgPlxuICAgIDwvbXdsLWNhbGVuZGFyLW1vbnRoLXZpZXc+XG4gICAgPG13bC1jYWxlbmRhci13ZWVrLXZpZXdcbiAgICAgICpuZ1N3aXRjaENhc2U9XCJDYWxlbmRhclZpZXcuV2Vla1wiXG4gICAgICBbdmlld0RhdGVdPVwidmlld0RhdGVcIlxuICAgICAgW2V2ZW50c109XCJldmVudHNcIlxuICAgICAgW3JlZnJlc2hdPVwicmVmcmVzaFwiXG4gICAgICBbbG9jYWxlXT1cImxvY2FsZVwiXG4gICAgICBbZXhjbHVkZURheXNdPVwiZXhjbHVkZURheXNcIlxuICAgICAgW3dlZWtTdGFydHNPbl09XCJ3ZWVrU3RhcnRzT25cIlxuICAgICAgW2RheVN0YXJ0SG91cl09XCJkYXlTdGFydEhvdXJcIlxuICAgICAgW2RheUVuZEhvdXJdPVwiZGF5RW5kSG91clwiXG4gICAgICBbaG91clNlZ21lbnRzXT1cImhvdXJTZWdtZW50c1wiXG4gICAgICBbZXZlbnRUZW1wbGF0ZV09XCJldmVudFRlbXBsYXRlXCJcbiAgICAgIChldmVudENsaWNrZWQpPVwic2VsZWN0RXZlbnQuZW1pdCgkZXZlbnQuZXZlbnQpXCJcbiAgICAgIChldmVudFRpbWVzQ2hhbmdlZCk9XCJldmVudFRpbWVzQ2hhbmdlZCgkZXZlbnQpXCJcbiAgICAgIChkYXlIZWFkZXJDbGlja2VkKT1cImRhdGVJc1ZhbGlkKCRldmVudC5kYXkuZGF0ZSkgPyBzZWxlY3REYXkuZW1pdCgkZXZlbnQuZGF5LmRhdGUpIDogbnVsbFwiXG4gICAgICAoaG91clNlZ21lbnRDbGlja2VkKT1cImRhdGVJc1ZhbGlkKCRldmVudC5kYXRlKSA/IHNlbGVjdFNsb3QuZW1pdCgkZXZlbnQuZGF0ZSkgOiBudWxsXCJcbiAgICAgIChiZWZvcmVWaWV3UmVuZGVyKT1cImJlZm9yZVdlZWtPckRheVZpZXdSZW5kZXIoJGV2ZW50KVwiXG4gICAgPlxuICAgIDwvbXdsLWNhbGVuZGFyLXdlZWstdmlldz5cbiAgICA8bXdsLWNhbGVuZGFyLWRheS12aWV3XG4gICAgICAqbmdTd2l0Y2hDYXNlPVwiQ2FsZW5kYXJWaWV3LkRheVwiXG4gICAgICBbdmlld0RhdGVdPVwidmlld0RhdGVcIlxuICAgICAgW2V2ZW50c109XCJldmVudHNcIlxuICAgICAgW3JlZnJlc2hdPVwicmVmcmVzaFwiXG4gICAgICBbbG9jYWxlXT1cImxvY2FsZVwiXG4gICAgICBbZGF5U3RhcnRIb3VyXT1cImRheVN0YXJ0SG91clwiXG4gICAgICBbZGF5RW5kSG91cl09XCJkYXlFbmRIb3VyXCJcbiAgICAgIFtob3VyU2VnbWVudHNdPVwiaG91clNlZ21lbnRzXCJcbiAgICAgIFtldmVudFRlbXBsYXRlXT1cImV2ZW50VGVtcGxhdGVcIlxuICAgICAgKGV2ZW50Q2xpY2tlZCk9XCJzZWxlY3RFdmVudC5lbWl0KCRldmVudC5ldmVudClcIlxuICAgICAgKGV2ZW50VGltZXNDaGFuZ2VkKT1cImV2ZW50VGltZXNDaGFuZ2VkKCRldmVudClcIlxuICAgICAgKGhvdXJTZWdtZW50Q2xpY2tlZCk9XCJkYXRlSXNWYWxpZCgkZXZlbnQuZGF0ZSkgPyBzZWxlY3RTbG90LmVtaXQoJGV2ZW50LmRhdGUpIDogbnVsbFwiXG4gICAgICAoYmVmb3JlVmlld1JlbmRlcik9XCJiZWZvcmVXZWVrT3JEYXlWaWV3UmVuZGVyKCRldmVudClcIlxuICAgID5cbiAgICA8L213bC1jYWxlbmRhci1kYXktdmlldz5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -111,7 +111,7 @@ export class IDEACalendarComponent {
|
|
|
111
111
|
}
|
|
112
112
|
}
|
|
113
113
|
IDEACalendarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: IDEACalendarComponent, deps: [{ token: i1.IDEACalendarsService }, { token: i2.ModalController }, { token: i2.AlertController }, { token: i3.IDEATinCanService }, { token: i3.IDEALoadingService }, { token: i3.IDEAMessageService }, { token: i3.IDEAAWSAPIService }, { token: i3.IDEATranslationsService }], target: i0.ɵɵFactoryTarget.Component });
|
|
114
|
-
IDEACalendarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: IDEACalendarComponent, selector: "idea-calendar", inputs: { calendar: "calendar", advancedPermissions: "advancedPermissions", hideColor: "hideColor" }, ngImport: i0, template: "<ion-header>\n <ion-toolbar color=\"ideaToolbar\">\n <ion-buttons slot=\"start\">\n <ion-button [title]=\"t._('COMMON.CLOSE')\" (click)=\"close()\">\n <ion-icon name=\"close-circle\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n </ion-buttons>\n <ion-title>{{ 'IDEA_AGENDA.CALENDARS.EDIT_CALENDAR' | translate }}</ion-title>\n <ion-buttons slot=\"end\">\n <ion-button [title]=\"t._('COMMON.SAVE')\" (click)=\"save()\">\n <ion-icon name=\"checkmark-circle\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n<ion-content>\n <div class=\"maxWidthContainer\" *ngIf=\"_calendar\">\n <ion-list class=\"aList\">\n <ion-item\n lines=\"inset\"\n [class.fieldHasError]=\"hasFieldAnError('name')\"\n [title]=\"t._('IDEA_AGENDA.CALENDARS.NAME_HINT')\"\n >\n <ion-label position=\"stacked\">{{ 'IDEA_AGENDA.CALENDARS.NAME' | translate }} </ion-label>\n <ion-input [placeholder]=\"t._('IDEA_AGENDA.CALENDARS.NAME_HINT')\" [(ngModel)]=\"_calendar.name\"></ion-input>\n </ion-item>\n <ion-item\n lines=\"inset\"\n [class.fieldHasError]=\"hasFieldAnError('description')\"\n [title]=\"t._('IDEA_AGENDA.CALENDARS.DESCRIPTION_HINT')\"\n >\n <ion-label position=\"stacked\">{{ 'IDEA_AGENDA.CALENDARS.DESCRIPTION' | translate }} </ion-label>\n <ion-input\n [placeholder]=\"t._('IDEA_AGENDA.CALENDARS.DESCRIPTION_HINT')\"\n [(ngModel)]=\"_calendar.description\"\n ></ion-input>\n </ion-item>\n <idea-color-picker\n *ngIf=\"!hideColor\"\n [lines]=\"'inset'\"\n [current]=\"_calendar.color\"\n [label]=\"t._('IDEA_AGENDA.CALENDARS.COLOR')\"\n [class.fieldHasError]=\"hasFieldAnError('color')\"\n (select)=\"$event ? (_calendar.color = $event) : null\"\n ></idea-color-picker>\n <idea-checker\n *ngIf=\"membershipsChecks && _calendar.isShared() && advancedPermissions\"\n [data]=\"membershipsChecks\"\n [label]=\"t._('IDEA_AGENDA.CALENDARS.USERS_ALLOWED_TO_MANAGE_APPOINTMENTS')\"\n [searchPlaceholder]=\"t._('IDEA_AGENDA.CALENDARS.WHO_CAN_MANAGE_APPOINTMENTS')\"\n [noneText]=\"t._('IDEA_AGENDA.CALENDARS.NOBODY')\"\n [allText]=\"t._('IDEA_AGENDA.CALENDARS.EVERYONE')\"\n [allowSelectDeselectAll]=\"true\"\n [lines]=\"'inset'\"\n ></idea-checker>\n </ion-list>\n <ion-list class=\"aList\" *ngIf=\"_calendar.external?.service\">\n <ion-list-header>\n <ion-label>\n <h2>{{ 'IDEA_AGENDA.CALENDARS.INFO_ON_CALENDAR' | translate }}</h2>\n </ion-label>\n </ion-list-header>\n <ion-item lines=\"inset\" *ngIf=\"calendar.userId\">\n <ion-label>\n {{ 'IDEA_AGENDA.CALENDARS.PRIVATE_CALENDAR' | translate }}\n <p>{{ 'IDEA_AGENDA.CALENDARS.PRIVATE_CALENDAR_HINT' | translate }}</p>\n </ion-label>\n <ion-icon slot=\"end\" name=\"person\"></ion-icon>\n </ion-item>\n <ion-item lines=\"inset\" *ngIf=\"calendar.teamId\">\n <ion-label>\n {{ 'IDEA_AGENDA.CALENDARS.TEAM_CALENDAR' | translate }}\n <p>{{ 'IDEA_AGENDA.CALENDARS.TEAM_CALENDAR_HINT' | translate }}</p>\n </ion-label>\n <ion-icon slot=\"end\" name=\"people\"></ion-icon>\n </ion-item>\n <ion-item lines=\"inset\">\n <ion-label>\n {{ 'IDEA_AGENDA.CALENDARS.LINKED_TO' | translate }}\n {{ 'IDEA_AGENDA.CALENDARS.SERVICES.' + _calendar.external.service | translate }}\n <p>{{ _calendar.external.name }} ({{ _calendar.external.email }})</p>\n </ion-label>\n <ion-icon slot=\"end\" [name]=\"calendars.getServiceIcon(_calendar.external.service)\"></ion-icon>\n </ion-item>\n <ion-item lines=\"inset\">\n <ion-label>\n {{ 'IDEA_AGENDA.CALENDARS.ACCESS_LEVELS.' + _calendar.external.userAccess | translate }}\n <p>{{ 'IDEA_AGENDA.CALENDARS.BASED_ON_EXTERNAL_SERVICE_SHARING_PERMISSION' | translate }}</p>\n </ion-label>\n <ion-icon slot=\"end\" name=\"shield\"></ion-icon>\n </ion-item>\n </ion-list>\n <ion-list class=\"aList\">\n <ion-list-header>\n <ion-label color=\"danger\">\n <h2>{{ 'IDEA_AGENDA.CALENDARS.DANGEROUS_ZONE' | translate }}</h2>\n </ion-label>\n </ion-list-header>\n <ion-item lines=\"inset\">\n <ion-label class=\"ion-text-wrap\">\n {{ 'IDEA_AGENDA.CALENDARS.DELETE_CALENDAR' | translate }}\n <p>{{ 'IDEA_AGENDA.CALENDARS.DELETE_CALENDAR_HINT' | translate }}</p>\n </ion-label>\n <ion-button color=\"danger\" [title]=\"t._('IDEA_AGENDA.CALENDARS.DELETE_CALENDAR_HINT')\" (click)=\"delete()\">\n {{ 'COMMON.DELETE' | translate }}\n </ion-button>\n </ion-item>\n </ion-list>\n </div>\n</ion-content>\n", styles: [".maxWidthContainer{max-width:500px;padding-top:20px}\n"], components: [{ type: i2.IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { type: i2.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { type: i2.IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { type: i2.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { type: i2.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { type: i2.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { type: i2.IonContent, selector: "ion-content", inputs: ["color", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { type: i2.IonList, selector: "ion-list", inputs: ["inset", "lines", "mode"] }, { type: i2.IonItem, selector: "ion-item", inputs: ["button", "color", "counter", "detail", "detailIcon", "disabled", "download", "fill", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "shape", "target", "type"] }, { type: i2.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { type: i2.IonInput, selector: "ion-input", inputs: ["accept", "autocapitalize", "autocomplete", "autocorrect", "autofocus", "clearInput", "clearOnEdit", "color", "debounce", "disabled", "enterkeyhint", "inputmode", "max", "maxlength", "min", "minlength", "mode", "multiple", "name", "pattern", "placeholder", "readonly", "required", "size", "spellcheck", "step", "type", "value"] }, { type: i3.IDEAColorPickerComponent, selector: "idea-color-picker", inputs: ["colors", "current", "label", "placeholder", "icon", "iconColor", "disabled", "obligatory", "lines"], outputs: ["select", "iconSelect"] }, { type: i3.IDEACheckerComponent, selector: "idea-checker", inputs: ["data", "
|
|
114
|
+
IDEACalendarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: IDEACalendarComponent, selector: "idea-calendar", inputs: { calendar: "calendar", advancedPermissions: "advancedPermissions", hideColor: "hideColor" }, ngImport: i0, template: "<ion-header>\n <ion-toolbar color=\"ideaToolbar\">\n <ion-buttons slot=\"start\">\n <ion-button [title]=\"t._('COMMON.CLOSE')\" (click)=\"close()\">\n <ion-icon name=\"close-circle\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n </ion-buttons>\n <ion-title>{{ 'IDEA_AGENDA.CALENDARS.EDIT_CALENDAR' | translate }}</ion-title>\n <ion-buttons slot=\"end\">\n <ion-button [title]=\"t._('COMMON.SAVE')\" (click)=\"save()\">\n <ion-icon name=\"checkmark-circle\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n<ion-content>\n <div class=\"maxWidthContainer\" *ngIf=\"_calendar\">\n <ion-list class=\"aList\">\n <ion-item\n lines=\"inset\"\n [class.fieldHasError]=\"hasFieldAnError('name')\"\n [title]=\"t._('IDEA_AGENDA.CALENDARS.NAME_HINT')\"\n >\n <ion-label position=\"stacked\">{{ 'IDEA_AGENDA.CALENDARS.NAME' | translate }} </ion-label>\n <ion-input [placeholder]=\"t._('IDEA_AGENDA.CALENDARS.NAME_HINT')\" [(ngModel)]=\"_calendar.name\"></ion-input>\n </ion-item>\n <ion-item\n lines=\"inset\"\n [class.fieldHasError]=\"hasFieldAnError('description')\"\n [title]=\"t._('IDEA_AGENDA.CALENDARS.DESCRIPTION_HINT')\"\n >\n <ion-label position=\"stacked\">{{ 'IDEA_AGENDA.CALENDARS.DESCRIPTION' | translate }} </ion-label>\n <ion-input\n [placeholder]=\"t._('IDEA_AGENDA.CALENDARS.DESCRIPTION_HINT')\"\n [(ngModel)]=\"_calendar.description\"\n ></ion-input>\n </ion-item>\n <idea-color-picker\n *ngIf=\"!hideColor\"\n [lines]=\"'inset'\"\n [current]=\"_calendar.color\"\n [label]=\"t._('IDEA_AGENDA.CALENDARS.COLOR')\"\n [class.fieldHasError]=\"hasFieldAnError('color')\"\n (select)=\"$event ? (_calendar.color = $event) : null\"\n ></idea-color-picker>\n <idea-checker\n *ngIf=\"membershipsChecks && _calendar.isShared() && advancedPermissions\"\n [data]=\"membershipsChecks\"\n [label]=\"t._('IDEA_AGENDA.CALENDARS.USERS_ALLOWED_TO_MANAGE_APPOINTMENTS')\"\n [searchPlaceholder]=\"t._('IDEA_AGENDA.CALENDARS.WHO_CAN_MANAGE_APPOINTMENTS')\"\n [noneText]=\"t._('IDEA_AGENDA.CALENDARS.NOBODY')\"\n [allText]=\"t._('IDEA_AGENDA.CALENDARS.EVERYONE')\"\n [allowSelectDeselectAll]=\"true\"\n [lines]=\"'inset'\"\n ></idea-checker>\n </ion-list>\n <ion-list class=\"aList\" *ngIf=\"_calendar.external?.service\">\n <ion-list-header>\n <ion-label>\n <h2>{{ 'IDEA_AGENDA.CALENDARS.INFO_ON_CALENDAR' | translate }}</h2>\n </ion-label>\n </ion-list-header>\n <ion-item lines=\"inset\" *ngIf=\"calendar.userId\">\n <ion-label>\n {{ 'IDEA_AGENDA.CALENDARS.PRIVATE_CALENDAR' | translate }}\n <p>{{ 'IDEA_AGENDA.CALENDARS.PRIVATE_CALENDAR_HINT' | translate }}</p>\n </ion-label>\n <ion-icon slot=\"end\" name=\"person\"></ion-icon>\n </ion-item>\n <ion-item lines=\"inset\" *ngIf=\"calendar.teamId\">\n <ion-label>\n {{ 'IDEA_AGENDA.CALENDARS.TEAM_CALENDAR' | translate }}\n <p>{{ 'IDEA_AGENDA.CALENDARS.TEAM_CALENDAR_HINT' | translate }}</p>\n </ion-label>\n <ion-icon slot=\"end\" name=\"people\"></ion-icon>\n </ion-item>\n <ion-item lines=\"inset\">\n <ion-label>\n {{ 'IDEA_AGENDA.CALENDARS.LINKED_TO' | translate }}\n {{ 'IDEA_AGENDA.CALENDARS.SERVICES.' + _calendar.external.service | translate }}\n <p>{{ _calendar.external.name }} ({{ _calendar.external.email }})</p>\n </ion-label>\n <ion-icon slot=\"end\" [name]=\"calendars.getServiceIcon(_calendar.external.service)\"></ion-icon>\n </ion-item>\n <ion-item lines=\"inset\">\n <ion-label>\n {{ 'IDEA_AGENDA.CALENDARS.ACCESS_LEVELS.' + _calendar.external.userAccess | translate }}\n <p>{{ 'IDEA_AGENDA.CALENDARS.BASED_ON_EXTERNAL_SERVICE_SHARING_PERMISSION' | translate }}</p>\n </ion-label>\n <ion-icon slot=\"end\" name=\"shield\"></ion-icon>\n </ion-item>\n </ion-list>\n <ion-list class=\"aList\">\n <ion-list-header>\n <ion-label color=\"danger\">\n <h2>{{ 'IDEA_AGENDA.CALENDARS.DANGEROUS_ZONE' | translate }}</h2>\n </ion-label>\n </ion-list-header>\n <ion-item lines=\"inset\">\n <ion-label class=\"ion-text-wrap\">\n {{ 'IDEA_AGENDA.CALENDARS.DELETE_CALENDAR' | translate }}\n <p>{{ 'IDEA_AGENDA.CALENDARS.DELETE_CALENDAR_HINT' | translate }}</p>\n </ion-label>\n <ion-button color=\"danger\" [title]=\"t._('IDEA_AGENDA.CALENDARS.DELETE_CALENDAR_HINT')\" (click)=\"delete()\">\n {{ 'COMMON.DELETE' | translate }}\n </ion-button>\n </ion-item>\n </ion-list>\n </div>\n</ion-content>\n", styles: [".maxWidthContainer{max-width:500px;padding-top:20px}\n"], components: [{ type: i2.IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { type: i2.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { type: i2.IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { type: i2.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { type: i2.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { type: i2.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { type: i2.IonContent, selector: "ion-content", inputs: ["color", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { type: i2.IonList, selector: "ion-list", inputs: ["inset", "lines", "mode"] }, { type: i2.IonItem, selector: "ion-item", inputs: ["button", "color", "counter", "detail", "detailIcon", "disabled", "download", "fill", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "shape", "target", "type"] }, { type: i2.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { type: i2.IonInput, selector: "ion-input", inputs: ["accept", "autocapitalize", "autocomplete", "autocorrect", "autofocus", "clearInput", "clearOnEdit", "color", "debounce", "disabled", "enterkeyhint", "inputmode", "max", "maxlength", "min", "minlength", "mode", "multiple", "name", "pattern", "placeholder", "readonly", "required", "size", "spellcheck", "step", "type", "value"] }, { type: i3.IDEAColorPickerComponent, selector: "idea-color-picker", inputs: ["colors", "current", "label", "placeholder", "icon", "iconColor", "disabled", "obligatory", "lines"], outputs: ["select", "iconSelect"] }, { type: i3.IDEACheckerComponent, selector: "idea-checker", inputs: ["data", "dataProvider", "label", "icon", "iconColor", "searchPlaceholder", "noPreviewText", "noElementsFoundText", "noneEqualsAll", "noneText", "allText", "lines", "disabled", "tappableWhenDisabled", "obligatory", "sortData", "numMaxElementsInPreview", "showAvatars", "fallbackAvatar", "limitSelectionToNum", "allowSelectDeselectAll"], outputs: ["change", "iconSelect"] }, { type: i2.IonListHeader, selector: "ion-list-header", inputs: ["color", "lines", "mode"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.TextValueAccessor, selector: "ion-input:not([type=number]),ion-textarea,ion-searchbar" }, { type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], pipes: { "translate": i3.IDEATranslatePipe } });
|
|
115
115
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: IDEACalendarComponent, decorators: [{
|
|
116
116
|
type: Component,
|
|
117
117
|
args: [{ selector: 'idea-calendar', template: "<ion-header>\n <ion-toolbar color=\"ideaToolbar\">\n <ion-buttons slot=\"start\">\n <ion-button [title]=\"t._('COMMON.CLOSE')\" (click)=\"close()\">\n <ion-icon name=\"close-circle\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n </ion-buttons>\n <ion-title>{{ 'IDEA_AGENDA.CALENDARS.EDIT_CALENDAR' | translate }}</ion-title>\n <ion-buttons slot=\"end\">\n <ion-button [title]=\"t._('COMMON.SAVE')\" (click)=\"save()\">\n <ion-icon name=\"checkmark-circle\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n<ion-content>\n <div class=\"maxWidthContainer\" *ngIf=\"_calendar\">\n <ion-list class=\"aList\">\n <ion-item\n lines=\"inset\"\n [class.fieldHasError]=\"hasFieldAnError('name')\"\n [title]=\"t._('IDEA_AGENDA.CALENDARS.NAME_HINT')\"\n >\n <ion-label position=\"stacked\">{{ 'IDEA_AGENDA.CALENDARS.NAME' | translate }} </ion-label>\n <ion-input [placeholder]=\"t._('IDEA_AGENDA.CALENDARS.NAME_HINT')\" [(ngModel)]=\"_calendar.name\"></ion-input>\n </ion-item>\n <ion-item\n lines=\"inset\"\n [class.fieldHasError]=\"hasFieldAnError('description')\"\n [title]=\"t._('IDEA_AGENDA.CALENDARS.DESCRIPTION_HINT')\"\n >\n <ion-label position=\"stacked\">{{ 'IDEA_AGENDA.CALENDARS.DESCRIPTION' | translate }} </ion-label>\n <ion-input\n [placeholder]=\"t._('IDEA_AGENDA.CALENDARS.DESCRIPTION_HINT')\"\n [(ngModel)]=\"_calendar.description\"\n ></ion-input>\n </ion-item>\n <idea-color-picker\n *ngIf=\"!hideColor\"\n [lines]=\"'inset'\"\n [current]=\"_calendar.color\"\n [label]=\"t._('IDEA_AGENDA.CALENDARS.COLOR')\"\n [class.fieldHasError]=\"hasFieldAnError('color')\"\n (select)=\"$event ? (_calendar.color = $event) : null\"\n ></idea-color-picker>\n <idea-checker\n *ngIf=\"membershipsChecks && _calendar.isShared() && advancedPermissions\"\n [data]=\"membershipsChecks\"\n [label]=\"t._('IDEA_AGENDA.CALENDARS.USERS_ALLOWED_TO_MANAGE_APPOINTMENTS')\"\n [searchPlaceholder]=\"t._('IDEA_AGENDA.CALENDARS.WHO_CAN_MANAGE_APPOINTMENTS')\"\n [noneText]=\"t._('IDEA_AGENDA.CALENDARS.NOBODY')\"\n [allText]=\"t._('IDEA_AGENDA.CALENDARS.EVERYONE')\"\n [allowSelectDeselectAll]=\"true\"\n [lines]=\"'inset'\"\n ></idea-checker>\n </ion-list>\n <ion-list class=\"aList\" *ngIf=\"_calendar.external?.service\">\n <ion-list-header>\n <ion-label>\n <h2>{{ 'IDEA_AGENDA.CALENDARS.INFO_ON_CALENDAR' | translate }}</h2>\n </ion-label>\n </ion-list-header>\n <ion-item lines=\"inset\" *ngIf=\"calendar.userId\">\n <ion-label>\n {{ 'IDEA_AGENDA.CALENDARS.PRIVATE_CALENDAR' | translate }}\n <p>{{ 'IDEA_AGENDA.CALENDARS.PRIVATE_CALENDAR_HINT' | translate }}</p>\n </ion-label>\n <ion-icon slot=\"end\" name=\"person\"></ion-icon>\n </ion-item>\n <ion-item lines=\"inset\" *ngIf=\"calendar.teamId\">\n <ion-label>\n {{ 'IDEA_AGENDA.CALENDARS.TEAM_CALENDAR' | translate }}\n <p>{{ 'IDEA_AGENDA.CALENDARS.TEAM_CALENDAR_HINT' | translate }}</p>\n </ion-label>\n <ion-icon slot=\"end\" name=\"people\"></ion-icon>\n </ion-item>\n <ion-item lines=\"inset\">\n <ion-label>\n {{ 'IDEA_AGENDA.CALENDARS.LINKED_TO' | translate }}\n {{ 'IDEA_AGENDA.CALENDARS.SERVICES.' + _calendar.external.service | translate }}\n <p>{{ _calendar.external.name }} ({{ _calendar.external.email }})</p>\n </ion-label>\n <ion-icon slot=\"end\" [name]=\"calendars.getServiceIcon(_calendar.external.service)\"></ion-icon>\n </ion-item>\n <ion-item lines=\"inset\">\n <ion-label>\n {{ 'IDEA_AGENDA.CALENDARS.ACCESS_LEVELS.' + _calendar.external.userAccess | translate }}\n <p>{{ 'IDEA_AGENDA.CALENDARS.BASED_ON_EXTERNAL_SERVICE_SHARING_PERMISSION' | translate }}</p>\n </ion-label>\n <ion-icon slot=\"end\" name=\"shield\"></ion-icon>\n </ion-item>\n </ion-list>\n <ion-list class=\"aList\">\n <ion-list-header>\n <ion-label color=\"danger\">\n <h2>{{ 'IDEA_AGENDA.CALENDARS.DANGEROUS_ZONE' | translate }}</h2>\n </ion-label>\n </ion-list-header>\n <ion-item lines=\"inset\">\n <ion-label class=\"ion-text-wrap\">\n {{ 'IDEA_AGENDA.CALENDARS.DELETE_CALENDAR' | translate }}\n <p>{{ 'IDEA_AGENDA.CALENDARS.DELETE_CALENDAR_HINT' | translate }}</p>\n </ion-label>\n <ion-button color=\"danger\" [title]=\"t._('IDEA_AGENDA.CALENDARS.DELETE_CALENDAR_HINT')\" (click)=\"delete()\">\n {{ 'COMMON.DELETE' | translate }}\n </ion-button>\n </ion-item>\n </ion-list>\n </div>\n</ion-content>\n", styles: [".maxWidthContainer{max-width:500px;padding-top:20px}\n"] }]
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
import { Injectable } from '@angular/core';
|
|
2
|
-
import {
|
|
2
|
+
import { Browser } from '@capacitor/browser';
|
|
3
3
|
import { Calendar, ExternalCalendarSources, Suggestion } from 'idea-toolbox';
|
|
4
4
|
import { IDEASuggestionsComponent } from '@idea-ionic/common';
|
|
5
5
|
import { environment as env } from '@env';
|
|
6
6
|
import * as i0 from "@angular/core";
|
|
7
7
|
import * as i1 from "@ionic/angular";
|
|
8
8
|
import * as i2 from "@idea-ionic/common";
|
|
9
|
-
const { Browser } = Plugins;
|
|
10
9
|
/**
|
|
11
10
|
* Note: to test locally, you need to temporarily change the redirect URI:
|
|
12
11
|
* - in the lambda `idea_calendars`, e.g. `SCARLETT_URL`;
|
|
@@ -252,4 +251,4 @@ IDEACalendarsService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0",
|
|
|
252
251
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: IDEACalendarsService, decorators: [{
|
|
253
252
|
type: Injectable
|
|
254
253
|
}], ctorParameters: function () { return [{ type: i1.ModalController }, { type: i1.AlertController }, { type: i2.IDEAMessageService }, { type: i2.IDEALoadingService }, { type: i2.IDEAAWSAPIService }, { type: i2.IDEATranslationsService }]; } });
|
|
255
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXJzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9tb2R1bGVzL2FnZW5kYS9zcmMvY2FsZW5kYXJzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFMUMsT0FBTyxFQUFFLFFBQVEsRUFBRSx1QkFBdUIsRUFBRSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDN0UsT0FBTyxFQUtMLHdCQUF3QixFQUN6QixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBRSxXQUFXLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7O0FBVDFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxPQUFPLENBQUM7QUFXNUI7Ozs7O0dBS0c7QUFFSCxNQUFNLE9BQU8sb0JBQW9CO0lBQy9CLFlBQ1MsU0FBMEIsRUFDMUIsU0FBMEIsRUFDMUIsT0FBMkIsRUFDM0IsT0FBMkIsRUFDM0IsR0FBc0IsRUFDdEIsQ0FBMEI7UUFMMUIsY0FBUyxHQUFULFNBQVMsQ0FBaUI7UUFDMUIsY0FBUyxHQUFULFNBQVMsQ0FBaUI7UUFDMUIsWUFBTyxHQUFQLE9BQU8sQ0FBb0I7UUFDM0IsWUFBTyxHQUFQLE9BQU8sQ0FBb0I7UUFDM0IsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFDdEIsTUFBQyxHQUFELENBQUMsQ0FBeUI7SUFDaEMsQ0FBQztJQUVKOztPQUVHO0lBQ0ksY0FBYyxDQUFDLE9BQWdDO1FBQ3BELFFBQVEsT0FBTyxFQUFFO1lBQ2YsS0FBSyx1QkFBdUIsQ0FBQyxNQUFNO2dCQUNqQyxPQUFPLGFBQWEsQ0FBQztZQUN2QixLQUFLLHVCQUF1QixDQUFDLFNBQVM7Z0JBQ3BDLE9BQU8sY0FBYyxDQUFDO1lBQ3hCO2dCQUNFLE9BQU8sTUFBTSxDQUFD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QUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQzs7Z0JBQ2hELElBQUksRUFBRSxDQUFDO1FBQ2QsQ0FBQyxDQUFDO2FBQ0QsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDN0IsQ0FBQzs7aUhBdk9VLG9CQUFvQjtxSEFBcEIsb0JBQW9COzJGQUFwQixvQkFBb0I7a0JBRGhDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBbGVydENvbnRyb2xsZXIsIE1vZGFsQ29udHJvbGxlciB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcbmltcG9ydCB7IFBsdWdpbnMgfSBmcm9tICdAY2FwYWNpdG9yL2NvcmUnO1xuY29uc3QgeyBCcm93c2VyIH0gPSBQbHVnaW5zO1xuaW1wb3J0IHsgQ2FsZW5kYXIsIEV4dGVybmFsQ2FsZW5kYXJTb3VyY2VzLCBTdWdnZXN0aW9uIH0gZnJvbSAnaWRlYS10b29sYm94JztcbmltcG9ydCB7XG4gIElERUFMb2FkaW5nU2VydmljZSxcbiAgSURFQUFXU0FQSVNlcnZpY2UsXG4gIElERUFNZXNzYWdlU2VydmljZSxcbiAgSURFQVRyYW5zbGF0aW9uc1NlcnZpY2UsXG4gIElERUFTdWdnZXN0aW9uc0NvbXBvbmVudFxufSBmcm9tICdAaWRlYS1pb25pYy9jb21tb24nO1xuaW1wb3J0IHsgZW52aXJvbm1lbnQgYXMgZW52IH0gZnJvbSAnQGVudic7XG5cbi8qKlxuICogTm90ZTogdG8gdGVzdCBsb2NhbGx5LCB5b3UgbmVlZCB0byB0ZW1wb3JhcmlseSBjaGFuZ2UgdGhlIHJlZGlyZWN0IFVSSTpcbiAqICAtIGluIHRoZSBsYW1iZGEgYGlkZWFfY2FsZW5kYXJzYCwgZS5nLiBgU0NBUkxFVFRfVVJMYDtcbiAqICAtIGluIHRoZSBjbGllbnQgY29uZmlnIGZpbGU6IGBBUFBfVVJMYC5cbiAqIEluIGJvdGggY2FzZXMsIHRoZSB2YWx1ZSBzaG91bGQgYmUgc2V0IHRvIGBodHRwOi8vbG9jYWxob3N0OjgxMDBgIChvciBhY2NvcmRpbmcgdG8gdGhlIGxvY2FsIFVSTCkuXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBJREVBQ2FsZW5kYXJzU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBtb2RhbEN0cmw6IE1vZGFsQ29udHJvbGxlcixcbiAgICBwdWJsaWMgYWxlcnRDdHJsOiBBbGVydENvbnRyb2xsZXIsXG4gICAgcHVibGljIG1lc3NhZ2U6IElERUFNZXNzYWdlU2VydmljZSxcbiAgICBwdWJsaWMgbG9hZGluZzogSURFQUxvYWRpbmdTZXJ2aWNlLFxuICAgIHB1YmxpYyBBUEk6IElERUFBV1NBUElTZXJ2aWNlLFxuICAgIHB1YmxpYyB0OiBJREVBVHJhbnNsYXRpb25zU2VydmljZVxuICApIHt9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgaW9uLWljb24gb2YgYW4gZXh0ZXJuYWwgc2VydmljZSBmcm9tIGl0cyBuYW1lLlxuICAgKi9cbiAgcHVibGljIGdldFNlcnZpY2VJY29uKHNlcnZpY2U6IEV4dGVybmFsQ2FsZW5kYXJTb3VyY2VzKTogc3RyaW5nIHtcbiAgICBzd2l0Y2ggKHNlcnZpY2UpIHtcbiAgICAgIGNhc2UgRXh0ZXJuYWxDYWxlbmRhclNvdXJjZXMuR09PR0xFOlxuICAgICAgICByZXR1cm4gJ2xvZ28tZ29vZ2xlJztcbiAgICAgIGNhc2UgRXh0ZXJuYWxDYWxlbmRhclNvdXJjZXMuTUlDUk9TT0ZUOlxuICAgICAgICByZXR1cm4gJ2xvZ28td2luZG93cyc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJ2hlbHAnO1xuICAgIH1cbiAgfVxuICAvKipcbiAgICogR2V0IHRoZSBiYXNlIFVSTCBmb3IgQVBJIHJlcXVlc3QgKHNoYXJlZC9wcml2YXRlIGNhbGVuZGFyKS5cbiAgICovXG4gIHB1YmxpYyBnZXRSZXF1ZXN0VVJMKGNhbGVuZGFyOiBDYWxlbmRhcik6IHN0cmluZyB7XG4gICAgcmV0dXJuIChjYWxlbmRhci50ZWFtSWQgPyBgdGVhbXMvJHtjYWxlbmRhci50ZWFtSWR9L2AgOiAnJykuY29uY2F0KCdjYWxlbmRhcnMnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBuZXcgY2FsZW5kYXIuXG4gICAqL1xuICBwdWJsaWMgcG9zdENhbGVuZGFyKGNhbDogQ2FsZW5kYXIpOiBQcm9taXNlPENhbGVuZGFyPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHRoaXMuQVBJLnBvc3RSZXNvdXJjZSh0aGlzLmdldFJlcXVlc3RVUkwoY2FsKSwgeyBpZGVhOiB0cnVlLCBib2R5OiBjYWwgfSlcbiAgICAgICAgLnRoZW4oKHJlczogQ2FsZW5kYXIpID0+IHJlc29sdmUobmV3IENhbGVuZGFyKHJlcykpKVxuICAgICAgICAuY2F0Y2goZXJyID0+IHJlamVjdChlcnIpKTtcbiAgICB9KTtcbiAgfVxuICAvKipcbiAgICogVXBkYXRlIGFuIGV4aXN0aW5nIGNhbGVuZGFyLlxuICAgKi9cbiAgcHVibGljIHB1dENhbGVuZGFyKGNhbDogQ2FsZW5kYXIpOiBQcm9taXNlPENhbGVuZGFyPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHRoaXMuQVBJLnB1dFJlc291cmNlKHRoaXMuZ2V0UmVxdWVzdFVSTChjYWwpLCB7IGlkZWE6IHRydWUsIHJlc291cmNlSWQ6IGNhbC5jYWxlbmRhcklkLCBib2R5OiBjYWwgfSlcbiAgICAgICAgLnRoZW4oKHJlczogQ2FsZW5kYXIpID0+IHJlc29sdmUobmV3IENhbGVuZGFyKHJlcykpKVxuICAgICAgICAuY2F0Y2goZXJyID0+IHJlamVjdChlcnIpKTtcbiAgICB9KTtcbiAgfVxuICAvKipcbiAgICogRGVsZXRlIGEgY2FsZW5kYXIuXG4gICAqL1xuICBwdWJsaWMgZGVsZXRlQ2FsZW5kYXIoY2FsOiBDYWxlbmRhcik6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICB0aGlzLkFQSS5kZWxldGVSZXNvdXJjZSh0aGlzLmdldFJlcXVlc3RVUkwoY2FsKSwgeyBpZGVhOiB0cnVlLCByZXNvdXJjZUlkOiBjYWwuY2FsZW5kYXJJZCB9KVxuICAgICAgICAudGhlbigoKSA9PiByZXNvbHZlKCkpXG4gICAgICAgIC5jYXRjaChlcnIgPT4gcmVqZWN0KGVycikpO1xuICAgIH0pO1xuICB9XG4gIC8qKlxuICAgKiBBc3NvY2lhdGUgYW4gZXh0ZXJuYWwgY2FsZW5kYXIgd2l0aCB0aGUgZ2l2ZW4gY2FsZW5kYXIuXG4gICAqL1xuICBwdWJsaWMgc2V0RXh0ZXJuYWxDYWxlbmRhcihjYWw6IENhbGVuZGFyLCBleHRlcm5hbElkOiBzdHJpbmcpOiBQcm9taXNlPENhbGVuZGFyPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHRoaXMuQVBJLnBhdGNoUmVzb3VyY2UodGhpcy5nZXRSZXF1ZXN0VVJMKGNhbCksIHtcbiAgICAgICAgaWRlYTogdHJ1ZSxcbiAgICAgICAgcmVzb3VyY2VJZDogY2FsLmNhbGVuZGFySWQsXG4gICAgICAgIGJvZHk6IHsgYWN0aW9uOiAnU0VUX0VYVEVSTkFMX0NBTEVOREFSJywgZXh0ZXJuYWxJZCB9XG4gICAgICB9KVxuICAgICAgICAudGhlbihyZXMgPT4gcmVzb2x2ZShuZXcgQ2FsZW5kYXIocmVzKSkpXG4gICAgICAgIC5jYXRjaChlcnIgPT4gcmVqZWN0KGVycikpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIExpbmsgdGhlIGNhbGVuZGFyIHdpdGggdGhlIGNob3NlbiBleHRlcm5hbCBzZXJ2aWNlIChhdXRoIGZsb3cpLlxuICAgKi9cbiAgcHVibGljIGxpbmtFeHRTZXJ2aWNlKGNhbDogQ2FsZW5kYXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgaWYgKCFjYWwuZXh0ZXJuYWwpIHJldHVybiByZWplY3QobmV3IEVycm9yKCdOT1RfRVhURVJOQUwnKSk7XG4gICAgICBsZXQgdXJsOiBzdHJpbmc7XG4gICAgICBzd2l0Y2ggKGNhbC5leHRlcm5hbC5zZXJ2aWNlKSB7XG4gICAgICAgIGNhc2UgRXh0ZXJuYWxDYWxlbmRhclNvdXJjZXMuR09PR0xFOlxuICAgICAgICAgIHVybCA9XG4gICAgICAgICAgICAnaHR0cHM6Ly9hY2NvdW50cy5nb29nbGUuY29tL28vb2F1dGgyL3YyL2F1dGg/JyArXG4gICAgICAgICAgICBgY2xpZW50X2lkPSR7ZW5jb2RlVVJJQ29tcG9uZW50KGVudi5nb29nbGUuYXBpQ2xpZW50SWQpfWAgK1xuICAgICAgICAgICAgJyZyZXNwb25zZV90eXBlPWNvZGUnICtcbiAgICAgICAgICAgIGAmcmVkaXJlY3RfdXJpPSR7ZW5jb2RlVVJJQ29tcG9uZW50KGVudi5pZGVhLmFwcC51cmwuY29uY2F0KCcvZWNoby9nb29nbGUtY2FsZW5kYXJzLWludGVncmF0aW9uJykpfWAgK1xuICAgICAgICAgICAgJyZpbmNsdWRlX2dyYW50ZWRfc2NvcGVzPXRydWUnICtcbiAgICAgICAgICAgICcmYWNjZXNzX3R5cGU9b2ZmbGluZSZwcm9tcHQ9Y29uc2VudCcgK1xuICAgICAgICAgICAgYCZzY29wZT0ke2VuY29kZVVSSUNvbXBvbmVudChlbnYuZ29vZ2xlLmFwaVNjb3BlKX1gICtcbiAgICAgICAgICAgIGAmc3RhdGU9JHtlbmNvZGVVUklDb21wb25lbnQoY2FsLmNhbGVuZGFySWQpfWA7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgRXh0ZXJuYWxDYWxlbmRhclNvdXJjZXMuTUlDUk9TT0ZUOlxuICAgICAgICAgIHVybCA9XG4gICAgICAgICAgICAnaHR0cHM6Ly9sb2dpbi5taWNyb3NvZnRvbmxpbmUuY29tL2NvbW1vbi9vYXV0aDIvdjIuMC9hdXRob3JpemU/JyArXG4gICAgICAgICAgICBgY2xpZW50X2lkPSR7ZW5jb2RlVVJJQ29tcG9uZW50KGVudi5taWNyb3NvZnQuYXBpQ2xpZW50SWQpfWAgK1xuICAgICAgICAgICAgJyZyZXNwb25zZV90eXBlPWNvZGUnICtcbiAgICAgICAgICAgIGAmcmVkaXJlY3RfdXJpPSR7ZW5jb2RlVVJJQ29tcG9uZW50KGVudi5pZGVhLmFwcC51cmwuY29uY2F0KCcvZWNoby9taWNyb3NvZnQtY2FsZW5kYXJzLWludGVncmF0aW9uJykpfWAgK1xuICAgICAgICAgICAgJyZyZXNwb25zZV9tb2RlPXF1ZXJ5JyArXG4gICAgICAgICAgICBgJnNjb3BlPSR7ZW5jb2RlVVJJQ29tcG9uZW50KGVudi5taWNyb3NvZnQuYXBpU2NvcGUpfWAgK1xuICAgICAgICAgICAgYCZzdGF0ZT0ke2VuY29kZVVSSUNvbXBvbmVudChjYWwuY2FsZW5kYXJJZCl9YDtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGlmICghdXJsKSByZXR1cm4gcmVqZWN0KG5ldyBFcnJvcignSU5WQUxJRF9TRVJWSUNFJykpO1xuICAgICAgLy8gc3RhcnQgdGhlIGF1dGggZmxvdyBpbiB0aGUgYnJvd3NlclxuICAgICAgQnJvd3Nlci5vcGVuKHsgdXJsIH0pLnRoZW4oKCkgPT4ge1xuICAgICAgICAvLyBzaW5jZSB3ZSBkb24ndCBrbm93IHdoZW4vaWYgdGhlIGF1dGggZmxvdyB3aWxsIGZpbmlzaCwgd2Ugd2FpdFxuICAgICAgICB0aGlzLmFsZXJ0Q3RybFxuICAgICAgICAgIC5jcmVhdGUoe1xuICAgICAgICAgICAgaGVhZGVyOiB0aGlzLnQuXygnSURFQV9BR0VOREEuQ0FMRU5EQVJTLkxJTktJTkdfQ0FMRU5EQVInKSxcbiAgICAgICAgICAgIG1lc3NhZ2U6IHRoaXMudC5fKCdJREVBX0FHRU5EQS5DQUxFTkRBUlMuTElOS0lOR19DQUxFTkRBUl9DT05GSVJNX09OQ0VfRE9ORScpLFxuICAgICAgICAgICAgYmFja2Ryb3BEaXNtaXNzOiBmYWxzZSxcbiAgICAgICAgICAgIGJ1dHRvbnM6IFt7IHRleHQ6IHRoaXMudC5fKCdDT01NT04uRE9ORScpLCBoYW5kbGVyOiAoKSA9PiByZXNvbHZlKCkgfV1cbiAgICAgICAgICB9KVxuICAgICAgICAgIC50aGVuKGFsZXJ0ID0+IGFsZXJ0LnByZXNlbnQoKSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGV4dGVybmFsIGNhbGVuZGFycyBsaXN0IG9mIHRoZSBleHRlcm5hbCBzZXJ2aWNlLlxuICAgKi9cbiAgcHVibGljIGdldEV4dGVybmFsQ2FsZW5kYXJzKGNhbDogQ2FsZW5kYXIpOiBQcm9taXNlPEV4dENhbGVuZGFyW10+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgaWYgKCFjYWwuZXh0ZXJuYWwpIHJldHVybiByZWplY3QobmV3IEVycm9yKCdOT1RfRVhURVJOQUwnKSk7XG4gICAgICAvLyBnZXQgdGhlIGFjY2VzcyB0b2tlbiB0byBtYWtlIHJlcXVlc3RzOyBpbiBjYXNlIGl0IGZhaWxzLCBwcm9jZWVkIHRvIGxpbmsgdGhlIGV4dGVybmFsIHNlcnZpY2VcbiAgICAgIHRoaXMuQVBJLnBhdGNoUmVzb3VyY2UodGhpcy5nZXRSZXF1ZXN0VVJMKGNhbCksIHtcbiAgICAgICAgaWRlYTogdHJ1ZSxcbiAgICAgICAgcmVzb3VyY2VJZDogY2FsLmNhbGVuZGFySWQsXG4gICAgICAgIGJvZHk6IHsgYWN0aW9uOiAnR0VUX0FDQ0VTU19UT0tFTicgfVxuICAgICAgfSlcbiAgICAgICAgLnRoZW4oKHJlc3VsdDogYW55KSA9PiB7XG4gICAgICAgICAgLy8gcHJlcGFyZSB0aGUgaGVhZGVycyAoYXV0aG9yaXphdGlvbikgZm9yIHRoZSByZXF1ZXN0IHRvIHRoZSBleHRlcm5hbCBzZXJ2aWNlXG4gICAgICAgICAgY29uc3QgaGVhZGVycyA9IHsgQXV0aG9yaXphdGlvbjogJ0JlYXJlciAnLmNvbmNhdChyZXN1bHQudG9rZW4pIH07XG4gICAgICAgICAgLy8gYWNxdWlyZSBhbmQgcmV0dXJuIHRoZSBjYWxlbmRhcnNcbiAgICAgICAgICBzd2l0Y2ggKGNhbC5leHRlcm5hbC5zZXJ2aWNlKSB7XG4gICAgICAgICAgICBjYXNlIEV4dGVybmFsQ2FsZW5kYXJTb3VyY2VzLkdPT0dMRTpcbiAgICAgICAgICAgICAgdGhpcy5BUEkucmF3UmVxdWVzdCgpXG4gICAgICAgICAgICAgICAgLmdldCgnaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vY2FsZW5kYXIvdjMvdXNlcnMvbWUvY2FsZW5kYXJMaXN0JywgeyBoZWFkZXJzIH0pXG4gICAgICAgICAgICAgICAgLnRvUHJvbWlzZSgpXG4gICAgICAgICAgICAgICAgLnRoZW4oKHJlczogYW55KSA9PiByZXNvbHZlKHJlcy5pdGVtcy5tYXAoKGM6IGFueSkgPT4gKHsgbmFtZTogYy5zdW1tYXJ5LCBpZDogYy5pZCB9IGFzIEV4dENhbGVuZGFyKSkpKVxuICAgICAgICAgICAgICAgIC5jYXRjaChlcnIgPT4gcmVqZWN0KGVycikpO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgRXh0ZXJuYWxDYWxlbmRhclNvdXJjZXMuTUlDUk9TT0ZUOlxuICAgICAgICAgICAgICB0aGlzLkFQSS5yYXdSZXF1ZXN0KClcbiAgICAgICAgICAgICAgICAuZ2V0KCdodHRwczovL2dyYXBoLm1pY3Jvc29mdC5jb20vdjEuMC9tZS9jYWxlbmRhcnMnLCB7IGhlYWRlcnMgfSlcbiAgICAgICAgICAgICAgICAudG9Qcm9taXNlKClcbiAgICAgICAgICAgICAgICAudGhlbigocmVzOiBhbnkpID0+IHJlc29sdmUocmVzLnZhbHVlLm1hcCgoYzogYW55KSA9PiAoeyBuYW1lOiBjLm5hbWUsIGlkOiBjLmlkIH0gYXMgRXh0Q2FsZW5kYXIpKSkpXG4gICAgICAgICAgICAgICAgLmNhdGNoKGVyciA9PiByZWplY3QoZXJyKSk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKGVyciA9PiByZWplY3QoZXJyKSk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogSWYgdGhlIGV4dGVybmFsIHNlcnZpY2UgaXMgbGlua2VkLCBjaG9vc2UgYW4gZXh0ZXJuYWwgY2FsZW5kYXIgYW5kIHNldCBpdCBmb3IgdGhlIGNob3NlbiBjYWxlbmRhci5cbiAgICogQHJldHVybiB0aGUgdXBkYXRlZCBjYWxlbmRhci5cbiAgICovXG4gIHB1YmxpYyBjaG9vc2VBbmRTZXRFeHRlcm5hbENhbGVuZGFyKGNhbDogQ2FsZW5kYXIpOiBQcm9taXNlPENhbGVuZGFyPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHRoaXMub3Blbk1vZGFsQW5kUGlja0V4dGVybmFsQ2FsZW5kYXIoY2FsKVxuICAgICAgICAudGhlbihleHRDYWxJZCA9PiB7XG4gICAgICAgICAgLy8gdGhlIGV4dGVybmFsIGNhbGVuZGFyIHdpbGwgYmUgc2V0IGxhdGVyIG9uXG4gICAgICAgICAgaWYgKCFleHRDYWxJZCkgcmV0dXJuIHJlc29sdmUobnVsbCk7XG4gICAgICAgICAgLy8gYW4gZXh0ZXJuYWwgY2FsZW5kYXIgd2FzIGNob3Nlbjogc2V0IGl0IHJpZ2h0IGF3YXlcbiAgICAgICAgICB0aGlzLnNldEV4dGVybmFsQ2FsZW5kYXIoY2FsLCBleHRDYWxJZClcbiAgICAgICAgICAgIC50aGVuKHJlcyA9PiByZXNvbHZlKHJlcykpXG4gICAgICAgICAgICAuY2F0Y2goZXJyID0+IHJlamVjdChlcnIpKTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKGVyciA9PiByZWplY3QoZXJyKSk7XG4gICAgfSk7XG4gIH1cbiAgLyoqXG4gICAqIE9wZW4gdGhlIG1vZGFsIHRvIHBpY2sgYSBjYWxlbmRhciBmcm9tIHRoZSBleHRlcm5hbCBzZXJ2aWNlLlxuICAgKiBAcmV0dXJuIHRoZSBpZCBvZiB0aGUgZXh0ZXJuYWwgY2FsZW5kYXIuXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIG9wZW5Nb2RhbEFuZFBpY2tFeHRlcm5hbENhbGVuZGFyKGNhbDogQ2FsZW5kYXIpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGF3YWl0IHRoaXMubG9hZGluZy5zaG93KCk7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHRoaXMuZ2V0RXh0ZXJuYWxDYWxlbmRhcnMoY2FsKVxuICAgICAgICAudGhlbigoZXh0Q2FsczogRXh0Q2FsZW5kYXJbXSkgPT4ge1xuICAgICAgICAgIGlmICghZXh0Q2Fscy5sZW5ndGgpIHJldHVybiByZWplY3QobmV3IEVycm9yKCdOT19FWFRFUk5BTF9DQUxFTkRBUlMnKSk7XG4gICAgICAgICAgLy8gbGV0IHRoZSB1c2VyIHRvIGNob29zZSB0aGUgZXh0ZXJuYWwgY2FsZW5kYXIgdG8gYXNzb2NpYXRlXG4gICAgICAgICAgdGhpcy5tb2RhbEN0cmxcbiAgICAgICAgICAgIC5jcmVhdGUoe1xuICAgICAgICAgICAgICBjb21wb25lbnQ6IElERUFTdWdnZXN0aW9uc0NvbXBvbmVudCxcbiAgICAgICAgICAgICAgY29tcG9uZW50UHJvcHM6IHtcbiAgICAgICAgICAgICAgICBkYXRhOiBleHRDYWxzLm1hcChjID0+IG5ldyBTdWdnZXN0aW9uKHsgdmFsdWU6IGMuaWQsIG5hbWU6IGMubmFtZSB9KSksXG4gICAgICAgICAgICAgICAgc2VhcmNoUGxhY2Vob2xkZXI6IHRoaXMudC5fKCdJREVBX0FHRU5EQS5DQUxFTkRBUlMuQ0hPT1NFX0FOX0VYVEVSTkFMX0NBTEVOREFSX1RPX0xJTksnKSxcbiAgICAgICAgICAgICAgICBzb3J0RGF0YTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBoaWRlSWRGcm9tVUk6IHRydWUsXG4gICAgICAgICAgICAgICAgaGlkZUNsZWFyQnV0dG9uOiB0cnVlLFxuICAgICAgICAgICAgICAgIG11c3RDaG9vc2U6IHRydWVcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgYmFja2Ryb3BEaXNtaXNzOiBmYWxzZVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC50aGVuKG1vZGFsID0+IHtcbiAgICAgICAgICAgICAgbW9kYWwub25EaWREaXNtaXNzKCkudGhlbihyZXMgPT4gcmVzb2x2ZShyZXMuZGF0YSA/IHJlcy5kYXRhLnZhbHVlIDogbnVsbCkpO1xuICAgICAgICAgICAgICBtb2RhbC5wcmVzZW50KCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKGVyciA9PiByZWplY3QoZXJyKSlcbiAgICAgICAgLmZpbmFsbHkoKCkgPT4gdGhpcy5sb2FkaW5nLmhpZGUoKSk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogRmlyc3Qgc3luYyBvZiB0aGUgZXh0ZW5hbCBjYWxlbmRhci5cbiAgICovXG4gIHB1YmxpYyBzeW5jQ2FsZW5kYXIoY2FsOiBDYWxlbmRhcik6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB0aGlzLnN5bmNDYWxlbmRhckhlbHBlcihjYWwsIGVyciA9PiAoZXJyID8gcmVqZWN0KGVycikgOiByZXNvbHZlKCkpKSk7XG4gIH1cbiAgLyoqXG4gICAqIEhlbHBlciB0byByZWN1cnNpdmVseSBzeW5jIGFuIHRoZSBleHRlbmFsIGNhbGVuZGFyLlxuICAgKi9cbiAgcHJpdmF0ZSBzeW5jQ2FsZW5kYXJIZWxwZXIoY2FsOiBDYWxlbmRhciwgZG9uZTogKGVycj86IEVycm9yKSA9PiB2b2lkKSB7XG4gICAgLy8gdGhpcyBpcyBhIHJlY3Vyc2l2ZSBvcGVyYXRpb246IHRoZSBBUEkgcmV0dXJucyBpZiB0aGUgc3luYyBoYXMgdG8gY29udGludWUgb3IgaXQgZmluaXNoZWRcbiAgICB0aGlzLkFQSS5wYXRjaFJlc291cmNlKHRoaXMuZ2V0UmVxdWVzdFVSTChjYWwpLCB7XG4gICAgICBpZGVhOiB0cnVlLFxuICAgICAgcmVzb3VyY2VJZDogY2FsLmNhbGVuZGFySWQsXG4gICAgICBib2R5OiB7IGFjdGlvbjogJ1NZTkNfRVhURVJOQUxfQ0FMRU5EQVInLCBmaXJzdFN5bmM6IHRydWUgfVxuICAgIH0pXG4gICAgICAudGhlbigocmVzOiBhbnkpID0+IHtcbiAgICAgICAgaWYgKHJlcy5tb3JlRGF0YSkgdGhpcy5zeW5jQ2FsZW5kYXJIZWxwZXIoY2FsLCBkb25lKTtcbiAgICAgICAgZWxzZSBkb25lKCk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKGVyciA9PiBkb25lKGVycikpO1xuICB9XG59XG5cbi8qKlxuICogSGVscGVyIHN0cnVjdHVyZSB0byBkZWZpbmUgZXh0ZXJuYWwgc2VydmljZXMnIGNhbGVuZGFycyAoYmFzaWMgaW5mbykuXG4gKi9cbmludGVyZmFjZSBFeHRDYWxlbmRhciB7XG4gIGlkOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbn1cbiJdfQ==
|
|
254
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXJzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9tb2R1bGVzL2FnZW5kYS9zcmMvY2FsZW5kYXJzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDN0MsT0FBTyxFQUFFLFFBQVEsRUFBRSx1QkFBdUIsRUFBRSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDN0UsT0FBTyxFQUtMLHdCQUF3QixFQUN6QixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBRSxXQUFXLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7O0FBRTFDOzs7OztHQUtHO0FBRUgsTUFBTSxPQUFPLG9CQUFvQjtJQUMvQixZQUNTLFNBQTBCLEVBQzFCLFNBQTBCLEVBQzFCLE9BQTJCLEVBQzNCLE9BQTJCLEVBQzNCLEdBQXNCLEVBQ3RCLENBQTBCO1FBTDFCLGNBQVMsR0FBVCxTQUFTLENBQWlCO1FBQzFCLGNBQVMsR0FBVCxTQUFTLENBQWlCO1FBQzFCLFlBQU8sR0FBUCxPQUFPLENBQW9CO1FBQzNCLFlBQU8sR0FBUCxPQUFPLENBQW9CO1FBQzNCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQ3RCLE1BQUMsR0FBRCxDQUFDLENBQXlCO0lBQ2hDLENBQUM7SUFFSjs7T0FFRztJQUNJLGNBQWMsQ0FBQyxPQUFnQztRQUNwRCxRQUFRLE9BQU8sRUFBRTtZQUNmLEtBQUssdUJBQXVCLENBQUMsTUFBTTtnQkFDakMsT0FBTyxhQUFhLENBQUM7WUFDdkIsS0FBSyx1QkFBdUIsQ0FBQyxTQUFTO2dCQUNwQyxPQUFPLGNBQWMsQ0FBQztZQUN4QjtnQkFDRSxPQUFPLE1BQU0sQ0FBQztTQUNqQjtJQUNILENBQUM7SUFDRDs7T0FFRztJQUNJLGFBQWEsQ0FB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LEVBQUUsQ0FBQztRQUNkLENBQUMsQ0FBQzthQUNELEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzdCLENBQUM7O2lIQXZPVSxvQkFBb0I7cUhBQXBCLG9CQUFvQjsyRkFBcEIsb0JBQW9CO2tCQURoQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWxlcnRDb250cm9sbGVyLCBNb2RhbENvbnRyb2xsZXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5pbXBvcnQgeyBCcm93c2VyIH0gZnJvbSAnQGNhcGFjaXRvci9icm93c2VyJztcbmltcG9ydCB7IENhbGVuZGFyLCBFeHRlcm5hbENhbGVuZGFyU291cmNlcywgU3VnZ2VzdGlvbiB9IGZyb20gJ2lkZWEtdG9vbGJveCc7XG5pbXBvcnQge1xuICBJREVBTG9hZGluZ1NlcnZpY2UsXG4gIElERUFBV1NBUElTZXJ2aWNlLFxuICBJREVBTWVzc2FnZVNlcnZpY2UsXG4gIElERUFUcmFuc2xhdGlvbnNTZXJ2aWNlLFxuICBJREVBU3VnZ2VzdGlvbnNDb21wb25lbnRcbn0gZnJvbSAnQGlkZWEtaW9uaWMvY29tbW9uJztcbmltcG9ydCB7IGVudmlyb25tZW50IGFzIGVudiB9IGZyb20gJ0BlbnYnO1xuXG4vKipcbiAqIE5vdGU6IHRvIHRlc3QgbG9jYWxseSwgeW91IG5lZWQgdG8gdGVtcG9yYXJpbHkgY2hhbmdlIHRoZSByZWRpcmVjdCBVUkk6XG4gKiAgLSBpbiB0aGUgbGFtYmRhIGBpZGVhX2NhbGVuZGFyc2AsIGUuZy4gYFNDQVJMRVRUX1VSTGA7XG4gKiAgLSBpbiB0aGUgY2xpZW50IGNvbmZpZyBmaWxlOiBgQVBQX1VSTGAuXG4gKiBJbiBib3RoIGNhc2VzLCB0aGUgdmFsdWUgc2hvdWxkIGJlIHNldCB0byBgaHR0cDovL2xvY2FsaG9zdDo4MTAwYCAob3IgYWNjb3JkaW5nIHRvIHRoZSBsb2NhbCBVUkwpLlxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgSURFQUNhbGVuZGFyc1NlcnZpY2Uge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgbW9kYWxDdHJsOiBNb2RhbENvbnRyb2xsZXIsXG4gICAgcHVibGljIGFsZXJ0Q3RybDogQWxlcnRDb250cm9sbGVyLFxuICAgIHB1YmxpYyBtZXNzYWdlOiBJREVBTWVzc2FnZVNlcnZpY2UsXG4gICAgcHVibGljIGxvYWRpbmc6IElERUFMb2FkaW5nU2VydmljZSxcbiAgICBwdWJsaWMgQVBJOiBJREVBQVdTQVBJU2VydmljZSxcbiAgICBwdWJsaWMgdDogSURFQVRyYW5zbGF0aW9uc1NlcnZpY2VcbiAgKSB7fVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGlvbi1pY29uIG9mIGFuIGV4dGVybmFsIHNlcnZpY2UgZnJvbSBpdHMgbmFtZS5cbiAgICovXG4gIHB1YmxpYyBnZXRTZXJ2aWNlSWNvbihzZXJ2aWNlOiBFeHRlcm5hbENhbGVuZGFyU291cmNlcyk6IHN0cmluZyB7XG4gICAgc3dpdGNoIChzZXJ2aWNlKSB7XG4gICAgICBjYXNlIEV4dGVybmFsQ2FsZW5kYXJTb3VyY2VzLkdPT0dMRTpcbiAgICAgICAgcmV0dXJuICdsb2dvLWdvb2dsZSc7XG4gICAgICBjYXNlIEV4dGVybmFsQ2FsZW5kYXJTb3VyY2VzLk1JQ1JPU09GVDpcbiAgICAgICAgcmV0dXJuICdsb2dvLXdpbmRvd3MnO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuICdoZWxwJztcbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqIEdldCB0aGUgYmFzZSBVUkwgZm9yIEFQSSByZXF1ZXN0IChzaGFyZWQvcHJpdmF0ZSBjYWxlbmRhcikuXG4gICAqL1xuICBwdWJsaWMgZ2V0UmVxdWVzdFVSTChjYWxlbmRhcjogQ2FsZW5kYXIpOiBzdHJpbmcge1xuICAgIHJldHVybiAoY2FsZW5kYXIudGVhbUlkID8gYHRlYW1zLyR7Y2FsZW5kYXIudGVhbUlkfS9gIDogJycpLmNvbmNhdCgnY2FsZW5kYXJzJyk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgbmV3IGNhbGVuZGFyLlxuICAgKi9cbiAgcHVibGljIHBvc3RDYWxlbmRhcihjYWw6IENhbGVuZGFyKTogUHJvbWlzZTxDYWxlbmRhcj4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICB0aGlzLkFQSS5wb3N0UmVzb3VyY2UodGhpcy5nZXRSZXF1ZXN0VVJMKGNhbCksIHsgaWRlYTogdHJ1ZSwgYm9keTogY2FsIH0pXG4gICAgICAgIC50aGVuKChyZXM6IENhbGVuZGFyKSA9PiByZXNvbHZlKG5ldyBDYWxlbmRhcihyZXMpKSlcbiAgICAgICAgLmNhdGNoKGVyciA9PiByZWplY3QoZXJyKSk7XG4gICAgfSk7XG4gIH1cbiAgLyoqXG4gICAqIFVwZGF0ZSBhbiBleGlzdGluZyBjYWxlbmRhci5cbiAgICovXG4gIHB1YmxpYyBwdXRDYWxlbmRhcihjYWw6IENhbGVuZGFyKTogUHJvbWlzZTxDYWxlbmRhcj4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICB0aGlzLkFQSS5wdXRSZXNvdXJjZSh0aGlzLmdldFJlcXVlc3RVUkwoY2FsKSwgeyBpZGVhOiB0cnVlLCByZXNvdXJjZUlkOiBjYWwuY2FsZW5kYXJJZCwgYm9keTogY2FsIH0pXG4gICAgICAgIC50aGVuKChyZXM6IENhbGVuZGFyKSA9PiByZXNvbHZlKG5ldyBDYWxlbmRhcihyZXMpKSlcbiAgICAgICAgLmNhdGNoKGVyciA9PiByZWplY3QoZXJyKSk7XG4gICAgfSk7XG4gIH1cbiAgLyoqXG4gICAqIERlbGV0ZSBhIGNhbGVuZGFyLlxuICAgKi9cbiAgcHVibGljIGRlbGV0ZUNhbGVuZGFyKGNhbDogQ2FsZW5kYXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgdGhpcy5BUEkuZGVsZXRlUmVzb3VyY2UodGhpcy5nZXRSZXF1ZXN0VVJMKGNhbCksIHsgaWRlYTogdHJ1ZSwgcmVzb3VyY2VJZDogY2FsLmNhbGVuZGFySWQgfSlcbiAgICAgICAgLnRoZW4oKCkgPT4gcmVzb2x2ZSgpKVxuICAgICAgICAuY2F0Y2goZXJyID0+IHJlamVjdChlcnIpKTtcbiAgICB9KTtcbiAgfVxuICAvKipcbiAgICogQXNzb2NpYXRlIGFuIGV4dGVybmFsIGNhbGVuZGFyIHdpdGggdGhlIGdpdmVuIGNhbGVuZGFyLlxuICAgKi9cbiAgcHVibGljIHNldEV4dGVybmFsQ2FsZW5kYXIoY2FsOiBDYWxlbmRhciwgZXh0ZXJuYWxJZDogc3RyaW5nKTogUHJvbWlzZTxDYWxlbmRhcj4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICB0aGlzLkFQSS5wYXRjaFJlc291cmNlKHRoaXMuZ2V0UmVxdWVzdFVSTChjYWwpLCB7XG4gICAgICAgIGlkZWE6IHRydWUsXG4gICAgICAgIHJlc291cmNlSWQ6IGNhbC5jYWxlbmRhcklkLFxuICAgICAgICBib2R5OiB7IGFjdGlvbjogJ1NFVF9FWFRFUk5BTF9DQUxFTkRBUicsIGV4dGVybmFsSWQgfVxuICAgICAgfSlcbiAgICAgICAgLnRoZW4ocmVzID0+IHJlc29sdmUobmV3IENhbGVuZGFyKHJlcykpKVxuICAgICAgICAuY2F0Y2goZXJyID0+IHJlamVjdChlcnIpKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMaW5rIHRoZSBjYWxlbmRhciB3aXRoIHRoZSBjaG9zZW4gZXh0ZXJuYWwgc2VydmljZSAoYXV0aCBmbG93KS5cbiAgICovXG4gIHB1YmxpYyBsaW5rRXh0U2VydmljZShjYWw6IENhbGVuZGFyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGlmICghY2FsLmV4dGVybmFsKSByZXR1cm4gcmVqZWN0KG5ldyBFcnJvcignTk9UX0VYVEVSTkFMJykpO1xuICAgICAgbGV0IHVybDogc3RyaW5nO1xuICAgICAgc3dpdGNoIChjYWwuZXh0ZXJuYWwuc2VydmljZSkge1xuICAgICAgICBjYXNlIEV4dGVybmFsQ2FsZW5kYXJTb3VyY2VzLkdPT0dMRTpcbiAgICAgICAgICB1cmwgPVxuICAgICAgICAgICAgJ2h0dHBzOi8vYWNjb3VudHMuZ29vZ2xlLmNvbS9vL29hdXRoMi92Mi9hdXRoPycgK1xuICAgICAgICAgICAgYGNsaWVudF9pZD0ke2VuY29kZVVSSUNvbXBvbmVudChlbnYuZ29vZ2xlLmFwaUNsaWVudElkKX1gICtcbiAgICAgICAgICAgICcmcmVzcG9uc2VfdHlwZT1jb2RlJyArXG4gICAgICAgICAgICBgJnJlZGlyZWN0X3VyaT0ke2VuY29kZVVSSUNvbXBvbmVudChlbnYuaWRlYS5hcHAudXJsLmNvbmNhdCgnL2VjaG8vZ29vZ2xlLWNhbGVuZGFycy1pbnRlZ3JhdGlvbicpKX1gICtcbiAgICAgICAgICAgICcmaW5jbHVkZV9ncmFudGVkX3Njb3Blcz10cnVlJyArXG4gICAgICAgICAgICAnJmFjY2Vzc190eXBlPW9mZmxpbmUmcHJvbXB0PWNvbnNlbnQnICtcbiAgICAgICAgICAgIGAmc2NvcGU9JHtlbmNvZGVVUklDb21wb25lbnQoZW52Lmdvb2dsZS5hcGlTY29wZSl9YCArXG4gICAgICAgICAgICBgJnN0YXRlPSR7ZW5jb2RlVVJJQ29tcG9uZW50KGNhbC5jYWxlbmRhcklkKX1gO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEV4dGVybmFsQ2FsZW5kYXJTb3VyY2VzLk1JQ1JPU09GVDpcbiAgICAgICAgICB1cmwgPVxuICAgICAgICAgICAgJ2h0dHBzOi8vbG9naW4ubWljcm9zb2Z0b25saW5lLmNvbS9jb21tb24vb2F1dGgyL3YyLjAvYXV0aG9yaXplPycgK1xuICAgICAgICAgICAgYGNsaWVudF9pZD0ke2VuY29kZVVSSUNvbXBvbmVudChlbnYubWljcm9zb2Z0LmFwaUNsaWVudElkKX1gICtcbiAgICAgICAgICAgICcmcmVzcG9uc2VfdHlwZT1jb2RlJyArXG4gICAgICAgICAgICBgJnJlZGlyZWN0X3VyaT0ke2VuY29kZVVSSUNvbXBvbmVudChlbnYuaWRlYS5hcHAudXJsLmNvbmNhdCgnL2VjaG8vbWljcm9zb2Z0LWNhbGVuZGFycy1pbnRlZ3JhdGlvbicpKX1gICtcbiAgICAgICAgICAgICcmcmVzcG9uc2VfbW9kZT1xdWVyeScgK1xuICAgICAgICAgICAgYCZzY29wZT0ke2VuY29kZVVSSUNvbXBvbmVudChlbnYubWljcm9zb2Z0LmFwaVNjb3BlKX1gICtcbiAgICAgICAgICAgIGAmc3RhdGU9JHtlbmNvZGVVUklDb21wb25lbnQoY2FsLmNhbGVuZGFySWQpfWA7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBpZiAoIXVybCkgcmV0dXJuIHJlamVjdChuZXcgRXJyb3IoJ0lOVkFMSURfU0VSVklDRScpKTtcbiAgICAgIC8vIHN0YXJ0IHRoZSBhdXRoIGZsb3cgaW4gdGhlIGJyb3dzZXJcbiAgICAgIEJyb3dzZXIub3Blbih7IHVybCB9KS50aGVuKCgpID0+IHtcbiAgICAgICAgLy8gc2luY2Ugd2UgZG9uJ3Qga25vdyB3aGVuL2lmIHRoZSBhdXRoIGZsb3cgd2lsbCBmaW5pc2gsIHdlIHdhaXRcbiAgICAgICAgdGhpcy5hbGVydEN0cmxcbiAgICAgICAgICAuY3JlYXRlKHtcbiAgICAgICAgICAgIGhlYWRlcjogdGhpcy50Ll8oJ0lERUFfQUdFTkRBLkNBTEVOREFSUy5MSU5LSU5HX0NBTEVOREFSJyksXG4gICAgICAgICAgICBtZXNzYWdlOiB0aGlzLnQuXygnSURFQV9BR0VOREEuQ0FMRU5EQVJTLkxJTktJTkdfQ0FMRU5EQVJfQ09ORklSTV9PTkNFX0RPTkUnKSxcbiAgICAgICAgICAgIGJhY2tkcm9wRGlzbWlzczogZmFsc2UsXG4gICAgICAgICAgICBidXR0b25zOiBbeyB0ZXh0OiB0aGlzLnQuXygnQ09NTU9OLkRPTkUnKSwgaGFuZGxlcjogKCkgPT4gcmVzb2x2ZSgpIH1dXG4gICAgICAgICAgfSlcbiAgICAgICAgICAudGhlbihhbGVydCA9PiBhbGVydC5wcmVzZW50KCkpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBleHRlcm5hbCBjYWxlbmRhcnMgbGlzdCBvZiB0aGUgZXh0ZXJuYWwgc2VydmljZS5cbiAgICovXG4gIHB1YmxpYyBnZXRFeHRlcm5hbENhbGVuZGFycyhjYWw6IENhbGVuZGFyKTogUHJvbWlzZTxFeHRDYWxlbmRhcltdPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGlmICghY2FsLmV4dGVybmFsKSByZXR1cm4gcmVqZWN0KG5ldyBFcnJvcignTk9UX0VYVEVSTkFMJykpO1xuICAgICAgLy8gZ2V0IHRoZSBhY2Nlc3MgdG9rZW4gdG8gbWFrZSByZXF1ZXN0czsgaW4gY2FzZSBpdCBmYWlscywgcHJvY2VlZCB0byBsaW5rIHRoZSBleHRlcm5hbCBzZXJ2aWNlXG4gICAgICB0aGlzLkFQSS5wYXRjaFJlc291cmNlKHRoaXMuZ2V0UmVxdWVzdFVSTChjYWwpLCB7XG4gICAgICAgIGlkZWE6IHRydWUsXG4gICAgICAgIHJlc291cmNlSWQ6IGNhbC5jYWxlbmRhcklkLFxuICAgICAgICBib2R5OiB7IGFjdGlvbjogJ0dFVF9BQ0NFU1NfVE9LRU4nIH1cbiAgICAgIH0pXG4gICAgICAgIC50aGVuKChyZXN1bHQ6IGFueSkgPT4ge1xuICAgICAgICAgIC8vIHByZXBhcmUgdGhlIGhlYWRlcnMgKGF1dGhvcml6YXRpb24pIGZvciB0aGUgcmVxdWVzdCB0byB0aGUgZXh0ZXJuYWwgc2VydmljZVxuICAgICAgICAgIGNvbnN0IGhlYWRlcnMgPSB7IEF1dGhvcml6YXRpb246ICdCZWFyZXIgJy5jb25jYXQocmVzdWx0LnRva2VuKSB9O1xuICAgICAgICAgIC8vIGFjcXVpcmUgYW5kIHJldHVybiB0aGUgY2FsZW5kYXJzXG4gICAgICAgICAgc3dpdGNoIChjYWwuZXh0ZXJuYWwuc2VydmljZSkge1xuICAgICAgICAgICAgY2FzZSBFeHRlcm5hbENhbGVuZGFyU291cmNlcy5HT09HTEU6XG4gICAgICAgICAgICAgIHRoaXMuQVBJLnJhd1JlcXVlc3QoKVxuICAgICAgICAgICAgICAgIC5nZXQoJ2h0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL2NhbGVuZGFyL3YzL3VzZXJzL21lL2NhbGVuZGFyTGlzdCcsIHsgaGVhZGVycyB9KVxuICAgICAgICAgICAgICAgIC50b1Byb21pc2UoKVxuICAgICAgICAgICAgICAgIC50aGVuKChyZXM6IGFueSkgPT4gcmVzb2x2ZShyZXMuaXRlbXMubWFwKChjOiBhbnkpID0+ICh7IG5hbWU6IGMuc3VtbWFyeSwgaWQ6IGMuaWQgfSBhcyBFeHRDYWxlbmRhcikpKSlcbiAgICAgICAgICAgICAgICAuY2F0Y2goZXJyID0+IHJlamVjdChlcnIpKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIEV4dGVybmFsQ2FsZW5kYXJTb3VyY2VzLk1JQ1JPU09GVDpcbiAgICAgICAgICAgICAgdGhpcy5BUEkucmF3UmVxdWVzdCgpXG4gICAgICAgICAgICAgICAgLmdldCgnaHR0cHM6Ly9ncmFwaC5taWNyb3NvZnQuY29tL3YxLjAvbWUvY2FsZW5kYXJzJywgeyBoZWFkZXJzIH0pXG4gICAgICAgICAgICAgICAgLnRvUHJvbWlzZSgpXG4gICAgICAgICAgICAgICAgLnRoZW4oKHJlczogYW55KSA9PiByZXNvbHZlKHJlcy52YWx1ZS5tYXAoKGM6IGFueSkgPT4gKHsgbmFtZTogYy5uYW1lLCBpZDogYy5pZCB9IGFzIEV4dENhbGVuZGFyKSkpKVxuICAgICAgICAgICAgICAgIC5jYXRjaChlcnIgPT4gcmVqZWN0KGVycikpO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaChlcnIgPT4gcmVqZWN0KGVycikpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIElmIHRoZSBleHRlcm5hbCBzZXJ2aWNlIGlzIGxpbmtlZCwgY2hvb3NlIGFuIGV4dGVybmFsIGNhbGVuZGFyIGFuZCBzZXQgaXQgZm9yIHRoZSBjaG9zZW4gY2FsZW5kYXIuXG4gICAqIEByZXR1cm4gdGhlIHVwZGF0ZWQgY2FsZW5kYXIuXG4gICAqL1xuICBwdWJsaWMgY2hvb3NlQW5kU2V0RXh0ZXJuYWxDYWxlbmRhcihjYWw6IENhbGVuZGFyKTogUHJvbWlzZTxDYWxlbmRhcj4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICB0aGlzLm9wZW5Nb2RhbEFuZFBpY2tFeHRlcm5hbENhbGVuZGFyKGNhbClcbiAgICAgICAgLnRoZW4oZXh0Q2FsSWQgPT4ge1xuICAgICAgICAgIC8vIHRoZSBleHRlcm5hbCBjYWxlbmRhciB3aWxsIGJlIHNldCBsYXRlciBvblxuICAgICAgICAgIGlmICghZXh0Q2FsSWQpIHJldHVybiByZXNvbHZlKG51bGwpO1xuICAgICAgICAgIC8vIGFuIGV4dGVybmFsIGNhbGVuZGFyIHdhcyBjaG9zZW46IHNldCBpdCByaWdodCBhd2F5XG4gICAgICAgICAgdGhpcy5zZXRFeHRlcm5hbENhbGVuZGFyKGNhbCwgZXh0Q2FsSWQpXG4gICAgICAgICAgICAudGhlbihyZXMgPT4gcmVzb2x2ZShyZXMpKVxuICAgICAgICAgICAgLmNhdGNoKGVyciA9PiByZWplY3QoZXJyKSk7XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaChlcnIgPT4gcmVqZWN0KGVycikpO1xuICAgIH0pO1xuICB9XG4gIC8qKlxuICAgKiBPcGVuIHRoZSBtb2RhbCB0byBwaWNrIGEgY2FsZW5kYXIgZnJvbSB0aGUgZXh0ZXJuYWwgc2VydmljZS5cbiAgICogQHJldHVybiB0aGUgaWQgb2YgdGhlIGV4dGVybmFsIGNhbGVuZGFyLlxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBvcGVuTW9kYWxBbmRQaWNrRXh0ZXJuYWxDYWxlbmRhcihjYWw6IENhbGVuZGFyKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBhd2FpdCB0aGlzLmxvYWRpbmcuc2hvdygpO1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICB0aGlzLmdldEV4dGVybmFsQ2FsZW5kYXJzKGNhbClcbiAgICAgICAgLnRoZW4oKGV4dENhbHM6IEV4dENhbGVuZGFyW10pID0+IHtcbiAgICAgICAgICBpZiAoIWV4dENhbHMubGVuZ3RoKSByZXR1cm4gcmVqZWN0KG5ldyBFcnJvcignTk9fRVhURVJOQUxfQ0FMRU5EQVJTJykpO1xuICAgICAgICAgIC8vIGxldCB0aGUgdXNlciB0byBjaG9vc2UgdGhlIGV4dGVybmFsIGNhbGVuZGFyIHRvIGFzc29jaWF0ZVxuICAgICAgICAgIHRoaXMubW9kYWxDdHJsXG4gICAgICAgICAgICAuY3JlYXRlKHtcbiAgICAgICAgICAgICAgY29tcG9uZW50OiBJREVBU3VnZ2VzdGlvbnNDb21wb25lbnQsXG4gICAgICAgICAgICAgIGNvbXBvbmVudFByb3BzOiB7XG4gICAgICAgICAgICAgICAgZGF0YTogZXh0Q2Fscy5tYXAoYyA9PiBuZXcgU3VnZ2VzdGlvbih7IHZhbHVlOiBjLmlkLCBuYW1lOiBjLm5hbWUgfSkpLFxuICAgICAgICAgICAgICAgIHNlYXJjaFBsYWNlaG9sZGVyOiB0aGlzLnQuXygnSURFQV9BR0VOREEuQ0FMRU5EQVJTLkNIT09TRV9BTl9FWFRFUk5BTF9DQUxFTkRBUl9UT19MSU5LJyksXG4gICAgICAgICAgICAgICAgc29ydERhdGE6IHRydWUsXG4gICAgICAgICAgICAgICAgaGlkZUlkRnJvbVVJOiB0cnVlLFxuICAgICAgICAgICAgICAgIGhpZGVDbGVhckJ1dHRvbjogdHJ1ZSxcbiAgICAgICAgICAgICAgICBtdXN0Q2hvb3NlOiB0cnVlXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIGJhY2tkcm9wRGlzbWlzczogZmFsc2VcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAudGhlbihtb2RhbCA9PiB7XG4gICAgICAgICAgICAgIG1vZGFsLm9uRGlkRGlzbWlzcygpLnRoZW4ocmVzID0+IHJlc29sdmUocmVzLmRhdGEgPyByZXMuZGF0YS52YWx1ZSA6IG51bGwpKTtcbiAgICAgICAgICAgICAgbW9kYWwucHJlc2VudCgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaChlcnIgPT4gcmVqZWN0KGVycikpXG4gICAgICAgIC5maW5hbGx5KCgpID0+IHRoaXMubG9hZGluZy5oaWRlKCkpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEZpcnN0IHN5bmMgb2YgdGhlIGV4dGVuYWwgY2FsZW5kYXIuXG4gICAqL1xuICBwdWJsaWMgc3luY0NhbGVuZGFyKGNhbDogQ2FsZW5kYXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gdGhpcy5zeW5jQ2FsZW5kYXJIZWxwZXIoY2FsLCBlcnIgPT4gKGVyciA/IHJlamVjdChlcnIpIDogcmVzb2x2ZSgpKSkpO1xuICB9XG4gIC8qKlxuICAgKiBIZWxwZXIgdG8gcmVjdXJzaXZlbHkgc3luYyBhbiB0aGUgZXh0ZW5hbCBjYWxlbmRhci5cbiAgICovXG4gIHByaXZhdGUgc3luY0NhbGVuZGFySGVscGVyKGNhbDogQ2FsZW5kYXIsIGRvbmU6IChlcnI/OiBFcnJvcikgPT4gdm9pZCkge1xuICAgIC8vIHRoaXMgaXMgYSByZWN1cnNpdmUgb3BlcmF0aW9uOiB0aGUgQVBJIHJldHVybnMgaWYgdGhlIHN5bmMgaGFzIHRvIGNvbnRpbnVlIG9yIGl0IGZpbmlzaGVkXG4gICAgdGhpcy5BUEkucGF0Y2hSZXNvdXJjZSh0aGlzLmdldFJlcXVlc3RVUkwoY2FsKSwge1xuICAgICAgaWRlYTogdHJ1ZSxcbiAgICAgIHJlc291cmNlSWQ6IGNhbC5jYWxlbmRhcklkLFxuICAgICAgYm9keTogeyBhY3Rpb246ICdTWU5DX0VYVEVSTkFMX0NBTEVOREFSJywgZmlyc3RTeW5jOiB0cnVlIH1cbiAgICB9KVxuICAgICAgLnRoZW4oKHJlczogYW55KSA9PiB7XG4gICAgICAgIGlmIChyZXMubW9yZURhdGEpIHRoaXMuc3luY0NhbGVuZGFySGVscGVyKGNhbCwgZG9uZSk7XG4gICAgICAgIGVsc2UgZG9uZSgpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaChlcnIgPT4gZG9uZShlcnIpKTtcbiAgfVxufVxuXG4vKipcbiAqIEhlbHBlciBzdHJ1Y3R1cmUgdG8gZGVmaW5lIGV4dGVybmFsIHNlcnZpY2VzJyBjYWxlbmRhcnMgKGJhc2ljIGluZm8pLlxuICovXG5pbnRlcmZhY2UgRXh0Q2FsZW5kYXIge1xuICBpZDogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG59XG4iXX0=
|
|
@@ -16,7 +16,7 @@ import { isFuture, isToday, isSameDay } from 'date-fns';
|
|
|
16
16
|
import ColorParse from 'color-parse';
|
|
17
17
|
import { __awaiter } from 'tslib';
|
|
18
18
|
import { ExternalCalendarSources, Calendar, Suggestion, Check, ExternalCalendarInfo } from 'idea-toolbox';
|
|
19
|
-
import {
|
|
19
|
+
import { Browser } from '@capacitor/browser';
|
|
20
20
|
import { environment } from '@env';
|
|
21
21
|
|
|
22
22
|
class CustomDateFormatter extends CalendarDateFormatter {
|
|
@@ -290,7 +290,6 @@ var EventAttendance;
|
|
|
290
290
|
EventAttendance[EventAttendance["ACCEPTED"] = 2] = "ACCEPTED";
|
|
291
291
|
})(EventAttendance || (EventAttendance = {}));
|
|
292
292
|
|
|
293
|
-
const { Browser } = Plugins;
|
|
294
293
|
/**
|
|
295
294
|
* Note: to test locally, you need to temporarily change the redirect URI:
|
|
296
295
|
* - in the lambda `idea_calendars`, e.g. `SCARLETT_URL`;
|
|
@@ -646,7 +645,7 @@ class IDEACalendarComponent {
|
|
|
646
645
|
}
|
|
647
646
|
}
|
|
648
647
|
IDEACalendarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: IDEACalendarComponent, deps: [{ token: IDEACalendarsService }, { token: i2.ModalController }, { token: i2.AlertController }, { token: i3.IDEATinCanService }, { token: i3.IDEALoadingService }, { token: i3.IDEAMessageService }, { token: i3.IDEAAWSAPIService }, { token: i3.IDEATranslationsService }], target: i0.ɵɵFactoryTarget.Component });
|
|
649
|
-
IDEACalendarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: IDEACalendarComponent, selector: "idea-calendar", inputs: { calendar: "calendar", advancedPermissions: "advancedPermissions", hideColor: "hideColor" }, ngImport: i0, template: "<ion-header>\n <ion-toolbar color=\"ideaToolbar\">\n <ion-buttons slot=\"start\">\n <ion-button [title]=\"t._('COMMON.CLOSE')\" (click)=\"close()\">\n <ion-icon name=\"close-circle\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n </ion-buttons>\n <ion-title>{{ 'IDEA_AGENDA.CALENDARS.EDIT_CALENDAR' | translate }}</ion-title>\n <ion-buttons slot=\"end\">\n <ion-button [title]=\"t._('COMMON.SAVE')\" (click)=\"save()\">\n <ion-icon name=\"checkmark-circle\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n<ion-content>\n <div class=\"maxWidthContainer\" *ngIf=\"_calendar\">\n <ion-list class=\"aList\">\n <ion-item\n lines=\"inset\"\n [class.fieldHasError]=\"hasFieldAnError('name')\"\n [title]=\"t._('IDEA_AGENDA.CALENDARS.NAME_HINT')\"\n >\n <ion-label position=\"stacked\">{{ 'IDEA_AGENDA.CALENDARS.NAME' | translate }} </ion-label>\n <ion-input [placeholder]=\"t._('IDEA_AGENDA.CALENDARS.NAME_HINT')\" [(ngModel)]=\"_calendar.name\"></ion-input>\n </ion-item>\n <ion-item\n lines=\"inset\"\n [class.fieldHasError]=\"hasFieldAnError('description')\"\n [title]=\"t._('IDEA_AGENDA.CALENDARS.DESCRIPTION_HINT')\"\n >\n <ion-label position=\"stacked\">{{ 'IDEA_AGENDA.CALENDARS.DESCRIPTION' | translate }} </ion-label>\n <ion-input\n [placeholder]=\"t._('IDEA_AGENDA.CALENDARS.DESCRIPTION_HINT')\"\n [(ngModel)]=\"_calendar.description\"\n ></ion-input>\n </ion-item>\n <idea-color-picker\n *ngIf=\"!hideColor\"\n [lines]=\"'inset'\"\n [current]=\"_calendar.color\"\n [label]=\"t._('IDEA_AGENDA.CALENDARS.COLOR')\"\n [class.fieldHasError]=\"hasFieldAnError('color')\"\n (select)=\"$event ? (_calendar.color = $event) : null\"\n ></idea-color-picker>\n <idea-checker\n *ngIf=\"membershipsChecks && _calendar.isShared() && advancedPermissions\"\n [data]=\"membershipsChecks\"\n [label]=\"t._('IDEA_AGENDA.CALENDARS.USERS_ALLOWED_TO_MANAGE_APPOINTMENTS')\"\n [searchPlaceholder]=\"t._('IDEA_AGENDA.CALENDARS.WHO_CAN_MANAGE_APPOINTMENTS')\"\n [noneText]=\"t._('IDEA_AGENDA.CALENDARS.NOBODY')\"\n [allText]=\"t._('IDEA_AGENDA.CALENDARS.EVERYONE')\"\n [allowSelectDeselectAll]=\"true\"\n [lines]=\"'inset'\"\n ></idea-checker>\n </ion-list>\n <ion-list class=\"aList\" *ngIf=\"_calendar.external?.service\">\n <ion-list-header>\n <ion-label>\n <h2>{{ 'IDEA_AGENDA.CALENDARS.INFO_ON_CALENDAR' | translate }}</h2>\n </ion-label>\n </ion-list-header>\n <ion-item lines=\"inset\" *ngIf=\"calendar.userId\">\n <ion-label>\n {{ 'IDEA_AGENDA.CALENDARS.PRIVATE_CALENDAR' | translate }}\n <p>{{ 'IDEA_AGENDA.CALENDARS.PRIVATE_CALENDAR_HINT' | translate }}</p>\n </ion-label>\n <ion-icon slot=\"end\" name=\"person\"></ion-icon>\n </ion-item>\n <ion-item lines=\"inset\" *ngIf=\"calendar.teamId\">\n <ion-label>\n {{ 'IDEA_AGENDA.CALENDARS.TEAM_CALENDAR' | translate }}\n <p>{{ 'IDEA_AGENDA.CALENDARS.TEAM_CALENDAR_HINT' | translate }}</p>\n </ion-label>\n <ion-icon slot=\"end\" name=\"people\"></ion-icon>\n </ion-item>\n <ion-item lines=\"inset\">\n <ion-label>\n {{ 'IDEA_AGENDA.CALENDARS.LINKED_TO' | translate }}\n {{ 'IDEA_AGENDA.CALENDARS.SERVICES.' + _calendar.external.service | translate }}\n <p>{{ _calendar.external.name }} ({{ _calendar.external.email }})</p>\n </ion-label>\n <ion-icon slot=\"end\" [name]=\"calendars.getServiceIcon(_calendar.external.service)\"></ion-icon>\n </ion-item>\n <ion-item lines=\"inset\">\n <ion-label>\n {{ 'IDEA_AGENDA.CALENDARS.ACCESS_LEVELS.' + _calendar.external.userAccess | translate }}\n <p>{{ 'IDEA_AGENDA.CALENDARS.BASED_ON_EXTERNAL_SERVICE_SHARING_PERMISSION' | translate }}</p>\n </ion-label>\n <ion-icon slot=\"end\" name=\"shield\"></ion-icon>\n </ion-item>\n </ion-list>\n <ion-list class=\"aList\">\n <ion-list-header>\n <ion-label color=\"danger\">\n <h2>{{ 'IDEA_AGENDA.CALENDARS.DANGEROUS_ZONE' | translate }}</h2>\n </ion-label>\n </ion-list-header>\n <ion-item lines=\"inset\">\n <ion-label class=\"ion-text-wrap\">\n {{ 'IDEA_AGENDA.CALENDARS.DELETE_CALENDAR' | translate }}\n <p>{{ 'IDEA_AGENDA.CALENDARS.DELETE_CALENDAR_HINT' | translate }}</p>\n </ion-label>\n <ion-button color=\"danger\" [title]=\"t._('IDEA_AGENDA.CALENDARS.DELETE_CALENDAR_HINT')\" (click)=\"delete()\">\n {{ 'COMMON.DELETE' | translate }}\n </ion-button>\n </ion-item>\n </ion-list>\n </div>\n</ion-content>\n", styles: [".maxWidthContainer{max-width:500px;padding-top:20px}\n"], components: [{ type: i2.IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { type: i2.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { type: i2.IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { type: i2.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { type: i2.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { type: i2.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { type: i2.IonContent, selector: "ion-content", inputs: ["color", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { type: i2.IonList, selector: "ion-list", inputs: ["inset", "lines", "mode"] }, { type: i2.IonItem, selector: "ion-item", inputs: ["button", "color", "counter", "detail", "detailIcon", "disabled", "download", "fill", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "shape", "target", "type"] }, { type: i2.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { type: i2.IonInput, selector: "ion-input", inputs: ["accept", "autocapitalize", "autocomplete", "autocorrect", "autofocus", "clearInput", "clearOnEdit", "color", "debounce", "disabled", "enterkeyhint", "inputmode", "max", "maxlength", "min", "minlength", "mode", "multiple", "name", "pattern", "placeholder", "readonly", "required", "size", "spellcheck", "step", "type", "value"] }, { type: i3.IDEAColorPickerComponent, selector: "idea-color-picker", inputs: ["colors", "current", "label", "placeholder", "icon", "iconColor", "disabled", "obligatory", "lines"], outputs: ["select", "iconSelect"] }, { type: i3.IDEACheckerComponent, selector: "idea-checker", inputs: ["data", "
|
|
648
|
+
IDEACalendarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: IDEACalendarComponent, selector: "idea-calendar", inputs: { calendar: "calendar", advancedPermissions: "advancedPermissions", hideColor: "hideColor" }, ngImport: i0, template: "<ion-header>\n <ion-toolbar color=\"ideaToolbar\">\n <ion-buttons slot=\"start\">\n <ion-button [title]=\"t._('COMMON.CLOSE')\" (click)=\"close()\">\n <ion-icon name=\"close-circle\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n </ion-buttons>\n <ion-title>{{ 'IDEA_AGENDA.CALENDARS.EDIT_CALENDAR' | translate }}</ion-title>\n <ion-buttons slot=\"end\">\n <ion-button [title]=\"t._('COMMON.SAVE')\" (click)=\"save()\">\n <ion-icon name=\"checkmark-circle\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n<ion-content>\n <div class=\"maxWidthContainer\" *ngIf=\"_calendar\">\n <ion-list class=\"aList\">\n <ion-item\n lines=\"inset\"\n [class.fieldHasError]=\"hasFieldAnError('name')\"\n [title]=\"t._('IDEA_AGENDA.CALENDARS.NAME_HINT')\"\n >\n <ion-label position=\"stacked\">{{ 'IDEA_AGENDA.CALENDARS.NAME' | translate }} </ion-label>\n <ion-input [placeholder]=\"t._('IDEA_AGENDA.CALENDARS.NAME_HINT')\" [(ngModel)]=\"_calendar.name\"></ion-input>\n </ion-item>\n <ion-item\n lines=\"inset\"\n [class.fieldHasError]=\"hasFieldAnError('description')\"\n [title]=\"t._('IDEA_AGENDA.CALENDARS.DESCRIPTION_HINT')\"\n >\n <ion-label position=\"stacked\">{{ 'IDEA_AGENDA.CALENDARS.DESCRIPTION' | translate }} </ion-label>\n <ion-input\n [placeholder]=\"t._('IDEA_AGENDA.CALENDARS.DESCRIPTION_HINT')\"\n [(ngModel)]=\"_calendar.description\"\n ></ion-input>\n </ion-item>\n <idea-color-picker\n *ngIf=\"!hideColor\"\n [lines]=\"'inset'\"\n [current]=\"_calendar.color\"\n [label]=\"t._('IDEA_AGENDA.CALENDARS.COLOR')\"\n [class.fieldHasError]=\"hasFieldAnError('color')\"\n (select)=\"$event ? (_calendar.color = $event) : null\"\n ></idea-color-picker>\n <idea-checker\n *ngIf=\"membershipsChecks && _calendar.isShared() && advancedPermissions\"\n [data]=\"membershipsChecks\"\n [label]=\"t._('IDEA_AGENDA.CALENDARS.USERS_ALLOWED_TO_MANAGE_APPOINTMENTS')\"\n [searchPlaceholder]=\"t._('IDEA_AGENDA.CALENDARS.WHO_CAN_MANAGE_APPOINTMENTS')\"\n [noneText]=\"t._('IDEA_AGENDA.CALENDARS.NOBODY')\"\n [allText]=\"t._('IDEA_AGENDA.CALENDARS.EVERYONE')\"\n [allowSelectDeselectAll]=\"true\"\n [lines]=\"'inset'\"\n ></idea-checker>\n </ion-list>\n <ion-list class=\"aList\" *ngIf=\"_calendar.external?.service\">\n <ion-list-header>\n <ion-label>\n <h2>{{ 'IDEA_AGENDA.CALENDARS.INFO_ON_CALENDAR' | translate }}</h2>\n </ion-label>\n </ion-list-header>\n <ion-item lines=\"inset\" *ngIf=\"calendar.userId\">\n <ion-label>\n {{ 'IDEA_AGENDA.CALENDARS.PRIVATE_CALENDAR' | translate }}\n <p>{{ 'IDEA_AGENDA.CALENDARS.PRIVATE_CALENDAR_HINT' | translate }}</p>\n </ion-label>\n <ion-icon slot=\"end\" name=\"person\"></ion-icon>\n </ion-item>\n <ion-item lines=\"inset\" *ngIf=\"calendar.teamId\">\n <ion-label>\n {{ 'IDEA_AGENDA.CALENDARS.TEAM_CALENDAR' | translate }}\n <p>{{ 'IDEA_AGENDA.CALENDARS.TEAM_CALENDAR_HINT' | translate }}</p>\n </ion-label>\n <ion-icon slot=\"end\" name=\"people\"></ion-icon>\n </ion-item>\n <ion-item lines=\"inset\">\n <ion-label>\n {{ 'IDEA_AGENDA.CALENDARS.LINKED_TO' | translate }}\n {{ 'IDEA_AGENDA.CALENDARS.SERVICES.' + _calendar.external.service | translate }}\n <p>{{ _calendar.external.name }} ({{ _calendar.external.email }})</p>\n </ion-label>\n <ion-icon slot=\"end\" [name]=\"calendars.getServiceIcon(_calendar.external.service)\"></ion-icon>\n </ion-item>\n <ion-item lines=\"inset\">\n <ion-label>\n {{ 'IDEA_AGENDA.CALENDARS.ACCESS_LEVELS.' + _calendar.external.userAccess | translate }}\n <p>{{ 'IDEA_AGENDA.CALENDARS.BASED_ON_EXTERNAL_SERVICE_SHARING_PERMISSION' | translate }}</p>\n </ion-label>\n <ion-icon slot=\"end\" name=\"shield\"></ion-icon>\n </ion-item>\n </ion-list>\n <ion-list class=\"aList\">\n <ion-list-header>\n <ion-label color=\"danger\">\n <h2>{{ 'IDEA_AGENDA.CALENDARS.DANGEROUS_ZONE' | translate }}</h2>\n </ion-label>\n </ion-list-header>\n <ion-item lines=\"inset\">\n <ion-label class=\"ion-text-wrap\">\n {{ 'IDEA_AGENDA.CALENDARS.DELETE_CALENDAR' | translate }}\n <p>{{ 'IDEA_AGENDA.CALENDARS.DELETE_CALENDAR_HINT' | translate }}</p>\n </ion-label>\n <ion-button color=\"danger\" [title]=\"t._('IDEA_AGENDA.CALENDARS.DELETE_CALENDAR_HINT')\" (click)=\"delete()\">\n {{ 'COMMON.DELETE' | translate }}\n </ion-button>\n </ion-item>\n </ion-list>\n </div>\n</ion-content>\n", styles: [".maxWidthContainer{max-width:500px;padding-top:20px}\n"], components: [{ type: i2.IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { type: i2.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { type: i2.IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { type: i2.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { type: i2.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { type: i2.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { type: i2.IonContent, selector: "ion-content", inputs: ["color", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { type: i2.IonList, selector: "ion-list", inputs: ["inset", "lines", "mode"] }, { type: i2.IonItem, selector: "ion-item", inputs: ["button", "color", "counter", "detail", "detailIcon", "disabled", "download", "fill", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "shape", "target", "type"] }, { type: i2.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { type: i2.IonInput, selector: "ion-input", inputs: ["accept", "autocapitalize", "autocomplete", "autocorrect", "autofocus", "clearInput", "clearOnEdit", "color", "debounce", "disabled", "enterkeyhint", "inputmode", "max", "maxlength", "min", "minlength", "mode", "multiple", "name", "pattern", "placeholder", "readonly", "required", "size", "spellcheck", "step", "type", "value"] }, { type: i3.IDEAColorPickerComponent, selector: "idea-color-picker", inputs: ["colors", "current", "label", "placeholder", "icon", "iconColor", "disabled", "obligatory", "lines"], outputs: ["select", "iconSelect"] }, { type: i3.IDEACheckerComponent, selector: "idea-checker", inputs: ["data", "dataProvider", "label", "icon", "iconColor", "searchPlaceholder", "noPreviewText", "noElementsFoundText", "noneEqualsAll", "noneText", "allText", "lines", "disabled", "tappableWhenDisabled", "obligatory", "sortData", "numMaxElementsInPreview", "showAvatars", "fallbackAvatar", "limitSelectionToNum", "allowSelectDeselectAll"], outputs: ["change", "iconSelect"] }, { type: i2.IonListHeader, selector: "ion-list-header", inputs: ["color", "lines", "mode"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.TextValueAccessor, selector: "ion-input:not([type=number]),ion-textarea,ion-searchbar" }, { type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], pipes: { "translate": i3.IDEATranslatePipe } });
|
|
650
649
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: IDEACalendarComponent, decorators: [{
|
|
651
650
|
type: Component,
|
|
652
651
|
args: [{ selector: 'idea-calendar', template: "<ion-header>\n <ion-toolbar color=\"ideaToolbar\">\n <ion-buttons slot=\"start\">\n <ion-button [title]=\"t._('COMMON.CLOSE')\" (click)=\"close()\">\n <ion-icon name=\"close-circle\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n </ion-buttons>\n <ion-title>{{ 'IDEA_AGENDA.CALENDARS.EDIT_CALENDAR' | translate }}</ion-title>\n <ion-buttons slot=\"end\">\n <ion-button [title]=\"t._('COMMON.SAVE')\" (click)=\"save()\">\n <ion-icon name=\"checkmark-circle\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n<ion-content>\n <div class=\"maxWidthContainer\" *ngIf=\"_calendar\">\n <ion-list class=\"aList\">\n <ion-item\n lines=\"inset\"\n [class.fieldHasError]=\"hasFieldAnError('name')\"\n [title]=\"t._('IDEA_AGENDA.CALENDARS.NAME_HINT')\"\n >\n <ion-label position=\"stacked\">{{ 'IDEA_AGENDA.CALENDARS.NAME' | translate }} </ion-label>\n <ion-input [placeholder]=\"t._('IDEA_AGENDA.CALENDARS.NAME_HINT')\" [(ngModel)]=\"_calendar.name\"></ion-input>\n </ion-item>\n <ion-item\n lines=\"inset\"\n [class.fieldHasError]=\"hasFieldAnError('description')\"\n [title]=\"t._('IDEA_AGENDA.CALENDARS.DESCRIPTION_HINT')\"\n >\n <ion-label position=\"stacked\">{{ 'IDEA_AGENDA.CALENDARS.DESCRIPTION' | translate }} </ion-label>\n <ion-input\n [placeholder]=\"t._('IDEA_AGENDA.CALENDARS.DESCRIPTION_HINT')\"\n [(ngModel)]=\"_calendar.description\"\n ></ion-input>\n </ion-item>\n <idea-color-picker\n *ngIf=\"!hideColor\"\n [lines]=\"'inset'\"\n [current]=\"_calendar.color\"\n [label]=\"t._('IDEA_AGENDA.CALENDARS.COLOR')\"\n [class.fieldHasError]=\"hasFieldAnError('color')\"\n (select)=\"$event ? (_calendar.color = $event) : null\"\n ></idea-color-picker>\n <idea-checker\n *ngIf=\"membershipsChecks && _calendar.isShared() && advancedPermissions\"\n [data]=\"membershipsChecks\"\n [label]=\"t._('IDEA_AGENDA.CALENDARS.USERS_ALLOWED_TO_MANAGE_APPOINTMENTS')\"\n [searchPlaceholder]=\"t._('IDEA_AGENDA.CALENDARS.WHO_CAN_MANAGE_APPOINTMENTS')\"\n [noneText]=\"t._('IDEA_AGENDA.CALENDARS.NOBODY')\"\n [allText]=\"t._('IDEA_AGENDA.CALENDARS.EVERYONE')\"\n [allowSelectDeselectAll]=\"true\"\n [lines]=\"'inset'\"\n ></idea-checker>\n </ion-list>\n <ion-list class=\"aList\" *ngIf=\"_calendar.external?.service\">\n <ion-list-header>\n <ion-label>\n <h2>{{ 'IDEA_AGENDA.CALENDARS.INFO_ON_CALENDAR' | translate }}</h2>\n </ion-label>\n </ion-list-header>\n <ion-item lines=\"inset\" *ngIf=\"calendar.userId\">\n <ion-label>\n {{ 'IDEA_AGENDA.CALENDARS.PRIVATE_CALENDAR' | translate }}\n <p>{{ 'IDEA_AGENDA.CALENDARS.PRIVATE_CALENDAR_HINT' | translate }}</p>\n </ion-label>\n <ion-icon slot=\"end\" name=\"person\"></ion-icon>\n </ion-item>\n <ion-item lines=\"inset\" *ngIf=\"calendar.teamId\">\n <ion-label>\n {{ 'IDEA_AGENDA.CALENDARS.TEAM_CALENDAR' | translate }}\n <p>{{ 'IDEA_AGENDA.CALENDARS.TEAM_CALENDAR_HINT' | translate }}</p>\n </ion-label>\n <ion-icon slot=\"end\" name=\"people\"></ion-icon>\n </ion-item>\n <ion-item lines=\"inset\">\n <ion-label>\n {{ 'IDEA_AGENDA.CALENDARS.LINKED_TO' | translate }}\n {{ 'IDEA_AGENDA.CALENDARS.SERVICES.' + _calendar.external.service | translate }}\n <p>{{ _calendar.external.name }} ({{ _calendar.external.email }})</p>\n </ion-label>\n <ion-icon slot=\"end\" [name]=\"calendars.getServiceIcon(_calendar.external.service)\"></ion-icon>\n </ion-item>\n <ion-item lines=\"inset\">\n <ion-label>\n {{ 'IDEA_AGENDA.CALENDARS.ACCESS_LEVELS.' + _calendar.external.userAccess | translate }}\n <p>{{ 'IDEA_AGENDA.CALENDARS.BASED_ON_EXTERNAL_SERVICE_SHARING_PERMISSION' | translate }}</p>\n </ion-label>\n <ion-icon slot=\"end\" name=\"shield\"></ion-icon>\n </ion-item>\n </ion-list>\n <ion-list class=\"aList\">\n <ion-list-header>\n <ion-label color=\"danger\">\n <h2>{{ 'IDEA_AGENDA.CALENDARS.DANGEROUS_ZONE' | translate }}</h2>\n </ion-label>\n </ion-list-header>\n <ion-item lines=\"inset\">\n <ion-label class=\"ion-text-wrap\">\n {{ 'IDEA_AGENDA.CALENDARS.DELETE_CALENDAR' | translate }}\n <p>{{ 'IDEA_AGENDA.CALENDARS.DELETE_CALENDAR_HINT' | translate }}</p>\n </ion-label>\n <ion-button color=\"danger\" [title]=\"t._('IDEA_AGENDA.CALENDARS.DELETE_CALENDAR_HINT')\" (click)=\"delete()\">\n {{ 'COMMON.DELETE' | translate }}\n </ion-button>\n </ion-item>\n </ion-list>\n </div>\n</ion-content>\n", styles: [".maxWidthContainer{max-width:500px;padding-top:20px}\n"] }]
|