@idea-ionic/agenda 8.0.1 → 8.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/src/agenda.component.mjs +19 -59
- package/esm2022/src/calendar.component.mjs +77 -94
- package/esm2022/src/calendarCreation.component.mjs +60 -86
- package/esm2022/src/calendarItem.component.mjs +81 -99
- package/esm2022/src/calendars.service.mjs +115 -160
- package/fesm2022/idea-ionic-agenda.mjs +329 -479
- package/fesm2022/idea-ionic-agenda.mjs.map +1 -1
- package/package.json +8 -8
- package/src/agenda.component.d.ts +7 -46
- package/src/calendar.component.d.ts +11 -42
- package/src/calendarCreation.component.d.ts +6 -38
- package/src/calendarItem.component.d.ts +8 -19
- package/src/calendars.service.d.ts +7 -10
|
@@ -1,132 +1,106 @@
|
|
|
1
|
-
import { Component, Input } from '@angular/core';
|
|
1
|
+
import { Component, Input, inject } from '@angular/core';
|
|
2
|
+
import { ModalController } from '@ionic/angular';
|
|
2
3
|
import { Calendar, ExternalCalendarInfo, ExternalCalendarSources } from 'idea-toolbox';
|
|
4
|
+
import { IDEALoadingService, IDEATinCanService, IDEAMessageService, IDEATranslationsService } from '@idea-ionic/common';
|
|
5
|
+
import { IDEACalendarsService } from './calendars.service';
|
|
3
6
|
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "
|
|
5
|
-
import * as i2 from "@ionic/
|
|
6
|
-
import * as i3 from "@idea-ionic/common";
|
|
7
|
-
import * as i4 from "@angular/common";
|
|
7
|
+
import * as i1 from "@ionic/angular";
|
|
8
|
+
import * as i2 from "@idea-ionic/common";
|
|
8
9
|
export class IDEACalendarCreationComponent {
|
|
9
|
-
constructor(
|
|
10
|
-
this.calendars = calendars;
|
|
11
|
-
this.modalCtrl = modalCtrl;
|
|
12
|
-
this.tc = tc;
|
|
13
|
-
this.loading = loading;
|
|
14
|
-
this.message = message;
|
|
15
|
-
this.API = API;
|
|
16
|
-
this.t = t;
|
|
17
|
-
/**
|
|
18
|
-
* The default color for a new calendar.
|
|
19
|
-
*/
|
|
10
|
+
constructor() {
|
|
20
11
|
this.DEFAULT_COLOR = '#555';
|
|
21
|
-
/**
|
|
22
|
-
* The possible external services for the new calendar.
|
|
23
|
-
*/
|
|
24
12
|
this.SOURCES = Object.keys(ExternalCalendarSources);
|
|
13
|
+
this._calendars = inject(IDEACalendarsService);
|
|
14
|
+
this._modal = inject(ModalController);
|
|
15
|
+
this._tc = inject(IDEATinCanService);
|
|
16
|
+
this._loading = inject(IDEALoadingService);
|
|
17
|
+
this._message = inject(IDEAMessageService);
|
|
18
|
+
this._translate = inject(IDEATranslationsService);
|
|
25
19
|
}
|
|
26
20
|
ngOnInit() {
|
|
27
21
|
this.calendar = new Calendar();
|
|
28
|
-
this.membership = this.
|
|
22
|
+
this.membership = this._tc.get('membership');
|
|
29
23
|
if (this.fixScope === CalendarScopes.SHARED)
|
|
30
24
|
this.calendar.teamId = this.membership.teamId;
|
|
31
25
|
if (this.fixScope === CalendarScopes.PRIVATE)
|
|
32
26
|
this.calendar.userId = this.membership.userId;
|
|
33
27
|
}
|
|
34
|
-
/**
|
|
35
|
-
* If allowed by the component configuration, reset the scope of the calendar (private/shared).
|
|
36
|
-
*/
|
|
37
28
|
resetScope() {
|
|
38
29
|
if (this.canChangeScope())
|
|
39
30
|
this.calendar.teamId = this.calendar.userId = null;
|
|
40
31
|
}
|
|
41
|
-
/**
|
|
42
|
-
* Whether we can change the scope of the calendar (private/shared).
|
|
43
|
-
*/
|
|
44
32
|
canChangeScope() {
|
|
45
33
|
return !this.fixScope && this.scopeIsSet();
|
|
46
34
|
}
|
|
47
|
-
/**
|
|
48
|
-
* Whether the scope has been set already.
|
|
49
|
-
*/
|
|
50
35
|
scopeIsSet() {
|
|
51
36
|
return Boolean(this.calendar.userId) || Boolean(this.calendar.teamId);
|
|
52
37
|
}
|
|
53
|
-
/**
|
|
54
|
-
* Add a new calendar based on the configuration set.
|
|
55
|
-
*/
|
|
56
38
|
async saveNewCalendar(service) {
|
|
57
|
-
// be sure the scope of the calendar was chosen
|
|
58
39
|
if (!this.scopeIsSet())
|
|
59
40
|
return;
|
|
60
|
-
// be sure we are allowed to create the calendar
|
|
61
41
|
if (!service && this.onlyExternalCalendars)
|
|
62
42
|
return;
|
|
63
|
-
// flag the calendar so it has to be linked to an externals service (the procedure follows the creation)
|
|
64
43
|
if (service) {
|
|
65
44
|
this.calendar.external = new ExternalCalendarInfo({ service });
|
|
66
45
|
this.calendar.name = '-'; // it will be substituted with the external name
|
|
67
46
|
}
|
|
68
47
|
else {
|
|
69
|
-
// default values for local calendars
|
|
70
48
|
this.calendar.name = this.calendar.userId
|
|
71
|
-
? this.
|
|
72
|
-
: this.
|
|
49
|
+
? this._translate._('IDEA_AGENDA.CALENDARS.DEFAULT_PERSONAL_CALENDAR_NAME')
|
|
50
|
+
: this._translate._('IDEA_AGENDA.CALENDARS.DEFAULT_TEAM_CALENDAR_NAME');
|
|
73
51
|
this.calendar.color = this.DEFAULT_COLOR;
|
|
74
52
|
}
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
.postCalendar(this.calendar)
|
|
79
|
-
.then(cal => {
|
|
53
|
+
try {
|
|
54
|
+
await this._loading.show();
|
|
55
|
+
const cal = await this._calendars.postCalendar(this.calendar);
|
|
80
56
|
this.calendar.load(cal);
|
|
81
|
-
this.
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
return
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
.linkExtService(this.calendar)
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
return this.modalCtrl.dismiss(this.calendar);
|
|
94
|
-
// if an external calendar was set, update the calendar
|
|
57
|
+
this._message.success('IDEA_AGENDA.CALENDARS.CALENDAR_CREATED');
|
|
58
|
+
if (!cal.external) {
|
|
59
|
+
this._modal.dismiss(this.calendar);
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
try {
|
|
63
|
+
await this._calendars.linkExtService(this.calendar);
|
|
64
|
+
const res = await this._calendars.chooseAndSetExternalCalendar(this.calendar);
|
|
65
|
+
if (!res) {
|
|
66
|
+
this._modal.dismiss(this.calendar);
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
95
69
|
this.calendar.load(res);
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
.
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
.
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
this.
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
this.
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
70
|
+
await this._loading.show(this._translate._('IDEA_AGENDA.CALENDARS.FIRST_SYNC_MAY_TAKE_A_WHILE'));
|
|
71
|
+
try {
|
|
72
|
+
await this._calendars.syncCalendar(this.calendar);
|
|
73
|
+
this._message.success('IDEA_AGENDA.CALENDARS.FIRST_SYNC_COMPLETED');
|
|
74
|
+
}
|
|
75
|
+
catch (error) {
|
|
76
|
+
this._message.error('COMMON.OPERATION_FAILED');
|
|
77
|
+
}
|
|
78
|
+
finally {
|
|
79
|
+
this._modal.dismiss(this.calendar);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
catch (error) {
|
|
83
|
+
this._message.error('COMMON.OPERATION_FAILED');
|
|
84
|
+
this._modal.dismiss(this.calendar);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
catch (error) {
|
|
88
|
+
this._message.error('COMMON.OPERATION_FAILED');
|
|
89
|
+
}
|
|
90
|
+
finally {
|
|
91
|
+
this._loading.hide();
|
|
92
|
+
}
|
|
116
93
|
}
|
|
117
|
-
/**
|
|
118
|
-
* Close the component.
|
|
119
|
-
*/
|
|
120
94
|
close() {
|
|
121
|
-
this.
|
|
95
|
+
this._modal.dismiss();
|
|
122
96
|
}
|
|
123
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: IDEACalendarCreationComponent, deps: [
|
|
124
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
97
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: IDEACalendarCreationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
98
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.1", type: IDEACalendarCreationComponent, selector: "idea-calendar-creation", inputs: { fixScope: "fixScope", onlyExternalCalendars: "onlyExternalCalendars" }, ngImport: i0, template: "<ion-header>\n <ion-toolbar color=\"ideaToolbar\">\n <ion-buttons slot=\"start\">\n @if (!canChangeScope()) {\n <ion-button [title]=\"'COMMON.CLOSE' | translate\" (click)=\"close()\">\n <ion-icon name=\"close\" slot=\"icon-only\" />\n </ion-button>\n }\n @if (canChangeScope()) {\n <ion-button (click)=\"resetScope()\">\n <ion-icon name=\"arrow-back\" slot=\"icon-only\" />\n </ion-button>\n }\n </ion-buttons>\n <ion-title>\n @if (!scopeIsSet()) {\n <span>{{ 'IDEA_AGENDA.CALENDARS.ADD_A_CALENDAR' | translate }}</span>\n }\n @if (calendar.userId) {\n <span>{{ 'IDEA_AGENDA.CALENDARS.PERSONAL_CALENDAR' | translate }}</span>\n }\n @if (calendar.teamId) {\n <span>\n {{ 'IDEA_AGENDA.CALENDARS.TEAM_CALENDAR' | translate: { team: tc.get('team').name } }}\n </span>\n }\n </ion-title>\n </ion-toolbar>\n</ion-header>\n<ion-content>\n <!-- 1st STEP -->\n @if (!scopeIsSet()) {\n <ion-grid class=\"ion-padding choiceGrid\">\n <ion-row>\n <ion-col class=\"ion-text-center\">\n <h1>{{ 'IDEA_AGENDA.CALENDARS.CREATE_PRIVATE_OR_TEAM' | translate }}</h1>\n </ion-col>\n </ion-row>\n <ion-row class=\"ion-align-items-center\">\n <ion-col class=\"ion-text-center\" [size]=\"12\" [sizeSm]=\"6\">\n <ion-card [button]=\"true\" (click)=\"calendar.userId = membership.userId\">\n <ion-card-header>\n <ion-card-title>\n <ion-icon name=\"person\" />\n </ion-card-title>\n </ion-card-header>\n <ion-card-content>\n <h1>{{ 'IDEA_AGENDA.CALENDARS.PERSONAL_CALENDAR' | translate }}</h1>\n <p>{{ 'IDEA_AGENDA.CALENDARS.PERSONAL_CALENDAR_HINT' | translate }}</p>\n </ion-card-content>\n </ion-card>\n </ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"12\" [sizeSm]=\"6\">\n <ion-card [button]=\"true\" (click)=\"calendar.teamId = membership.teamId\">\n <ion-card-header>\n <ion-card-title>\n <ion-icon name=\"people\" />\n </ion-card-title>\n </ion-card-header>\n <ion-card-content>\n <h1>{{ 'IDEA_AGENDA.CALENDARS.TEAM_CALENDAR' | translate }}</h1>\n <p>{{ 'IDEA_AGENDA.CALENDARS.TEAM_CALENDAR_HINT' | translate }}</p>\n </ion-card-content>\n </ion-card>\n </ion-col>\n </ion-row>\n </ion-grid>\n }\n <!-- 2nd STEP -->\n @if (scopeIsSet()) {\n <ion-grid class=\"ion-padding choiceGrid\">\n <ion-row>\n <ion-col class=\"ion-text-center\">\n <h1>{{ 'IDEA_AGENDA.CALENDARS.WHICH_EXTERNAL_SERVICE_TO_LINK' | translate }}</h1>\n <p>{{ 'IDEA_AGENDA.CALENDARS.WHICH_EXTERNAL_SERVICE_TO_LINK_HINT' | translate }}</p>\n </ion-col>\n </ion-row>\n <ion-row class=\"ion-align-items-center\">\n @if (!onlyExternalCalendars) {\n <ion-col class=\"ion-text-center\" [size]=\"12\">\n <ion-card class=\"step2\" [button]=\"true\" (click)=\"saveNewCalendar()\">\n <ion-card-header>\n <ion-card-title>\n <ion-icon name=\"remove\" />\n </ion-card-title>\n </ion-card-header>\n <ion-card-content>\n <h1>{{ 'IDEA_AGENDA.CALENDARS.DONT_LINK' | translate }}</h1>\n <p>{{ 'IDEA_AGENDA.CALENDARS.DONT_LINK_HINT' | translate }}</p>\n </ion-card-content>\n </ion-card>\n </ion-col>\n }\n @for (s of SOURCES; track s) {\n <ion-col class=\"ion-text-center\" [size]=\"12\">\n <ion-card class=\"step2\" [button]=\"true\" (click)=\"saveNewCalendar(s)\">\n <ion-card-header>\n <ion-card-title>\n <ion-icon [name]=\"calendars.getServiceIcon(s)\" />\n </ion-card-title>\n </ion-card-header>\n <ion-card-content>\n <h1>\n {{ 'IDEA_AGENDA.CALENDARS.LINK_TO' | translate }}\n {{ 'IDEA_AGENDA.CALENDARS.SERVICES.' + s | translate }}\n </h1>\n <p>{{ 'IDEA_AGENDA.CALENDARS.LINK_TO_HINT' | translate }}</p>\n </ion-card-content>\n </ion-card>\n </ion-col>\n }\n </ion-row>\n </ion-grid>\n }\n</ion-content>\n", styles: ["ion-content{--background: var(--ion-color-white-shade)}.choiceGrid ion-row ion-col>h1{margin:10px 0 0;font-size:1.1em}.choiceGrid ion-row ion-col>p{margin-top:0;margin-bottom:0;font-size:.9em}.choiceGrid ion-row:first-child ion-col{padding-bottom:25px}.choiceGrid ion-card{--ion-item-background: var(--ion-color-white);--color: var(--ion-color-dark-tint);height:240px;margin:0 auto;text-align:center}.choiceGrid ion-card ion-card-header{padding-bottom:10px}.choiceGrid ion-card ion-card-header ion-card-title{font-size:2.5em}.choiceGrid ion-card ion-card-content h1{font-size:1.4em;height:60px}.choiceGrid ion-card.step2{height:135px}.choiceGrid ion-card.step2 ion-card-header{padding-top:10px;padding-bottom:0}.choiceGrid ion-card.step2 ion-card-content h1{height:auto}\n"], dependencies: [{ kind: "component", type: i1.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i1.IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: i1.IonCard, selector: "ion-card", inputs: ["button", "color", "disabled", "download", "href", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: i1.IonCardContent, selector: "ion-card-content", inputs: ["mode"] }, { kind: "component", type: i1.IonCardHeader, selector: "ion-card-header", inputs: ["color", "mode", "translucent"] }, { kind: "component", type: i1.IonCardTitle, selector: "ion-card-title", inputs: ["color", "mode"] }, { kind: "component", type: i1.IonCol, selector: "ion-col", inputs: ["offset", "offsetLg", "offsetMd", "offsetSm", "offsetXl", "offsetXs", "pull", "pullLg", "pullMd", "pullSm", "pullXl", "pullXs", "push", "pushLg", "pushMd", "pushSm", "pushXl", "pushXs", "size", "sizeLg", "sizeMd", "sizeSm", "sizeXl", "sizeXs"] }, { kind: "component", type: i1.IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i1.IonGrid, selector: "ion-grid", inputs: ["fixed"] }, { kind: "component", type: i1.IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i1.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i1.IonRow, selector: "ion-row" }, { kind: "component", type: i1.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: i1.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "pipe", type: i2.IDEATranslatePipe, name: "translate" }] }); }
|
|
125
99
|
}
|
|
126
100
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: IDEACalendarCreationComponent, decorators: [{
|
|
127
101
|
type: Component,
|
|
128
|
-
args: [{ selector: 'idea-calendar-creation', template: "<ion-header>\n <ion-toolbar color=\"ideaToolbar\">\n <ion-buttons slot=\"start\">\n
|
|
129
|
-
}],
|
|
102
|
+
args: [{ selector: 'idea-calendar-creation', template: "<ion-header>\n <ion-toolbar color=\"ideaToolbar\">\n <ion-buttons slot=\"start\">\n @if (!canChangeScope()) {\n <ion-button [title]=\"'COMMON.CLOSE' | translate\" (click)=\"close()\">\n <ion-icon name=\"close\" slot=\"icon-only\" />\n </ion-button>\n }\n @if (canChangeScope()) {\n <ion-button (click)=\"resetScope()\">\n <ion-icon name=\"arrow-back\" slot=\"icon-only\" />\n </ion-button>\n }\n </ion-buttons>\n <ion-title>\n @if (!scopeIsSet()) {\n <span>{{ 'IDEA_AGENDA.CALENDARS.ADD_A_CALENDAR' | translate }}</span>\n }\n @if (calendar.userId) {\n <span>{{ 'IDEA_AGENDA.CALENDARS.PERSONAL_CALENDAR' | translate }}</span>\n }\n @if (calendar.teamId) {\n <span>\n {{ 'IDEA_AGENDA.CALENDARS.TEAM_CALENDAR' | translate: { team: tc.get('team').name } }}\n </span>\n }\n </ion-title>\n </ion-toolbar>\n</ion-header>\n<ion-content>\n <!-- 1st STEP -->\n @if (!scopeIsSet()) {\n <ion-grid class=\"ion-padding choiceGrid\">\n <ion-row>\n <ion-col class=\"ion-text-center\">\n <h1>{{ 'IDEA_AGENDA.CALENDARS.CREATE_PRIVATE_OR_TEAM' | translate }}</h1>\n </ion-col>\n </ion-row>\n <ion-row class=\"ion-align-items-center\">\n <ion-col class=\"ion-text-center\" [size]=\"12\" [sizeSm]=\"6\">\n <ion-card [button]=\"true\" (click)=\"calendar.userId = membership.userId\">\n <ion-card-header>\n <ion-card-title>\n <ion-icon name=\"person\" />\n </ion-card-title>\n </ion-card-header>\n <ion-card-content>\n <h1>{{ 'IDEA_AGENDA.CALENDARS.PERSONAL_CALENDAR' | translate }}</h1>\n <p>{{ 'IDEA_AGENDA.CALENDARS.PERSONAL_CALENDAR_HINT' | translate }}</p>\n </ion-card-content>\n </ion-card>\n </ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"12\" [sizeSm]=\"6\">\n <ion-card [button]=\"true\" (click)=\"calendar.teamId = membership.teamId\">\n <ion-card-header>\n <ion-card-title>\n <ion-icon name=\"people\" />\n </ion-card-title>\n </ion-card-header>\n <ion-card-content>\n <h1>{{ 'IDEA_AGENDA.CALENDARS.TEAM_CALENDAR' | translate }}</h1>\n <p>{{ 'IDEA_AGENDA.CALENDARS.TEAM_CALENDAR_HINT' | translate }}</p>\n </ion-card-content>\n </ion-card>\n </ion-col>\n </ion-row>\n </ion-grid>\n }\n <!-- 2nd STEP -->\n @if (scopeIsSet()) {\n <ion-grid class=\"ion-padding choiceGrid\">\n <ion-row>\n <ion-col class=\"ion-text-center\">\n <h1>{{ 'IDEA_AGENDA.CALENDARS.WHICH_EXTERNAL_SERVICE_TO_LINK' | translate }}</h1>\n <p>{{ 'IDEA_AGENDA.CALENDARS.WHICH_EXTERNAL_SERVICE_TO_LINK_HINT' | translate }}</p>\n </ion-col>\n </ion-row>\n <ion-row class=\"ion-align-items-center\">\n @if (!onlyExternalCalendars) {\n <ion-col class=\"ion-text-center\" [size]=\"12\">\n <ion-card class=\"step2\" [button]=\"true\" (click)=\"saveNewCalendar()\">\n <ion-card-header>\n <ion-card-title>\n <ion-icon name=\"remove\" />\n </ion-card-title>\n </ion-card-header>\n <ion-card-content>\n <h1>{{ 'IDEA_AGENDA.CALENDARS.DONT_LINK' | translate }}</h1>\n <p>{{ 'IDEA_AGENDA.CALENDARS.DONT_LINK_HINT' | translate }}</p>\n </ion-card-content>\n </ion-card>\n </ion-col>\n }\n @for (s of SOURCES; track s) {\n <ion-col class=\"ion-text-center\" [size]=\"12\">\n <ion-card class=\"step2\" [button]=\"true\" (click)=\"saveNewCalendar(s)\">\n <ion-card-header>\n <ion-card-title>\n <ion-icon [name]=\"calendars.getServiceIcon(s)\" />\n </ion-card-title>\n </ion-card-header>\n <ion-card-content>\n <h1>\n {{ 'IDEA_AGENDA.CALENDARS.LINK_TO' | translate }}\n {{ 'IDEA_AGENDA.CALENDARS.SERVICES.' + s | translate }}\n </h1>\n <p>{{ 'IDEA_AGENDA.CALENDARS.LINK_TO_HINT' | translate }}</p>\n </ion-card-content>\n </ion-card>\n </ion-col>\n }\n </ion-row>\n </ion-grid>\n }\n</ion-content>\n", styles: ["ion-content{--background: var(--ion-color-white-shade)}.choiceGrid ion-row ion-col>h1{margin:10px 0 0;font-size:1.1em}.choiceGrid ion-row ion-col>p{margin-top:0;margin-bottom:0;font-size:.9em}.choiceGrid ion-row:first-child ion-col{padding-bottom:25px}.choiceGrid ion-card{--ion-item-background: var(--ion-color-white);--color: var(--ion-color-dark-tint);height:240px;margin:0 auto;text-align:center}.choiceGrid ion-card ion-card-header{padding-bottom:10px}.choiceGrid ion-card ion-card-header ion-card-title{font-size:2.5em}.choiceGrid ion-card ion-card-content h1{font-size:1.4em;height:60px}.choiceGrid ion-card.step2{height:135px}.choiceGrid ion-card.step2 ion-card-header{padding-top:10px;padding-bottom:0}.choiceGrid ion-card.step2 ion-card-content h1{height:auto}\n"] }]
|
|
103
|
+
}], propDecorators: { fixScope: [{
|
|
130
104
|
type: Input
|
|
131
105
|
}], onlyExternalCalendars: [{
|
|
132
106
|
type: Input
|
|
@@ -139,4 +113,4 @@ export var CalendarScopes;
|
|
|
139
113
|
CalendarScopes["SHARED"] = "shared";
|
|
140
114
|
CalendarScopes["PRIVATE"] = "private"; // userId
|
|
141
115
|
})(CalendarScopes || (CalendarScopes = {}));
|
|
142
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXJDcmVhdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9tb2R1bGVzL2FnZW5kYS9zcmMvY2FsZW5kYXJDcmVhdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9tb2R1bGVzL2FnZW5kYS9zcmMvY2FsZW5kYXJDcmVhdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUV6RCxPQUFPLEVBQUUsUUFBUSxFQUFFLG9CQUFvQixFQUFFLHVCQUF1QixFQUFjLE1BQU0sY0FBYyxDQUFDOzs7Ozs7QUFnQm5HLE1BQU0sT0FBTyw2QkFBNkI7SUEwQnhDLFlBQ1MsU0FBK0IsRUFDL0IsU0FBMEIsRUFDMUIsRUFBcUIsRUFDckIsT0FBMkIsRUFDM0IsT0FBMkIsRUFDM0IsR0FBc0IsRUFDdEIsQ0FBMEI7UUFOMUIsY0FBUyxHQUFULFNBQVMsQ0FBc0I7UUFDL0IsY0FBUyxHQUFULFNBQVMsQ0FBaUI7UUFDMUIsT0FBRSxHQUFGLEVBQUUsQ0FBbUI7UUFDckIsWUFBTyxHQUFQLE9BQU8sQ0FBb0I7UUFDM0IsWUFBTyxHQUFQLE9BQU8sQ0FBb0I7UUFDM0IsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFDdEIsTUFBQyxHQUFELENBQUMsQ0FBeUI7UUFoQm5DOztXQUVHO1FBQ0ksa0JBQWEsR0FBRyxNQUFNLENBQUM7UUFDOUI7O1dBRUc7UUFDSSxZQUFPLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO0lBVW5ELENBQUM7SUFDRyxRQUFRO1FBQ2IsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLFFBQVEsRUFBRSxDQUFDO1FBQy9CLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDNUMs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LEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO2FBQzFELE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSztRQUNWLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDM0IsQ0FBQzs4R0E5SFUsNkJBQTZCO2tHQUE3Qiw2QkFBNkIsZ0pDbEIxQyxnbklBaUdBOzsyRkQvRWEsNkJBQTZCO2tCQUx6QyxTQUFTOytCQUNFLHdCQUF3QjsrUkFRbEIsUUFBUTtzQkFBdkIsS0FBSztnQkFJVSxxQkFBcUI7c0JBQXBDLEtBQUs7O0FBeUhSOztHQUVHO0FBQ0gsTUFBTSxDQUFOLElBQVksY0FHWDtBQUhELFdBQVksY0FBYztJQUN4QixtQ0FBaUIsQ0FBQTtJQUNqQixxQ0FBbUIsQ0FBQSxDQUFDLFNBQVM7QUFDL0IsQ0FBQyxFQUhXLGNBQWMsS0FBZCxjQUFjLFFBR3pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNb2RhbENvbnRyb2xsZXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5pbXBvcnQgeyBDYWxlbmRhciwgRXh0ZXJuYWxDYWxlbmRhckluZm8sIEV4dGVybmFsQ2FsZW5kYXJTb3VyY2VzLCBNZW1iZXJzaGlwIH0gZnJvbSAnaWRlYS10b29sYm94JztcbmltcG9ydCB7XG4gIElERUFMb2FkaW5nU2VydmljZSxcbiAgSURFQUFXU0FQSVNlcnZpY2UsXG4gIElERUFUaW5DYW5TZXJ2aWNlLFxuICBJREVBTWVzc2FnZVNlcnZpY2UsXG4gIElERUFUcmFuc2xhdGlvbnNTZXJ2aWNlXG59IGZyb20gJ0BpZGVhLWlvbmljL2NvbW1vbic7XG5cbmltcG9ydCB7IElERUFDYWxlbmRhcnNTZXJ2aWNlIH0gZnJvbSAnLi9jYWxlbmRhcnMuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2lkZWEtY2FsZW5kYXItY3JlYXRpb24nLFxuICB0ZW1wbGF0ZVVybDogJ2NhbGVuZGFyQ3JlYXRpb24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnY2FsZW5kYXJDcmVhdGlvbi5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIElERUFDYWxlbmRhckNyZWF0aW9uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgLyoqXG4gICAqIFdoZXRoZXIgd2Ugd2FudCB0byBhbGxvdyB0aGUgY3JlYXRpb24gb2Ygb25seSBhIHBhcnRpY3VsYXIgdHlwZSBvZiBjYWxlbmRhciwgYmFzZWQgb24gdGhlIHNjb3BlLlxuICAgKi9cbiAgQElucHV0KCkgcHVibGljIGZpeFNjb3BlOiBDYWxlbmRhclNjb3BlcztcbiAgLyoqXG4gICAqIFdoZXRoZXIgd2Ugd2FudCB0byBhbGxvdyB0aGUgY3JlYXRpb24gb2YgbG9jYWwgY2FsZW5kYXJzLlxuICAgKi9cbiAgQElucHV0KCkgcHVibGljIG9ubHlFeHRlcm5hbENhbGVuZGFyczogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFRoZSBjdXJyZW50IG1lbWJlcnNoaXAgKGdlbmVyaWMpLlxuICAgKi9cbiAgcHVibGljIG1lbWJlcnNoaXA6IE1lbWJlcnNoaXA7XG4gIC8qKlxuICAgKiBUaGUgY2FsZW5kYXIgdG8gY3JlYXRlLlxuICAgKi9cbiAgcHVibGljIGNhbGVuZGFyOiBDYWxlbmRhcjtcbiAgLyoqXG4gICAqIFRoZSBkZWZhdWx0IGNvbG9yIGZvciBhIG5ldyBjYWxlbmRhci5cbiAgICovXG4gIHB1YmxpYyBERUZBVUxUX0NPTE9SID0gJyM1NTUnO1xuICAvKipcbiAgICogVGhlIHBvc3NpYmxlIGV4dGVybmFsIHNlcnZpY2VzIGZvciB0aGUgbmV3IGNhbGVuZGFyLlxuICAgKi9cbiAgcHVibGljIFNPVVJDRVMgPSBPYmplY3Qua2V5cyhFeHRlcm5hbENhbGVuZGFyU291cmNlcyk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGNhbGVuZGFyczogSURFQUNhbGVuZGFyc1NlcnZpY2UsXG4gICAgcHVibGljIG1vZGFsQ3RybDogTW9kYWxDb250cm9sbGVyLFxuICAgIHB1YmxpYyB0YzogSURFQVRpbkNhblNlcnZpY2UsXG4gICAgcHVibGljIGxvYWRpbmc6IElERUFMb2FkaW5nU2VydmljZSxcbiAgICBwdWJsaWMgbWVzc2FnZTogSURFQU1lc3NhZ2VTZXJ2aWNlLFxuICAgIHB1YmxpYyBBUEk6IElERUFBV1NBUElTZXJ2aWNlLFxuICAgIHB1YmxpYyB0OiBJREVBVHJhbnNsYXRpb25zU2VydmljZVxuICApIHt9XG4gIHB1YmxpYyBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmNhbGVuZGFyID0gbmV3IENhbGVuZGFyKCk7XG4gICAgdGhpcy5tZW1iZXJzaGlwID0gdGhpcy50Yy5nZXQoJ21lbWJlcnNoaXAnKTtcbiAgICBpZiAodGhpcy5maXhTY29wZSA9PT0gQ2FsZW5kYXJTY29wZXMuU0hBUkVEKSB0aGlzLmNhbGVuZGFyLnRlYW1JZCA9IHRoaXMubWVtYmVyc2hpcC50ZWFtSWQ7XG4gICAgaWYgKHRoaXMuZml4U2NvcGUgPT09IENhbGVuZGFyU2NvcGVzLlBSSVZBVEUpIHRoaXMuY2FsZW5kYXIudXNlcklkID0gdGhpcy5tZW1iZXJzaGlwLnVzZXJJZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBJZiBhbGxvd2VkIGJ5IHRoZSBjb21wb25lbnQgY29uZmlndXJhdGlvbiwgcmVzZXQgdGhlIHNjb3BlIG9mIHRoZSBjYWxlbmRhciAocHJpdmF0ZS9zaGFyZWQpLlxuICAgKi9cbiAgcHVibGljIHJlc2V0U2NvcGUoKSB7XG4gICAgaWYgKHRoaXMuY2FuQ2hhbmdlU2NvcGUoKSkgdGhpcy5jYWxlbmRhci50ZWFtSWQgPSB0aGlzLmNhbGVuZGFyLnVzZXJJZCA9IG51bGw7XG4gIH1cbiAgLyoqXG4gICAqIFdoZXRoZXIgd2UgY2FuIGNoYW5nZSB0aGUgc2NvcGUgb2YgdGhlIGNhbGVuZGFyIChwcml2YXRlL3NoYXJlZCkuXG4gICAqL1xuICBwdWJsaWMgY2FuQ2hhbmdlU2NvcGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLmZpeFNjb3BlICYmIHRoaXMuc2NvcGVJc1NldCgpO1xuICB9XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBzY29wZSBoYXMgYmVlbiBzZXQgYWxyZWFkeS5cbiAgICovXG4gIHB1YmxpYyBzY29wZUlzU2V0KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCb29sZWFuKHRoaXMuY2FsZW5kYXIudXNlcklkKSB8fCBCb29sZWFuKHRoaXMuY2FsZW5kYXIudGVhbUlkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSBuZXcgY2FsZW5kYXIgYmFzZWQgb24gdGhlIGNvbmZpZ3VyYXRpb24gc2V0LlxuICAgKi9cbiAgcHVibGljIGFzeW5jIHNhdmVOZXdDYWxlbmRhcihzZXJ2aWNlPzogRXh0ZXJuYWxDYWxlbmRhclNvdXJjZXMpIHtcbiAgICAvLyBiZSBzdXJlIHRoZSBzY29wZSBvZiB0aGUgY2FsZW5kYXIgd2FzIGNob3NlblxuICAgIGlmICghdGhpcy5zY29wZUlzU2V0KCkpIHJldHVybjtcbiAgICAvLyBiZSBzdXJlIHdlIGFyZSBhbGxvd2VkIHRvIGNyZWF0ZSB0aGUgY2FsZW5kYXJcbiAgICBpZiAoIXNlcnZpY2UgJiYgdGhpcy5vbmx5RXh0ZXJuYWxDYWxlbmRhcnMpIHJldHVybjtcbiAgICAvLyBmbGFnIHRoZSBjYWxlbmRhciBzbyBpdCBoYXMgdG8gYmUgbGlua2VkIHRvIGFuIGV4dGVybmFscyBzZXJ2aWNlICh0aGUgcHJvY2VkdXJlIGZvbGxvd3MgdGhlIGNyZWF0aW9uKVxuICAgIGlmIChzZXJ2aWNlKSB7XG4gICAgICB0aGlzLmNhbGVuZGFyLmV4dGVybmFsID0gbmV3IEV4dGVybmFsQ2FsZW5kYXJJbmZvKHsgc2VydmljZSB9KTtcbiAgICAgIHRoaXMuY2FsZW5kYXIubmFtZSA9ICctJzsgLy8gaXQgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSBleHRlcm5hbCBuYW1lXG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGRlZmF1bHQgdmFsdWVzIGZvciBsb2NhbCBjYWxlbmRhcnNcbiAgICAgIHRoaXMuY2FsZW5kYXIubmFtZSA9IHRoaXMuY2FsZW5kYXIudXNlcklkXG4gICAgICAgID8gdGhpcy50Ll8oJ0lERUFfQUdFTkRBLkNBTEVOREFSUy5ERUZBVUxUX1BFUlNPTkFMX0NBTEVOREFSX05BTUUnKVxuICAgICAgICA6IHRoaXMudC5fKCdJREVBX0FHRU5EQS5DQUxFTkRBUlMuREVGQVVMVF9URUFNX0NBTEVOREFSX05BTUUnKTtcbiAgICAgIHRoaXMuY2FsZW5kYXIuY29sb3IgPSB0aGlzLkRFRkFVTFRfQ09MT1I7XG4gICAgfVxuICAgIC8vIHNhdmUgKGNyZWF0ZSkgdGhlIG5ldyBjYWxlbmRhclxuICAgIGF3YWl0IHRoaXMubG9hZGluZy5zaG93KCk7XG4gICAgdGhpcy5jYWxlbmRhcnNcbiAgICAgIC5wb3N0Q2FsZW5kYXIodGhpcy5jYWxlbmRhcilcbiAgICAgIC50aGVuKGNhbCA9PiB7XG4gICAgICAgIHRoaXMuY2FsZW5kYXIubG9hZChjYWwpO1xuICAgICAgICB0aGlzLm1lc3NhZ2Uuc3VjY2VzcygnSURFQV9BR0VOREEuQ0FMRU5EQVJTLkNBTEVOREFSX0NSRUFURUQnKTtcbiAgICAgICAgLy8gaWYgdGhlIGNhbGVuZGFyIGlzIGxvY2FsLCBubyBmdXJ0aGVyIGFjdGlvbiBpcyBuZWVkZWRcbiAgICAgICAgaWYgKCFjYWwuZXh0ZXJuYWwpIHJldHVybiB0aGlzLm1vZGFsQ3RybC5kaXNtaXNzKHRoaXMuY2FsZW5kYXIpO1xuICAgICAgICAvLyBpZiB0aGUgY2FsZW5kYXIgc2hvdWxkIGJlIGxpbmtlZCB0byBhbiBleHRlcm5hbCBzZXJ2aWNlLCBwcm9jZWVkXG4gICAgICAgIHRoaXMuY2FsZW5kYXJzXG4gICAgICAgICAgLmxpbmtFeHRTZXJ2aWNlKHRoaXMuY2FsZW5kYXIpXG4gICAgICAgICAgLy8gaWYgdGhlIGxpbmsgd2FzIHN1Y2Nlc3NmdWwsIGxldCB0aGUgdXNlciBwaWNrIGFuIGV4dGVybmFsIGNhbGVuZGFyIHRvIHNldFxuICAgICAgICAgIC50aGVuKCgpID0+IHRoaXMuY2FsZW5kYXJzLmNob29zZUFuZFNldEV4dGVybmFsQ2FsZW5kYXIodGhpcy5jYWxlbmRhcikpXG4gICAgICAgICAgLnRoZW4oYXN5bmMgcmVzID0+IHtcbiAgICAgICAgICAgIC8vIGlmIGEgY2FsZW5kYXIgd2Fzbid0IHNldCwgaXQgY2FuIGJlIGRvbmUgbGF0ZXIgb25cbiAgICAgICAgICAgIGlmICghcmVzKSByZXR1cm4gdGhpcy5tb2RhbEN0cmwuZGlzbWlzcyh0aGlzLmNhbGVuZGFyKTtcbiAgICAgICAgICAgIC8vIGlmIGFuIGV4dGVybmFsIGNhbGVuZGFyIHdhcyBzZXQsIHVwZGF0ZSB0aGUgY2FsZW5kYXJcbiAgICAgICAgICAgIHRoaXMuY2FsZW5kYXIubG9hZChyZXMpO1xuICAgICAgICAgICAgLy8gcnVuIGEgZmlyc3Qgc3luYyBmb3IgdGhlIGxpbmtlZCBleHRlcm5hbCBjYWxlbmRhclxuICAgICAgICAgICAgYXdhaXQgdGhpcy5sb2FkaW5nLnNob3codGhpcy50Ll8oJ0lERUFfQUdFTkRBLkNBTEVOREFSUy5GSVJTVF9TWU5DX01BWV9UQUtFX0FfV0hJTEUnKSk7XG4gICAgICAgICAgICB0aGlzLmNhbGVuZGFyc1xuICAgICAgICAgICAgICAuc3luY0NhbGVuZGFyKHRoaXMuY2FsZW5kYXIpXG4gICAgICAgICAgICAgIC50aGVuKCgpID0+IHRoaXMubWVzc2FnZS5zdWNjZXNzKCdJREVBX0FHRU5EQS5DQUxFTkRBUlMuRklSU1RfU1lOQ19DT01QTEVURUQnKSlcbiAgICAgICAgICAgICAgLmNhdGNoKCgpID0+IHRoaXMubWVzc2FnZS5lcnJvcignQ09NTU9OLk9QRVJBVElPTl9GQUlMRUQnKSlcbiAgICAgICAgICAgICAgLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZy5oaWRlKCk7XG4gICAgICAgICAgICAgICAgLy8gdGhlIGNhbGVuZGFyIGlzIHJlYWR5IHRvIGdvXG4gICAgICAgICAgICAgICAgdGhpcy5tb2RhbEN0cmwuZGlzbWlzcyh0aGlzLmNhbGVuZGFyKTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSlcbiAgICAgICAgICAuY2F0Y2goKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5tZXNzYWdlLmVycm9yKCdDT01NT04uT1BFUkFUSU9OX0ZBSUxFRCcpO1xuICAgICAgICAgICAgLy8gdGhlIG9wZXJhdGlvbiBjYW4gYmUgcmV0cmllZCBsYXRlciBvbjsgY2xvc2UgdGhlIG1vZGFsIGFueXdheVxuICAgICAgICAgICAgdGhpcy5tb2RhbEN0cmwuZGlzbWlzcyh0aGlzLmNhbGVuZGFyKTtcbiAgICAgICAgICB9KTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKCkgPT4gdGhpcy5tZXNzYWdlLmVycm9yKCdDT01NT04uT1BFUkFUSU9OX0ZBSUxFRCcpKVxuICAgICAgLmZpbmFsbHkoKCkgPT4gdGhpcy5sb2FkaW5nLmhpZGUoKSk7XG4gIH1cblxuICAvKipcbiAgICogQ2xvc2UgdGhlIGNvbXBvbmVudC5cbiAgICovXG4gIHB1YmxpYyBjbG9zZSgpIHtcbiAgICB0aGlzLm1vZGFsQ3RybC5kaXNtaXNzKCk7XG4gIH1cbn1cblxuLyoqXG4gKiBUaGUgcG9zc2libGUgc2NvcGVzIG9mIHRoZSBjYWxlbmRhci5cbiAqL1xuZXhwb3J0IGVudW0gQ2FsZW5kYXJTY29wZXMge1xuICBTSEFSRUQgPSAnc2hhcmVkJywgLy8gdGVhbUlkXG4gIFBSSVZBVEUgPSAncHJpdmF0ZScgLy8gdXNlcklkXG59XG4iLCI8aW9uLWhlYWRlcj5cbiAgPGlvbi10b29sYmFyIGNvbG9yPVwiaWRlYVRvb2xiYXJcIj5cbiAgICA8aW9uLWJ1dHRvbnMgc2xvdD1cInN0YXJ0XCI+XG4gICAgICA8aW9uLWJ1dHRvbiAqbmdJZj1cIiFjYW5DaGFuZ2VTY29wZSgpXCIgW3RpdGxlXT1cInQuXygnQ09NTU9OLkNMT1NFJylcIiAoY2xpY2spPVwiY2xvc2UoKVwiPlxuICAgICAgICA8aW9uLWljb24gbmFtZT1cImNsb3NlXCIgc2xvdD1cImljb24tb25seVwiPjwvaW9uLWljb24+XG4gICAgICA8L2lvbi1idXR0b24+XG4gICAgICA8aW9uLWJ1dHRvbiAqbmdJZj1cImNhbkNoYW5nZVNjb3BlKClcIiAoY2xpY2spPVwicmVzZXRTY29wZSgpXCI+XG4gICAgICAgIDxpb24taWNvbiBuYW1lPVwiYXJyb3ctYmFja1wiIHNsb3Q9XCJpY29uLW9ubHlcIj48L2lvbi1pY29uPlxuICAgICAgPC9pb24tYnV0dG9uPlxuICAgIDwvaW9uLWJ1dHRvbnM+XG4gICAgPGlvbi10aXRsZT5cbiAgICAgIDxzcGFuICpuZ0lmPVwiIXNjb3BlSXNTZXQoKVwiPnt7ICdJREVBX0FHRU5EQS5DQUxFTkRBUlMuQUREX0FfQ0FMRU5EQVInIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgPHNwYW4gKm5nSWY9XCJjYWxlbmRhci51c2VySWRcIj57eyAnSURFQV9BR0VOREEuQ0FMRU5EQVJTLlBFUlNPTkFMX0NBTEVOREFSJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgIDxzcGFuICpuZ0lmPVwiY2FsZW5kYXIudGVhbUlkXCI+XG4gICAgICAgIHt7ICdJREVBX0FHRU5EQS5DQUxFTkRBUlMuVEVBTV9DQUxFTkRBUicgfCB0cmFuc2xhdGU6IHsgdGVhbTogdGMuZ2V0KCd0ZWFtJykubmFtZSB9IH19XG4gICAgICA8L3NwYW4+XG4gICAgPC9pb24tdGl0bGU+XG4gIDwvaW9uLXRvb2xiYXI+XG48L2lvbi1oZWFkZXI+XG48aW9uLWNvbnRlbnQ+XG4gIDwhLS0gMXN0IFNURVAgLS0+XG4gIDxpb24tZ3JpZCBjbGFzcz1cImlvbi1wYWRkaW5nIGNob2ljZUdyaWRcIiAqbmdJZj1cIiFzY29wZUlzU2V0KClcIj5cbiAgICA8aW9uLXJvdz5cbiAgICAgIDxpb24tY29sIGNsYXNzPVwiaW9uLXRleHQtY2VudGVyXCI+XG4gICAgICAgIDxoMT57eyAnSURFQV9BR0VOREEuQ0FMRU5EQVJTLkNSRUFURV9QUklWQVRFX09SX1RFQU0nIHwgdHJhbnNsYXRlIH19PC9oMT5cbiAgICAgIDwvaW9uLWNvbD5cbiAgICA8L2lvbi1yb3c+XG4gICAgPGlvbi1yb3cgY2xhc3M9XCJpb24tYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICA8aW9uLWNvbCBjbGFzcz1cImlvbi10ZXh0LWNlbnRlclwiIFtzaXplXT1cIjEyXCIgW3NpemVTbV09XCI2XCI+XG4gICAgICAgIDxpb24tY2FyZCBbYnV0dG9uXT1cInRydWVcIiAoY2xpY2spPVwiY2FsZW5kYXIudXNlcklkID0gbWVtYmVyc2hpcC51c2VySWRcIj5cbiAgICAgICAgICA8aW9uLWNhcmQtaGVhZGVyPlxuICAgICAgICAgICAgPGlvbi1jYXJkLXRpdGxlPlxuICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cInBlcnNvblwiPjwvaW9uLWljb24+XG4gICAgICAgICAgICA8L2lvbi1jYXJkLXRpdGxlPlxuICAgICAgICAgIDwvaW9uLWNhcmQtaGVhZGVyPlxuICAgICAgICAgIDxpb24tY2FyZC1jb250ZW50PlxuICAgICAgICAgICAgPGgxPnt7ICdJREVBX0FHRU5EQS5DQUxFTkRBUlMuUEVSU09OQUxfQ0FMRU5EQVInIHwgdHJhbnNsYXRlIH19PC9oMT5cbiAgICAgICAgICAgIDxwPnt7ICdJREVBX0FHRU5EQS5DQUxFTkRBUlMuUEVSU09OQUxfQ0FMRU5EQVJfSElOVCcgfCB0cmFuc2xhdGUgfX08L3A+XG4gICAgICAgICAgPC9pb24tY2FyZC1jb250ZW50PlxuICAgICAgICA8L2lvbi1jYXJkPlxuICAgICAgPC9pb24tY29sPlxuICAgICAgPGlvbi1jb2wgY2xhc3M9XCJpb24tdGV4dC1jZW50ZXJcIiBbc2l6ZV09XCIxMlwiIFtzaXplU21dPVwiNlwiPlxuICAgICAgICA8aW9uLWNhcmQgW2J1dHRvbl09XCJ0cnVlXCIgKGNsaWNrKT1cImNhbGVuZGFyLnRlYW1JZCA9IG1lbWJlcnNoaXAudGVhbUlkXCI+XG4gICAgICAgICAgPGlvbi1jYXJkLWhlYWRlcj5cbiAgICAgICAgICAgIDxpb24tY2FyZC10aXRsZT5cbiAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJwZW9wbGVcIj48L2lvbi1pY29uPlxuICAgICAgICAgICAgPC9pb24tY2FyZC10aXRsZT5cbiAgICAgICAgICA8L2lvbi1jYXJkLWhlYWRlcj5cbiAgICAgICAgICA8aW9uLWNhcmQtY29udGVudD5cbiAgICAgICAgICAgIDxoMT57eyAnSURFQV9BR0VOREEuQ0FMRU5EQVJTLlRFQU1fQ0FMRU5EQVInIHwgdHJhbnNsYXRlIH19PC9oMT5cbiAgICAgICAgICAgIDxwPnt7ICdJREVBX0FHRU5EQS5DQUxFTkRBUlMuVEVBTV9DQUxFTkRBUl9ISU5UJyB8IHRyYW5zbGF0ZSB9fTwvcD5cbiAgICAgICAgICA8L2lvbi1jYXJkLWNvbnRlbnQ+XG4gICAgICAgIDwvaW9uLWNhcmQ+XG4gICAgICA8L2lvbi1jb2w+XG4gICAgPC9pb24tcm93PlxuICA8L2lvbi1ncmlkPlxuICA8IS0tIDJuZCBTVEVQIC0tPlxuICA8aW9uLWdyaWQgY2xhc3M9XCJpb24tcGFkZGluZyBjaG9pY2VHcmlkXCIgKm5nSWY9XCJzY29wZUlzU2V0KClcIj5cbiAgICA8aW9uLXJvdz5cbiAgICAgIDxpb24tY29sIGNsYXNzPVwiaW9uLXRleHQtY2VudGVyXCI+XG4gICAgICAgIDxoMT57eyAnSURFQV9BR0VOREEuQ0FMRU5EQVJTLldISUNIX0VYVEVSTkFMX1NFUlZJQ0VfVE9fTElOSycgfCB0cmFuc2xhdGUgfX08L2gxPlxuICAgICAgICA8cD57eyAnSURFQV9BR0VOREEuQ0FMRU5EQVJTLldISUNIX0VYVEVSTkFMX1NFUlZJQ0VfVE9fTElOS19ISU5UJyB8IHRyYW5zbGF0ZSB9fTwvcD5cbiAgICAgIDwvaW9uLWNvbD5cbiAgICA8L2lvbi1yb3c+XG4gICAgPGlvbi1yb3cgY2xhc3M9XCJpb24tYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICA8aW9uLWNvbCBjbGFzcz1cImlvbi10ZXh0LWNlbnRlclwiIFtzaXplXT1cIjEyXCIgKm5nSWY9XCIhb25seUV4dGVybmFsQ2FsZW5kYXJzXCI+XG4gICAgICAgIDxpb24tY2FyZCBjbGFzcz1cInN0ZXAyXCIgW2J1dHRvbl09XCJ0cnVlXCIgKGNsaWNrKT1cInNhdmVOZXdDYWxlbmRhcigpXCI+XG4gICAgICAgICAgPGlvbi1jYXJkLWhlYWRlcj5cbiAgICAgICAgICAgIDxpb24tY2FyZC10aXRsZT5cbiAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJyZW1vdmVcIj48L2lvbi1pY29uPlxuICAgICAgICAgICAgPC9pb24tY2FyZC10aXRsZT5cbiAgICAgICAgICA8L2lvbi1jYXJkLWhlYWRlcj5cbiAgICAgICAgICA8aW9uLWNhcmQtY29udGVudD5cbiAgICAgICAgICAgIDxoMT57eyAnSURFQV9BR0VOREEuQ0FMRU5EQVJTLkRPTlRfTElOSycgfCB0cmFuc2xhdGUgfX08L2gxPlxuICAgICAgICAgICAgPHA+e3sgJ0lERUFfQUdFTkRBLkNBTEVOREFSUy5ET05UX0xJTktfSElOVCcgfCB0cmFuc2xhdGUgfX08L3A+XG4gICAgICAgICAgPC9pb24tY2FyZC1jb250ZW50PlxuICAgICAgICA8L2lvbi1jYXJkPlxuICAgICAgPC9pb24tY29sPlxuICAgICAgPGlvbi1jb2wgY2xhc3M9XCJpb24tdGV4dC1jZW50ZXJcIiAqbmdGb3I9XCJsZXQgcyBvZiBTT1VSQ0VTXCIgW3NpemVdPVwiMTJcIj5cbiAgICAgICAgPGlvbi1jYXJkIGNsYXNzPVwic3RlcDJcIiBbYnV0dG9uXT1cInRydWVcIiAoY2xpY2spPVwic2F2ZU5ld0NhbGVuZGFyKHMpXCI+XG4gICAgICAgICAgPGlvbi1jYXJkLWhlYWRlcj5cbiAgICAgICAgICAgIDxpb24tY2FyZC10aXRsZT5cbiAgICAgICAgICAgICAgPGlvbi1pY29uIFtuYW1lXT1cImNhbGVuZGFycy5nZXRTZXJ2aWNlSWNvbihzKVwiPjwvaW9uLWljb24+XG4gICAgICAgICAgICA8L2lvbi1jYXJkLXRpdGxlPlxuICAgICAgICAgIDwvaW9uLWNhcmQtaGVhZGVyPlxuICAgICAgICAgIDxpb24tY2FyZC1jb250ZW50PlxuICAgICAgICAgICAgPGgxPlxuICAgICAgICAgICAgICB7eyAnSURFQV9BR0VOREEuQ0FMRU5EQVJTLkxJTktfVE8nIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgIHt7ICdJREVBX0FHRU5EQS5DQUxFTkRBUlMuU0VSVklDRVMuJyArIHMgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgIDwvaDE+XG4gICAgICAgICAgICA8cD57eyAnSURFQV9BR0VOREEuQ0FMRU5EQVJTLkxJTktfVE9fSElOVCcgfCB0cmFuc2xhdGUgfX08L3A+XG4gICAgICAgICAgPC9pb24tY2FyZC1jb250ZW50PlxuICAgICAgICA8L2lvbi1jYXJkPlxuICAgICAgPC9pb24tY29sPlxuICAgIDwvaW9uLXJvdz5cbiAgPC9pb24tZ3JpZD5cbjwvaW9uLWNvbnRlbnQ+XG4iXX0=
|
|
116
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXJDcmVhdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9tb2R1bGVzL2FnZW5kYS9zcmMvY2FsZW5kYXJDcmVhdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9tb2R1bGVzL2FnZW5kYS9zcmMvY2FsZW5kYXJDcmVhdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxRQUFRLEVBQUUsb0JBQW9CLEVBQUUsdUJBQXVCLEVBQWMsTUFBTSxjQUFjLENBQUM7QUFDbkcsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGlCQUFpQixFQUFFLGtCQUFrQixFQUFFLHVCQUF1QixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFeEgsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7QUFPM0QsTUFBTSxPQUFPLDZCQUE2QjtJQUwxQztRQWlCRSxrQkFBYSxHQUFHLE1BQU0sQ0FBQztRQUN2QixZQUFPLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBRXZDLGVBQVUsR0FBRyxNQUFNLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUMxQyxXQUFNLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ2pDLFFBQUcsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUNoQyxhQUFRLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDdEMsYUFBUSxHQUFHLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ3RDLGVBQVUsR0FBRyxNQUFNLENBQUMsdUJBQXVCLENBQUMsQ0FBQztLQXVFdEQ7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O0lBRUQsS0FBSztRQUNILElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDeEIsQ0FBQzs4R0ExRlUsNkJBQTZCO2tHQUE3Qiw2QkFBNkIsZ0pDWjFDLGc2SUFtSEE7OzJGRHZHYSw2QkFBNkI7a0JBTHpDLFNBQVM7K0JBQ0Usd0JBQXdCOzhCQVF6QixRQUFRO3NCQUFoQixLQUFLO2dCQUlHLHFCQUFxQjtzQkFBN0IsS0FBSzs7QUFxRlI7O0dBRUc7QUFDSCxNQUFNLENBQU4sSUFBWSxjQUdYO0FBSEQsV0FBWSxjQUFjO0lBQ3hCLG1DQUFpQixDQUFBO0lBQ2pCLHFDQUFtQixDQUFBLENBQUMsU0FBUztBQUMvQixDQUFDLEVBSFcsY0FBYyxLQUFkLGNBQWMsUUFHekIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTW9kYWxDb250cm9sbGVyIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xuaW1wb3J0IHsgQ2FsZW5kYXIsIEV4dGVybmFsQ2FsZW5kYXJJbmZvLCBFeHRlcm5hbENhbGVuZGFyU291cmNlcywgTWVtYmVyc2hpcCB9IGZyb20gJ2lkZWEtdG9vbGJveCc7XG5pbXBvcnQgeyBJREVBTG9hZGluZ1NlcnZpY2UsIElERUFUaW5DYW5TZXJ2aWNlLCBJREVBTWVzc2FnZVNlcnZpY2UsIElERUFUcmFuc2xhdGlvbnNTZXJ2aWNlIH0gZnJvbSAnQGlkZWEtaW9uaWMvY29tbW9uJztcblxuaW1wb3J0IHsgSURFQUNhbGVuZGFyc1NlcnZpY2UgfSBmcm9tICcuL2NhbGVuZGFycy5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaWRlYS1jYWxlbmRhci1jcmVhdGlvbicsXG4gIHRlbXBsYXRlVXJsOiAnY2FsZW5kYXJDcmVhdGlvbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWydjYWxlbmRhckNyZWF0aW9uLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgSURFQUNhbGVuZGFyQ3JlYXRpb25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAvKipcbiAgICogV2hldGhlciB3ZSB3YW50IHRvIGFsbG93IHRoZSBjcmVhdGlvbiBvZiBvbmx5IGEgcGFydGljdWxhciB0eXBlIG9mIGNhbGVuZGFyLCBiYXNlZCBvbiB0aGUgc2NvcGUuXG4gICAqL1xuICBASW5wdXQoKSBmaXhTY29wZTogQ2FsZW5kYXJTY29wZXM7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHdlIHdhbnQgdG8gYWxsb3cgdGhlIGNyZWF0aW9uIG9mIGxvY2FsIGNhbGVuZGFycy5cbiAgICovXG4gIEBJbnB1dCgpIG9ubHlFeHRlcm5hbENhbGVuZGFyczogYm9vbGVhbjtcblxuICBtZW1iZXJzaGlwOiBNZW1iZXJzaGlwO1xuICBjYWxlbmRhcjogQ2FsZW5kYXI7XG4gIERFRkFVTFRfQ09MT1IgPSAnIzU1NSc7XG4gIFNPVVJDRVMgPSBPYmplY3Qua2V5cyhFeHRlcm5hbENhbGVuZGFyU291cmNlcyk7XG5cbiAgcHJpdmF0ZSBfY2FsZW5kYXJzID0gaW5qZWN0KElERUFDYWxlbmRhcnNTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBfbW9kYWwgPSBpbmplY3QoTW9kYWxDb250cm9sbGVyKTtcbiAgcHJpdmF0ZSBfdGMgPSBpbmplY3QoSURFQVRpbkNhblNlcnZpY2UpO1xuICBwcml2YXRlIF9sb2FkaW5nID0gaW5qZWN0KElERUFMb2FkaW5nU2VydmljZSk7XG4gIHByaXZhdGUgX21lc3NhZ2UgPSBpbmplY3QoSURFQU1lc3NhZ2VTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBfdHJhbnNsYXRlID0gaW5qZWN0KElERUFUcmFuc2xhdGlvbnNTZXJ2aWNlKTtcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmNhbGVuZGFyID0gbmV3IENhbGVuZGFyKCk7XG4gICAgdGhpcy5tZW1iZXJzaGlwID0gdGhpcy5fdGMuZ2V0KCdtZW1iZXJzaGlwJyk7XG4gICAgaWYgKHRoaXMuZml4U2NvcGUgPT09IENhbGVuZGFyU2NvcGVzLlNIQVJFRCkgdGhpcy5jYWxlbmRhci50ZWFtSWQgPSB0aGlzLm1lbWJlcnNoaXAudGVhbUlkO1xuICAgIGlmICh0aGlzLmZpeFNjb3BlID09PSBDYWxlbmRhclNjb3Blcy5QUklWQVRFKSB0aGlzLmNhbGVuZGFyLnVzZXJJZCA9IHRoaXMubWVtYmVyc2hpcC51c2VySWQ7XG4gIH1cblxuICByZXNldFNjb3BlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNhbkNoYW5nZVNjb3BlKCkpIHRoaXMuY2FsZW5kYXIudGVhbUlkID0gdGhpcy5jYWxlbmRhci51c2VySWQgPSBudWxsO1xuICB9XG4gIGNhbkNoYW5nZVNjb3BlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5maXhTY29wZSAmJiB0aGlzLnNjb3BlSXNTZXQoKTtcbiAgfVxuICBzY29wZUlzU2V0KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCb29sZWFuKHRoaXMuY2FsZW5kYXIudXNlcklkKSB8fCBCb29sZWFuKHRoaXMuY2FsZW5kYXIudGVhbUlkKTtcbiAgfVxuXG4gIGFzeW5jIHNhdmVOZXdDYWxlbmRhcihzZXJ2aWNlPzogRXh0ZXJuYWxDYWxlbmRhclNvdXJjZXMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMuc2NvcGVJc1NldCgpKSByZXR1cm47XG4gICAgaWYgKCFzZXJ2aWNlICYmIHRoaXMub25seUV4dGVybmFsQ2FsZW5kYXJzKSByZXR1cm47XG4gICAgaWYgKHNlcnZpY2UpIHtcbiAgICAgIHRoaXMuY2FsZW5kYXIuZXh0ZXJuYWwgPSBuZXcgRXh0ZXJuYWxDYWxlbmRhckluZm8oeyBzZXJ2aWNlIH0pO1xuICAgICAgdGhpcy5jYWxlbmRhci5uYW1lID0gJy0nOyAvLyBpdCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIGV4dGVybmFsIG5hbWVcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jYWxlbmRhci5uYW1lID0gdGhpcy5jYWxlbmRhci51c2VySWRcbiAgICAgICAgPyB0aGlzLl90cmFuc2xhdGUuXygnSURFQV9BR0VOREEuQ0FMRU5EQVJTLkRFRkFVTFRfUEVSU09OQUxfQ0FMRU5EQVJfTkFNRScpXG4gICAgICAgIDogdGhpcy5fdHJhbnNsYXRlLl8oJ0lERUFfQUdFTkRBLkNBTEVOREFSUy5ERUZBVUxUX1RFQU1fQ0FMRU5EQVJfTkFNRScpO1xuICAgICAgdGhpcy5jYWxlbmRhci5jb2xvciA9IHRoaXMuREVGQVVMVF9DT0xPUjtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMuX2xvYWRpbmcuc2hvdygpO1xuICAgICAgY29uc3QgY2FsID0gYXdhaXQgdGhpcy5fY2FsZW5kYXJzLnBvc3RDYWxlbmRhcih0aGlzLmNhbGVuZGFyKTtcbiAgICAgIHRoaXMuY2FsZW5kYXIubG9hZChjYWwpO1xuICAgICAgdGhpcy5fbWVzc2FnZS5zdWNjZXNzKCdJREVBX0FHRU5EQS5DQUxFTkRBUlMuQ0FMRU5EQVJfQ1JFQVRFRCcpO1xuICAgICAgaWYgKCFjYWwuZXh0ZXJuYWwpIHtcbiAgICAgICAgdGhpcy5fbW9kYWwuZGlzbWlzcyh0aGlzLmNhbGVuZGFyKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgdGhpcy5fY2FsZW5kYXJzLmxpbmtFeHRTZXJ2aWNlKHRoaXMuY2FsZW5kYXIpO1xuICAgICAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLl9jYWxlbmRhcnMuY2hvb3NlQW5kU2V0RXh0ZXJuYWxDYWxlbmRhcih0aGlzLmNhbGVuZGFyKTtcbiAgICAgICAgaWYgKCFyZXMpIHtcbiAgICAgICAgICB0aGlzLl9tb2RhbC5kaXNtaXNzKHRoaXMuY2FsZW5kYXIpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNhbGVuZGFyLmxvYWQocmVzKTtcbiAgICAgICAgYXdhaXQgdGhpcy5fbG9hZGluZy5zaG93KHRoaXMuX3RyYW5zbGF0ZS5fKCdJREVBX0FHRU5EQS5DQUxFTkRBUlMuRklSU1RfU1lOQ19NQVlfVEFLRV9BX1dISUxFJykpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGF3YWl0IHRoaXMuX2NhbGVuZGFycy5zeW5jQ2FsZW5kYXIodGhpcy5jYWxlbmRhcik7XG4gICAgICAgICAgdGhpcy5fbWVzc2FnZS5zdWNjZXNzKCdJREVBX0FHRU5EQS5DQUxFTkRBUlMuRklSU1RfU1lOQ19DT01QTEVURUQnKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICB0aGlzLl9tZXNzYWdlLmVycm9yKCdDT01NT04uT1BFUkFUSU9OX0ZBSUxFRCcpO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgIHRoaXMuX21vZGFsLmRpc21pc3ModGhpcy5jYWxlbmRhcik7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIHRoaXMuX21lc3NhZ2UuZXJyb3IoJ0NPTU1PTi5PUEVSQVRJT05fRkFJTEVEJyk7XG4gICAgICAgIHRoaXMuX21vZGFsLmRpc21pc3ModGhpcy5jYWxlbmRhcik7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRoaXMuX21lc3NhZ2UuZXJyb3IoJ0NPTU1PTi5PUEVSQVRJT05fRkFJTEVEJyk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuX2xvYWRpbmcuaGlkZSgpO1xuICAgIH1cbiAgfVxuXG4gIGNsb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuX21vZGFsLmRpc21pc3MoKTtcbiAgfVxufVxuXG4vKipcbiAqIFRoZSBwb3NzaWJsZSBzY29wZXMgb2YgdGhlIGNhbGVuZGFyLlxuICovXG5leHBvcnQgZW51bSBDYWxlbmRhclNjb3BlcyB7XG4gIFNIQVJFRCA9ICdzaGFyZWQnLCAvLyB0ZWFtSWRcbiAgUFJJVkFURSA9ICdwcml2YXRlJyAvLyB1c2VySWRcbn1cbiIsIjxpb24taGVhZGVyPlxuICA8aW9uLXRvb2xiYXIgY29sb3I9XCJpZGVhVG9vbGJhclwiPlxuICAgIDxpb24tYnV0dG9ucyBzbG90PVwic3RhcnRcIj5cbiAgICAgIEBpZiAoIWNhbkNoYW5nZVNjb3BlKCkpIHtcbiAgICAgICAgPGlvbi1idXR0b24gW3RpdGxlXT1cIidDT01NT04uQ0xPU0UnIHwgdHJhbnNsYXRlXCIgKGNsaWNrKT1cImNsb3NlKClcIj5cbiAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImNsb3NlXCIgc2xvdD1cImljb24tb25seVwiIC8+XG4gICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgIH1cbiAgICAgIEBpZiAoY2FuQ2hhbmdlU2NvcGUoKSkge1xuICAgICAgICA8aW9uLWJ1dHRvbiAoY2xpY2spPVwicmVzZXRTY29wZSgpXCI+XG4gICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJhcnJvdy1iYWNrXCIgc2xvdD1cImljb24tb25seVwiIC8+XG4gICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgIH1cbiAgICA8L2lvbi1idXR0b25zPlxuICAgIDxpb24tdGl0bGU+XG4gICAgICBAaWYgKCFzY29wZUlzU2V0KCkpIHtcbiAgICAgICAgPHNwYW4+e3sgJ0lERUFfQUdFTkRBLkNBTEVOREFSUy5BRERfQV9DQUxFTkRBUicgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICB9XG4gICAgICBAaWYgKGNhbGVuZGFyLnVzZXJJZCkge1xuICAgICAgICA8c3Bhbj57eyAnSURFQV9BR0VOREEuQ0FMRU5EQVJTLlBFUlNPTkFMX0NBTEVOREFSJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgIH1cbiAgICAgIEBpZiAoY2FsZW5kYXIudGVhbUlkKSB7XG4gICAgICAgIDxzcGFuPlxuICAgICAgICAgIHt7ICdJREVBX0FHRU5EQS5DQUxFTkRBUlMuVEVBTV9DQUxFTkRBUicgfCB0cmFuc2xhdGU6IHsgdGVhbTogdGMuZ2V0KCd0ZWFtJykubmFtZSB9IH19XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIH1cbiAgICA8L2lvbi10aXRsZT5cbiAgPC9pb24tdG9vbGJhcj5cbjwvaW9uLWhlYWRlcj5cbjxpb24tY29udGVudD5cbiAgPCEtLSAxc3QgU1RFUCAtLT5cbiAgQGlmICghc2NvcGVJc1NldCgpKSB7XG4gICAgPGlvbi1ncmlkIGNsYXNzPVwiaW9uLXBhZGRpbmcgY2hvaWNlR3JpZFwiPlxuICAgICAgPGlvbi1yb3c+XG4gICAgICAgIDxpb24tY29sIGNsYXNzPVwiaW9uLXRleHQtY2VudGVyXCI+XG4gICAgICAgICAgPGgxPnt7ICdJREVBX0FHRU5EQS5DQUxFTkRBUlMuQ1JFQVRFX1BSSVZBVEVfT1JfVEVBTScgfCB0cmFuc2xhdGUgfX08L2gxPlxuICAgICAgICA8L2lvbi1jb2w+XG4gICAgICA8L2lvbi1yb3c+XG4gICAgICA8aW9uLXJvdyBjbGFzcz1cImlvbi1hbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgPGlvbi1jb2wgY2xhc3M9XCJpb24tdGV4dC1jZW50ZXJcIiBbc2l6ZV09XCIxMlwiIFtzaXplU21dPVwiNlwiPlxuICAgICAgICAgIDxpb24tY2FyZCBbYnV0dG9uXT1cInRydWVcIiAoY2xpY2spPVwiY2FsZW5kYXIudXNlcklkID0gbWVtYmVyc2hpcC51c2VySWRcIj5cbiAgICAgICAgICAgIDxpb24tY2FyZC1oZWFkZXI+XG4gICAgICAgICAgICAgIDxpb24tY2FyZC10aXRsZT5cbiAgICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cInBlcnNvblwiIC8+XG4gICAgICAgICAgICAgIDwvaW9uLWNhcmQtdGl0bGU+XG4gICAgICAgICAgICA8L2lvbi1jYXJkLWhlYWRlcj5cbiAgICAgICAgICAgIDxpb24tY2FyZC1jb250ZW50PlxuICAgICAgICAgICAgICA8aDE+e3sgJ0lERUFfQUdFTkRBLkNBTEVOREFSUy5QRVJTT05BTF9DQUxFTkRBUicgfCB0cmFuc2xhdGUgfX08L2gxPlxuICAgICAgICAgICAgICA8cD57eyAnSURFQV9BR0VOREEuQ0FMRU5EQVJTLlBFUlNPTkFMX0NBTEVOREFSX0hJTlQnIHwgdHJhbnNsYXRlIH19PC9wPlxuICAgICAgICAgICAgPC9pb24tY2FyZC1jb250ZW50PlxuICAgICAgICAgIDwvaW9uLWNhcmQ+XG4gICAgICAgIDwvaW9uLWNvbD5cbiAgICAgICAgPGlvbi1jb2wgY2xhc3M9XCJpb24tdGV4dC1jZW50ZXJcIiBbc2l6ZV09XCIxMlwiIFtzaXplU21dPVwiNlwiPlxuICAgICAgICAgIDxpb24tY2FyZCBbYnV0dG9uXT1cInRydWVcIiAoY2xpY2spPVwiY2FsZW5kYXIudGVhbUlkID0gbWVtYmVyc2hpcC50ZWFtSWRcIj5cbiAgICAgICAgICAgIDxpb24tY2FyZC1oZWFkZXI+XG4gICAgICAgICAgICAgIDxpb24tY2FyZC10aXRsZT5cbiAgICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cInBlb3BsZVwiIC8+XG4gICAgICAgICAgICAgIDwvaW9uLWNhcmQtdGl0bGU+XG4gICAgICAgICAgICA8L2lvbi1jYXJkLWhlYWRlcj5cbiAgICAgICAgICAgIDxpb24tY2FyZC1jb250ZW50PlxuICAgICAgICAgICAgICA8aDE+e3sgJ0lERUFfQUdFTkRBLkNBTEVOREFSUy5URUFNX0NBTEVOREFSJyB8IHRyYW5zbGF0ZSB9fTwvaDE+XG4gICAgICAgICAgICAgIDxwPnt7ICdJREVBX0FHRU5EQS5DQUxFTkRBUlMuVEVBTV9DQUxFTkRBUl9ISU5UJyB8IHRyYW5zbGF0ZSB9fTwvcD5cbiAgICAgICAgICAgIDwvaW9uLWNhcmQtY29udGVudD5cbiAgICAgICAgICA8L2lvbi1jYXJkPlxuICAgICAgICA8L2lvbi1jb2w+XG4gICAgICA8L2lvbi1yb3c+XG4gICAgPC9pb24tZ3JpZD5cbiAgfVxuICA8IS0tIDJuZCBTVEVQIC0tPlxuICBAaWYgKHNjb3BlSXNTZXQoKSkge1xuICAgIDxpb24tZ3JpZCBjbGFzcz1cImlvbi1wYWRkaW5nIGNob2ljZUdyaWRcIj5cbiAgICAgIDxpb24tcm93PlxuICAgICAgICA8aW9uLWNvbCBjbGFzcz1cImlvbi10ZXh0LWNlbnRlclwiPlxuICAgICAgICAgIDxoMT57eyAnSURFQV9BR0VOREEuQ0FMRU5EQVJTLldISUNIX0VYVEVSTkFMX1NFUlZJQ0VfVE9fTElOSycgfCB0cmFuc2xhdGUgfX08L2gxPlxuICAgICAgICAgIDxwPnt7ICdJREVBX0FHRU5EQS5DQUxFTkRBUlMuV0hJQ0hfRVhURVJOQUxfU0VSVklDRV9UT19MSU5LX0hJTlQnIHwgdHJhbnNsYXRlIH19PC9wPlxuICAgICAgICA8L2lvbi1jb2w+XG4gICAgICA8L2lvbi1yb3c+XG4gICAgICA8aW9uLXJvdyBjbGFzcz1cImlvbi1hbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgQGlmICghb25seUV4dGVybmFsQ2FsZW5kYXJzKSB7XG4gICAgICAgICAgPGlvbi1jb2wgY2xhc3M9XCJpb24tdGV4dC1jZW50ZXJcIiBbc2l6ZV09XCIxMlwiPlxuICAgICAgICAgICAgPGlvbi1jYXJkIGNsYXNzPVwic3RlcDJcIiBbYnV0dG9uXT1cInRydWVcIiAoY2xpY2spPVwic2F2ZU5ld0NhbGVuZGFyKClcIj5cbiAgICAgICAgICAgICAgPGlvbi1jYXJkLWhlYWRlcj5cbiAgICAgICAgICAgICAgICA8aW9uLWNhcmQtdGl0bGU+XG4gICAgICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cInJlbW92ZVwiIC8+XG4gICAgICAgICAgICAgICAgPC9pb24tY2FyZC10aXRsZT5cbiAgICAgICAgICAgICAgPC9pb24tY2FyZC1oZWFkZXI+XG4gICAgICAgICAgICAgIDxpb24tY2FyZC1jb250ZW50PlxuICAgICAgICAgICAgICAgIDxoMT57eyAnSURFQV9BR0VOREEuQ0FMRU5EQVJTLkRPTlRfTElOSycgfCB0cmFuc2xhdGUgfX08L2gxPlxuICAgICAgICAgICAgICAgIDxwPnt7ICdJREVBX0FHRU5EQS5DQUxFTkRBUlMuRE9OVF9MSU5LX0hJTlQnIHwgdHJhbnNsYXRlIH19PC9wPlxuICAgICAgICAgICAgICA8L2lvbi1jYXJkLWNvbnRlbnQ+XG4gICAgICAgICAgICA8L2lvbi1jYXJkPlxuICAgICAgICAgIDwvaW9uLWNvbD5cbiAgICAgICAgfVxuICAgICAgICBAZm9yIChzIG9mIFNPVVJDRVM7IHRyYWNrIHMpIHtcbiAgICAgICAgICA8aW9uLWNvbCBjbGFzcz1cImlvbi10ZXh0LWNlbnRlclwiIFtzaXplXT1cIjEyXCI+XG4gICAgICAgICAgICA8aW9uLWNhcmQgY2xhc3M9XCJzdGVwMlwiIFtidXR0b25dPVwidHJ1ZVwiIChjbGljayk9XCJzYXZlTmV3Q2FsZW5kYXIocylcIj5cbiAgICAgICAgICAgICAgPGlvbi1jYXJkLWhlYWRlcj5cbiAgICAgICAgICAgICAgICA8aW9uLWNhcmQtdGl0bGU+XG4gICAgICAgICAgICAgICAgICA8aW9uLWljb24gW25hbWVdPVwiY2FsZW5kYXJzLmdldFNlcnZpY2VJY29uKHMpXCIgLz5cbiAgICAgICAgICAgICAgICA8L2lvbi1jYXJkLXRpdGxlPlxuICAgICAgICAgICAgICA8L2lvbi1jYXJkLWhlYWRlcj5cbiAgICAgICAgICAgICAgPGlvbi1jYXJkLWNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgPGgxPlxuICAgICAgICAgICAgICAgICAge3sgJ0lERUFfQUdFTkRBLkNBTEVOREFSUy5MSU5LX1RPJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAge3sgJ0lERUFfQUdFTkRBLkNBTEVOREFSUy5TRVJWSUNFUy4nICsgcyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgIDwvaDE+XG4gICAgICAgICAgICAgICAgPHA+e3sgJ0lERUFfQUdFTkRBLkNBTEVOREFSUy5MSU5LX1RPX0hJTlQnIHwgdHJhbnNsYXRlIH19PC9wPlxuICAgICAgICAgICAgICA8L2lvbi1jYXJkLWNvbnRlbnQ+XG4gICAgICAgICAgICA8L2lvbi1jYXJkPlxuICAgICAgICAgIDwvaW9uLWNvbD5cbiAgICAgICAgfVxuICAgICAgPC9pb24tcm93PlxuICAgIDwvaW9uLWdyaWQ+XG4gIH1cbjwvaW9uLWNvbnRlbnQ+XG4iXX0=
|