@adlfe/campaign-management-library 2.11.3 → 2.11.4
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/adlfe-campaign-management-library.d.ts +6 -4
- package/adlfe-campaign-management-library.metadata.json +1 -1
- package/bundles/adlfe-campaign-management-library.umd.js +285 -86
- package/bundles/adlfe-campaign-management-library.umd.js.map +1 -1
- package/bundles/adlfe-campaign-management-library.umd.min.js +1 -1
- package/bundles/adlfe-campaign-management-library.umd.min.js.map +1 -1
- package/esm2015/adlfe-campaign-management-library.js +7 -5
- package/esm2015/lib/campaign-management/campaign-management.module.js +4 -2
- package/esm2015/lib/campaign-management/components/input-numeric/input-numeric.component.js +113 -0
- package/esm2015/lib/campaign-management/components/input-numeric/input-numeric.module.js +18 -0
- package/esm2015/lib/campaign-management/models/general-information-wa-req.model.js +2 -1
- package/esm2015/lib/campaign-management/modules/campaign-index/dialog/pending-approval-dialog-view/pending-approval-dialog-view.component.js +40 -38
- package/esm2015/lib/campaign-management/modules/new-campaign/components/general-information-wa/general-information-wa.component.js +17 -7
- package/esm2015/lib/campaign-management/modules/new-campaign/new-campaign.component.js +41 -39
- package/esm2015/lib/campaign-management/validators/index.js +12 -0
- package/esm2015/lib/campaign-management/validators/max.validator.js +14 -0
- package/esm2015/lib/campaign-management/validators/min.validator.js +14 -0
- package/esm2015/lib/campaign-management/validators/required.validator.js +10 -0
- package/esm2015/lib/core/const/validation-message.const.js +5 -2
- package/esm5/adlfe-campaign-management-library.js +7 -5
- package/esm5/lib/campaign-management/campaign-management.module.js +4 -2
- package/esm5/lib/campaign-management/components/input-numeric/input-numeric.component.js +127 -0
- package/esm5/lib/campaign-management/components/input-numeric/input-numeric.module.js +21 -0
- package/esm5/lib/campaign-management/models/general-information-wa-req.model.js +2 -1
- package/esm5/lib/campaign-management/modules/campaign-index/dialog/pending-approval-dialog-view/pending-approval-dialog-view.component.js +40 -38
- package/esm5/lib/campaign-management/modules/new-campaign/components/general-information-wa/general-information-wa.component.js +17 -7
- package/esm5/lib/campaign-management/modules/new-campaign/new-campaign.component.js +41 -39
- package/esm5/lib/campaign-management/validators/index.js +12 -0
- package/esm5/lib/campaign-management/validators/max.validator.js +14 -0
- package/esm5/lib/campaign-management/validators/min.validator.js +14 -0
- package/esm5/lib/campaign-management/validators/required.validator.js +10 -0
- package/esm5/lib/core/const/validation-message.const.js +5 -2
- package/fesm2015/adlfe-campaign-management-library.js +345 -165
- package/fesm2015/adlfe-campaign-management-library.js.map +1 -1
- package/fesm5/adlfe-campaign-management-library.js +362 -165
- package/fesm5/adlfe-campaign-management-library.js.map +1 -1
- package/lib/campaign-management/components/input-numeric/input-numeric.component.d.ts +30 -0
- package/lib/campaign-management/components/input-numeric/input-numeric.module.d.ts +2 -0
- package/lib/campaign-management/models/general-information-wa-req.model.d.ts +1 -0
- package/lib/campaign-management/validators/index.d.ts +8 -0
- package/lib/campaign-management/validators/max.validator.d.ts +2 -0
- package/lib/campaign-management/validators/min.validator.d.ts +2 -0
- package/lib/campaign-management/validators/required.validator.d.ts +2 -0
- package/package.json +1 -1
- package/types.d.ts +0 -1
|
@@ -98,7 +98,7 @@ var NewCampaignComponent = /** @class */ (function () {
|
|
|
98
98
|
var subs = this.apiAdapterService
|
|
99
99
|
.executeApiRequest([], "/campaign/" + this.campaignID, 'GET')
|
|
100
100
|
.subscribe(function (resp) {
|
|
101
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63, _64;
|
|
101
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63, _64, _65, _66, _67, _68;
|
|
102
102
|
if (!resp)
|
|
103
103
|
return;
|
|
104
104
|
var generalInformation = {
|
|
@@ -110,62 +110,64 @@ var NewCampaignComponent = /** @class */ (function () {
|
|
|
110
110
|
: (_f = (_e = resp.data) === null || _e === void 0 ? void 0 : _e.type) === null || _f === void 0 ? void 0 : _f.toUpperCase(),
|
|
111
111
|
media: (_h = (_g = resp.data) === null || _g === void 0 ? void 0 : _g.type) === null || _h === void 0 ? void 0 : _h.toUpperCase(),
|
|
112
112
|
isPrevTemplate: (_k = (_j = resp) === null || _j === void 0 ? void 0 : _j.data) === null || _k === void 0 ? void 0 : _k.isPrevTemplate,
|
|
113
|
+
templateName: (_m = (_l = resp) === null || _l === void 0 ? void 0 : _l.data) === null || _m === void 0 ? void 0 : _m.templateName,
|
|
114
|
+
ttl: (_p = (_o = resp) === null || _o === void 0 ? void 0 : _o.data) === null || _p === void 0 ? void 0 : _p.ttlSeconds,
|
|
113
115
|
from: {
|
|
114
|
-
id: (
|
|
115
|
-
name: (
|
|
116
|
-
platform: (
|
|
117
|
-
clientId: (
|
|
118
|
-
clientName: (
|
|
119
|
-
accountNo: (
|
|
120
|
-
wabaId: (
|
|
116
|
+
id: (_q = resp.data) === null || _q === void 0 ? void 0 : _q.accountId,
|
|
117
|
+
name: (_r = resp.data) === null || _r === void 0 ? void 0 : _r.accountName,
|
|
118
|
+
platform: (_s = resp.data) === null || _s === void 0 ? void 0 : _s.platform,
|
|
119
|
+
clientId: (_t = resp.data) === null || _t === void 0 ? void 0 : _t.clientId,
|
|
120
|
+
clientName: (_u = resp.data) === null || _u === void 0 ? void 0 : _u.clientName,
|
|
121
|
+
accountNo: (_v = resp.data) === null || _v === void 0 ? void 0 : _v.accountNo,
|
|
122
|
+
wabaId: (_x = (_w = resp.data) === null || _w === void 0 ? void 0 : _w.wabaId, (_x !== null && _x !== void 0 ? _x : '')),
|
|
121
123
|
},
|
|
122
|
-
text: (
|
|
123
|
-
targetURL: (
|
|
124
|
-
paramHeader: (
|
|
125
|
-
paramBody: (
|
|
126
|
-
paramButton: (
|
|
127
|
-
otpValue: (
|
|
124
|
+
text: (_z = (_y = resp.data) === null || _y === void 0 ? void 0 : _y.details) === null || _z === void 0 ? void 0 : _z.text,
|
|
125
|
+
targetURL: (_11 = (_7 = (_3 = (_2 = (_1 = (_0 = resp.data) === null || _0 === void 0 ? void 0 : _0.details) === null || _1 === void 0 ? void 0 : _1.image) === null || _2 === void 0 ? void 0 : _2.url, (_3 !== null && _3 !== void 0 ? _3 : (_6 = (_5 = (_4 = resp.data) === null || _4 === void 0 ? void 0 : _4.details) === null || _5 === void 0 ? void 0 : _5.document) === null || _6 === void 0 ? void 0 : _6.url)), (_7 !== null && _7 !== void 0 ? _7 : (_10 = (_9 = (_8 = resp.data) === null || _8 === void 0 ? void 0 : _8.details) === null || _9 === void 0 ? void 0 : _9.video) === null || _10 === void 0 ? void 0 : _10.url)), (_11 !== null && _11 !== void 0 ? _11 : (_14 = (_13 = (_12 = resp.data) === null || _12 === void 0 ? void 0 : _12.details) === null || _13 === void 0 ? void 0 : _13.template) === null || _14 === void 0 ? void 0 : _14.headerURL)),
|
|
126
|
+
paramHeader: (_17 = (_16 = (_15 = resp.data) === null || _15 === void 0 ? void 0 : _15.details) === null || _16 === void 0 ? void 0 : _16.template) === null || _17 === void 0 ? void 0 : _17.header,
|
|
127
|
+
paramBody: (_20 = (_19 = (_18 = resp.data) === null || _18 === void 0 ? void 0 : _18.details) === null || _19 === void 0 ? void 0 : _19.template) === null || _20 === void 0 ? void 0 : _20.data,
|
|
128
|
+
paramButton: (_23 = (_22 = (_21 = resp.data) === null || _21 === void 0 ? void 0 : _21.details) === null || _22 === void 0 ? void 0 : _22.template) === null || _23 === void 0 ? void 0 : _23.button,
|
|
129
|
+
otpValue: (_28 = __spread((_27 = (_26 = (_25 = (_24 = resp.data) === null || _24 === void 0 ? void 0 : _24.details) === null || _25 === void 0 ? void 0 : _25.template) === null || _26 === void 0 ? void 0 : _26.data, (_27 !== null && _27 !== void 0 ? _27 : [])))) === null || _28 === void 0 ? void 0 : _28.pop(),
|
|
128
130
|
template: {
|
|
129
|
-
ID: (
|
|
130
|
-
name: (
|
|
131
|
-
lang: (
|
|
132
|
-
platform: (
|
|
133
|
-
headerURL: (
|
|
131
|
+
ID: (_31 = (_30 = (_29 = resp.data) === null || _29 === void 0 ? void 0 : _29.details) === null || _30 === void 0 ? void 0 : _30.template) === null || _31 === void 0 ? void 0 : _31.id,
|
|
132
|
+
name: (_34 = (_33 = (_32 = resp.data) === null || _32 === void 0 ? void 0 : _32.details) === null || _33 === void 0 ? void 0 : _33.template) === null || _34 === void 0 ? void 0 : _34.name,
|
|
133
|
+
lang: (_37 = (_36 = (_35 = resp.data) === null || _35 === void 0 ? void 0 : _35.details) === null || _36 === void 0 ? void 0 : _36.template) === null || _37 === void 0 ? void 0 : _37.lang,
|
|
134
|
+
platform: (_38 = resp.data) === null || _38 === void 0 ? void 0 : _38.platform,
|
|
135
|
+
headerURL: (_41 = (_40 = (_39 = resp.data) === null || _39 === void 0 ? void 0 : _39.details) === null || _40 === void 0 ? void 0 : _40.template) === null || _41 === void 0 ? void 0 : _41.headerURL,
|
|
134
136
|
header: {
|
|
135
|
-
examples: (
|
|
137
|
+
examples: (_44 = (_43 = (_42 = resp.data) === null || _42 === void 0 ? void 0 : _42.details) === null || _43 === void 0 ? void 0 : _43.template) === null || _44 === void 0 ? void 0 : _44.header,
|
|
136
138
|
},
|
|
137
139
|
body: {
|
|
138
|
-
examples: (
|
|
140
|
+
examples: (_47 = (_46 = (_45 = resp.data) === null || _45 === void 0 ? void 0 : _45.details) === null || _46 === void 0 ? void 0 : _46.template) === null || _47 === void 0 ? void 0 : _47.data,
|
|
139
141
|
},
|
|
140
|
-
buttons: (
|
|
141
|
-
ClientId: (
|
|
142
|
-
ClientName: (
|
|
142
|
+
buttons: (_50 = (_49 = (_48 = resp.data) === null || _48 === void 0 ? void 0 : _48.details) === null || _49 === void 0 ? void 0 : _49.template) === null || _50 === void 0 ? void 0 : _50.button,
|
|
143
|
+
ClientId: (_51 = resp.data) === null || _51 === void 0 ? void 0 : _51.clientId,
|
|
144
|
+
ClientName: (_52 = resp.data) === null || _52 === void 0 ? void 0 : _52.clientName,
|
|
143
145
|
},
|
|
144
|
-
isUpload: ((
|
|
145
|
-
fileId: (
|
|
146
|
+
isUpload: ((_53 = resp.data) === null || _53 === void 0 ? void 0 : _53.fileId) !== '',
|
|
147
|
+
fileId: (_54 = resp.data) === null || _54 === void 0 ? void 0 : _54.fileId,
|
|
146
148
|
};
|
|
147
149
|
localStorage.setItem('telin.campaign', JSON.stringify(__assign(__assign({}, _this.getCampaignStorage), {
|
|
148
150
|
generalInformation: {
|
|
149
|
-
id: (
|
|
151
|
+
id: (_55 = resp.data) === null || _55 === void 0 ? void 0 : _55.id,
|
|
150
152
|
form: generalInformation,
|
|
151
153
|
},
|
|
152
|
-
failover: (
|
|
153
|
-
targetAudience: (
|
|
154
|
+
failover: (_56 = resp.data) === null || _56 === void 0 ? void 0 : _56.failover,
|
|
155
|
+
targetAudience: (_57 = resp.data) === null || _57 === void 0 ? void 0 : _57.targets,
|
|
154
156
|
targetAudienceFile: {
|
|
155
|
-
name: (
|
|
156
|
-
targetURL: (
|
|
157
|
+
name: (_58 = resp.data) === null || _58 === void 0 ? void 0 : _58.fileName,
|
|
158
|
+
targetURL: (_59 = resp.data) === null || _59 === void 0 ? void 0 : _59.targetURL,
|
|
157
159
|
},
|
|
158
160
|
scheduler: {
|
|
159
|
-
schedulerType: ((
|
|
161
|
+
schedulerType: ((_60 = resp.data) === null || _60 === void 0 ? void 0 : _60.scheduleType) === 'MULTI'
|
|
160
162
|
? 'ONE_TIME'
|
|
161
|
-
: (
|
|
162
|
-
startDate: (
|
|
163
|
-
startTime: (
|
|
164
|
-
isRepeat: ((
|
|
165
|
-
delivery: (
|
|
163
|
+
: (_61 = resp.data) === null || _61 === void 0 ? void 0 : _61.scheduleType,
|
|
164
|
+
startDate: (_63 = (_62 = resp.data) === null || _62 === void 0 ? void 0 : _62.startTime) === null || _63 === void 0 ? void 0 : _63.split(' ')[0],
|
|
165
|
+
startTime: (_65 = (_64 = resp.data) === null || _64 === void 0 ? void 0 : _64.startTime) === null || _65 === void 0 ? void 0 : _65.split(' ')[1],
|
|
166
|
+
isRepeat: ((_66 = resp.data) === null || _66 === void 0 ? void 0 : _66.scheduleType) === 'MULTI',
|
|
167
|
+
delivery: (_67 = resp.data) === null || _67 === void 0 ? void 0 : _67.repeat,
|
|
166
168
|
},
|
|
167
169
|
})));
|
|
168
|
-
_this.isLine = ((
|
|
170
|
+
_this.isLine = ((_68 = resp.data) === null || _68 === void 0 ? void 0 : _68.platform) === 'LINE';
|
|
169
171
|
_this.isLoading = false;
|
|
170
172
|
_this.initWizard();
|
|
171
173
|
}, function () {
|
|
@@ -459,4 +461,4 @@ var NewCampaignComponent = /** @class */ (function () {
|
|
|
459
461
|
return NewCampaignComponent;
|
|
460
462
|
}());
|
|
461
463
|
export { NewCampaignComponent };
|
|
462
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV3LWNhbXBhaWduLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BhZGxmZS9jYW1wYWlnbi1tYW5hZ2VtZW50LWxpYnJhcnkvIiwic291cmNlcyI6WyJsaWIvY2FtcGFpZ24tbWFuYWdlbWVudC9tb2R1bGVzL25ldy1jYW1wYWlnbi9uZXctY2FtcGFpZ24uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBcUIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5GLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzNELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUcvQyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNsRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUM5RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsNEJBQTRCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFPakc7SUF3QkksOEJBQ1ksTUFBaUIsRUFDakIsaUJBQTJDLEVBQzNDLE1BQXFCO1FBSGpDLGlCQUlJO1FBSFEsV0FBTSxHQUFOLE1BQU0sQ0FBVztRQUNqQixzQkFBaUIsR0FBakIsaUJBQWlCLENBQTBCO1FBQzNDLFdBQU0sR0FBTixNQUFNLENBQWU7UUExQnZCLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQVksQ0FBQztRQUc5QyxpQkFBWSxHQUFHLFFBQVEsQ0FBQztRQUN4QixtQkFBYyxHQUFXLENBQUMsQ0FBQztRQUUzQixjQUFTLEdBQVks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ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHsgVG9hc3RyU2VydmljZSB9IGZyb20gJ25neC10b2FzdHInO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgU2VnbWVudGVkTWVzc2FnZSB9IGZyb20gJ3Ntcy1zZWdtZW50cy1jYWxjdWxhdG9yJztcclxuaW1wb3J0IHsgTWFpbkFyZWEgfSBmcm9tICcuLi8uLi8uLi9jb3JlL2VudW1zJztcclxuaW1wb3J0IHsgUGFyYW1ldGVyIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9tb2RlbHMvdXRpbC9hcGktYWRhcHRlci1zZXJ2aWNlLW1vZGVscyc7XHJcbmltcG9ydCB7IEFwcFJlc3BvbnNlIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9tb2RlbHMvdXRpbC9hcGktZHRvL3Jlc3BvbnNlLW1vZGVscyc7XHJcbmltcG9ydCB7IEFwaUFkYXB0ZXJTZXJ2aWNlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2NvcmUvc2VydmljZXMnO1xyXG5pbXBvcnQgeyBDb25maXJtYXRpb25Db21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9nbG9iYWwvY29uZmlybWF0aW9uL2NvbmZpcm1hdGlvbic7XHJcbmltcG9ydCB7IENvbmZpcm1hdGlvbk1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vZ2xvYmFsL2NvbmZpcm1hdGlvbi9zaGFyZWQvbW9kZWwnO1xyXG5pbXBvcnQgeyBGYWlsb3ZlclJlcU1vZGVsLCBHZW5lcmFsSW5mb3JtYXRpb25XQVJlcU1vZGVsLCBTY2hlZHVsZXJSZXFNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnbGliLW5ldy1jYW1wYWlnbicsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vbmV3LWNhbXBhaWduLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL25ldy1jYW1wYWlnbi5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTmV3Q2FtcGFpZ25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgICBAT3V0cHV0KCkgY3VycmVudFZpZXcgPSBuZXcgRXZlbnRFbWl0dGVyPE1haW5BcmVhPigpO1xyXG5cclxuICAgIHB1YmxpYyBjYW1wYWlnbklEOiBzdHJpbmc7XHJcbiAgICBwdWJsaWMgY3VycmVudFZpZXdzID0gTWFpbkFyZWE7XHJcbiAgICBwdWJsaWMgcG9zaXRpb25XaXphcmQ6IG51bWJlciA9IDE7XHJcbiAgICBwdWJsaWMgZGF0YVdpemFyZDogc3RyaW5nW107XHJcbiAgICBwdWJsaWMgaXNMb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBwdWJsaWMgaXNTdWJtaXQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIHB1YmxpYyBpc0dlbmVyYWxJbmZvcm1hdGlvblZhbGlkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBwdWJsaWMgaXNGYWlsb3Zlck1lY2hhbmlzbVZhbGlkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBwdWJsaWMgaXNOdW1iZXJCYXNlSW5mb3JtYXRpb25WYWxpZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgcHVibGljIGlzU2NoZWR1bGVySW5mb3JtYXRpb25WYWxpZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgcHVibGljIGlzTGluZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgcHVibGljIGdlbmVyYWxJbmZvcm1hdGlvbkRhdGE6IGFueTtcclxuICAgIHB1YmxpYyBmYWlsb3Zlck1lY2hhbmlzbURhdGE6IGFueTtcclxuICAgIHB1YmxpYyB0YXJnZXRBdWRpZW5jZURhdGE6IHN0cmluZ1tdO1xyXG4gICAgcHVibGljIHRhcmdldEF1ZGllbmNlQ291bnQ6IG51bWJlcjtcclxuICAgIHB1YmxpYyB0YXJnZXRBdWRpZW5jZUZpbGU6IGFueTtcclxuICAgIHB1YmxpYyBzY2hlZHVsZXJEYXRhOiBhbnk7XHJcblxyXG4gICAgcHJpdmF0ZSBpc1VwbG9hZFRhcmdldEF1ZGllbmNlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBwcml2YXRlIHN1YnNjcmliZXJzOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByaXZhdGUgZGlhbG9nOiBNYXREaWFsb2csXHJcbiAgICAgICAgcHJpdmF0ZSBhcGlBZGFwdGVyU2VydmljZTogQXBpQWRhcHRlclNlcnZpY2VTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgdG9hc3RyOiBUb2FzdHJTZXJ2aWNlXHJcbiAgICApIHt9XHJcblxyXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5jYW1wYWlnbklEID0gd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lPy5zcGxpdCgnLycpPy5wb3AoKTtcclxuXHJcbiAgICAgICAgdGhpcy5pbml0V2l6YXJkKCk7XHJcbiAgICAgICAgdGhpcy5nZXRDYW1wYWlnbkRldGFpbFNlcnZpY2UoKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGluaXRXaXphcmQoKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmlzTGluZSkge1xyXG4gICAgICAgICAgICB0aGlzLmRhdGFXaXphcmQgPSBbXHJcbiAgICAgICAgICAgICAgICAnR2VuZXJhbCBJbmZvcm1hdGlvbicsXHJcbiAgICAgICAgICAgICAgICAnRmFpbG92ZXIgTWVjaGFuaXNtJyxcclxuICAgICAgICAgICAgICAgICdUYXJnZXQgQXVkaWVuY2UnLFxyXG4gICAgICAgICAgICAgICAgJ1NjaGVkdWxlcicsXHJcbiAgICAgICAgICAgICAgICAnU3VtbWFyeScsXHJcbiAgICAgICAgICAgIF07XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuZGF0YVdpemFyZCA9IFsnR2VuZXJhbCBJbmZvcm1hdGlvbicsICdUYXJnZXQgQXVkaWVuY2UnLCAnU2NoZWR1bGVyJywgJ1N1bW1hcnknXTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGdldENhbXBhaWduRGV0YWlsU2VydmljZSgpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5jYW1wYWlnbklEPy5sZW5ndGggPCAxMCkgcmV0dXJuO1xyXG5cclxuICAgICAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XHJcblxyXG4gICAgICAgIGNvbnN0IHN1YnMgPSB0aGlzLmFwaUFkYXB0ZXJTZXJ2aWNlXHJcbiAgICAgICAgICAgIC5leGVjdXRlQXBpUmVxdWVzdChbXSwgYC9jYW1wYWlnbi8ke3RoaXMuY2FtcGFpZ25JRH1gLCAnR0VUJylcclxuICAgICAgICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICAgICAgICAgIChyZXNwOiBBcHBSZXNwb25zZTxhbnk+KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFyZXNwKSByZXR1cm47XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGdlbmVyYWxJbmZvcm1hdGlvbiA9IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FtcGFpZ25OYW1lOiByZXNwLmRhdGE/Lm5hbWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lZGl1bTogcmVzcC5kYXRhPy5wbGF0Zm9ybSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2hhbm5lbDogWydpbWFnZScsICd2aWRlbycsICdkb2N1bWVudCddLmluY2x1ZGVzKHJlc3AuZGF0YT8udHlwZSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJ01FRElBJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiByZXNwLmRhdGE/LmlzRGlyZWN0U2VuZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICd1dGlsaXR5J1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHJlc3AuZGF0YT8udHlwZT8udG9VcHBlckNhc2UoKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWVkaWE6IHJlc3AuZGF0YT8udHlwZT8udG9VcHBlckNhc2UoKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXNQcmV2VGVtcGxhdGU6IHJlc3A/LmRhdGE/LmlzUHJldlRlbXBsYXRlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmcm9tOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogcmVzcC5kYXRhPy5hY2NvdW50SWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiByZXNwLmRhdGE/LmFjY291bnROYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhdGZvcm06IHJlc3AuZGF0YT8ucGxhdGZvcm0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRJZDogcmVzcC5kYXRhPy5jbGllbnRJZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudE5hbWU6IHJlc3AuZGF0YT8uY2xpZW50TmFtZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjY291bnRObzogcmVzcC5kYXRhPy5hY2NvdW50Tm8sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YWJhSWQ6IHJlc3AuZGF0YT8ud2FiYUlkID8/ICcnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiByZXNwLmRhdGE/LmRldGFpbHM/LnRleHQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldFVSTDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3AuZGF0YT8uZGV0YWlscz8uaW1hZ2U/LnVybCA/P1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcC5kYXRhPy5kZXRhaWxzPy5kb2N1bWVudD8udXJsID8/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwLmRhdGE/LmRldGFpbHM/LnZpZGVvPy51cmwgPz9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3AuZGF0YT8uZGV0YWlscz8udGVtcGxhdGU/LmhlYWRlclVSTCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1IZWFkZXI6IHJlc3AuZGF0YT8uZGV0YWlscz8udGVtcGxhdGU/LmhlYWRlcixcclxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1Cb2R5OiByZXNwLmRhdGE/LmRldGFpbHM/LnRlbXBsYXRlPy5kYXRhLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJhbUJ1dHRvbjogcmVzcC5kYXRhPy5kZXRhaWxzPy50ZW1wbGF0ZT8uYnV0dG9uLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvdHBWYWx1ZTogWy4uLihyZXNwLmRhdGE/LmRldGFpbHM/LnRlbXBsYXRlPy5kYXRhID8/IFtdKV0/LnBvcCgpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZToge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgSUQ6IHJlc3AuZGF0YT8uZGV0YWlscz8udGVtcGxhdGU/LmlkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogcmVzcC5kYXRhPy5kZXRhaWxzPy50ZW1wbGF0ZT8ubmFtZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbmc6IHJlc3AuZGF0YT8uZGV0YWlscz8udGVtcGxhdGU/LmxhbmcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGF0Zm9ybTogcmVzcC5kYXRhPy5wbGF0Zm9ybSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlclVSTDogcmVzcC5kYXRhPy5kZXRhaWxzPy50ZW1wbGF0ZT8uaGVhZGVyVVJMLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhhbXBsZXM6IHJlc3AuZGF0YT8uZGV0YWlscz8udGVtcGxhdGU/LmhlYWRlcixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib2R5OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhhbXBsZXM6IHJlc3AuZGF0YT8uZGV0YWlscz8udGVtcGxhdGU/LmRhdGEsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogcmVzcC5kYXRhPy5kZXRhaWxzPy50ZW1wbGF0ZT8uYnV0dG9uLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2xpZW50SWQ6IHJlc3AuZGF0YT8uY2xpZW50SWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbGllbnROYW1lOiByZXNwLmRhdGE/LmNsaWVudE5hbWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzVXBsb2FkOiByZXNwLmRhdGE/LmZpbGVJZCAhPT0gJycsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVJZDogcmVzcC5kYXRhPy5maWxlSWQsXHJcbiAgICAgICAgICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICd0ZWxpbi5jYW1wYWlnbicsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMuZ2V0Q2FtcGFpZ25TdG9yYWdlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ue1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYWxJbmZvcm1hdGlvbjoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogcmVzcC5kYXRhPy5pZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybTogZ2VuZXJhbEluZm9ybWF0aW9uLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFpbG92ZXI6IHJlc3AuZGF0YT8uZmFpbG92ZXIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0QXVkaWVuY2U6IHJlc3AuZGF0YT8udGFyZ2V0cyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRBdWRpZW5jZUZpbGU6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogcmVzcC5kYXRhPy5maWxlTmFtZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0VVJMOiByZXNwLmRhdGE/LnRhcmdldFVSTCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjaGVkdWxlcjoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2hlZHVsZXJUeXBlOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcC5kYXRhPy5zY2hlZHVsZVR5cGUgPT09ICdNVUxUSSdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICdPTkVfVElNRSdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHJlc3AuZGF0YT8uc2NoZWR1bGVUeXBlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydERhdGU6IHJlc3AuZGF0YT8uc3RhcnRUaW1lPy5zcGxpdCgnICcpWzBdLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydFRpbWU6IHJlc3AuZGF0YT8uc3RhcnRUaW1lPy5zcGxpdCgnICcpWzFdLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1JlcGVhdDogcmVzcC5kYXRhPy5zY2hlZHVsZVR5cGUgPT09ICdNVUxUSScsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGl2ZXJ5OiByZXNwLmRhdGE/LnJlcGVhdCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICApO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzTGluZSA9IHJlc3AuZGF0YT8ucGxhdGZvcm0gPT09ICdMSU5FJztcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmluaXRXaXphcmQoKTtcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgdGhpcy5zdWJzY3JpYmVycy5wdXNoKHN1YnMpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZW5lcmFsSW5mb3JtYXRpb24oZm9ybTogeyBwYXJlbnQ6IEZvcm1Hcm91cDsgY2hpbGQ6IEZvcm1Hcm91cCB9KTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5pc0dlbmVyYWxJbmZvcm1hdGlvblZhbGlkID0gZm9ybS5wYXJlbnQudmFsaWQgJiYgZm9ybS5jaGlsZCAmJiBmb3JtLmNoaWxkPy52YWxpZDtcclxuICAgICAgICB0aGlzLmlzTGluZSA9IGZvcm0ucGFyZW50Py5nZXRSYXdWYWx1ZSgpPy5tZWRpdW0gPT09ICdMSU5FJztcclxuXHJcbiAgICAgICAgdGhpcy5pbml0V2l6YXJkKCk7XHJcblxyXG4gICAgICAgIGlmIChmb3JtLnBhcmVudCAmJiBmb3JtLmNoaWxkKVxyXG4gICAgICAgICAgICB0aGlzLmdlbmVyYWxJbmZvcm1hdGlvbkRhdGEgPSB7XHJcbiAgICAgICAgICAgICAgICAuLi5mb3JtLnBhcmVudC5nZXRSYXdWYWx1ZSgpLFxyXG4gICAgICAgICAgICAgICAgLi4uZm9ybS5jaGlsZC5nZXRSYXdWYWx1ZSgpLFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBmYWlsb3Zlck1lY2hhbmlzbShmb3JtOiBGb3JtR3JvdXApOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmlzRmFpbG92ZXJNZWNoYW5pc21WYWxpZCA9IGZvcm0udmFsaWQ7XHJcbiAgICAgICAgdGhpcy5mYWlsb3Zlck1lY2hhbmlzbURhdGEgPSBmb3JtLmdldFJhd1ZhbHVlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHRhcmdldEF1ZGllbmNlKHRhcmdldDoge1xyXG4gICAgICAgIHRhcmdldEF1ZGllbmNlOiBzdHJpbmdbXTtcclxuICAgICAgICBudW1iZXJDb3VudDogbnVtYmVyO1xyXG4gICAgICAgIGlzVXBsb2FkOiBib29sZWFuO1xyXG4gICAgICAgIGZpbGU6IGFueTtcclxuICAgIH0pOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnRhcmdldEF1ZGllbmNlRmlsZSA9IHRhcmdldC5maWxlO1xyXG4gICAgICAgIHRoaXMudGFyZ2V0QXVkaWVuY2VEYXRhID0gdGFyZ2V0LnRhcmdldEF1ZGllbmNlO1xyXG4gICAgICAgIHRoaXMudGFyZ2V0QXVkaWVuY2VDb3VudCA9IHRhcmdldC5udW1iZXJDb3VudDtcclxuICAgICAgICB0aGlzLmlzVXBsb2FkVGFyZ2V0QXVkaWVuY2UgPSB0YXJnZXQuaXNVcGxvYWQ7XHJcbiAgICAgICAgdGhpcy5pc051bWJlckJhc2VJbmZvcm1hdGlvblZhbGlkID1cclxuICAgICAgICAgICAgKHRhcmdldC5pc1VwbG9hZCAmJiB0YXJnZXQuZmlsZT8ubmFtZSkgfHxcclxuICAgICAgICAgICAgKCF0YXJnZXQuaXNVcGxvYWQgJiYgdGFyZ2V0LnRhcmdldEF1ZGllbmNlLmxlbmd0aCA+IDApIHx8XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0Q2FtcGFpZ25TdG9yYWdlPy5nZW5lcmFsSW5mb3JtYXRpb24/LmZvcm0/LmZpbGVJZDtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc2NoZWR1bGVyKGZvcm06IEZvcm1Hcm91cCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuc2NoZWR1bGVyRGF0YSA9IGZvcm0uZ2V0UmF3VmFsdWUoKTtcclxuICAgICAgICB0aGlzLmlzU2NoZWR1bGVySW5mb3JtYXRpb25WYWxpZCA9IGZvcm0udmFsaWQ7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG9uQ2xpY2tTYXZlQW5kTmV4dEJ1dHRvbigpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmlzU3VibWl0ID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgc3dpdGNoICh0aGlzLnBvc2l0aW9uV2l6YXJkKSB7XHJcbiAgICAgICAgICAgIGNhc2UgMTpcclxuICAgICAgICAgICAgICAgIHRoaXMuc2F2ZUdlbmVyYWxJbmZvcm1hdGlvblNlcnZpY2UoKTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIDI6XHJcbiAgICAgICAgICAgICAgICAhdGhpcy5pc0xpbmUgPyB0aGlzLnNhdmVGYWlsb3Zlck1lY2hhbmlzbVNlcnZpY2UoKSA6IHRoaXMuc2F2ZU51bWJlckJhc2VzU2VydmljZSgpO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgMzpcclxuICAgICAgICAgICAgICAgICF0aGlzLmlzTGluZSA/IHRoaXMuc2F2ZU51bWJlckJhc2VzU2VydmljZSgpIDogdGhpcy5zYXZlU2NoZWR1bGVyU2VydmljZSgpO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgNDpcclxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5pc0xpbmUpIHRoaXMuc2F2ZVNjaGVkdWxlclNlcnZpY2UoKTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgdGhpcy5pc1N1Ym1pdCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGdldCBnZXRDYW1wYWlnblN0b3JhZ2UoKTogYW55IHtcclxuICAgICAgICByZXR1cm4gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3RlbGluLmNhbXBhaWduJylcclxuICAgICAgICAgICAgPyBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCd0ZWxpbi5jYW1wYWlnbicpKVxyXG4gICAgICAgICAgICA6IHt9O1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBnZXRCb2R5KCk6IHN0cmluZyB7XHJcbiAgICAgICAgY29uc3QgYm9keSA9XHJcbiAgICAgICAgICAgIHRoaXMuZ2VuZXJhbEluZm9ybWF0aW9uRGF0YT8udGV4dCB8fFxyXG4gICAgICAgICAgICB0aGlzLmdlbmVyYWxJbmZvcm1hdGlvbkRhdGE/LnRlbXBsYXRlPy5ib2R5Py50ZXh0IHx8XHJcbiAgICAgICAgICAgIHRoaXMuZ2VuZXJhbEluZm9ybWF0aW9uRGF0YT8uYm9keT8udGV4dDtcclxuXHJcbiAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgYm9keVxyXG4gICAgICAgICAgICAgICAgPy5zcGxpdCgvXFxcXG58XFxuLylcclxuICAgICAgICAgICAgICAgIC5qb2luKCc8YnIgLz4nKVxyXG4gICAgICAgICAgICAgICAgLnNwbGl0KC9cXFxcdHxcXHQvKVxyXG4gICAgICAgICAgICAgICAgLmpvaW4oJyAgICAnKSA/PyAnJ1xyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG9uQ2hlY2tUd2lsaW9Db3VudGVyVmFsaWQgPSAoKTogYm9vbGVhbiA9PiB7XHJcbiAgICAgICAgY29uc3QgdmFsdWVzR2VuZXJhbCA9IHRoaXMuZ2VuZXJhbEluZm9ybWF0aW9uRGF0YTtcclxuXHJcbiAgICAgICAgaWYgKHZhbHVlc0dlbmVyYWw/Lm1lZGl1bSAhPT0gJ1NNUycpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodmFsdWVzR2VuZXJhbD8uY2hhbm5lbCA9PT0gJ1RFWFQnKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHNlZ21lbnRlZE1lc3NhZ2UgPSBuZXcgU2VnbWVudGVkTWVzc2FnZSh0aGlzLmdldEJvZHkpO1xyXG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSB7XHJcbiAgICAgICAgICAgICAgICBzZWdtZW50czogc2VnbWVudGVkTWVzc2FnZS5zZWdtZW50c0NvdW50LFxyXG4gICAgICAgICAgICAgICAgZW5jb2Rpbmc6IHNlZ21lbnRlZE1lc3NhZ2UuZW5jb2RpbmdOYW1lLFxyXG4gICAgICAgICAgICAgICAgY2hhcmFjdGVyczogc2VnbWVudGVkTWVzc2FnZS5udW1iZXJPZlVuaWNvZGVTY2FsYXJzLFxyXG4gICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgaWYgKHJlc3VsdC5zZWdtZW50cyA+IDEwKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGxldCB2YWx1ZVJlc3VsdCA9IHRoaXMuZ2V0Qm9keTtcclxuICAgICAgICAgICAgQXJyYXkuZnJvbSh2YWx1ZXNHZW5lcmFsLnRlbXBsYXRlPy5ib2R5Py5leGFtcGxlcyB8fCBbXSkubWFwKChlbnRyeSwgaW5kZXgpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICh2YWx1ZXNHZW5lcmFsLnBhcmFtQm9keS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcGxhY2Vob2xkZXIgPSBge3ske2VudHJ5fX19YDtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHZhbHVlc0dlbmVyYWwucGFyYW1Cb2R5W2luZGV4XS5uYW1lO1xyXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlUmVzdWx0ID0gdmFsdWVSZXN1bHQuc3BsaXQocGxhY2Vob2xkZXIpLmpvaW4odmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IHNlZ21lbnRlZE1lc3NhZ2UgPSBuZXcgU2VnbWVudGVkTWVzc2FnZSh2YWx1ZVJlc3VsdCk7XHJcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHtcclxuICAgICAgICAgICAgICAgIHNlZ21lbnRzOiBzZWdtZW50ZWRNZXNzYWdlLnNlZ21lbnRzQ291bnQsXHJcbiAgICAgICAgICAgICAgICBlbmNvZGluZzogc2VnbWVudGVkTWVzc2FnZS5lbmNvZGluZ05hbWUsXHJcbiAgICAgICAgICAgICAgICBjaGFyYWN0ZXJzOiBzZWdtZW50ZWRNZXNzYWdlLm51bWJlck9mVW5pY29kZVNjYWxhcnMsXHJcbiAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICBpZiAocmVzdWx0LnNlZ21lbnRzID4gMTApIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICBwcml2YXRlIHNhdmVHZW5lcmFsSW5mb3JtYXRpb25TZXJ2aWNlKCk6IHZvaWQge1xyXG4gICAgICAgIGlmICghdGhpcy5vbkNoZWNrVHdpbGlvQ291bnRlclZhbGlkKCkpIHtcclxuICAgICAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IoJ1NlZ21lbnQgY2Fubm90IG1vcmUgdGhhbiAxMCcpO1xyXG4gICAgICAgICAgICB0aGlzLmlzU3VibWl0ID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IGJvZHlSZXEgPSBuZXcgR2VuZXJhbEluZm9ybWF0aW9uV0FSZXFNb2RlbCgpLmNsb25lKHtcclxuICAgICAgICAgICAgLi4udGhpcy5nZW5lcmFsSW5mb3JtYXRpb25EYXRhLFxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBjb25zdCBwYXlsb2FkVmFsdWUgPSBib2R5UmVxLmNvbnZlcnQoKTtcclxuXHJcbiAgICAgICAgaWYgKHBheWxvYWRWYWx1ZS50ZW1wbGF0ZSAmJiB0aGlzLmdlbmVyYWxJbmZvcm1hdGlvbkRhdGEudGVtcGxhdGUpIHtcclxuICAgICAgICAgICAgcGF5bG9hZFZhbHVlLnRlbXBsYXRlLnR5cGUgPVxyXG4gICAgICAgICAgICAgICAgcGF5bG9hZFZhbHVlLnRlbXBsYXRlLnR5cGUgfHwgdGhpcy5nZW5lcmFsSW5mb3JtYXRpb25EYXRhLnRlbXBsYXRlLmNhdGVnb3J5O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgcGFyYW1ldGVyTGlzdDogQXJyYXk8UGFyYW1ldGVyPiA9IFtcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgbmFtZTogJ2RhdGEnLFxyXG4gICAgICAgICAgICAgICAgdmFsdWU6IHBheWxvYWRWYWx1ZSxcclxuICAgICAgICAgICAgICAgIGluOiAnYm9keScsXHJcbiAgICAgICAgICAgICAgICB0eXBlOiAnb2JqZWN0JyxcclxuICAgICAgICAgICAgICAgIHdpdGhvdXRLZXlEYXRhOiB0cnVlLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgIF07XHJcbiAgICAgICAgY29uc3Qgc3VicyA9IHRoaXMuYXBpQWRhcHRlclNlcnZpY2VcclxuICAgICAgICAgICAgLmV4ZWN1dGVBcGlSZXF1ZXN0KFxyXG4gICAgICAgICAgICAgICAgcGFyYW1ldGVyTGlzdCxcclxuICAgICAgICAgICAgICAgIHRoaXMuZ2VuZXJhbEluZm9ybWF0aW9uRGF0YS5pZFxyXG4gICAgICAgICAgICAgICAgICAgID8gYC9jYW1wYWlnbi8ke3RoaXMuZ2VuZXJhbEluZm9ybWF0aW9uRGF0YS5pZH1gXHJcbiAgICAgICAgICAgICAgICAgICAgOiAnL2NhbXBhaWduJyxcclxuICAgICAgICAgICAgICAgIHRoaXMuZ2VuZXJhbEluZm9ybWF0aW9uRGF0YS5pZCA/ICdQVVQnIDogJ1BPU1QnXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICAgICAgICAgIChyZXNwKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3A/Lm1lc3NhZ2U/LnRvTG93ZXJDYXNlKCkgIT09ICdzdWNjZXNzJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmlzU3VibWl0ID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAndGVsaW4uY2FtcGFpZ24nLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBKU09OLnN0cmluZ2lmeSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLmdldENhbXBhaWduU3RvcmFnZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmFsSW5mb3JtYXRpb246IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHJlc3AuZGF0YS5pZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybTogdGhpcy5nZW5lcmFsSW5mb3JtYXRpb25EYXRhLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNTdWJtaXQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnBvc2l0aW9uV2l6YXJkICs9IDE7XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgKCkgPT4gKHRoaXMuaXNTdWJtaXQgPSBmYWxzZSlcclxuICAgICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgdGhpcy5zdWJzY3JpYmVycy5wdXNoKHN1YnMpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgc2F2ZUZhaWxvdmVyTWVjaGFuaXNtU2VydmljZSgpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBib2R5UmVxID0gbmV3IEZhaWxvdmVyUmVxTW9kZWwoKS5jbG9uZSh7XHJcbiAgICAgICAgICAgIC4uLnRoaXMuZmFpbG92ZXJNZWNoYW5pc21EYXRhLFxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBjb25zdCBwYXJhbWV0ZXJMaXN0OiBBcnJheTxQYXJhbWV0ZXI+ID0gW1xyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBuYW1lOiAnZGF0YScsXHJcbiAgICAgICAgICAgICAgICB2YWx1ZTogYm9keVJlcS5jb252ZXJ0KCksXHJcbiAgICAgICAgICAgICAgICBpbjogJ2JvZHknLFxyXG4gICAgICAgICAgICAgICAgdHlwZTogJ29iamVjdCcsXHJcbiAgICAgICAgICAgICAgICB3aXRob3V0S2V5RGF0YTogdHJ1ZSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICBdO1xyXG5cclxuICAgICAgICBjb25zdCBzdWJzID0gdGhpcy5hcGlBZGFwdGVyU2VydmljZVxyXG4gICAgICAgICAgICAuZXhlY3V0ZUFwaVJlcXVlc3QoXHJcbiAgICAgICAgICAgICAgICBwYXJhbWV0ZXJMaXN0LFxyXG4gICAgICAgICAgICAgICAgYC9jYW1wYWlnbi8ke3RoaXMuZ2V0Q2FtcGFpZ25TdG9yYWdlPy5nZW5lcmFsSW5mb3JtYXRpb24/LmlkfS9mYWlsb3ZlcmAsXHJcbiAgICAgICAgICAgICAgICAnUE9TVCdcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgICAgICAgKHJlc3ApID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcD8ubWVzc2FnZT8udG9Mb3dlckNhc2UoKSAhPT0gJ3N1Y2Nlc3MnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaXNTdWJtaXQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICd0ZWxpbi5jYW1wYWlnbicsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMuZ2V0Q2FtcGFpZ25TdG9yYWdlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ue1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhaWxvdmVyOiB0aGlzLmZhaWxvdmVyTWVjaGFuaXNtRGF0YSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc1N1Ym1pdCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucG9zaXRpb25XaXphcmQgKz0gMTtcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAoKSA9PiAodGhpcy5pc1N1Ym1pdCA9IGZhbHNlKVxyXG4gICAgICAgICAgICApO1xyXG5cclxuICAgICAgICB0aGlzLnN1YnNjcmliZXJzLnB1c2goc3Vicyk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBzYXZlTnVtYmVyQmFzZXNTZXJ2aWNlKCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLnRhcmdldEF1ZGllbmNlRGF0YS5sZW5ndGggPT09IDAgfHwgdGhpcy5pc1VwbG9hZFRhcmdldEF1ZGllbmNlKSB7XHJcbiAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFxyXG4gICAgICAgICAgICAgICAgJ3RlbGluLmNhbXBhaWduJyxcclxuICAgICAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KHtcclxuICAgICAgICAgICAgICAgICAgICAuLi50aGlzLmdldENhbXBhaWduU3RvcmFnZSxcclxuICAgICAgICAgICAgICAgICAgICAuLi57XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldEF1ZGllbmNlOiB0aGlzLnRhcmdldEF1ZGllbmNlRGF0YSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0QXVkaWVuY2VDb3VudDogdGhpcy50YXJnZXRBdWRpZW5jZUNvdW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRBdWRpZW5jZUZpbGU6IHRoaXMudGFyZ2V0QXVkaWVuY2VGaWxlLFxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICApO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5pc1N1Ym1pdCA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLnBvc2l0aW9uV2l6YXJkICs9IDE7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IHBhcmFtZXRlckxpc3Q6IEFycmF5PFBhcmFtZXRlcj4gPSBbXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIG5hbWU6ICdkYXRhJyxcclxuICAgICAgICAgICAgICAgIHZhbHVlOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0czogdGhpcy50YXJnZXRBdWRpZW5jZURhdGEsXHJcbiAgICAgICAgICAgICAgICAgICAgbnVtYmVyQ291bnQ6IHRoaXMudGFyZ2V0QXVkaWVuY2VDb3VudCxcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBpbjogJ2JvZHknLFxyXG4gICAgICAgICAgICAgICAgdHlwZTogJ29iamVjdCcsXHJcbiAgICAgICAgICAgICAgICB3aXRob3V0S2V5RGF0YTogdHJ1ZSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICBdO1xyXG5cclxuICAgICAgICBjb25zdCBzdWJzID0gdGhpcy5hcGlBZGFwdGVyU2VydmljZVxyXG4gICAgICAgICAgICAuZXhlY3V0ZUFwaVJlcXVlc3QoXHJcbiAgICAgICAgICAgICAgICBwYXJhbWV0ZXJMaXN0LFxyXG4gICAgICAgICAgICAgICAgYC9jYW1wYWlnbi8ke3RoaXMuZ2V0Q2FtcGFpZ25TdG9yYWdlPy5nZW5lcmFsSW5mb3JtYXRpb24/LmlkfS90YXJnZXRjYXRlZ29yeWAsXHJcbiAgICAgICAgICAgICAgICAnUE9TVCdcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgICAgICAgKHJlc3ApID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcD8ubWVzc2FnZT8udG9Mb3dlckNhc2UoKSAhPT0gJ3N1Y2Nlc3MnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaXNTdWJtaXQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICd0ZWxpbi5jYW1wYWlnbicsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMuZ2V0Q2FtcGFpZ25TdG9yYWdlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ue1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldEF1ZGllbmNlOiB0aGlzLnRhcmdldEF1ZGllbmNlRGF0YSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRBdWRpZW5jZUNvdW50OiB0aGlzLnRhcmdldEF1ZGllbmNlQ291bnQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0QXVkaWVuY2VGaWxlOiB0aGlzLnRhcmdldEF1ZGllbmNlRmlsZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc1N1Ym1pdCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucG9zaXRpb25XaXphcmQgKz0gMTtcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAoKSA9PiAodGhpcy5pc1N1Ym1pdCA9IGZhbHNlKVxyXG4gICAgICAgICAgICApO1xyXG5cclxuICAgICAgICB0aGlzLnN1YnNjcmliZXJzLnB1c2goc3Vicyk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBzYXZlU2NoZWR1bGVyU2VydmljZSgpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBib2R5UmVxID0gbmV3IFNjaGVkdWxlclJlcU1vZGVsKCkuY2xvbmUoe1xyXG4gICAgICAgICAgICAuLi50aGlzLnNjaGVkdWxlckRhdGEsXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGNvbnN0IHBhcmFtZXRlckxpc3Q6IEFycmF5PFBhcmFtZXRlcj4gPSBbXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIG5hbWU6ICdkYXRhJyxcclxuICAgICAgICAgICAgICAgIHZhbHVlOiBib2R5UmVxLmNvbnZlcnQoKSxcclxuICAgICAgICAgICAgICAgIGluOiAnYm9keScsXHJcbiAgICAgICAgICAgICAgICB0eXBlOiAnb2JqZWN0JyxcclxuICAgICAgICAgICAgICAgIHdpdGhvdXRLZXlEYXRhOiB0cnVlLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgIF07XHJcblxyXG4gICAgICAgIGNvbnN0IHN1YnMgPSB0aGlzLmFwaUFkYXB0ZXJTZXJ2aWNlXHJcbiAgICAgICAgICAgIC5leGVjdXRlQXBpUmVxdWVzdChcclxuICAgICAgICAgICAgICAgIHBhcmFtZXRlckxpc3QsXHJcbiAgICAgICAgICAgICAgICBgL2NhbXBhaWduLyR7dGhpcy5nZXRDYW1wYWlnblN0b3JhZ2U/LmdlbmVyYWxJbmZvcm1hdGlvbj8uaWR9L3NjaGVkdWxlYCxcclxuICAgICAgICAgICAgICAgICdQT1NUJ1xyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoXHJcbiAgICAgICAgICAgICAgICAocmVzcCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXNwPy5tZXNzYWdlPy50b0xvd2VyQ2FzZSgpICE9PSAnc3VjY2VzcycpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pc1N1Ym1pdCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcclxuICAgICAgICAgICAgICAgICAgICAgICAgJ3RlbGluLmNhbXBhaWduJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5nZXRDYW1wYWlnblN0b3JhZ2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi57XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NoZWR1bGVyOiB0aGlzLnNjaGVkdWxlckRhdGEsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNTdWJtaXQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnBvc2l0aW9uV2l6YXJkICs9IDE7XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgKCkgPT4gKHRoaXMuaXNTdWJtaXQgPSBmYWxzZSlcclxuICAgICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgdGhpcy5zdWJzY3JpYmVycy5wdXNoKHN1YnMpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBvblByZXZpb3VzKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMucG9zaXRpb25XaXphcmQgLT0gMTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgY2hhbmdlQ3VycmVudFZpZXcoYXJlYTogTWFpbkFyZWEpIHtcclxuICAgICAgICB0aGlzLm9wZW5Db25maXJtYXRpb25EaWFsb2coYXJlYSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBvcGVuQ29uZmlybWF0aW9uRGlhbG9nKGFyZWE6IE1haW5BcmVhKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgY29uZmlybWF0aW9uID0gbmV3IENvbmZpcm1hdGlvbk1vZGVsKCk7XHJcblxyXG4gICAgICAgIGNvbmZpcm1hdGlvbi50aXRsZSA9ICdDYW5jZWwgQWRkIEJyb2FkY2FzdCc7XHJcbiAgICAgICAgY29uZmlybWF0aW9uLmNvbnRlbnQgPSBgQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGNhbmNlbDxici8+IEFkZCBCcm9hZGNhc3Q/YDtcclxuICAgICAgICBjb25maXJtYXRpb24uYnRuU3VibWl0UmVkID0gJ1llcyc7XHJcbiAgICAgICAgY29uZmlybWF0aW9uLmJ0bkNhbmNlbCA9ICdObyc7XHJcblxyXG4gICAgICAgIGNvbnN0IHN1YnMgPSB0aGlzLmRpYWxvZ1xyXG4gICAgICAgICAgICAub3BlbihDb25maXJtYXRpb25Db21wb25lbnQsIHtcclxuICAgICAgICAgICAgICAgIGF1dG9Gb2N1czogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICBiYWNrZHJvcENsYXNzOiAnb3ZlcmxheS1iYWNrZHJvcC1kaWFsb2cnLFxyXG4gICAgICAgICAgICAgICAgZGF0YTogY29uZmlybWF0aW9uLFxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAuYWZ0ZXJDbG9zZWQoKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChyZXNwKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAocmVzcCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5oaXN0b3J5LnJlcGxhY2VTdGF0ZShcclxuICAgICAgICAgICAgICAgICAgICAgICAge30sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGAvJHt0aGlzLmdldENhbXBhaWduU3RvcmFnZT8uZ2VuZXJhbEluZm9ybWF0aW9uPy5pZH1gLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAnL3NlY3VyZS9jYW1wYWlnbidcclxuICAgICAgICAgICAgICAgICAgICApO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRWaWV3LmVtaXQoYXJlYSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLnN1YnNjcmliZXJzLnB1c2goc3Vicyk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG9uU3VibWl0Rm9yQXBwcm92YWwoKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgcGFyYW1ldGVyTGlzdDogQXJyYXk8UGFyYW1ldGVyPiA9IFtdO1xyXG4gICAgICAgIHRoaXMuaXNTdWJtaXQgPSB0cnVlO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5nZXRDYW1wYWlnblN0b3JhZ2U/LnRhcmdldEF1ZGllbmNlRmlsZT8ubmFtZSlcclxuICAgICAgICAgICAgcGFyYW1ldGVyTGlzdC5wdXNoKHtcclxuICAgICAgICAgICAgICAgIG5hbWU6ICdpc0ZpbGUnLFxyXG4gICAgICAgICAgICAgICAgdmFsdWU6IHRydWUsXHJcbiAgICAgICAgICAgICAgICBpbjogJ3F1ZXJ5JyxcclxuICAgICAgICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgY29uc3Qgc3VicyA9IHRoaXMuYXBpQWRhcHRlclNlcnZpY2VcclxuICAgICAgICAgICAgLmV4ZWN1dGVBcGlSZXF1ZXN0KFxyXG4gICAgICAgICAgICAgICAgcGFyYW1ldGVyTGlzdCxcclxuICAgICAgICAgICAgICAgIGAvY2FtcGFpZ24vJHt0aGlzLmdldENhbXBhaWduU3RvcmFnZT8uZ2VuZXJhbEluZm9ybWF0aW9uPy5pZH0vc3VibWl0YCxcclxuICAgICAgICAgICAgICAgICdQT1NUJ1xyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoXHJcbiAgICAgICAgICAgICAgICAocmVzcCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXNwPy5tZXNzYWdlPy50b0xvd2VyQ2FzZSgpICE9PSAnc3VjY2VzcycpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pc1N1Ym1pdCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICB3aW5kb3cuaGlzdG9yeS5yZXBsYWNlU3RhdGUoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBgLyR7dGhpcy5nZXRDYW1wYWlnblN0b3JhZ2U/LmdlbmVyYWxJbmZvcm1hdGlvbj8uaWR9YCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgJy9zZWN1cmUvY2FtcGFpZ24nXHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50b2FzdHIuc3VjY2VzcygnQ2FtcGFpZ24gc3VibWl0dGVkIGZvciBhcHByb3ZhbCEnKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzU3VibWl0ID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50Vmlldy5lbWl0KHRoaXMuY3VycmVudFZpZXdzLkNhbXBhaWduSW5kZXgpO1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICgpID0+ICh0aGlzLmlzU3VibWl0ID0gZmFsc2UpXHJcbiAgICAgICAgICAgICk7XHJcblxyXG4gICAgICAgIHRoaXMuc3Vic2NyaWJlcnMucHVzaChzdWJzKTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnN1YnNjcmliZXJzLmZvckVhY2goKGVhY2gpID0+IGVhY2gudW5zdWJzY3JpYmUoKSk7XHJcbiAgICB9XHJcbn1cclxuIl19
|
|
464
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV3LWNhbXBhaWduLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BhZGxmZS9jYW1wYWlnbi1tYW5hZ2VtZW50LWxpYnJhcnkvIiwic291cmNlcyI6WyJsaWIvY2FtcGFpZ24tbWFuYWdlbWVudC9tb2R1bGVzL25ldy1jYW1wYWlnbi9uZXctY2FtcGFpZ24uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBcUIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5GLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzNELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUcvQyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNsRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUM5RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsNEJBQTRCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFPakc7SUF3QkksOEJBQ1ksTUFBaUIsRUFDakIsaUJBQTJDLEVBQzNDLE1BQXFCO1FBSGpDLGlCQUlJO1FBSFEsV0FBTSxHQUFOLE1BQU0sQ0FBVztRQUNqQixzQkFBaUIsR0FBakIsaUJBQWlCLENBQTBCO1FBQzNDLFdBQU0sR0FBTixNQUFNLENBQWU7UUExQnZCLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQVksQ0FBQztRQUc5QyxpQkFBWSxHQUFHLFFBQVEsQ0FBQztRQUN4QixtQkFBYyxHQUFXLENBQUMsQ0FBQztRQUUzQixjQUFTLEdBQVks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U0FFL0MsQ0FBQztPQUNXLG9CQUFvQixDQTZrQmhDO0lBQUQsMkJBQUM7Q0FBQSxBQTdrQkQsSUE2a0JDO1NBN2tCWSxvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IFRvYXN0clNlcnZpY2UgfSBmcm9tICduZ3gtdG9hc3RyJztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFNlZ21lbnRlZE1lc3NhZ2UgfSBmcm9tICdzbXMtc2VnbWVudHMtY2FsY3VsYXRvcic7XHJcbmltcG9ydCB7IE1haW5BcmVhIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9lbnVtcyc7XHJcbmltcG9ydCB7IFBhcmFtZXRlciB9IGZyb20gJy4uLy4uLy4uL2NvcmUvbW9kZWxzL3V0aWwvYXBpLWFkYXB0ZXItc2VydmljZS1tb2RlbHMnO1xyXG5pbXBvcnQgeyBBcHBSZXNwb25zZSB9IGZyb20gJy4uLy4uLy4uL2NvcmUvbW9kZWxzL3V0aWwvYXBpLWR0by9yZXNwb25zZS1tb2RlbHMnO1xyXG5pbXBvcnQgeyBBcGlBZGFwdGVyU2VydmljZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9jb3JlL3NlcnZpY2VzJztcclxuaW1wb3J0IHsgQ29uZmlybWF0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vZ2xvYmFsL2NvbmZpcm1hdGlvbi9jb25maXJtYXRpb24nO1xyXG5pbXBvcnQgeyBDb25maXJtYXRpb25Nb2RlbCB9IGZyb20gJy4uLy4uLy4uL2dsb2JhbC9jb25maXJtYXRpb24vc2hhcmVkL21vZGVsJztcclxuaW1wb3J0IHsgRmFpbG92ZXJSZXFNb2RlbCwgR2VuZXJhbEluZm9ybWF0aW9uV0FSZXFNb2RlbCwgU2NoZWR1bGVyUmVxTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2xpYi1uZXctY2FtcGFpZ24nLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL25ldy1jYW1wYWlnbi5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9uZXctY2FtcGFpZ24uY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIE5ld0NhbXBhaWduQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gICAgQE91dHB1dCgpIGN1cnJlbnRWaWV3ID0gbmV3IEV2ZW50RW1pdHRlcjxNYWluQXJlYT4oKTtcclxuXHJcbiAgICBwdWJsaWMgY2FtcGFpZ25JRDogc3RyaW5nO1xyXG4gICAgcHVibGljIGN1cnJlbnRWaWV3cyA9IE1haW5BcmVhO1xyXG4gICAgcHVibGljIHBvc2l0aW9uV2l6YXJkOiBudW1iZXIgPSAxO1xyXG4gICAgcHVibGljIGRhdGFXaXphcmQ6IHN0cmluZ1tdO1xyXG4gICAgcHVibGljIGlzTG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgcHVibGljIGlzU3VibWl0OiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBwdWJsaWMgaXNHZW5lcmFsSW5mb3JtYXRpb25WYWxpZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgcHVibGljIGlzRmFpbG92ZXJNZWNoYW5pc21WYWxpZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgcHVibGljIGlzTnVtYmVyQmFzZUluZm9ybWF0aW9uVmFsaWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIHB1YmxpYyBpc1NjaGVkdWxlckluZm9ybWF0aW9uVmFsaWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIHB1YmxpYyBpc0xpbmU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIHB1YmxpYyBnZW5lcmFsSW5mb3JtYXRpb25EYXRhOiBhbnk7XHJcbiAgICBwdWJsaWMgZmFpbG92ZXJNZWNoYW5pc21EYXRhOiBhbnk7XHJcbiAgICBwdWJsaWMgdGFyZ2V0QXVkaWVuY2VEYXRhOiBzdHJpbmdbXTtcclxuICAgIHB1YmxpYyB0YXJnZXRBdWRpZW5jZUNvdW50OiBudW1iZXI7XHJcbiAgICBwdWJsaWMgdGFyZ2V0QXVkaWVuY2VGaWxlOiBhbnk7XHJcbiAgICBwdWJsaWMgc2NoZWR1bGVyRGF0YTogYW55O1xyXG5cclxuICAgIHByaXZhdGUgaXNVcGxvYWRUYXJnZXRBdWRpZW5jZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgcHJpdmF0ZSBzdWJzY3JpYmVyczogU3Vic2NyaXB0aW9uW10gPSBbXTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcml2YXRlIGRpYWxvZzogTWF0RGlhbG9nLFxyXG4gICAgICAgIHByaXZhdGUgYXBpQWRhcHRlclNlcnZpY2U6IEFwaUFkYXB0ZXJTZXJ2aWNlU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIHRvYXN0cjogVG9hc3RyU2VydmljZVxyXG4gICAgKSB7fVxyXG5cclxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuY2FtcGFpZ25JRCA9IHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZT8uc3BsaXQoJy8nKT8ucG9wKCk7XHJcblxyXG4gICAgICAgIHRoaXMuaW5pdFdpemFyZCgpO1xyXG4gICAgICAgIHRoaXMuZ2V0Q2FtcGFpZ25EZXRhaWxTZXJ2aWNlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBpbml0V2l6YXJkKCk6IHZvaWQge1xyXG4gICAgICAgIGlmICghdGhpcy5pc0xpbmUpIHtcclxuICAgICAgICAgICAgdGhpcy5kYXRhV2l6YXJkID0gW1xyXG4gICAgICAgICAgICAgICAgJ0dlbmVyYWwgSW5mb3JtYXRpb24nLFxyXG4gICAgICAgICAgICAgICAgJ0ZhaWxvdmVyIE1lY2hhbmlzbScsXHJcbiAgICAgICAgICAgICAgICAnVGFyZ2V0IEF1ZGllbmNlJyxcclxuICAgICAgICAgICAgICAgICdTY2hlZHVsZXInLFxyXG4gICAgICAgICAgICAgICAgJ1N1bW1hcnknLFxyXG4gICAgICAgICAgICBdO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmRhdGFXaXphcmQgPSBbJ0dlbmVyYWwgSW5mb3JtYXRpb24nLCAnVGFyZ2V0IEF1ZGllbmNlJywgJ1NjaGVkdWxlcicsICdTdW1tYXJ5J107XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBnZXRDYW1wYWlnbkRldGFpbFNlcnZpY2UoKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuY2FtcGFpZ25JRD8ubGVuZ3RoIDwgMTApIHJldHVybjtcclxuXHJcbiAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xyXG5cclxuICAgICAgICBjb25zdCBzdWJzID0gdGhpcy5hcGlBZGFwdGVyU2VydmljZVxyXG4gICAgICAgICAgICAuZXhlY3V0ZUFwaVJlcXVlc3QoW10sIGAvY2FtcGFpZ24vJHt0aGlzLmNhbXBhaWduSUR9YCwgJ0dFVCcpXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoXHJcbiAgICAgICAgICAgICAgICAocmVzcDogQXBwUmVzcG9uc2U8YW55PikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghcmVzcCkgcmV0dXJuO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBnZW5lcmFsSW5mb3JtYXRpb24gPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBhaWduTmFtZTogcmVzcC5kYXRhPy5uYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBtZWRpdW06IHJlc3AuZGF0YT8ucGxhdGZvcm0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5uZWw6IFsnaW1hZ2UnLCAndmlkZW8nLCAnZG9jdW1lbnQnXS5pbmNsdWRlcyhyZXNwLmRhdGE/LnR5cGUpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICdNRURJQSdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogcmVzcC5kYXRhPy5pc0RpcmVjdFNlbmRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAndXRpbGl0eSdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiByZXNwLmRhdGE/LnR5cGU/LnRvVXBwZXJDYXNlKCksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lZGlhOiByZXNwLmRhdGE/LnR5cGU/LnRvVXBwZXJDYXNlKCksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzUHJldlRlbXBsYXRlOiByZXNwPy5kYXRhPy5pc1ByZXZUZW1wbGF0ZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGVOYW1lOiByZXNwPy5kYXRhPy50ZW1wbGF0ZU5hbWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHR0bDogcmVzcD8uZGF0YT8udHRsU2Vjb25kcyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgZnJvbToge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHJlc3AuZGF0YT8uYWNjb3VudElkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogcmVzcC5kYXRhPy5hY2NvdW50TmFtZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYXRmb3JtOiByZXNwLmRhdGE/LnBsYXRmb3JtLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50SWQ6IHJlc3AuZGF0YT8uY2xpZW50SWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnROYW1lOiByZXNwLmRhdGE/LmNsaWVudE5hbWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2NvdW50Tm86IHJlc3AuZGF0YT8uYWNjb3VudE5vLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FiYUlkOiByZXNwLmRhdGE/LndhYmFJZCA/PyAnJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDogcmVzcC5kYXRhPy5kZXRhaWxzPy50ZXh0LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRVUkw6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwLmRhdGE/LmRldGFpbHM/LmltYWdlPy51cmwgPz9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3AuZGF0YT8uZGV0YWlscz8uZG9jdW1lbnQ/LnVybCA/P1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcC5kYXRhPy5kZXRhaWxzPy52aWRlbz8udXJsID8/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwLmRhdGE/LmRldGFpbHM/LnRlbXBsYXRlPy5oZWFkZXJVUkwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtSGVhZGVyOiByZXNwLmRhdGE/LmRldGFpbHM/LnRlbXBsYXRlPy5oZWFkZXIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtQm9keTogcmVzcC5kYXRhPy5kZXRhaWxzPy50ZW1wbGF0ZT8uZGF0YSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1CdXR0b246IHJlc3AuZGF0YT8uZGV0YWlscz8udGVtcGxhdGU/LmJ1dHRvbixcclxuICAgICAgICAgICAgICAgICAgICAgICAgb3RwVmFsdWU6IFsuLi4ocmVzcC5kYXRhPy5kZXRhaWxzPy50ZW1wbGF0ZT8uZGF0YSA/PyBbXSldPy5wb3AoKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGU6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIElEOiByZXNwLmRhdGE/LmRldGFpbHM/LnRlbXBsYXRlPy5pZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IHJlc3AuZGF0YT8uZGV0YWlscz8udGVtcGxhdGU/Lm5hbWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW5nOiByZXNwLmRhdGE/LmRldGFpbHM/LnRlbXBsYXRlPy5sYW5nLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhdGZvcm06IHJlc3AuZGF0YT8ucGxhdGZvcm0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJVUkw6IHJlc3AuZGF0YT8uZGV0YWlscz8udGVtcGxhdGU/LmhlYWRlclVSTCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcjoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4YW1wbGVzOiByZXNwLmRhdGE/LmRldGFpbHM/LnRlbXBsYXRlPy5oZWFkZXIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9keToge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4YW1wbGVzOiByZXNwLmRhdGE/LmRldGFpbHM/LnRlbXBsYXRlPy5kYXRhLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbnM6IHJlc3AuZGF0YT8uZGV0YWlscz8udGVtcGxhdGU/LmJ1dHRvbixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsaWVudElkOiByZXNwLmRhdGE/LmNsaWVudElkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2xpZW50TmFtZTogcmVzcC5kYXRhPy5jbGllbnROYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpc1VwbG9hZDogcmVzcC5kYXRhPy5maWxlSWQgIT09ICcnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxlSWQ6IHJlc3AuZGF0YT8uZmlsZUlkLFxyXG4gICAgICAgICAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAndGVsaW4uY2FtcGFpZ24nLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBKU09OLnN0cmluZ2lmeSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLmdldENhbXBhaWduU3RvcmFnZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmFsSW5mb3JtYXRpb246IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHJlc3AuZGF0YT8uaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm06IGdlbmVyYWxJbmZvcm1hdGlvbixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhaWxvdmVyOiByZXNwLmRhdGE/LmZhaWxvdmVyLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldEF1ZGllbmNlOiByZXNwLmRhdGE/LnRhcmdldHMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0QXVkaWVuY2VGaWxlOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IHJlc3AuZGF0YT8uZmlsZU5hbWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldFVSTDogcmVzcC5kYXRhPy50YXJnZXRVUkwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2hlZHVsZXI6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NoZWR1bGVyVHlwZTpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3AuZGF0YT8uc2NoZWR1bGVUeXBlID09PSAnTVVMVEknXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAnT05FX1RJTUUnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiByZXNwLmRhdGE/LnNjaGVkdWxlVHlwZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnREYXRlOiByZXNwLmRhdGE/LnN0YXJ0VGltZT8uc3BsaXQoJyAnKVswXSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRUaW1lOiByZXNwLmRhdGE/LnN0YXJ0VGltZT8uc3BsaXQoJyAnKVsxXSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNSZXBlYXQ6IHJlc3AuZGF0YT8uc2NoZWR1bGVUeXBlID09PSAnTVVMVEknLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxpdmVyeTogcmVzcC5kYXRhPy5yZXBlYXQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0xpbmUgPSByZXNwLmRhdGE/LnBsYXRmb3JtID09PSAnTElORSc7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbml0V2l6YXJkKCk7XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICk7XHJcblxyXG4gICAgICAgIHRoaXMuc3Vic2NyaWJlcnMucHVzaChzdWJzKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2VuZXJhbEluZm9ybWF0aW9uKGZvcm06IHsgcGFyZW50OiBGb3JtR3JvdXA7IGNoaWxkOiBGb3JtR3JvdXAgfSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuaXNHZW5lcmFsSW5mb3JtYXRpb25WYWxpZCA9IGZvcm0ucGFyZW50LnZhbGlkICYmIGZvcm0uY2hpbGQgJiYgZm9ybS5jaGlsZD8udmFsaWQ7XHJcbiAgICAgICAgdGhpcy5pc0xpbmUgPSBmb3JtLnBhcmVudD8uZ2V0UmF3VmFsdWUoKT8ubWVkaXVtID09PSAnTElORSc7XHJcblxyXG4gICAgICAgIHRoaXMuaW5pdFdpemFyZCgpO1xyXG5cclxuICAgICAgICBpZiAoZm9ybS5wYXJlbnQgJiYgZm9ybS5jaGlsZClcclxuICAgICAgICAgICAgdGhpcy5nZW5lcmFsSW5mb3JtYXRpb25EYXRhID0ge1xyXG4gICAgICAgICAgICAgICAgLi4uZm9ybS5wYXJlbnQuZ2V0UmF3VmFsdWUoKSxcclxuICAgICAgICAgICAgICAgIC4uLmZvcm0uY2hpbGQuZ2V0UmF3VmFsdWUoKSxcclxuICAgICAgICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZmFpbG92ZXJNZWNoYW5pc20oZm9ybTogRm9ybUdyb3VwKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5pc0ZhaWxvdmVyTWVjaGFuaXNtVmFsaWQgPSBmb3JtLnZhbGlkO1xyXG4gICAgICAgIHRoaXMuZmFpbG92ZXJNZWNoYW5pc21EYXRhID0gZm9ybS5nZXRSYXdWYWx1ZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyB0YXJnZXRBdWRpZW5jZSh0YXJnZXQ6IHtcclxuICAgICAgICB0YXJnZXRBdWRpZW5jZTogc3RyaW5nW107XHJcbiAgICAgICAgbnVtYmVyQ291bnQ6IG51bWJlcjtcclxuICAgICAgICBpc1VwbG9hZDogYm9vbGVhbjtcclxuICAgICAgICBmaWxlOiBhbnk7XHJcbiAgICB9KTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy50YXJnZXRBdWRpZW5jZUZpbGUgPSB0YXJnZXQuZmlsZTtcclxuICAgICAgICB0aGlzLnRhcmdldEF1ZGllbmNlRGF0YSA9IHRhcmdldC50YXJnZXRBdWRpZW5jZTtcclxuICAgICAgICB0aGlzLnRhcmdldEF1ZGllbmNlQ291bnQgPSB0YXJnZXQubnVtYmVyQ291bnQ7XHJcbiAgICAgICAgdGhpcy5pc1VwbG9hZFRhcmdldEF1ZGllbmNlID0gdGFyZ2V0LmlzVXBsb2FkO1xyXG4gICAgICAgIHRoaXMuaXNOdW1iZXJCYXNlSW5mb3JtYXRpb25WYWxpZCA9XHJcbiAgICAgICAgICAgICh0YXJnZXQuaXNVcGxvYWQgJiYgdGFyZ2V0LmZpbGU/Lm5hbWUpIHx8XHJcbiAgICAgICAgICAgICghdGFyZ2V0LmlzVXBsb2FkICYmIHRhcmdldC50YXJnZXRBdWRpZW5jZS5sZW5ndGggPiAwKSB8fFxyXG4gICAgICAgICAgICB0aGlzLmdldENhbXBhaWduU3RvcmFnZT8uZ2VuZXJhbEluZm9ybWF0aW9uPy5mb3JtPy5maWxlSWQ7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHNjaGVkdWxlcihmb3JtOiBGb3JtR3JvdXApOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnNjaGVkdWxlckRhdGEgPSBmb3JtLmdldFJhd1ZhbHVlKCk7XHJcbiAgICAgICAgdGhpcy5pc1NjaGVkdWxlckluZm9ybWF0aW9uVmFsaWQgPSBmb3JtLnZhbGlkO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBvbkNsaWNrU2F2ZUFuZE5leHRCdXR0b24oKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5pc1N1Ym1pdCA9IHRydWU7XHJcblxyXG4gICAgICAgIHN3aXRjaCAodGhpcy5wb3NpdGlvbldpemFyZCkge1xyXG4gICAgICAgICAgICBjYXNlIDE6XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNhdmVHZW5lcmFsSW5mb3JtYXRpb25TZXJ2aWNlKCk7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSAyOlxyXG4gICAgICAgICAgICAgICAgIXRoaXMuaXNMaW5lID8gdGhpcy5zYXZlRmFpbG92ZXJNZWNoYW5pc21TZXJ2aWNlKCkgOiB0aGlzLnNhdmVOdW1iZXJCYXNlc1NlcnZpY2UoKTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIDM6XHJcbiAgICAgICAgICAgICAgICAhdGhpcy5pc0xpbmUgPyB0aGlzLnNhdmVOdW1iZXJCYXNlc1NlcnZpY2UoKSA6IHRoaXMuc2F2ZVNjaGVkdWxlclNlcnZpY2UoKTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIDQ6XHJcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuaXNMaW5lKSB0aGlzLnNhdmVTY2hlZHVsZXJTZXJ2aWNlKCk7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgIHRoaXMuaXNTdWJtaXQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBnZXQgZ2V0Q2FtcGFpZ25TdG9yYWdlKCk6IGFueSB7XHJcbiAgICAgICAgcmV0dXJuIGxvY2FsU3RvcmFnZS5nZXRJdGVtKCd0ZWxpbi5jYW1wYWlnbicpXHJcbiAgICAgICAgICAgID8gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgndGVsaW4uY2FtcGFpZ24nKSlcclxuICAgICAgICAgICAgOiB7fTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgZ2V0Qm9keSgpOiBzdHJpbmcge1xyXG4gICAgICAgIGNvbnN0IGJvZHkgPVxyXG4gICAgICAgICAgICB0aGlzLmdlbmVyYWxJbmZvcm1hdGlvbkRhdGE/LnRleHQgfHxcclxuICAgICAgICAgICAgdGhpcy5nZW5lcmFsSW5mb3JtYXRpb25EYXRhPy50ZW1wbGF0ZT8uYm9keT8udGV4dCB8fFxyXG4gICAgICAgICAgICB0aGlzLmdlbmVyYWxJbmZvcm1hdGlvbkRhdGE/LmJvZHk/LnRleHQ7XHJcblxyXG4gICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgIGJvZHlcclxuICAgICAgICAgICAgICAgID8uc3BsaXQoL1xcXFxufFxcbi8pXHJcbiAgICAgICAgICAgICAgICAuam9pbignPGJyIC8+JylcclxuICAgICAgICAgICAgICAgIC5zcGxpdCgvXFxcXHR8XFx0LylcclxuICAgICAgICAgICAgICAgIC5qb2luKCcgICAgJykgPz8gJydcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBvbkNoZWNrVHdpbGlvQ291bnRlclZhbGlkID0gKCk6IGJvb2xlYW4gPT4ge1xyXG4gICAgICAgIGNvbnN0IHZhbHVlc0dlbmVyYWwgPSB0aGlzLmdlbmVyYWxJbmZvcm1hdGlvbkRhdGE7XHJcblxyXG4gICAgICAgIGlmICh2YWx1ZXNHZW5lcmFsPy5tZWRpdW0gIT09ICdTTVMnKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHZhbHVlc0dlbmVyYWw/LmNoYW5uZWwgPT09ICdURVhUJykge1xyXG4gICAgICAgICAgICBjb25zdCBzZWdtZW50ZWRNZXNzYWdlID0gbmV3IFNlZ21lbnRlZE1lc3NhZ2UodGhpcy5nZXRCb2R5KTtcclxuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0ge1xyXG4gICAgICAgICAgICAgICAgc2VnbWVudHM6IHNlZ21lbnRlZE1lc3NhZ2Uuc2VnbWVudHNDb3VudCxcclxuICAgICAgICAgICAgICAgIGVuY29kaW5nOiBzZWdtZW50ZWRNZXNzYWdlLmVuY29kaW5nTmFtZSxcclxuICAgICAgICAgICAgICAgIGNoYXJhY3RlcnM6IHNlZ21lbnRlZE1lc3NhZ2UubnVtYmVyT2ZVbmljb2RlU2NhbGFycyxcclxuICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgIGlmIChyZXN1bHQuc2VnbWVudHMgPiAxMCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBsZXQgdmFsdWVSZXN1bHQgPSB0aGlzLmdldEJvZHk7XHJcbiAgICAgICAgICAgIEFycmF5LmZyb20odmFsdWVzR2VuZXJhbC50ZW1wbGF0ZT8uYm9keT8uZXhhbXBsZXMgfHwgW10pLm1hcCgoZW50cnksIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAodmFsdWVzR2VuZXJhbC5wYXJhbUJvZHkubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBsYWNlaG9sZGVyID0gYHt7JHtlbnRyeX19fWA7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSB2YWx1ZXNHZW5lcmFsLnBhcmFtQm9keVtpbmRleF0ubmFtZTtcclxuICAgICAgICAgICAgICAgICAgICB2YWx1ZVJlc3VsdCA9IHZhbHVlUmVzdWx0LnNwbGl0KHBsYWNlaG9sZGVyKS5qb2luKHZhbHVlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICBjb25zdCBzZWdtZW50ZWRNZXNzYWdlID0gbmV3IFNlZ21lbnRlZE1lc3NhZ2UodmFsdWVSZXN1bHQpO1xyXG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSB7XHJcbiAgICAgICAgICAgICAgICBzZWdtZW50czogc2VnbWVudGVkTWVzc2FnZS5zZWdtZW50c0NvdW50LFxyXG4gICAgICAgICAgICAgICAgZW5jb2Rpbmc6IHNlZ21lbnRlZE1lc3NhZ2UuZW5jb2RpbmdOYW1lLFxyXG4gICAgICAgICAgICAgICAgY2hhcmFjdGVyczogc2VnbWVudGVkTWVzc2FnZS5udW1iZXJPZlVuaWNvZGVTY2FsYXJzLFxyXG4gICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgaWYgKHJlc3VsdC5zZWdtZW50cyA+IDEwKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgcHJpdmF0ZSBzYXZlR2VuZXJhbEluZm9ybWF0aW9uU2VydmljZSgpOiB2b2lkIHtcclxuICAgICAgICBpZiAoIXRoaXMub25DaGVja1R3aWxpb0NvdW50ZXJWYWxpZCgpKSB7XHJcbiAgICAgICAgICAgIHRoaXMudG9hc3RyLmVycm9yKCdTZWdtZW50IGNhbm5vdCBtb3JlIHRoYW4gMTAnKTtcclxuICAgICAgICAgICAgdGhpcy5pc1N1Ym1pdCA9IGZhbHNlO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBib2R5UmVxID0gbmV3IEdlbmVyYWxJbmZvcm1hdGlvbldBUmVxTW9kZWwoKS5jbG9uZSh7XHJcbiAgICAgICAgICAgIC4uLnRoaXMuZ2VuZXJhbEluZm9ybWF0aW9uRGF0YSxcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgY29uc3QgcGF5bG9hZFZhbHVlID0gYm9keVJlcS5jb252ZXJ0KCk7XHJcblxyXG4gICAgICAgIGlmIChwYXlsb2FkVmFsdWUudGVtcGxhdGUgJiYgdGhpcy5nZW5lcmFsSW5mb3JtYXRpb25EYXRhLnRlbXBsYXRlKSB7XHJcbiAgICAgICAgICAgIHBheWxvYWRWYWx1ZS50ZW1wbGF0ZS50eXBlID1cclxuICAgICAgICAgICAgICAgIHBheWxvYWRWYWx1ZS50ZW1wbGF0ZS50eXBlIHx8IHRoaXMuZ2VuZXJhbEluZm9ybWF0aW9uRGF0YS50ZW1wbGF0ZS5jYXRlZ29yeTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IHBhcmFtZXRlckxpc3Q6IEFycmF5PFBhcmFtZXRlcj4gPSBbXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIG5hbWU6ICdkYXRhJyxcclxuICAgICAgICAgICAgICAgIHZhbHVlOiBwYXlsb2FkVmFsdWUsXHJcbiAgICAgICAgICAgICAgICBpbjogJ2JvZHknLFxyXG4gICAgICAgICAgICAgICAgdHlwZTogJ29iamVjdCcsXHJcbiAgICAgICAgICAgICAgICB3aXRob3V0S2V5RGF0YTogdHJ1ZSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICBdO1xyXG4gICAgICAgIGNvbnN0IHN1YnMgPSB0aGlzLmFwaUFkYXB0ZXJTZXJ2aWNlXHJcbiAgICAgICAgICAgIC5leGVjdXRlQXBpUmVxdWVzdChcclxuICAgICAgICAgICAgICAgIHBhcmFtZXRlckxpc3QsXHJcbiAgICAgICAgICAgICAgICB0aGlzLmdlbmVyYWxJbmZvcm1hdGlvbkRhdGEuaWRcclxuICAgICAgICAgICAgICAgICAgICA/IGAvY2FtcGFpZ24vJHt0aGlzLmdlbmVyYWxJbmZvcm1hdGlvbkRhdGEuaWR9YFxyXG4gICAgICAgICAgICAgICAgICAgIDogJy9jYW1wYWlnbicsXHJcbiAgICAgICAgICAgICAgICB0aGlzLmdlbmVyYWxJbmZvcm1hdGlvbkRhdGEuaWQgPyAnUFVUJyA6ICdQT1NUJ1xyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoXHJcbiAgICAgICAgICAgICAgICAocmVzcCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXNwPy5tZXNzYWdlPy50b0xvd2VyQ2FzZSgpICE9PSAnc3VjY2VzcycpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pc1N1Ym1pdCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcclxuICAgICAgICAgICAgICAgICAgICAgICAgJ3RlbGluLmNhbXBhaWduJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5nZXRDYW1wYWlnblN0b3JhZ2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi57XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhbEluZm9ybWF0aW9uOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiByZXNwLmRhdGEuaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm06IHRoaXMuZ2VuZXJhbEluZm9ybWF0aW9uRGF0YSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICApO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzU3VibWl0ID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wb3NpdGlvbldpemFyZCArPSAxO1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICgpID0+ICh0aGlzLmlzU3VibWl0ID0gZmFsc2UpXHJcbiAgICAgICAgICAgICk7XHJcblxyXG4gICAgICAgIHRoaXMuc3Vic2NyaWJlcnMucHVzaChzdWJzKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHNhdmVGYWlsb3Zlck1lY2hhbmlzbVNlcnZpY2UoKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgYm9keVJlcSA9IG5ldyBGYWlsb3ZlclJlcU1vZGVsKCkuY2xvbmUoe1xyXG4gICAgICAgICAgICAuLi50aGlzLmZhaWxvdmVyTWVjaGFuaXNtRGF0YSxcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgY29uc3QgcGFyYW1ldGVyTGlzdDogQXJyYXk8UGFyYW1ldGVyPiA9IFtcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgbmFtZTogJ2RhdGEnLFxyXG4gICAgICAgICAgICAgICAgdmFsdWU6IGJvZHlSZXEuY29udmVydCgpLFxyXG4gICAgICAgICAgICAgICAgaW46ICdib2R5JyxcclxuICAgICAgICAgICAgICAgIHR5cGU6ICdvYmplY3QnLFxyXG4gICAgICAgICAgICAgICAgd2l0aG91dEtleURhdGE6IHRydWUsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgXTtcclxuXHJcbiAgICAgICAgY29uc3Qgc3VicyA9IHRoaXMuYXBpQWRhcHRlclNlcnZpY2VcclxuICAgICAgICAgICAgLmV4ZWN1dGVBcGlSZXF1ZXN0KFxyXG4gICAgICAgICAgICAgICAgcGFyYW1ldGVyTGlzdCxcclxuICAgICAgICAgICAgICAgIGAvY2FtcGFpZ24vJHt0aGlzLmdldENhbXBhaWduU3RvcmFnZT8uZ2VuZXJhbEluZm9ybWF0aW9uPy5pZH0vZmFpbG92ZXJgLFxyXG4gICAgICAgICAgICAgICAgJ1BPU1QnXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICAgICAgICAgIChyZXNwKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3A/Lm1lc3NhZ2U/LnRvTG93ZXJDYXNlKCkgIT09ICdzdWNjZXNzJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmlzU3VibWl0ID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAndGVsaW4uY2FtcGFpZ24nLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBKU09OLnN0cmluZ2lmeSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLmdldENhbXBhaWduU3RvcmFnZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWlsb3ZlcjogdGhpcy5mYWlsb3Zlck1lY2hhbmlzbURhdGEsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNTdWJtaXQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnBvc2l0aW9uV2l6YXJkICs9IDE7XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgKCkgPT4gKHRoaXMuaXNTdWJtaXQgPSBmYWxzZSlcclxuICAgICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgdGhpcy5zdWJzY3JpYmVycy5wdXNoKHN1YnMpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgc2F2ZU51bWJlckJhc2VzU2VydmljZSgpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy50YXJnZXRBdWRpZW5jZURhdGEubGVuZ3RoID09PSAwIHx8IHRoaXMuaXNVcGxvYWRUYXJnZXRBdWRpZW5jZSkge1xyXG4gICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcclxuICAgICAgICAgICAgICAgICd0ZWxpbi5jYW1wYWlnbicsXHJcbiAgICAgICAgICAgICAgICBKU09OLnN0cmluZ2lmeSh7XHJcbiAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5nZXRDYW1wYWlnblN0b3JhZ2UsXHJcbiAgICAgICAgICAgICAgICAgICAgLi4ue1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRBdWRpZW5jZTogdGhpcy50YXJnZXRBdWRpZW5jZURhdGEsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldEF1ZGllbmNlQ291bnQ6IHRoaXMudGFyZ2V0QXVkaWVuY2VDb3VudCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0QXVkaWVuY2VGaWxlOiB0aGlzLnRhcmdldEF1ZGllbmNlRmlsZSxcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuaXNTdWJtaXQgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5wb3NpdGlvbldpemFyZCArPSAxO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBwYXJhbWV0ZXJMaXN0OiBBcnJheTxQYXJhbWV0ZXI+ID0gW1xyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBuYW1lOiAnZGF0YScsXHJcbiAgICAgICAgICAgICAgICB2YWx1ZToge1xyXG4gICAgICAgICAgICAgICAgICAgIHRhcmdldHM6IHRoaXMudGFyZ2V0QXVkaWVuY2VEYXRhLFxyXG4gICAgICAgICAgICAgICAgICAgIG51bWJlckNvdW50OiB0aGlzLnRhcmdldEF1ZGllbmNlQ291bnQsXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgaW46ICdib2R5JyxcclxuICAgICAgICAgICAgICAgIHR5cGU6ICdvYmplY3QnLFxyXG4gICAgICAgICAgICAgICAgd2l0aG91dEtleURhdGE6IHRydWUsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgXTtcclxuXHJcbiAgICAgICAgY29uc3Qgc3VicyA9IHRoaXMuYXBpQWRhcHRlclNlcnZpY2VcclxuICAgICAgICAgICAgLmV4ZWN1dGVBcGlSZXF1ZXN0KFxyXG4gICAgICAgICAgICAgICAgcGFyYW1ldGVyTGlzdCxcclxuICAgICAgICAgICAgICAgIGAvY2FtcGFpZ24vJHt0aGlzLmdldENhbXBhaWduU3RvcmFnZT8uZ2VuZXJhbEluZm9ybWF0aW9uPy5pZH0vdGFyZ2V0Y2F0ZWdvcnlgLFxyXG4gICAgICAgICAgICAgICAgJ1BPU1QnXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICAgICAgICAgIChyZXNwKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3A/Lm1lc3NhZ2U/LnRvTG93ZXJDYXNlKCkgIT09ICdzdWNjZXNzJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmlzU3VibWl0ID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAndGVsaW4uY2FtcGFpZ24nLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBKU09OLnN0cmluZ2lmeSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLmdldENhbXBhaWduU3RvcmFnZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRBdWRpZW5jZTogdGhpcy50YXJnZXRBdWRpZW5jZURhdGEsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0QXVkaWVuY2VDb3VudDogdGhpcy50YXJnZXRBdWRpZW5jZUNvdW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldEF1ZGllbmNlRmlsZTogdGhpcy50YXJnZXRBdWRpZW5jZUZpbGUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNTdWJtaXQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnBvc2l0aW9uV2l6YXJkICs9IDE7XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgKCkgPT4gKHRoaXMuaXNTdWJtaXQgPSBmYWxzZSlcclxuICAgICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgdGhpcy5zdWJzY3JpYmVycy5wdXNoKHN1YnMpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgc2F2ZVNjaGVkdWxlclNlcnZpY2UoKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgYm9keVJlcSA9IG5ldyBTY2hlZHVsZXJSZXFNb2RlbCgpLmNsb25lKHtcclxuICAgICAgICAgICAgLi4udGhpcy5zY2hlZHVsZXJEYXRhLFxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBjb25zdCBwYXJhbWV0ZXJMaXN0OiBBcnJheTxQYXJhbWV0ZXI+ID0gW1xyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBuYW1lOiAnZGF0YScsXHJcbiAgICAgICAgICAgICAgICB2YWx1ZTogYm9keVJlcS5jb252ZXJ0KCksXHJcbiAgICAgICAgICAgICAgICBpbjogJ2JvZHknLFxyXG4gICAgICAgICAgICAgICAgdHlwZTogJ29iamVjdCcsXHJcbiAgICAgICAgICAgICAgICB3aXRob3V0S2V5RGF0YTogdHJ1ZSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICBdO1xyXG5cclxuICAgICAgICBjb25zdCBzdWJzID0gdGhpcy5hcGlBZGFwdGVyU2VydmljZVxyXG4gICAgICAgICAgICAuZXhlY3V0ZUFwaVJlcXVlc3QoXHJcbiAgICAgICAgICAgICAgICBwYXJhbWV0ZXJMaXN0LFxyXG4gICAgICAgICAgICAgICAgYC9jYW1wYWlnbi8ke3RoaXMuZ2V0Q2FtcGFpZ25TdG9yYWdlPy5nZW5lcmFsSW5mb3JtYXRpb24/LmlkfS9zY2hlZHVsZWAsXHJcbiAgICAgICAgICAgICAgICAnUE9TVCdcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgICAgICAgKHJlc3ApID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcD8ubWVzc2FnZT8udG9Mb3dlckNhc2UoKSAhPT0gJ3N1Y2Nlc3MnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaXNTdWJtaXQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICd0ZWxpbi5jYW1wYWlnbicsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMuZ2V0Q2FtcGFpZ25TdG9yYWdlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ue1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjaGVkdWxlcjogdGhpcy5zY2hlZHVsZXJEYXRhLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICApO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzU3VibWl0ID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wb3NpdGlvbldpemFyZCArPSAxO1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICgpID0+ICh0aGlzLmlzU3VibWl0ID0gZmFsc2UpXHJcbiAgICAgICAgICAgICk7XHJcblxyXG4gICAgICAgIHRoaXMuc3Vic2NyaWJlcnMucHVzaChzdWJzKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgb25QcmV2aW91cygpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnBvc2l0aW9uV2l6YXJkIC09IDE7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGNoYW5nZUN1cnJlbnRWaWV3KGFyZWE6IE1haW5BcmVhKSB7XHJcbiAgICAgICAgdGhpcy5vcGVuQ29uZmlybWF0aW9uRGlhbG9nKGFyZWEpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgb3BlbkNvbmZpcm1hdGlvbkRpYWxvZyhhcmVhOiBNYWluQXJlYSk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGNvbmZpcm1hdGlvbiA9IG5ldyBDb25maXJtYXRpb25Nb2RlbCgpO1xyXG5cclxuICAgICAgICBjb25maXJtYXRpb24udGl0bGUgPSAnQ2FuY2VsIEFkZCBCcm9hZGNhc3QnO1xyXG4gICAgICAgIGNvbmZpcm1hdGlvbi5jb250ZW50ID0gYEFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBjYW5jZWw8YnIvPiBBZGQgQnJvYWRjYXN0P2A7XHJcbiAgICAgICAgY29uZmlybWF0aW9uLmJ0blN1Ym1pdFJlZCA9ICdZZXMnO1xyXG4gICAgICAgIGNvbmZpcm1hdGlvbi5idG5DYW5jZWwgPSAnTm8nO1xyXG5cclxuICAgICAgICBjb25zdCBzdWJzID0gdGhpcy5kaWFsb2dcclxuICAgICAgICAgICAgLm9wZW4oQ29uZmlybWF0aW9uQ29tcG9uZW50LCB7XHJcbiAgICAgICAgICAgICAgICBhdXRvRm9jdXM6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgYmFja2Ryb3BDbGFzczogJ292ZXJsYXktYmFja2Ryb3AtZGlhbG9nJyxcclxuICAgICAgICAgICAgICAgIGRhdGE6IGNvbmZpcm1hdGlvbixcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgLmFmdGVyQ2xvc2VkKClcclxuICAgICAgICAgICAgLnN1YnNjcmliZSgocmVzcCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKHJlc3ApIHtcclxuICAgICAgICAgICAgICAgICAgICB3aW5kb3cuaGlzdG9yeS5yZXBsYWNlU3RhdGUoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBgLyR7dGhpcy5nZXRDYW1wYWlnblN0b3JhZ2U/LmdlbmVyYWxJbmZvcm1hdGlvbj8uaWR9YCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgJy9zZWN1cmUvY2FtcGFpZ24nXHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50Vmlldy5lbWl0KGFyZWEpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5zdWJzY3JpYmVycy5wdXNoKHN1YnMpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBvblN1Ym1pdEZvckFwcHJvdmFsKCk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IHBhcmFtZXRlckxpc3Q6IEFycmF5PFBhcmFtZXRlcj4gPSBbXTtcclxuICAgICAgICB0aGlzLmlzU3VibWl0ID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuZ2V0Q2FtcGFpZ25TdG9yYWdlPy50YXJnZXRBdWRpZW5jZUZpbGU/Lm5hbWUpXHJcbiAgICAgICAgICAgIHBhcmFtZXRlckxpc3QucHVzaCh7XHJcbiAgICAgICAgICAgICAgICBuYW1lOiAnaXNGaWxlJyxcclxuICAgICAgICAgICAgICAgIHZhbHVlOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgaW46ICdxdWVyeScsXHJcbiAgICAgICAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGNvbnN0IHN1YnMgPSB0aGlzLmFwaUFkYXB0ZXJTZXJ2aWNlXHJcbiAgICAgICAgICAgIC5leGVjdXRlQXBpUmVxdWVzdChcclxuICAgICAgICAgICAgICAgIHBhcmFtZXRlckxpc3QsXHJcbiAgICAgICAgICAgICAgICBgL2NhbXBhaWduLyR7dGhpcy5nZXRDYW1wYWlnblN0b3JhZ2U/LmdlbmVyYWxJbmZvcm1hdGlvbj8uaWR9L3N1Ym1pdGAsXHJcbiAgICAgICAgICAgICAgICAnUE9TVCdcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgICAgICAgKHJlc3ApID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcD8ubWVzc2FnZT8udG9Mb3dlckNhc2UoKSAhPT0gJ3N1Y2Nlc3MnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaXNTdWJtaXQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgd2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7fSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgYC8ke3RoaXMuZ2V0Q2FtcGFpZ25TdG9yYWdlPy5nZW5lcmFsSW5mb3JtYXRpb24/LmlkfWAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICcvc2VjdXJlL2NhbXBhaWduJ1xyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudG9hc3RyLnN1Y2Nlc3MoJ0NhbXBhaWduIHN1Ym1pdHRlZCBmb3IgYXBwcm92YWwhJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc1N1Ym1pdCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudFZpZXcuZW1pdCh0aGlzLmN1cnJlbnRWaWV3cy5DYW1wYWlnbkluZGV4KTtcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAoKSA9PiAodGhpcy5pc1N1Ym1pdCA9IGZhbHNlKVxyXG4gICAgICAgICAgICApO1xyXG5cclxuICAgICAgICB0aGlzLnN1YnNjcmliZXJzLnB1c2goc3Vicyk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5zdWJzY3JpYmVycy5mb3JFYWNoKChlYWNoKSA9PiBlYWNoLnVuc3Vic2NyaWJlKCkpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Validators as AngularValidators } from '@angular/forms';
|
|
2
|
+
import { maxValidator } from './max.validator';
|
|
3
|
+
import { minValidator } from './min.validator';
|
|
4
|
+
import { requiredValidator } from './required.validator';
|
|
5
|
+
export var Validators = {
|
|
6
|
+
compose: AngularValidators.compose,
|
|
7
|
+
composeAync: AngularValidators.composeAsync,
|
|
8
|
+
max: maxValidator,
|
|
9
|
+
min: minValidator,
|
|
10
|
+
required: requiredValidator,
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWRsZmUvY2FtcGFpZ24tbWFuYWdlbWVudC1saWJyYXJ5LyIsInNvdXJjZXMiOlsibGliL2NhbXBhaWduLW1hbmFnZW1lbnQvdmFsaWRhdG9ycy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxJQUFJLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUV6RCxNQUFNLENBQUMsSUFBTSxVQUFVLEdBQUc7SUFDdEIsT0FBTyxFQUFFLGlCQUFpQixDQUFDLE9BQU87SUFDbEMsV0FBVyxFQUFFLGlCQUFpQixDQUFDLFlBQVk7SUFDM0MsR0FBRyxFQUFFLFlBQVk7SUFDakIsR0FBRyxFQUFFLFlBQVk7SUFDakIsUUFBUSxFQUFFLGlCQUFpQjtDQUM5QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVmFsaWRhdG9ycyBhcyBBbmd1bGFyVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgbWF4VmFsaWRhdG9yIH0gZnJvbSAnLi9tYXgudmFsaWRhdG9yJztcclxuaW1wb3J0IHsgbWluVmFsaWRhdG9yIH0gZnJvbSAnLi9taW4udmFsaWRhdG9yJztcclxuaW1wb3J0IHsgcmVxdWlyZWRWYWxpZGF0b3IgfSBmcm9tICcuL3JlcXVpcmVkLnZhbGlkYXRvcic7XHJcblxyXG5leHBvcnQgY29uc3QgVmFsaWRhdG9ycyA9IHtcclxuICAgIGNvbXBvc2U6IEFuZ3VsYXJWYWxpZGF0b3JzLmNvbXBvc2UsXHJcbiAgICBjb21wb3NlQXluYzogQW5ndWxhclZhbGlkYXRvcnMuY29tcG9zZUFzeW5jLFxyXG4gICAgbWF4OiBtYXhWYWxpZGF0b3IsXHJcbiAgICBtaW46IG1pblZhbGlkYXRvcixcclxuICAgIHJlcXVpcmVkOiByZXF1aXJlZFZhbGlkYXRvcixcclxufTtcclxuIl19
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Validators } from '@angular/forms';
|
|
2
|
+
export var maxValidator = function (max, message) {
|
|
3
|
+
return function (AC) {
|
|
4
|
+
var isError = Validators.max(max)(AC);
|
|
5
|
+
if (isError)
|
|
6
|
+
return {
|
|
7
|
+
max: max,
|
|
8
|
+
actual: AC.value,
|
|
9
|
+
message: message || "Max Value equals to " + max,
|
|
10
|
+
};
|
|
11
|
+
return null;
|
|
12
|
+
};
|
|
13
|
+
};
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF4LnZhbGlkYXRvci5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BhZGxmZS9jYW1wYWlnbi1tYW5hZ2VtZW50LWxpYnJhcnkvIiwic291cmNlcyI6WyJsaWIvY2FtcGFpZ24tbWFuYWdlbWVudC92YWxpZGF0b3JzL21heC52YWxpZGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFxQyxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvRSxNQUFNLENBQUMsSUFBTSxZQUFZLEdBQUcsVUFBQyxHQUFXLEVBQUUsT0FBZTtJQUN4RCxPQUFPLFVBQUMsRUFBbUI7UUFDMUIsSUFBTSxPQUFPLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN4QyxJQUFJLE9BQU87WUFDVixPQUFPO2dCQUNOLEdBQUcsRUFBRSxHQUFHO2dCQUNSLE1BQU0sRUFBRSxFQUFFLENBQUMsS0FBSztnQkFDaEIsT0FBTyxFQUFFLE9BQU8sSUFBSSx5QkFBdUIsR0FBSzthQUNoRCxDQUFDO1FBQ0gsT0FBTyxJQUFJLENBQUM7SUFDYixDQUFDLENBQUM7QUFDSCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIFZhbGlkYXRpb25FcnJvcnMsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmV4cG9ydCBjb25zdCBtYXhWYWxpZGF0b3IgPSAobWF4OiBudW1iZXIsIG1lc3NhZ2U6IHN0cmluZykgPT4ge1xyXG5cdHJldHVybiAoQUM6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+IHtcclxuXHRcdGNvbnN0IGlzRXJyb3IgPSBWYWxpZGF0b3JzLm1heChtYXgpKEFDKTtcclxuXHRcdGlmIChpc0Vycm9yKVxyXG5cdFx0XHRyZXR1cm4ge1xyXG5cdFx0XHRcdG1heDogbWF4LFxyXG5cdFx0XHRcdGFjdHVhbDogQUMudmFsdWUsXHJcblx0XHRcdFx0bWVzc2FnZTogbWVzc2FnZSB8fCBgTWF4IFZhbHVlIGVxdWFscyB0byAke21heH1gLFxyXG5cdFx0XHR9O1xyXG5cdFx0cmV0dXJuIG51bGw7XHJcblx0fTtcclxufTtcclxuIl19
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Validators } from '@angular/forms';
|
|
2
|
+
export var minValidator = function (min, message) {
|
|
3
|
+
return function (AC) {
|
|
4
|
+
var isError = Validators.min(min)(AC);
|
|
5
|
+
if (isError)
|
|
6
|
+
return {
|
|
7
|
+
min: min,
|
|
8
|
+
actual: AC.value,
|
|
9
|
+
message: message || "Min Value equals to " + min,
|
|
10
|
+
};
|
|
11
|
+
return null;
|
|
12
|
+
};
|
|
13
|
+
};
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWluLnZhbGlkYXRvci5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BhZGxmZS9jYW1wYWlnbi1tYW5hZ2VtZW50LWxpYnJhcnkvIiwic291cmNlcyI6WyJsaWIvY2FtcGFpZ24tbWFuYWdlbWVudC92YWxpZGF0b3JzL21pbi52YWxpZGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFxQyxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvRSxNQUFNLENBQUMsSUFBTSxZQUFZLEdBQUcsVUFBQyxHQUFXLEVBQUUsT0FBZTtJQUN4RCxPQUFPLFVBQUMsRUFBbUI7UUFDMUIsSUFBTSxPQUFPLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN4QyxJQUFJLE9BQU87WUFDVixPQUFPO2dCQUNOLEdBQUcsRUFBRSxHQUFHO2dCQUNSLE1BQU0sRUFBRSxFQUFFLENBQUMsS0FBSztnQkFDaEIsT0FBTyxFQUFFLE9BQU8sSUFBSSx5QkFBdUIsR0FBSzthQUNoRCxDQUFDO1FBQ0gsT0FBTyxJQUFJLENBQUM7SUFDYixDQUFDLENBQUM7QUFDSCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIFZhbGlkYXRpb25FcnJvcnMsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmV4cG9ydCBjb25zdCBtaW5WYWxpZGF0b3IgPSAobWluOiBudW1iZXIsIG1lc3NhZ2U6IHN0cmluZykgPT4ge1xyXG5cdHJldHVybiAoQUM6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+IHtcclxuXHRcdGNvbnN0IGlzRXJyb3IgPSBWYWxpZGF0b3JzLm1pbihtaW4pKEFDKTtcclxuXHRcdGlmIChpc0Vycm9yKVxyXG5cdFx0XHRyZXR1cm4ge1xyXG5cdFx0XHRcdG1pbjogbWluLFxyXG5cdFx0XHRcdGFjdHVhbDogQUMudmFsdWUsXHJcblx0XHRcdFx0bWVzc2FnZTogbWVzc2FnZSB8fCBgTWluIFZhbHVlIGVxdWFscyB0byAke21pbn1gLFxyXG5cdFx0XHR9O1xyXG5cdFx0cmV0dXJuIG51bGw7XHJcblx0fTtcclxufTtcclxuIl19
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Validators } from '@angular/forms';
|
|
2
|
+
export var requiredValidator = function (message) {
|
|
3
|
+
return function (ac) {
|
|
4
|
+
var isError = Validators.required(ac);
|
|
5
|
+
if (isError)
|
|
6
|
+
return { message: message };
|
|
7
|
+
return null;
|
|
8
|
+
};
|
|
9
|
+
};
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWlyZWQudmFsaWRhdG9yLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFkbGZlL2NhbXBhaWduLW1hbmFnZW1lbnQtbGlicmFyeS8iLCJzb3VyY2VzIjpbImxpYi9jYW1wYWlnbi1tYW5hZ2VtZW50L3ZhbGlkYXRvcnMvcmVxdWlyZWQudmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBa0QsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFNUYsTUFBTSxDQUFDLElBQU0saUJBQWlCLEdBQUcsVUFBQyxPQUFlO0lBQ2hELE9BQU8sVUFBQyxFQUFtQjtRQUMxQixJQUFNLE9BQU8sR0FBRyxVQUFVLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3hDLElBQUksT0FBTztZQUFFLE9BQU8sRUFBRSxPQUFPLFNBQUEsRUFBRSxDQUFDO1FBQ2hDLE9BQU8sSUFBSSxDQUFDO0lBQ2IsQ0FBQyxDQUFDO0FBQ0gsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBWYWxpZGF0aW9uRXJyb3JzLCBWYWxpZGF0b3JGbiwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcbmV4cG9ydCBjb25zdCByZXF1aXJlZFZhbGlkYXRvciA9IChtZXNzYWdlOiBzdHJpbmcpOiBWYWxpZGF0b3JGbiA9PiB7XHJcblx0cmV0dXJuIChhYzogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPT4ge1xyXG5cdFx0Y29uc3QgaXNFcnJvciA9IFZhbGlkYXRvcnMucmVxdWlyZWQoYWMpO1xyXG5cdFx0aWYgKGlzRXJyb3IpIHJldHVybiB7IG1lc3NhZ2UgfTtcclxuXHRcdHJldHVybiBudWxsO1xyXG5cdH07XHJcbn07XHJcbiJdfQ==
|
|
@@ -8,7 +8,10 @@ export var GeneralInformationMessageValidationConst = {
|
|
|
8
8
|
export var GeneralInformationWAMessageValidationConst = {
|
|
9
9
|
channel: [{ type: 'required', message: 'Message Type is required' }],
|
|
10
10
|
from: [{ type: 'required', message: 'From is required' }],
|
|
11
|
-
text: [
|
|
11
|
+
text: [
|
|
12
|
+
{ type: 'required', message: 'Text is required' },
|
|
13
|
+
{ type: 'maxlength', message: 'Maximum character 1024' },
|
|
14
|
+
],
|
|
12
15
|
media: [{ type: 'required', message: 'Media Type is required' }],
|
|
13
16
|
fileName: [{ type: 'required', message: 'File is required' }],
|
|
14
17
|
template: [{ type: 'required', message: 'Template is required' }],
|
|
@@ -53,4 +56,4 @@ export var SchedulerMessageValidationConst = {
|
|
|
53
56
|
startDate: [{ type: 'required', message: 'Select Date is required' }],
|
|
54
57
|
startTime: [{ type: 'required', message: 'Select Time is required' }],
|
|
55
58
|
};
|
|
56
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
59
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGlvbi1tZXNzYWdlLmNvbnN0LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFkbGZlL2NhbXBhaWduLW1hbmFnZW1lbnQtbGlicmFyeS8iLCJzb3VyY2VzIjpbImxpYi9jb3JlL2NvbnN0L3ZhbGlkYXRpb24tbWVzc2FnZS5jb25zdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsSUFBTSx3Q0FBd0MsR0FBRztJQUNwRCxZQUFZLEVBQUU7UUFDVixFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLGlDQUFpQyxFQUFFO1FBQ2hFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUU7S0FDMUQ7SUFDRCxNQUFNLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLENBQUM7Q0FDakUsQ0FBQztBQUVGLE1BQU0sQ0FBQyxJQUFNLDBDQUEwQyxHQUFHO0lBQ3RELE9BQU8sRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsQ0FBQztJQUNwRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLENBQUM7SUFDekQsSUFBSSxFQUFFO1FBQ0YsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRTtRQUNqRCxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLHdCQUF3QixFQUFFO0tBQzNEO0lBQ0QsS0FBSyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxDQUFDO0lBQ2hFLFFBQVEsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQztJQUM3RCxRQUFRLEVBQUUsQ0FBQyxF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RUFBRSxDQUFDO0lBQy9ELFlBQVksRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsQ0FBQztDQUN4RSxDQUFDO0FBRUYsTUFBTSxDQUFDLElBQU0sK0JBQStCLEdBQUc7SUFDM0MsU0FBUyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxDQUFDO0lBQ3JFLFNBQVMsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsQ0FBQztDQUN4RSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IEdlbmVyYWxJbmZvcm1hdGlvbk1lc3NhZ2VWYWxpZGF0aW9uQ29uc3QgPSB7XHJcbiAgICBjYW1wYWlnbk5hbWU6IFtcclxuICAgICAgICB7IHR5cGU6ICdyZXF1aXJlZCcsIG1lc3NhZ2U6ICdHZW5lcmFsIEluZm9ybWF0aW9uIGlzIHJlcXVpcmVkJyB9LFxyXG4gICAgICAgIHsgdHlwZTogJ21heGxlbmd0aCcsIG1lc3NhZ2U6ICdNYXhpbXVtIGNoYXJhY3RlciAxMDAnIH0sXHJcbiAgICBdLFxyXG4gICAgbWVkaXVtOiBbeyB0eXBlOiAncmVxdWlyZWQnLCBtZXNzYWdlOiAnQ2hhbm5lbCBpcyByZXF1aXJlZCcgfV0sXHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgR2VuZXJhbEluZm9ybWF0aW9uV0FNZXNzYWdlVmFsaWRhdGlvbkNvbnN0ID0ge1xyXG4gICAgY2hhbm5lbDogW3sgdHlwZTogJ3JlcXVpcmVkJywgbWVzc2FnZTogJ01lc3NhZ2UgVHlwZSBpcyByZXF1aXJlZCcgfV0sXHJcbiAgICBmcm9tOiBbeyB0eXBlOiAncmVxdWlyZWQnLCBtZXNzYWdlOiAnRnJvbSBpcyByZXF1aXJlZCcgfV0sXHJcbiAgICB0ZXh0OiBbXHJcbiAgICAgICAgeyB0eXBlOiAncmVxdWlyZWQnLCBtZXNzYWdlOiAnVGV4dCBpcyByZXF1aXJlZCcgfSxcclxuICAgICAgICB7IHR5cGU6ICdtYXhsZW5ndGgnLCBtZXNzYWdlOiAnTWF4aW11bSBjaGFyYWN0ZXIgMTAyNCcgfSxcclxuICAgIF0sXHJcbiAgICBtZWRpYTogW3sgdHlwZTogJ3JlcXVpcmVkJywgbWVzc2FnZTogJ01lZGlhIFR5cGUgaXMgcmVxdWlyZWQnIH1dLFxyXG4gICAgZmlsZU5hbWU6IFt7IHR5cGU6ICdyZXF1aXJlZCcsIG1lc3NhZ2U6ICdGaWxlIGlzIHJlcXVpcmVkJyB9XSxcclxuICAgIHRlbXBsYXRlOiBbeyB0eXBlOiAncmVxdWlyZWQnLCBtZXNzYWdlOiAnVGVtcGxhdGUgaXMgcmVxdWlyZWQnIH1dLFxyXG4gICAgY2F0ZWdvcnk6IFt7IHR5cGU6ICdyZXF1aXJlZCcsIG1lc3NhZ2U6ICdDYXRlZ29yeSBpcyByZXF1aXJlZCcgfV0sXHJcbiAgICBjYXRhbG9ndWU6IFt7IHR5cGU6ICdyZXF1aXJlZCcsIG1lc3NhZ2U6ICdDYXRhbG9nIGlzIHJlcXVpcmVkJyB9XSxcclxuICAgIHByb2R1Y3Q6IFt7IHR5cGU6ICdyZXF1aXJlZCcsIG1lc3NhZ2U6ICdQcm9kdWN0IGlzIHJlcXVpcmVkJyB9XSxcclxuICAgIGJvZHk6IFt7IHR5cGU6ICdtYXhsZW5ndGgnLCBtZXNzYWdlOiAnTWF4aW11bSBjaGFyYWN0ZXIgMTAwJyB9XSxcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBHZW5lcmFsSW5mb3JtYXRpb25FbWFpbE1lc3NhZ2VWYWxpZGF0aW9uQ29uc3QgPSB7XHJcbiAgICBjaGFubmVsOiBbeyB0eXBlOiAncmVxdWlyZWQnLCBtZXNzYWdlOiAnTWVzc2FnZSBUeXBlIGlzIHJlcXVpcmVkJyB9XSxcclxuICAgIGZyb206IFt7IHR5cGU6ICdyZXF1aXJlZCcsIG1lc3NhZ2U6ICdGcm9tIGlzIHJlcXVpcmVkJyB9XSxcclxuICAgIHRleHQ6IFt7IHR5cGU6ICdyZXF1aXJlZCcsIG1lc3NhZ2U6ICdUZXh0IGlzIHJlcXVpcmVkJyB9XSxcclxuICAgIHRlbXBsYXRlOiBbeyB0eXBlOiAncmVxdWlyZWQnLCBtZXNzYWdlOiAnVGVtcGxhdGUgaXMgcmVxdWlyZWQnIH1dLFxyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IEdlbmVyYWxJbmZvcm1hdGlvblNNU01lc3NhZ2VWYWxpZGF0aW9uQ29uc3QgPSB7XHJcbiAgICBjaGFubmVsOiBbeyB0eXBlOiAncmVxdWlyZWQnLCBtZXNzYWdlOiAnTWVzc2FnZSBUeXBlIGlzIHJlcXVpcmVkJyB9XSxcclxuICAgIGZyb206IFt7IHR5cGU6ICdyZXF1aXJlZCcsIG1lc3NhZ2U6ICdGcm9tIGlzIHJlcXVpcmVkJyB9XSxcclxuICAgIHRleHQ6IFt7IHR5cGU6ICdyZXF1aXJlZCcsIG1lc3NhZ2U6ICdUZXh0IGlzIHJlcXVpcmVkJyB9XSxcclxuICAgIHRlbXBsYXRlOiBbeyB0eXBlOiAncmVxdWlyZWQnLCBtZXNzYWdlOiAnVGVtcGxhdGUgaXMgcmVxdWlyZWQnIH1dLFxyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IEdlbmVyYWxJbmZvcm1hdGlvbkxpbmVNZXNzYWdlVmFsaWRhdGlvbkNvbnN0ID0ge1xyXG4gICAgY2hhbm5lbDogW3sgdHlwZTogJ3JlcXVpcmVkJywgbWVzc2FnZTogJ01lc3NhZ2UgVHlwZSBpcyByZXF1aXJlZCcgfV0sXHJcbiAgICBmcm9tOiBbeyB0eXBlOiAncmVxdWlyZWQnLCBtZXNzYWdlOiAnRnJvbSBpcyByZXF1aXJlZCcgfV0sXHJcbiAgICB0ZXh0OiBbeyB0eXBlOiAncmVxdWlyZWQnLCBtZXNzYWdlOiAnVGV4dCBpcyByZXF1aXJlZCcgfV0sXHJcbiAgICB0ZW1wbGF0ZTogW3sgdHlwZTogJ3JlcXVpcmVkJywgbWVzc2FnZTogJ1RlbXBsYXRlIGlzIHJlcXVpcmVkJyB9XSxcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBGYWlsb3Zlck1lY2hhbmlzbVZhbGlkYXRpb25Db25zdCA9IHtcclxuICAgIGludGVydmFsOiBbXHJcbiAgICAgICAgeyB0eXBlOiAncmVxdWlyZWQnLCBtZXNzYWdlOiAnSW50ZXJ2YWwgVGltZSBpcyByZXF1aXJlZCcgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHR5cGU6ICdpbnRlcnZhbFRpbWUnLFxyXG4gICAgICAgICAgICBtZXNzYWdlOiAnTXVzdCBiZSBncmVhdGVyIHRoYW4gMCBhbmQgd2l0aG91dCBkZWNpbWFsJyxcclxuICAgICAgICB9LFxyXG4gICAgXSxcclxuICAgIHR5cGU6IFt7IHR5cGU6ICdyZXF1aXJlZCcsIG1lc3NhZ2U6ICdNYWluIFJ1bGVzIGlzIHJlcXVpcmVkJyB9XSxcclxuICAgIGFjY291bnRJZDogW3sgdHlwZTogJ3JlcXVpcmVkJywgbWVzc2FnZTogJ0FjY291bnQgaXMgcmVxdWlyZWQnIH1dLFxyXG4gICAgc3ViamVjdDogW3sgdHlwZTogJ3JlcXVpcmVkJywgbWVzc2FnZTogJ1N1YmplY3QgaXMgcmVxdWlyZWQnIH1dLFxyXG4gICAgbWVzc2FnZTogW3sgdHlwZTogJ3JlcXVpcmVkJywgbWVzc2FnZTogJ01lc3NhZ2UgaXMgcmVxdWlyZWQnIH1dLFxyXG4gICAgdGVtcGxhdGVOYW1lOiBbeyB0eXBlOiAncmVxdWlyZWQnLCBtZXNzYWdlOiAnVGVtcGxhdGUgaXMgcmVxdWlyZWQnIH1dLFxyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IFNjaGVkdWxlck1lc3NhZ2VWYWxpZGF0aW9uQ29uc3QgPSB7XHJcbiAgICBzdGFydERhdGU6IFt7IHR5cGU6ICdyZXF1aXJlZCcsIG1lc3NhZ2U6ICdTZWxlY3QgRGF0ZSBpcyByZXF1aXJlZCcgfV0sXHJcbiAgICBzdGFydFRpbWU6IFt7IHR5cGU6ICdyZXF1aXJlZCcsIG1lc3NhZ2U6ICdTZWxlY3QgVGltZSBpcyByZXF1aXJlZCcgfV0sXHJcbn07XHJcbiJdfQ==
|