@ohioepa/oepa-ui-lib 1.2.0 → 1.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/account-search-input/account-search-input.component.mjs +9 -17
- package/esm2022/lib/account-search-input/account-search.service.mjs +31 -0
- package/esm2022/lib/account-search-modal/account-search-modal.component.mjs +8 -16
- package/esm2022/lib/address/oepa-address.service.mjs +11 -5
- package/esm2022/lib/common-forms.module.mjs +36 -1
- package/esm2022/lib/edoc-attachment/edoc-attachment.component.mjs +9 -8
- package/esm2022/lib/edoc-attachment/edoc-attachment.service.mjs +11 -5
- package/esm2022/lib/entity/entity.service.mjs +11 -5
- package/esm2022/lib/file-upload/file-upload.component.mjs +8 -7
- package/esm2022/lib/lynx-image-upload/lynx-image-upload.component.mjs +7 -6
- package/esm2022/lib/lynx-image-upload/lynx.service.mjs +11 -5
- package/esm2022/lib/multi-file-upload/multi-file-upload.component.mjs +8 -7
- package/esm2022/lib/oepa-account/account-service.mjs +62 -0
- package/esm2022/lib/oepa-file-utils/oepa-file-util.service.mjs +227 -0
- package/esm2022/lib/oepa-reference/oepa-reference.service.mjs +47 -0
- package/esm2022/lib/oepa-user-account/oepa-user-account.service.mjs +304 -0
- package/esm2022/lib/parameter/parameter.service.mjs +11 -5
- package/esm2022/lib/params-help-button/params-help-button.component.mjs +8 -8
- package/esm2022/lib/params-help-button/params-help.service.mjs +26 -0
- package/esm2022/lib/pin-modal/oepa-pin.service.mjs +11 -5
- package/esm2022/lib/pin-modal/pin-modal.component.mjs +2 -2
- package/esm2022/lib/server-timeout-modal/server-timeout-modal.component.mjs +2 -2
- package/esm2022/lib/shopping-cart/shopping-cart.service.mjs +11 -5
- package/esm2022/lib/table/p-table/p-table.component.mjs +9 -8
- package/esm2022/lib/table/table-export.service.mjs +14 -5
- package/esm2022/lib/table/table.component.mjs +13 -12
- package/esm2022/lib/util/oepa-custom-encoder.mjs +15 -0
- package/esm2022/lib/util/oepa-http-interceptor.mjs +64 -0
- package/esm2022/public-api.mjs +3 -1
- package/fesm2022/ohioepa-oepa-ui-lib.mjs +962 -159
- package/fesm2022/ohioepa-oepa-ui-lib.mjs.map +1 -1
- package/lib/account-search-input/account-search-input.component.d.ts +3 -4
- package/lib/account-search-input/account-search.service.d.ts +12 -0
- package/lib/account-search-modal/account-search-modal.component.d.ts +3 -5
- package/lib/address/oepa-address.service.d.ts +2 -1
- package/lib/common-forms.module.d.ts +2 -0
- package/lib/edoc-attachment/edoc-attachment.component.d.ts +2 -1
- package/lib/edoc-attachment/edoc-attachment.service.d.ts +2 -1
- package/lib/entity/entity.service.d.ts +2 -1
- package/lib/file-upload/file-upload.component.d.ts +2 -1
- package/lib/lynx-image-upload/lynx-image-upload.component.d.ts +2 -1
- package/lib/lynx-image-upload/lynx.service.d.ts +2 -1
- package/lib/multi-file-upload/multi-file-upload.component.d.ts +2 -1
- package/lib/oepa-account/account-service.d.ts +23 -0
- package/lib/oepa-file-utils/oepa-file-util.service.d.ts +53 -0
- package/lib/oepa-reference/oepa-reference.service.d.ts +26 -0
- package/lib/oepa-user-account/oepa-user-account.service.d.ts +122 -0
- package/lib/parameter/parameter.service.d.ts +2 -1
- package/lib/params-help-button/params-help-button.component.d.ts +3 -3
- package/lib/params-help-button/params-help.service.d.ts +11 -0
- package/lib/pin-modal/oepa-pin.service.d.ts +2 -1
- package/lib/pin-modal/pin-modal.component.d.ts +2 -1
- package/lib/server-timeout-modal/server-timeout-modal.component.d.ts +1 -1
- package/lib/shopping-cart/shopping-cart.service.d.ts +2 -1
- package/lib/table/p-table/p-table.component.d.ts +2 -1
- package/lib/table/table-export.service.d.ts +2 -1
- package/lib/table/table.component.d.ts +1 -1
- package/lib/util/oepa-custom-encoder.d.ts +7 -0
- package/lib/util/oepa-http-interceptor.d.ts +21 -0
- package/ohioepa-oepa-ui-lib-1.2.2.tgz +0 -0
- package/package.json +1 -1
- package/public-api.d.ts +2 -0
- package/ohioepa-oepa-ui-lib-1.2.0.tgz +0 -0
|
@@ -0,0 +1,304 @@
|
|
|
1
|
+
import { Inject, Injectable } from '@angular/core';
|
|
2
|
+
import { Subject } from 'rxjs';
|
|
3
|
+
import { map } from 'rxjs/operators';
|
|
4
|
+
import { of } from 'rxjs';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@angular/common/http";
|
|
7
|
+
/**
|
|
8
|
+
* OepaUserAccountService - A collection of methods for accessing and manipulating user accounts.
|
|
9
|
+
*/
|
|
10
|
+
export class OepaUserAccountService {
|
|
11
|
+
http;
|
|
12
|
+
ebizRootURL;
|
|
13
|
+
hostUrl = '/ebiz';
|
|
14
|
+
accountsUrl = '/api/v1/userAccounts';
|
|
15
|
+
ebizAccountsUrl = '/api/v1/accounts';
|
|
16
|
+
ebizSessionUrl = '/api/v1/session';
|
|
17
|
+
account;
|
|
18
|
+
personID = '';
|
|
19
|
+
sessionID = '';
|
|
20
|
+
webappsRootURL = '';
|
|
21
|
+
logoutPath = '';
|
|
22
|
+
idleTimerRunning = false;
|
|
23
|
+
idleTime = 0;
|
|
24
|
+
idleThreshold = (29 * 60); // 29 minute timeout threshold by default
|
|
25
|
+
idleSubject = new Subject();
|
|
26
|
+
timeoutID;
|
|
27
|
+
constructor(http, ebizRootURL) {
|
|
28
|
+
this.http = http;
|
|
29
|
+
this.ebizRootURL = ebizRootURL;
|
|
30
|
+
this.hostUrl = ebizRootURL + this.hostUrl;
|
|
31
|
+
this.logoutPath = '/jsp/logout.jsp';
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Retrieve the User Account for the user userid.
|
|
35
|
+
* @param userid
|
|
36
|
+
*/
|
|
37
|
+
retrieveAccountForUser(userid) {
|
|
38
|
+
return this.http.get(this.hostUrl + this.accountsUrl + '/' + userid);
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Retrieve the user account for the currently logged in user.
|
|
42
|
+
* @returns Observable<OepaUserAccount>
|
|
43
|
+
*/
|
|
44
|
+
retrieveAccountForCurrentUser() {
|
|
45
|
+
return this.http.get(this.hostUrl + this.accountsUrl + '/login').pipe(map((account) => {
|
|
46
|
+
if (!account) {
|
|
47
|
+
if (this.personID && this.sessionID) {
|
|
48
|
+
this.retrieveAccountForInternalSession(this.personID, this.sessionID).subscribe({
|
|
49
|
+
next: internalAccount => {
|
|
50
|
+
if (internalAccount) {
|
|
51
|
+
this.account = internalAccount;
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
this.logMessageOnServer('retrieveAccountForCurrentUser - no account, redirecting to logout');
|
|
55
|
+
this.redirectToLogout();
|
|
56
|
+
}
|
|
57
|
+
}, error: err => {
|
|
58
|
+
this.logMessageOnServer('Failed retrieving internal account: ' + err);
|
|
59
|
+
this.redirectToLogout();
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
this.logMessageOnServer('retrieveAccountForCurrentUser - no account, redirecting to logout');
|
|
65
|
+
this.redirectToLogout();
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
this.account = account;
|
|
70
|
+
console.log('retrieveAccountForCurrentUser: ' + this.account?.loginName || '<unknown>');
|
|
71
|
+
}
|
|
72
|
+
return this.account;
|
|
73
|
+
}));
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Redirect to logout screen if user is not found
|
|
77
|
+
*/
|
|
78
|
+
redirectToLogout(msg) {
|
|
79
|
+
let logoutUrl = this.logoutPath;
|
|
80
|
+
if (this.webappsRootURL) {
|
|
81
|
+
logoutUrl = this.webappsRootURL + (this.logoutPath || '');
|
|
82
|
+
}
|
|
83
|
+
alert(msg || 'Connection lost. You will be redirected to the login page.');
|
|
84
|
+
console.log('redirecting to logoutUrl:' + logoutUrl);
|
|
85
|
+
window.location.href = logoutUrl;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Retrieve the user account for the currently logged in user.
|
|
89
|
+
* @param sessionID person ID for internal user
|
|
90
|
+
* @returns Observable<OepaUserAccount>
|
|
91
|
+
*/
|
|
92
|
+
retrieveAccountForInternalSession(personID, sessionID) {
|
|
93
|
+
this.account = {};
|
|
94
|
+
const url = this.hostUrl + this.accountsUrl + '/internal/personID/' + personID + '/sessionID/' + sessionID;
|
|
95
|
+
console.log('retrieveAccountForInternalSession: ' + url);
|
|
96
|
+
return this.http.get(url).pipe(map((account) => {
|
|
97
|
+
this.account = account;
|
|
98
|
+
this.personID = personID;
|
|
99
|
+
this.sessionID = sessionID;
|
|
100
|
+
console.log('retrieveAccountForInternalSession: ' + this.account?.loginName || '<unknown>');
|
|
101
|
+
return account;
|
|
102
|
+
}));
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Determine whether account has the role roleName.
|
|
106
|
+
* @param account
|
|
107
|
+
* @param roleName
|
|
108
|
+
*/
|
|
109
|
+
accountHasRole(account, roleName) {
|
|
110
|
+
let hasRole = false;
|
|
111
|
+
const roleList = this.getRoleList(account);
|
|
112
|
+
if (roleList && roleList.length) {
|
|
113
|
+
hasRole = (roleList.indexOf(roleName) > -1);
|
|
114
|
+
}
|
|
115
|
+
return hasRole;
|
|
116
|
+
}
|
|
117
|
+
getRoleList(account) {
|
|
118
|
+
const roleList = [];
|
|
119
|
+
if (account.roleList && account.roleList.length > 0) {
|
|
120
|
+
account.roleList.forEach((role) => {
|
|
121
|
+
roleList.push(role.name || '');
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
return roleList;
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Determine whether account has the privilege privilegeType.
|
|
128
|
+
* @param account
|
|
129
|
+
* @param privilegeType
|
|
130
|
+
*/
|
|
131
|
+
accountHasPrivilege(account, privilegeType) {
|
|
132
|
+
let hasPrivilege = false;
|
|
133
|
+
const privilegeList = this.getPrivilegeList(account);
|
|
134
|
+
if (privilegeList && privilegeList.length) {
|
|
135
|
+
hasPrivilege = (privilegeList.indexOf(privilegeType) > -1);
|
|
136
|
+
}
|
|
137
|
+
return hasPrivilege;
|
|
138
|
+
}
|
|
139
|
+
getPrivilegeList(account) {
|
|
140
|
+
const privilegeList = [];
|
|
141
|
+
if (account.roleList && account.roleList.length > 0) {
|
|
142
|
+
account.roleList.forEach((role) => {
|
|
143
|
+
if (role.privilegeList && role.privilegeList.length > 0) {
|
|
144
|
+
role.privilegeList.forEach((privilege) => {
|
|
145
|
+
privilegeList.push(privilege.type || '');
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
return privilegeList;
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Retrieve the userAccount of the current user. The retrieveAccountForCurrentUser method
|
|
154
|
+
* must be invoked prior to invoking this method.
|
|
155
|
+
*/
|
|
156
|
+
getCurrentUserAccount() {
|
|
157
|
+
console.log('getCurrentUserAccount: ' + this.account?.loginName || '<unknown>');
|
|
158
|
+
return this.account;
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* ===========================================================================================================================
|
|
162
|
+
* EBIZ METHODS:
|
|
163
|
+
* The methods below currently apply only to eBiz.
|
|
164
|
+
* ===========================================================================================================================
|
|
165
|
+
*/
|
|
166
|
+
getWebappsRootURL() {
|
|
167
|
+
if (this.webappsRootURL) {
|
|
168
|
+
return of(this.webappsRootURL);
|
|
169
|
+
}
|
|
170
|
+
else {
|
|
171
|
+
const url = this.hostUrl + '/api/v1/gateway/gatewayConfig';
|
|
172
|
+
return this.http.get(url).pipe(map((gatewayConfig) => {
|
|
173
|
+
if (gatewayConfig) {
|
|
174
|
+
this.webappsRootURL = gatewayConfig.webappsRootURL;
|
|
175
|
+
}
|
|
176
|
+
return this.webappsRootURL;
|
|
177
|
+
}));
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Return array of ProgramPrivileges matching programPrivilegeRequest.
|
|
182
|
+
* @param programPrivilegeRequest
|
|
183
|
+
* @returns Observable<Array<ProgramPrivilege>>
|
|
184
|
+
*/
|
|
185
|
+
searchPrivileges(programPrivilegeRequest, altUserID) {
|
|
186
|
+
const url = this.hostUrl + this.ebizAccountsUrl + '/programPrivileges/search' + (altUserID ? '?userid=' + altUserID : '');
|
|
187
|
+
return this.http.post(url, programPrivilegeRequest);
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Create a new ProgramPrivilege based on contents of ProgramPrivilegeRequest.
|
|
191
|
+
* @param programPrivilegeRequest
|
|
192
|
+
* @returns Observable<ProgramPrivilege?
|
|
193
|
+
*/
|
|
194
|
+
createProgramPrivilege(programPrivilegeRequest, altUserID) {
|
|
195
|
+
return this.http.post(this.hostUrl + this.ebizAccountsUrl + '/programPrivileges' + (altUserID ? '?userid=' + altUserID : ''), programPrivilegeRequest);
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Delete the ProgramPrivilege identified by programPrivilegeID.
|
|
199
|
+
* @param programPrivilegeID
|
|
200
|
+
* @returns Observable<void>
|
|
201
|
+
*/
|
|
202
|
+
deleteProgramPrivilege(programPrivilegeID, altUserID) {
|
|
203
|
+
return this.http.delete(this.hostUrl + this.ebizAccountsUrl + '/programPrivileges/' + programPrivilegeID + (altUserID ? '?userid=' + altUserID : ''), { responseType: 'text' });
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Delegate a program privilege based on information in delegation.
|
|
207
|
+
* @param delegation
|
|
208
|
+
* @returns Observable<void>
|
|
209
|
+
*/
|
|
210
|
+
delegateProgramPrivilege(delegation, altUserID) {
|
|
211
|
+
return this.http.post(this.hostUrl + this.ebizAccountsUrl + '/programPrivileges/delegation' + (altUserID ? '?userid=' + altUserID : ''), delegation, { responseType: 'text' });
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* ===========================================================================================================================
|
|
215
|
+
* Helper METHODS:
|
|
216
|
+
* ===========================================================================================================================
|
|
217
|
+
*/
|
|
218
|
+
/**
|
|
219
|
+
* Set the user account to be used for "live reload mode"
|
|
220
|
+
* @param userAccount
|
|
221
|
+
*/
|
|
222
|
+
setLiveReloadUser(userAccount) {
|
|
223
|
+
this.account = userAccount;
|
|
224
|
+
console.log('setLiveReloadUser: ' + this.account?.loginName || '<unknown>');
|
|
225
|
+
return this.http.post(this.hostUrl + this.ebizAccountsUrl + '/liveReload', userAccount);
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* Stores the given user in the eBiz session.
|
|
229
|
+
* @param accountUserID
|
|
230
|
+
*/
|
|
231
|
+
storeUserInSession(accountUserID) {
|
|
232
|
+
let acct = {};
|
|
233
|
+
acct.accountID = accountUserID;
|
|
234
|
+
return this.http.post(this.hostUrl + this.ebizSessionUrl + '/storeUser/' + accountUserID, null);
|
|
235
|
+
}
|
|
236
|
+
/**
|
|
237
|
+
* See if the current user should be allowed to see "demo" capabilities
|
|
238
|
+
*/
|
|
239
|
+
demoCapabilitiesAllowed() {
|
|
240
|
+
let demoAllowed = false;
|
|
241
|
+
if (this.account && this.account.roleList) {
|
|
242
|
+
this.account.roleList.forEach(role => {
|
|
243
|
+
if (role.name === 'AllowDemo') {
|
|
244
|
+
demoAllowed = true;
|
|
245
|
+
}
|
|
246
|
+
});
|
|
247
|
+
}
|
|
248
|
+
return demoAllowed;
|
|
249
|
+
}
|
|
250
|
+
startIdleTimer(threshold) {
|
|
251
|
+
if (this.timeoutID) {
|
|
252
|
+
clearTimeout(this.timeoutID);
|
|
253
|
+
}
|
|
254
|
+
this.idleThreshold = threshold || this.idleThreshold;
|
|
255
|
+
if (!this.idleTimerRunning) {
|
|
256
|
+
console.log('The idle timeout started with threshold: ' + this.idleThreshold);
|
|
257
|
+
this.idleTimerRunning = true;
|
|
258
|
+
this.checkTimeout();
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
resetIdleTime() {
|
|
262
|
+
console.log('idle timer reset');
|
|
263
|
+
this.idleTime = 0;
|
|
264
|
+
}
|
|
265
|
+
checkTimeout() {
|
|
266
|
+
this.timeoutID = setTimeout(() => {
|
|
267
|
+
this.idleTime += 60;
|
|
268
|
+
console.log('idle time = ' + this.idleTime + ", threshold = " + this.idleThreshold);
|
|
269
|
+
if (this.idleTime >= this.idleThreshold) {
|
|
270
|
+
console.log('firing next idleSubject...');
|
|
271
|
+
this.idleTimerRunning = false;
|
|
272
|
+
this.idleSubject.next(this.idleTime);
|
|
273
|
+
}
|
|
274
|
+
else {
|
|
275
|
+
if (this.timeoutID) {
|
|
276
|
+
clearTimeout(this.timeoutID);
|
|
277
|
+
}
|
|
278
|
+
this.checkTimeout();
|
|
279
|
+
}
|
|
280
|
+
}, 60000);
|
|
281
|
+
}
|
|
282
|
+
getIdleTimeout() {
|
|
283
|
+
return this.idleSubject.asObservable();
|
|
284
|
+
}
|
|
285
|
+
logMessageOnServer(message) {
|
|
286
|
+
const messageResponse = {
|
|
287
|
+
response: message
|
|
288
|
+
};
|
|
289
|
+
const url = this.hostUrl + this.accountsUrl + '/logs/message';
|
|
290
|
+
return this.http.post(url, messageResponse);
|
|
291
|
+
}
|
|
292
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OepaUserAccountService, deps: [{ token: i1.HttpClient }, { token: 'ebizRootURL' }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
293
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OepaUserAccountService, providedIn: 'root' });
|
|
294
|
+
}
|
|
295
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OepaUserAccountService, decorators: [{
|
|
296
|
+
type: Injectable,
|
|
297
|
+
args: [{
|
|
298
|
+
providedIn: 'root'
|
|
299
|
+
}]
|
|
300
|
+
}], ctorParameters: () => [{ type: i1.HttpClient }, { type: undefined, decorators: [{
|
|
301
|
+
type: Inject,
|
|
302
|
+
args: ['ebizRootURL']
|
|
303
|
+
}] }] });
|
|
304
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2VwYS11c2VyLWFjY291bnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29lcGEtdWktbGliL3NyYy9saWIvb2VwYS11c2VyLWFjY291bnQvb2VwYS11c2VyLWFjY291bnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7QUFLMUI7O0dBRUc7QUFJSCxNQUFNLE9BQU8sc0JBQXNCO0lBZ0JiO0lBQWlEO0lBZjdELE9BQU8sR0FBRyxPQUFPLENBQUM7SUFDbEIsV0FBVyxHQUFHLHNCQUFzQixDQUFDO0lBQ3JDLGVBQWUsR0FBRyxrQkFBa0IsQ0FBQztJQUNyQyxjQUFjLEdBQUcsaUJBQWlCLENBQUM7SUFDbkMsT0FBTyxDQUFtQjtJQUMxQixRQUFRLEdBQVcsRUFBRSxDQUFDO0lBQ3RCLFNBQVMsR0FBVyxFQUFFLENBQUM7SUFDdkIsY0FBYyxHQUFXLEVBQUUsQ0FBQztJQUM1QixVQUFVLEdBQVcsRUFBRSxDQUFDO0lBQ3hCLGdCQUFnQixHQUFHLEtBQUssQ0FBQztJQUN6QixRQUFRLEdBQVUsQ0FBQyxDQUFDO0lBQ3BCLGFBQWEsR0FBRyxDQUFDLEVBQUUsR0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLHlDQUF5QztJQUNsRSxXQUFXLEdBQUcsSUFBSSxPQUFPLEVBQVUsQ0FBQztJQUNwQyxTQUFTLENBQU07SUFFdkIsWUFBb0IsSUFBZ0IsRUFBaUMsV0FBbUI7UUFBcEUsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUFpQyxnQkFBVyxHQUFYLFdBQVcsQ0FBUTtRQUN0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QWtCLENBQUMsT0FBZ0I7UUFDeEMsTUFBTSxlQUFlLEdBQVE7WUFDM0IsUUFBUSxFQUFFLE9BQU87U0FDbEIsQ0FBQTtRQUNELE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFdBQVcsR0FBRyxlQUFlLENBQUM7UUFDOUQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBTSxHQUFHLEVBQUUsZUFBZSxDQUFDLENBQUM7SUFDbkQsQ0FBQzt3R0EzU1Esc0JBQXNCLDRDQWdCYSxhQUFhOzRHQWhCaEQsc0JBQXNCLGNBRnJCLE1BQU07OzRGQUVQLHNCQUFzQjtrQkFIbEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQWlCd0MsTUFBTTsyQkFBQyxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcblxuaW1wb3J0IHsgT2VwYVVzZXJBY2NvdW50LCBQcm9ncmFtUHJpdmlsZWdlLCBQcm9ncmFtUHJpdmlsZWdlUmVxdWVzdCwgRGVsZWdhdGlvbiwgT0VQQVJvbGUsIE9lcGFQcml2aWxlZ2UgfSBmcm9tICdAb2hpb2VwYS9vZXBhLWNvbW1vbi1saWInO1xuXG4vKipcbiAqIE9lcGFVc2VyQWNjb3VudFNlcnZpY2UgLSBBIGNvbGxlY3Rpb24gb2YgbWV0aG9kcyBmb3IgYWNjZXNzaW5nIGFuZCBtYW5pcHVsYXRpbmcgdXNlciBhY2NvdW50cy5cbiAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgT2VwYVVzZXJBY2NvdW50U2VydmljZSB7XG4gIHByaXZhdGUgaG9zdFVybCA9ICcvZWJpeic7XG4gIHByaXZhdGUgYWNjb3VudHNVcmwgPSAnL2FwaS92MS91c2VyQWNjb3VudHMnO1xuICBwcml2YXRlIGViaXpBY2NvdW50c1VybCA9ICcvYXBpL3YxL2FjY291bnRzJztcbiAgcHJpdmF0ZSBlYml6U2Vzc2lvblVybCA9ICcvYXBpL3YxL3Nlc3Npb24nO1xuICBwcml2YXRlIGFjY291bnQhOiBPZXBhVXNlckFjY291bnQ7XG4gIHByaXZhdGUgcGVyc29uSUQ6IHN0cmluZyA9ICcnO1xuICBwcml2YXRlIHNlc3Npb25JRDogc3RyaW5nID0gJyc7XG4gIHByaXZhdGUgd2ViYXBwc1Jvb3RVUkw6IHN0cmluZyA9ICcnO1xuICBwcml2YXRlIGxvZ291dFBhdGg6IHN0cmluZyA9ICcnO1xuICBwcml2YXRlIGlkbGVUaW1lclJ1bm5pbmcgPSBmYWxzZTtcbiAgcHJpdmF0ZSBpZGxlVGltZTpudW1iZXIgPSAwO1xuICBwcml2YXRlIGlkbGVUaHJlc2hvbGQgPSAoMjkqNjApOyAvLyAyOSBtaW51dGUgdGltZW91dCB0aHJlc2hvbGQgYnkgZGVmYXVsdFxuICBwcml2YXRlIGlkbGVTdWJqZWN0ID0gbmV3IFN1YmplY3Q8bnVtYmVyPigpO1xuICBwcml2YXRlIHRpbWVvdXRJRDogYW55O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cENsaWVudCwgQEluamVjdCgnZWJpelJvb3RVUkwnKSBwcml2YXRlIGViaXpSb290VVJMOiBzdHJpbmcpIHtcbiAgICB0aGlzLmhvc3RVcmwgPSBlYml6Um9vdFVSTCArIHRoaXMuaG9zdFVybDtcbiAgICB0aGlzLmxvZ291dFBhdGggPSAnL2pzcC9sb2dvdXQuanNwJztcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZSB0aGUgVXNlciBBY2NvdW50IGZvciB0aGUgdXNlciB1c2VyaWQuXG4gICAqIEBwYXJhbSB1c2VyaWRcbiAgICovXG4gIHB1YmxpYyByZXRyaWV2ZUFjY291bnRGb3JVc2VyKHVzZXJpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxPZXBhVXNlckFjY291bnQ+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxPZXBhVXNlckFjY291bnQ+KHRoaXMuaG9zdFVybCArIHRoaXMuYWNjb3VudHNVcmwgKyAnLycgKyB1c2VyaWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlIHRoZSB1c2VyIGFjY291bnQgZm9yIHRoZSBjdXJyZW50bHkgbG9nZ2VkIGluIHVzZXIuXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8T2VwYVVzZXJBY2NvdW50PlxuICAgKi9cbiAgcHVibGljIHJldHJpZXZlQWNjb3VudEZvckN1cnJlbnRVc2VyKCk6IE9ic2VydmFibGU8T2VwYVVzZXJBY2NvdW50PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8T2VwYVVzZXJBY2NvdW50Pih0aGlzLmhvc3RVcmwgKyB0aGlzLmFjY291bnRzVXJsICsgJy9sb2dpbicpLnBpcGUobWFwKChhY2NvdW50OiBPZXBhVXNlckFjY291bnQpID0+IHtcbiAgICAgIGlmICghYWNjb3VudCkge1xuICAgICAgICBpZiAodGhpcy5wZXJzb25JRCAmJiB0aGlzLnNlc3Npb25JRCkge1xuICAgICAgICAgIHRoaXMucmV0cmlldmVBY2NvdW50Rm9ySW50ZXJuYWxTZXNzaW9uKHRoaXMucGVyc29uSUQsIHRoaXMuc2Vzc2lvbklEKS5zdWJzY3JpYmUoe1xuICAgICAgICAgICAgbmV4dDogaW50ZXJuYWxBY2NvdW50ID0+IHtcbiAgICAgICAgICAgIGlmIChpbnRlcm5hbEFjY291bnQpIHtcbiAgICAgICAgICAgICAgdGhpcy5hY2NvdW50ID0gaW50ZXJuYWxBY2NvdW50XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0aGlzLmxvZ01lc3NhZ2VPblNlcnZlcigncmV0cmlldmVBY2NvdW50Rm9yQ3VycmVudFVzZXIgLSBubyBhY2NvdW50LCByZWRpcmVjdGluZyB0byBsb2dvdXQnKTtcbiAgICAgICAgICAgICAgdGhpcy5yZWRpcmVjdFRvTG9nb3V0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSwgZXJyb3I6IGVyciA9PiB7XG4gICAgICAgICAgICB0aGlzLmxvZ01lc3NhZ2VPblNlcnZlcignRmFpbGVkIHJldHJpZXZpbmcgaW50ZXJuYWwgYWNjb3VudDogJyArIGVycik7XG4gICAgICAgICAgICB0aGlzLnJlZGlyZWN0VG9Mb2dvdXQoKTtcbiAgICAgICAgICB9fSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5sb2dNZXNzYWdlT25TZXJ2ZXIoJ3JldHJpZXZlQWNjb3VudEZvckN1cnJlbnRVc2VyIC0gbm8gYWNjb3VudCwgcmVkaXJlY3RpbmcgdG8gbG9nb3V0Jyk7XG4gICAgICAgICAgdGhpcy5yZWRpcmVjdFRvTG9nb3V0KCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuYWNjb3VudCA9IGFjY291bnQ7XG4gICAgICAgIGNvbnNvbGUubG9nKCdyZXRyaWV2ZUFjY291bnRGb3JDdXJyZW50VXNlcjogJyArIHRoaXMuYWNjb3VudD8ubG9naW5OYW1lIHx8ICc8dW5rbm93bj4nKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLmFjY291bnQ7XG4gICAgfSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZGlyZWN0IHRvIGxvZ291dCBzY3JlZW4gaWYgdXNlciBpcyBub3QgZm91bmRcbiAgICovXG4gIHB1YmxpYyByZWRpcmVjdFRvTG9nb3V0KG1zZyA/OiBzdHJpbmcpIHtcbiAgICBsZXQgbG9nb3V0VXJsID0gdGhpcy5sb2dvdXRQYXRoO1xuICAgIGlmICh0aGlzLndlYmFwcHNSb290VVJMKSB7XG4gICAgICBsb2dvdXRVcmwgPSB0aGlzLndlYmFwcHNSb290VVJMICsgKHRoaXMubG9nb3V0UGF0aCB8fCAnJyk7XG4gICAgfVxuICAgIGFsZXJ0KG1zZyB8fCAnQ29ubmVjdGlvbiBsb3N0LiBZb3Ugd2lsbCBiZSByZWRpcmVjdGVkIHRvIHRoZSBsb2dpbiBwYWdlLicpO1xuICAgIGNvbnNvbGUubG9nKCdyZWRpcmVjdGluZyB0byBsb2dvdXRVcmw6JyArIGxvZ291dFVybCk7XG4gICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBsb2dvdXRVcmw7XG4gIH1cblxuICAvKipcbiAgICogUmV0cmlldmUgdGhlIHVzZXIgYWNjb3VudCBmb3IgdGhlIGN1cnJlbnRseSBsb2dnZWQgaW4gdXNlci5cbiAgICogQHBhcmFtIHNlc3Npb25JRCBwZXJzb24gSUQgZm9yIGludGVybmFsIHVzZXJcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxPZXBhVXNlckFjY291bnQ+XG4gICAqL1xuICBwdWJsaWMgcmV0cmlldmVBY2NvdW50Rm9ySW50ZXJuYWxTZXNzaW9uKHBlcnNvbklEOiBzdHJpbmcsIHNlc3Npb25JRDogc3RyaW5nKTogT2JzZXJ2YWJsZTxPZXBhVXNlckFjY291bnQ+IHtcbiAgICB0aGlzLmFjY291bnQgPSB7fTtcbiAgICBjb25zdCB1cmwgPSB0aGlzLmhvc3RVcmwgKyB0aGlzLmFjY291bnRzVXJsICsgJy9pbnRlcm5hbC9wZXJzb25JRC8nICsgcGVyc29uSUQgKyAnL3Nlc3Npb25JRC8nICsgc2Vzc2lvbklEO1xuICAgIGNvbnNvbGUubG9nKCdyZXRyaWV2ZUFjY291bnRGb3JJbnRlcm5hbFNlc3Npb246ICcgKyB1cmwpO1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PE9lcGFVc2VyQWNjb3VudD4odXJsKS5waXBlKG1hcCgoYWNjb3VudDogT2VwYVVzZXJBY2NvdW50KSA9PiB7XG4gICAgICB0aGlzLmFjY291bnQgPSBhY2NvdW50O1xuICAgICAgdGhpcy5wZXJzb25JRCA9IHBlcnNvbklEO1xuICAgICAgdGhpcy5zZXNzaW9uSUQgPSBzZXNzaW9uSUQ7XG4gICAgICBjb25zb2xlLmxvZygncmV0cmlldmVBY2NvdW50Rm9ySW50ZXJuYWxTZXNzaW9uOiAnICsgdGhpcy5hY2NvdW50Py5sb2dpbk5hbWUgfHwgJzx1bmtub3duPicpO1xuICAgICAgcmV0dXJuIGFjY291bnQ7XG4gICAgfSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIERldGVybWluZSB3aGV0aGVyIGFjY291bnQgaGFzIHRoZSByb2xlIHJvbGVOYW1lLlxuICAgKiBAcGFyYW0gYWNjb3VudFxuICAgKiBAcGFyYW0gcm9sZU5hbWVcbiAgICovXG4gIHB1YmxpYyBhY2NvdW50SGFzUm9sZShhY2NvdW50OiBPZXBhVXNlckFjY291bnQsIHJvbGVOYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBsZXQgaGFzUm9sZSA9IGZhbHNlO1xuICAgIGNvbnN0IHJvbGVMaXN0ID0gdGhpcy5nZXRSb2xlTGlzdChhY2NvdW50KTtcbiAgICBpZiAocm9sZUxpc3QgJiYgcm9sZUxpc3QubGVuZ3RoKSB7XG4gICAgICBoYXNSb2xlID0gKHJvbGVMaXN0LmluZGV4T2Yocm9sZU5hbWUpID4gLTEpO1xuICAgIH1cbiAgICByZXR1cm4gaGFzUm9sZTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Um9sZUxpc3QoYWNjb3VudDogT2VwYVVzZXJBY2NvdW50KTogQXJyYXk8c3RyaW5nPiB7XG4gICAgY29uc3Qgcm9sZUxpc3Q6IEFycmF5PHN0cmluZz4gPSBbXTtcbiAgICBpZiAoYWNjb3VudC5yb2xlTGlzdCAmJiBhY2NvdW50LnJvbGVMaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgIGFjY291bnQucm9sZUxpc3QuZm9yRWFjaCgocm9sZTogT0VQQVJvbGUpID0+IHtcbiAgICAgICAgcm9sZUxpc3QucHVzaChyb2xlLm5hbWUgfHwgJycpO1xuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiByb2xlTGlzdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmUgd2hldGhlciBhY2NvdW50IGhhcyB0aGUgcHJpdmlsZWdlIHByaXZpbGVnZVR5cGUuXG4gICAqIEBwYXJhbSBhY2NvdW50XG4gICAqIEBwYXJhbSBwcml2aWxlZ2VUeXBlXG4gICAqL1xuICBwdWJsaWMgYWNjb3VudEhhc1ByaXZpbGVnZShhY2NvdW50OiBPZXBhVXNlckFjY291bnQsIHByaXZpbGVnZVR5cGU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGxldCBoYXNQcml2aWxlZ2UgPSBmYWxzZTtcbiAgICBjb25zdCBwcml2aWxlZ2VMaXN0ID0gdGhpcy5nZXRQcml2aWxlZ2VMaXN0KGFjY291bnQpO1xuICAgIGlmIChwcml2aWxlZ2VMaXN0ICYmIHByaXZpbGVnZUxpc3QubGVuZ3RoKSB7XG4gICAgICBoYXNQcml2aWxlZ2UgPSAocHJpdmlsZWdlTGlzdC5pbmRleE9mKHByaXZpbGVnZVR5cGUpID4gLTEpO1xuICAgIH1cbiAgICByZXR1cm4gaGFzUHJpdmlsZWdlO1xuICB9XG5cbiAgcHVibGljIGdldFByaXZpbGVnZUxpc3QoYWNjb3VudDogT2VwYVVzZXJBY2NvdW50KTogQXJyYXk8c3RyaW5nPiB7XG4gICAgY29uc3QgcHJpdmlsZWdlTGlzdDogQXJyYXk8c3RyaW5nPiA9IFtdO1xuICAgIGlmIChhY2NvdW50LnJvbGVMaXN0ICYmIGFjY291bnQucm9sZUxpc3QubGVuZ3RoID4gMCkge1xuICAgICAgYWNjb3VudC5yb2xlTGlzdC5mb3JFYWNoKChyb2xlOiBPRVBBUm9sZSkgPT4ge1xuICAgICAgICBpZiAocm9sZS5wcml2aWxlZ2VMaXN0ICYmIHJvbGUucHJpdmlsZWdlTGlzdC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgcm9sZS5wcml2aWxlZ2VMaXN0LmZvckVhY2goKHByaXZpbGVnZTogT2VwYVByaXZpbGVnZSkgPT4ge1xuICAgICAgICAgICAgcHJpdmlsZWdlTGlzdC5wdXNoKHByaXZpbGVnZS50eXBlIHx8ICcnKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBwcml2aWxlZ2VMaXN0O1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlIHRoZSB1c2VyQWNjb3VudCBvZiB0aGUgY3VycmVudCB1c2VyLiBUaGUgcmV0cmlldmVBY2NvdW50Rm9yQ3VycmVudFVzZXIgbWV0aG9kXG4gICAqIG11c3QgYmUgaW52b2tlZCBwcmlvciB0byBpbnZva2luZyB0aGlzIG1ldGhvZC5cbiAgICovXG4gIHB1YmxpYyBnZXRDdXJyZW50VXNlckFjY291bnQoKTogT2VwYVVzZXJBY2NvdW50IHtcbiAgICBjb25zb2xlLmxvZygnZ2V0Q3VycmVudFVzZXJBY2NvdW50OiAnICsgdGhpcy5hY2NvdW50Py5sb2dpbk5hbWUgfHwgJzx1bmtub3duPicpO1xuICAgIHJldHVybiB0aGlzLmFjY291bnQ7XG4gIH1cblxuICAvKipcbiAgICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAqIEVCSVogTUVUSE9EUzpcbiAgICogVGhlIG1ldGhvZHMgYmVsb3cgY3VycmVudGx5IGFwcGx5IG9ubHkgdG8gZUJpei5cbiAgICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAqL1xuXG4gIHB1YmxpYyBnZXRXZWJhcHBzUm9vdFVSTCgpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIGlmICh0aGlzLndlYmFwcHNSb290VVJMKSB7XG4gICAgICByZXR1cm4gb2YodGhpcy53ZWJhcHBzUm9vdFVSTCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHVybCA9IHRoaXMuaG9zdFVybCArICcvYXBpL3YxL2dhdGV3YXkvZ2F0ZXdheUNvbmZpZyc7XG4gICAgICByZXR1cm4gdGhpcy5odHRwLmdldDxhbnk+KHVybCkucGlwZShtYXAoKGdhdGV3YXlDb25maWc6YW55KSA9PiB7XG4gICAgICAgIGlmIChnYXRld2F5Q29uZmlnKSB7XG4gICAgICAgICAgdGhpcy53ZWJhcHBzUm9vdFVSTCA9IGdhdGV3YXlDb25maWcud2ViYXBwc1Jvb3RVUkw7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMud2ViYXBwc1Jvb3RVUkw7XG4gICAgICB9KSk7XG4gICAgfVxuICAgIH1cblxuICAvKipcbiAgICogUmV0dXJuIGFycmF5IG9mIFByb2dyYW1Qcml2aWxlZ2VzIG1hdGNoaW5nIHByb2dyYW1Qcml2aWxlZ2VSZXF1ZXN0LlxuICAgKiBAcGFyYW0gcHJvZ3JhbVByaXZpbGVnZVJlcXVlc3RcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxBcnJheTxQcm9ncmFtUHJpdmlsZWdlPj5cbiAgICovXG4gIHB1YmxpYyBzZWFyY2hQcml2aWxlZ2VzKHByb2dyYW1Qcml2aWxlZ2VSZXF1ZXN0OiBQcm9ncmFtUHJpdmlsZWdlUmVxdWVzdCwgYWx0VXNlcklEPzogc3RyaW5nKTogT2JzZXJ2YWJsZTxBcnJheTxQcm9ncmFtUHJpdmlsZWdlPj4ge1xuICAgIGNvbnN0IHVybCA9IHRoaXMuaG9zdFVybCArIHRoaXMuZWJpekFjY291bnRzVXJsICsgJy9wcm9ncmFtUHJpdmlsZWdlcy9zZWFyY2gnICsgKGFsdFVzZXJJRCA/ICc/dXNlcmlkPScgKyBhbHRVc2VySUQgOiAnJyk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PEFycmF5PFByb2dyYW1Qcml2aWxlZ2U+Pih1cmwsIHByb2dyYW1Qcml2aWxlZ2VSZXF1ZXN0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBuZXcgUHJvZ3JhbVByaXZpbGVnZSBiYXNlZCBvbiBjb250ZW50cyBvZiBQcm9ncmFtUHJpdmlsZWdlUmVxdWVzdC5cbiAgICogQHBhcmFtIHByb2dyYW1Qcml2aWxlZ2VSZXF1ZXN0XG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8UHJvZ3JhbVByaXZpbGVnZT9cbiAgICovXG4gIHB1YmxpYyBjcmVhdGVQcm9ncmFtUHJpdmlsZWdlKHByb2dyYW1Qcml2aWxlZ2VSZXF1ZXN0OiBQcm9ncmFtUHJpdmlsZWdlUmVxdWVzdCwgYWx0VXNlcklEPzogc3RyaW5nKTogT2JzZXJ2YWJsZTxQcm9ncmFtUHJpdmlsZWdlPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PFByb2dyYW1Qcml2aWxlZ2U+KHRoaXMuaG9zdFVybCArIHRoaXMuZWJpekFjY291bnRzVXJsICsgJy9wcm9ncmFtUHJpdmlsZWdlcycrIChhbHRVc2VySUQgPyAnP3VzZXJpZD0nICsgYWx0VXNlcklEIDogJycpLCBcbiAgICBwcm9ncmFtUHJpdmlsZWdlUmVxdWVzdCk7XG4gIH1cblxuICAvKipcbiAgICogRGVsZXRlIHRoZSBQcm9ncmFtUHJpdmlsZWdlIGlkZW50aWZpZWQgYnkgcHJvZ3JhbVByaXZpbGVnZUlELlxuICAgKiBAcGFyYW0gcHJvZ3JhbVByaXZpbGVnZUlEXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8dm9pZD5cbiAgICovXG4gIHB1YmxpYyBkZWxldGVQcm9ncmFtUHJpdmlsZWdlKHByb2dyYW1Qcml2aWxlZ2VJRDogc3RyaW5nLCBhbHRVc2VySUQ/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZGVsZXRlKHRoaXMuaG9zdFVybCArIHRoaXMuZWJpekFjY291bnRzVXJsICsgJy9wcm9ncmFtUHJpdmlsZWdlcy8nICsgcHJvZ3JhbVByaXZpbGVnZUlEICsgKGFsdFVzZXJJRCA/ICc/dXNlcmlkPScgKyBhbHRVc2VySUQgOiAnJyksIFxuICAgIHsgcmVzcG9uc2VUeXBlOiAndGV4dCcgfSk7XG4gIH1cblxuICAvKipcbiAgICogRGVsZWdhdGUgYSBwcm9ncmFtIHByaXZpbGVnZSBiYXNlZCBvbiBpbmZvcm1hdGlvbiBpbiBkZWxlZ2F0aW9uLlxuICAgKiBAcGFyYW0gZGVsZWdhdGlvblxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPHZvaWQ+XG4gICAqL1xuICBwdWJsaWMgZGVsZWdhdGVQcm9ncmFtUHJpdmlsZWdlKGRlbGVnYXRpb246IERlbGVnYXRpb24sIGFsdFVzZXJJRD86IHN0cmluZyk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHRoaXMuaG9zdFVybCArIHRoaXMuZWJpekFjY291bnRzVXJsICsgJy9wcm9ncmFtUHJpdmlsZWdlcy9kZWxlZ2F0aW9uJyArIChhbHRVc2VySUQgPyAnP3VzZXJpZD0nICsgYWx0VXNlcklEIDogJycpLFxuICAgIGRlbGVnYXRpb24sIHsgcmVzcG9uc2VUeXBlOiAndGV4dCcgfSk7XG4gIH1cblxuIC8qKlxuICAgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICogSGVscGVyIE1FVEhPRFM6XG4gICAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgKi9cblxuICAgLyoqXG4gICAgKiBTZXQgdGhlIHVzZXIgYWNjb3VudCB0byBiZSB1c2VkIGZvciBcImxpdmUgcmVsb2FkIG1vZGVcIlxuICAgICogQHBhcmFtIHVzZXJBY2NvdW50IFxuICAgICovXG4gICAgcHVibGljIHNldExpdmVSZWxvYWRVc2VyKHVzZXJBY2NvdW50OiBPZXBhVXNlckFjY291bnQpOiBPYnNlcnZhYmxlPE9lcGFVc2VyQWNjb3VudD4ge1xuICAgICAgdGhpcy5hY2NvdW50ID0gdXNlckFjY291bnQ7XG4gICAgICBjb25zb2xlLmxvZygnc2V0TGl2ZVJlbG9hZFVzZXI6ICcgKyB0aGlzLmFjY291bnQ/LmxvZ2luTmFtZSB8fCAnPHVua25vd24+Jyk7XG4gICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8T2VwYVVzZXJBY2NvdW50Pih0aGlzLmhvc3RVcmwgKyB0aGlzLmViaXpBY2NvdW50c1VybCArICcvbGl2ZVJlbG9hZCcsIHVzZXJBY2NvdW50KTtcbiAgICB9XG5cbiAgIC8qKlxuICAgICogU3RvcmVzIHRoZSBnaXZlbiB1c2VyIGluIHRoZSBlQml6IHNlc3Npb24uXG4gICAgKiBAcGFyYW0gYWNjb3VudFVzZXJJRCBcbiAgICAqL1xuICAgcHVibGljIHN0b3JlVXNlckluU2Vzc2lvbihhY2NvdW50VXNlcklEOiBzdHJpbmcpOiBPYnNlcnZhYmxlPE9lcGFVc2VyQWNjb3VudD4ge1xuICAgICBsZXQgYWNjdCA9IHt9IGFzIE9lcGFVc2VyQWNjb3VudDtcbiAgICAgYWNjdC5hY2NvdW50SUQgPSBhY2NvdW50VXNlcklEO1xuICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8T2VwYVVzZXJBY2NvdW50Pih0aGlzLmhvc3RVcmwgKyB0aGlzLmViaXpTZXNzaW9uVXJsICsgJy9zdG9yZVVzZXIvJyArIGFjY291bnRVc2VySUQsIG51bGwpO1xuICAgfVxuXG4gICAgLyoqXG4gICAgICogU2VlIGlmIHRoZSBjdXJyZW50IHVzZXIgc2hvdWxkIGJlIGFsbG93ZWQgdG8gc2VlIFwiZGVtb1wiIGNhcGFiaWxpdGllc1xuICAgICAqL1xuICAgIHB1YmxpYyBkZW1vQ2FwYWJpbGl0aWVzQWxsb3dlZCgpOiBib29sZWFuIHtcbiAgICAgIGxldCBkZW1vQWxsb3dlZCA9IGZhbHNlO1xuICAgICAgaWYgKHRoaXMuYWNjb3VudCAmJiB0aGlzLmFjY291bnQucm9sZUxpc3QpIHtcbiAgICAgICAgdGhpcy5hY2NvdW50LnJvbGVMaXN0LmZvckVhY2gocm9sZSA9PiB7XG4gICAgICAgICAgaWYgKHJvbGUubmFtZSA9PT0gJ0FsbG93RGVtbycpIHtcbiAgICAgICAgICAgIGRlbW9BbGxvd2VkID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGRlbW9BbGxvd2VkO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGFydElkbGVUaW1lcih0aHJlc2hvbGQ/OiBudW1iZXIpIHtcbiAgICAgIGlmICh0aGlzLnRpbWVvdXRJRCkge1xuICAgICAgICBjbGVhclRpbWVvdXQodGhpcy50aW1lb3V0SUQpO1xuICAgICAgfVxuICAgICAgdGhpcy5pZGxlVGhyZXNob2xkID0gdGhyZXNob2xkIHx8IHRoaXMuaWRsZVRocmVzaG9sZDtcbiAgICAgIGlmICghdGhpcy5pZGxlVGltZXJSdW5uaW5nKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdUaGUgaWRsZSB0aW1lb3V0IHN0YXJ0ZWQgd2l0aCB0aHJlc2hvbGQ6ICcgKyB0aGlzLmlkbGVUaHJlc2hvbGQpO1xuICAgICAgICB0aGlzLmlkbGVUaW1lclJ1bm5pbmcgPSB0cnVlO1xuICAgICAgICB0aGlzLmNoZWNrVGltZW91dCgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyByZXNldElkbGVUaW1lKCkge1xuICAgICAgY29uc29sZS5sb2coJ2lkbGUgdGltZXIgcmVzZXQnKTtcbiAgICAgIHRoaXMuaWRsZVRpbWUgPSAwO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2hlY2tUaW1lb3V0KCkge1xuICAgICAgdGhpcy50aW1lb3V0SUQgPSBzZXRUaW1lb3V0KCgpPT4ge1xuICAgICAgICB0aGlzLmlkbGVUaW1lICs9IDYwO1xuICAgICAgICBjb25zb2xlLmxvZygnaWRsZSB0aW1lID0gJyArIHRoaXMuaWRsZVRpbWUgKyBcIiwgdGhyZXNob2xkID0gXCIgKyB0aGlzLmlkbGVUaHJlc2hvbGQpO1xuICAgICAgICBpZiAodGhpcy5pZGxlVGltZSA+PSB0aGlzLmlkbGVUaHJlc2hvbGQpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZygnZmlyaW5nIG5leHQgaWRsZVN1YmplY3QuLi4nKTtcbiAgICAgICAgICB0aGlzLmlkbGVUaW1lclJ1bm5pbmcgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLmlkbGVTdWJqZWN0Lm5leHQodGhpcy5pZGxlVGltZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKHRoaXMudGltZW91dElEKSB7XG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy50aW1lb3V0SUQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLmNoZWNrVGltZW91dCgpO1xuICAgICAgICB9XG4gICAgICB9LCA2MDAwMCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldElkbGVUaW1lb3V0KCk6IE9ic2VydmFibGU8bnVtYmVyPiB7XG4gICAgICByZXR1cm4gdGhpcy5pZGxlU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgICB9XG4gICAgXG4gICAgcHVibGljIGxvZ01lc3NhZ2VPblNlcnZlcihtZXNzYWdlPzogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAgIGNvbnN0IG1lc3NhZ2VSZXNwb25zZTogYW55ID0ge1xuICAgICAgICByZXNwb25zZTogbWVzc2FnZVxuICAgICAgfVxuICAgICAgY29uc3QgdXJsID0gdGhpcy5ob3N0VXJsICsgdGhpcy5hY2NvdW50c1VybCArICcvbG9ncy9tZXNzYWdlJztcbiAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxhbnk+KHVybCwgbWVzc2FnZVJlc3BvbnNlKTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -1,11 +1,14 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
1
|
+
import { Inject, Injectable } from '@angular/core';
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
3
|
import * as i1 from "@angular/common/http";
|
|
4
4
|
export class ParameterService {
|
|
5
5
|
http;
|
|
6
|
+
ebizRootURL;
|
|
6
7
|
baseUrl = '/ebiz/api/v1/parameters';
|
|
7
|
-
constructor(http) {
|
|
8
|
+
constructor(http, ebizRootURL) {
|
|
8
9
|
this.http = http;
|
|
10
|
+
this.ebizRootURL = ebizRootURL;
|
|
11
|
+
this.baseUrl = ebizRootURL + this.baseUrl;
|
|
9
12
|
}
|
|
10
13
|
retrieveParameterByName(parameterName) {
|
|
11
14
|
let url = this.baseUrl + '/names/' + parameterName;
|
|
@@ -35,7 +38,7 @@ export class ParameterService {
|
|
|
35
38
|
let url = this.baseUrl + '/' + parameter.id;
|
|
36
39
|
return this.http.put(url, parameter);
|
|
37
40
|
}
|
|
38
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ParameterService, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
41
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ParameterService, deps: [{ token: i1.HttpClient }, { token: 'ebizRootURL' }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
39
42
|
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ParameterService, providedIn: 'root' });
|
|
40
43
|
}
|
|
41
44
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ParameterService, decorators: [{
|
|
@@ -43,5 +46,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
43
46
|
args: [{
|
|
44
47
|
providedIn: 'root'
|
|
45
48
|
}]
|
|
46
|
-
}], ctorParameters: () => [{ type: i1.HttpClient }
|
|
47
|
-
|
|
49
|
+
}], ctorParameters: () => [{ type: i1.HttpClient }, { type: undefined, decorators: [{
|
|
50
|
+
type: Inject,
|
|
51
|
+
args: ['ebizRootURL']
|
|
52
|
+
}] }] });
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyYW1ldGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vZXBhLXVpLWxpYi9zcmMvbGliL3BhcmFtZXRlci9wYXJhbWV0ZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBU25ELE1BQU0sT0FBTyxnQkFBZ0I7SUFHSDtJQUFpRDtJQUY3RCxPQUFPLEdBQVcseUJBQXlCLENBQUM7SUFFdEQsWUFBc0IsSUFBZ0IsRUFBaUMsV0FBbUI7UUFBcEUsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUFpQyxnQkFBVyxHQUFYLFdBQVcsQ0FBUTtRQUN0RixJQUFJLENBQUMsT0FBTyxHQUFHLFdBQVcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQzlDLENBQUM7SUFFTSx1QkFBdUIsQ0FBQyxhQUFxQjtRQUNoRCxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxHQUFHLFNBQVMsR0FBRyxhQUFhLENBQUM7UUFDbkQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBWSxHQUFHLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRU0scUJBQXFCLENBQUMsV0FBbUI7UUFDNUMsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sR0FBRyxHQUFHLEdBQUcsV0FBVyxDQUFDO1FBQzNDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQVksR0FBRyxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVNLGVBQWUsQ0FBQyxTQUFvQjtRQUN2QyxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQVMsR0FBRyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFTSxlQUFlLENBQUMsV0FBbUI7UUFDdEMsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sR0FBRyxHQUFHLEdBQUcsV0FBVyxDQUFDO1FBQzNDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVNLHFCQUFxQixDQUFDLGFBQXFCO1FBQzlDLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLEdBQUcsU0FBUyxHQUFHLGFBQWEsQ0FBQztRQUNuRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFTSx5QkFBeUIsQ0FBQyxNQUFjO1FBQzNDLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLEdBQUcsY0FBYyxHQUFHLE1BQU0sQ0FBQztRQUNqRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFjLEdBQUcsQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFTSxlQUFlLENBQUMsU0FBb0I7UUFDdkMsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sR0FBRyxHQUFHLEdBQUcsU0FBUyxDQUFDLEVBQUUsQ0FBQztRQUM1QyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUN6QyxDQUFDO3dHQXhDUSxnQkFBZ0IsNENBR3VCLGFBQWE7NEdBSHBELGdCQUFnQixjQUZiLE1BQU07OzRGQUVULGdCQUFnQjtrQkFINUIsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckI7OzBCQUk0QyxNQUFNOzJCQUFDLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uL2h0dHBcIjtcbmltcG9ydCB7IFBhcmFtZXRlciB9IGZyb20gJy4vcGFyYW1ldGVyJztcblxuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFBhcmFtZXRlclNlcnZpY2Uge1xuICAgIHByb3RlY3RlZCBiYXNlVXJsOiBzdHJpbmcgPSAnL2ViaXovYXBpL3YxL3BhcmFtZXRlcnMnO1xuXG4gICAgY29uc3RydWN0b3IocHJvdGVjdGVkIGh0dHA6IEh0dHBDbGllbnQsIEBJbmplY3QoJ2ViaXpSb290VVJMJykgcHJpdmF0ZSBlYml6Um9vdFVSTDogc3RyaW5nKSB7ICBcbiAgICAgICAgdGhpcy5iYXNlVXJsID0gZWJpelJvb3RVUkwgKyB0aGlzLmJhc2VVcmw7XG4gICAgfVxuXG4gICAgcHVibGljIHJldHJpZXZlUGFyYW1ldGVyQnlOYW1lKHBhcmFtZXRlck5hbWU6IHN0cmluZykgOiBPYnNlcnZhYmxlPFBhcmFtZXRlcj4ge1xuICAgICAgICBsZXQgdXJsID0gdGhpcy5iYXNlVXJsICsgJy9uYW1lcy8nICsgcGFyYW1ldGVyTmFtZTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8UGFyYW1ldGVyPih1cmwpO1xuICAgIH1cblxuICAgIHB1YmxpYyByZXRyaWV2ZVBhcmFtZXRlckJ5SUQocGFyYW1ldGVySUQ6IHN0cmluZykgOiBPYnNlcnZhYmxlPFBhcmFtZXRlcj4ge1xuICAgICAgICBsZXQgdXJsID0gdGhpcy5iYXNlVXJsICsgJy8nICsgcGFyYW1ldGVySUQ7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PFBhcmFtZXRlcj4odXJsKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY3JlYXRlUGFyYW1ldGVyKHBhcmFtZXRlcjogUGFyYW1ldGVyKSA6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgICAgIGxldCB1cmwgPSB0aGlzLmJhc2VVcmw7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxzdHJpbmc+KHVybCwgcGFyYW1ldGVyKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZGVsZXRlUGFyYW1ldGVyKHBhcmFtZXRlcklEOiBzdHJpbmcpIDogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAgICAgbGV0IHVybCA9IHRoaXMuYmFzZVVybCArICcvJyArIHBhcmFtZXRlcklEO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmRlbGV0ZSh1cmwpO1xuICAgIH1cblxuICAgIHB1YmxpYyBkZWxldGVQYXJhbWV0ZXJCeU5hbWUocGFyYW1ldGVyTmFtZTogc3RyaW5nKSA6IE9ic2VydmFibGU8YW55PiB7XG4gICAgICAgIGxldCB1cmwgPSB0aGlzLmJhc2VVcmwgKyAnL25hbWVzLycgKyBwYXJhbWV0ZXJOYW1lO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmRlbGV0ZSh1cmwpO1xuICAgIH1cblxuICAgIHB1YmxpYyByZXRyaWV2ZVBhcmFtZXRlckJ5UHJlZml4KHByZWZpeDogc3RyaW5nKSA6IE9ic2VydmFibGU8UGFyYW1ldGVyW10+IHtcbiAgICAgICAgbGV0IHVybCA9IHRoaXMuYmFzZVVybCArICcvbmFtZVByZWZpeC8nICsgcHJlZml4O1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldDxQYXJhbWV0ZXJbXT4odXJsKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdXBkYXRlUGFyYW1ldGVyKHBhcmFtZXRlcjogUGFyYW1ldGVyKSA6IE9ic2VydmFibGU8YW55PiB7XG4gICAgICAgIGxldCB1cmwgPSB0aGlzLmJhc2VVcmwgKyAnLycgKyBwYXJhbWV0ZXIuaWQ7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucHV0KHVybCwgcGFyYW1ldGVyKTtcbiAgICB9XG59Il19
|
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
import { Component, Input } from '@angular/core';
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
3
|
import * as i1 from "@angular/router";
|
|
4
|
-
import * as i2 from "
|
|
4
|
+
import * as i2 from "./params-help.service";
|
|
5
5
|
import * as i3 from "@angular/common";
|
|
6
6
|
export class ParamsHelpButtonComponent {
|
|
7
7
|
router;
|
|
8
|
-
|
|
8
|
+
helpService;
|
|
9
9
|
helpURL = '';
|
|
10
10
|
title = 'Click here for instructions or call (614) 466-0061';
|
|
11
11
|
anchorClass = '';
|
|
12
|
-
constructor(router,
|
|
12
|
+
constructor(router, helpService) {
|
|
13
13
|
this.router = router;
|
|
14
|
-
this.
|
|
14
|
+
this.helpService = helpService;
|
|
15
15
|
}
|
|
16
16
|
ngOnInit() {
|
|
17
17
|
const helpURLParamName = this.router.url.replace(new RegExp('/', 'g'), '.');
|
|
18
|
-
this.
|
|
18
|
+
this.helpService.retrieveHelpURL(helpURLParamName).subscribe({
|
|
19
19
|
next: url => {
|
|
20
20
|
if (url && url.length > 0) {
|
|
21
21
|
this.helpURL = url;
|
|
@@ -28,15 +28,15 @@ export class ParamsHelpButtonComponent {
|
|
|
28
28
|
}
|
|
29
29
|
});
|
|
30
30
|
}
|
|
31
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ParamsHelpButtonComponent, deps: [{ token: i1.Router }, { token: i2.
|
|
31
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ParamsHelpButtonComponent, deps: [{ token: i1.Router }, { token: i2.ParamsHelpService }], target: i0.ɵɵFactoryTarget.Component });
|
|
32
32
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ParamsHelpButtonComponent, selector: "oepa-params-help-button", inputs: { title: "title", anchorClass: "anchorClass" }, ngImport: i0, template: "<a *ngIf=\"helpURL\" [href]=\"helpURL\" [class]=\"anchorClass\" target=\"_blank\" [title]=\"title\">\n <i class=\"bi bi-question-circle\"></i>\n</a>\n", styles: [""], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
33
33
|
}
|
|
34
34
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ParamsHelpButtonComponent, decorators: [{
|
|
35
35
|
type: Component,
|
|
36
36
|
args: [{ selector: 'oepa-params-help-button', template: "<a *ngIf=\"helpURL\" [href]=\"helpURL\" [class]=\"anchorClass\" target=\"_blank\" [title]=\"title\">\n <i class=\"bi bi-question-circle\"></i>\n</a>\n" }]
|
|
37
|
-
}], ctorParameters: () => [{ type: i1.Router }, { type: i2.
|
|
37
|
+
}], ctorParameters: () => [{ type: i1.Router }, { type: i2.ParamsHelpService }], propDecorators: { title: [{
|
|
38
38
|
type: Input
|
|
39
39
|
}], anchorClass: [{
|
|
40
40
|
type: Input
|
|
41
41
|
}] } });
|
|
42
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyYW1zLWhlbHAtYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29lcGEtdWktbGliL3NyYy9saWIvcGFyYW1zLWhlbHAtYnV0dG9uL3BhcmFtcy1oZWxwLWJ1dHRvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vZXBhLXVpLWxpYi9zcmMvbGliL3BhcmFtcy1oZWxwLWJ1dHRvbi9wYXJhbXMtaGVscC1idXR0b24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7O0FBU3pELE1BQU0sT0FBTyx5QkFBeUI7SUFNaEI7SUFBd0I7SUFMckMsT0FBTyxHQUFXLEVBQUUsQ0FBQztJQUVuQixLQUFLLEdBQUcsb0RBQW9ELENBQUM7SUFDN0QsV0FBVyxHQUFHLEVBQUUsQ0FBQztJQUUxQixZQUFvQixNQUFjLEVBQVUsV0FBOEI7UUFBdEQsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUFVLGdCQUFXLEdBQVgsV0FBVyxDQUFtQjtJQUMxRSxDQUFDO0lBRUQsUUFBUTtRQUNOLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksTUFBTSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUM1RSxJQUFJLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUMzRCxJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQUU7Z0JBQ1osSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztvQkFDMUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUM7Z0JBQ3JCLENBQUM7cUJBQU0sQ0FBQztvQkFDTixPQUFPLENBQUMsR0FBRyxDQUFDLDBCQUEwQixHQUFHLGdCQUFnQixDQUFDLENBQUM7Z0JBQzdELENBQUM7WUFDSCxDQUFDLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQyxFQUFFO2dCQUNkLE9BQU8sQ0FBQyxHQUFHLENBQUMsa0NBQWtDLEdBQUcsZ0JBQWdCLEdBQUcsS0FBSyxHQUFHLEdBQUcsQ0FBQyxDQUFDO1lBQ25GLENBQUM7U0FBQyxDQUFDLENBQUM7SUFDTixDQUFDO3dHQXJCVSx5QkFBeUI7NEZBQXpCLHlCQUF5Qix1SENUdEMseUpBR0E7OzRGRE1hLHlCQUF5QjtrQkFMckMsU0FBUzsrQkFDRSx5QkFBeUI7MkdBTzFCLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgUGFyYW1zSGVscFNlcnZpY2UgfSBmcm9tICcuL3BhcmFtcy1oZWxwLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdvZXBhLXBhcmFtcy1oZWxwLWJ1dHRvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9wYXJhbXMtaGVscC1idXR0b24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9wYXJhbXMtaGVscC1idXR0b24uY29tcG9uZW50LmNzcyddXG59KVxuZXhwb3J0IGNsYXNzIFBhcmFtc0hlbHBCdXR0b25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBwdWJsaWMgaGVscFVSTDogc3RyaW5nID0gJyc7XG5cbiAgQElucHV0KCkgdGl0bGUgPSAnQ2xpY2sgaGVyZSBmb3IgaW5zdHJ1Y3Rpb25zIG9yIGNhbGwgKDYxNCkgNDY2LTAwNjEnO1xuICBASW5wdXQoKSBhbmNob3JDbGFzcyA9ICcnO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsIHByaXZhdGUgaGVscFNlcnZpY2U6IFBhcmFtc0hlbHBTZXJ2aWNlKSB7IFxuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgY29uc3QgaGVscFVSTFBhcmFtTmFtZSA9IHRoaXMucm91dGVyLnVybC5yZXBsYWNlKG5ldyBSZWdFeHAoJy8nLCAnZycpLCAnLicpO1xuICAgIHRoaXMuaGVscFNlcnZpY2UucmV0cmlldmVIZWxwVVJMKGhlbHBVUkxQYXJhbU5hbWUpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiB1cmwgPT4ge1xuICAgICAgaWYgKHVybCAmJiB1cmwubGVuZ3RoID4gMCkge1xuICAgICAgICB0aGlzLmhlbHBVUkwgPSB1cmw7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zb2xlLmxvZygnSGVscCBVUkwgd2FzIGVtcHR5IGZvcjogJyArIGhlbHBVUkxQYXJhbU5hbWUpO1xuICAgICAgfVxuICAgIH0sIGVycm9yOiBlcnIgPT4ge1xuICAgICAgY29uc29sZS5sb2coJ0ZhaWxlZCByZXRyaWV2aW5nIEhlbHAgVVJMIGZvcjogJyArIGhlbHBVUkxQYXJhbU5hbWUgKyAnIC0gJyArIGVycik7XG4gICAgfX0pO1xuICB9XG5cbn1cbiIsIjxhICpuZ0lmPVwiaGVscFVSTFwiIFtocmVmXT1cImhlbHBVUkxcIiBbY2xhc3NdPVwiYW5jaG9yQ2xhc3NcIiB0YXJnZXQ9XCJfYmxhbmtcIiBbdGl0bGVdPVwidGl0bGVcIj5cbiAgPGkgY2xhc3M9XCJiaSBiaS1xdWVzdGlvbi1jaXJjbGVcIj48L2k+XG48L2E+XG4iXX0=
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { Inject, Injectable } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@angular/common/http";
|
|
4
|
+
export class ParamsHelpService {
|
|
5
|
+
http;
|
|
6
|
+
baseURL = '/ebiz/api/v1/gateway/helpURLs/';
|
|
7
|
+
constructor(http, ebizRootURL) {
|
|
8
|
+
this.http = http;
|
|
9
|
+
this.baseURL = ebizRootURL + this.baseURL;
|
|
10
|
+
}
|
|
11
|
+
retrieveHelpURL(helpURLParamName) {
|
|
12
|
+
return this.http.get(this.baseURL + helpURLParamName, { responseType: 'text' });
|
|
13
|
+
}
|
|
14
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ParamsHelpService, deps: [{ token: i1.HttpClient }, { token: 'ebizRootURL' }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
15
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ParamsHelpService, providedIn: 'root' });
|
|
16
|
+
}
|
|
17
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ParamsHelpService, decorators: [{
|
|
18
|
+
type: Injectable,
|
|
19
|
+
args: [{
|
|
20
|
+
providedIn: 'root'
|
|
21
|
+
}]
|
|
22
|
+
}], ctorParameters: () => [{ type: i1.HttpClient }, { type: undefined, decorators: [{
|
|
23
|
+
type: Inject,
|
|
24
|
+
args: ['ebizRootURL']
|
|
25
|
+
}] }] });
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyYW1zLWhlbHAuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29lcGEtdWktbGliL3NyYy9saWIvcGFyYW1zLWhlbHAtYnV0dG9uL3BhcmFtcy1oZWxwLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQU1uRCxNQUFNLE9BQU8saUJBQWlCO0lBR1I7SUFGWixPQUFPLEdBQUcsZ0NBQWdDLENBQUM7SUFFbkQsWUFBb0IsSUFBZ0IsRUFBeUIsV0FBbUI7UUFBNUQsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNsQyxJQUFJLENBQUMsT0FBTyxHQUFHLFdBQVcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQzVDLENBQUM7SUFFTSxlQUFlLENBQUMsZ0JBQXdCO1FBQzdDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxnQkFBZ0IsRUFBRSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ2xGLENBQUM7d0dBVFUsaUJBQWlCLDRDQUdrQixhQUFhOzRHQUhoRCxpQkFBaUIsY0FGaEIsTUFBTTs7NEZBRVAsaUJBQWlCO2tCQUg3QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBSXdDLE1BQU07MkJBQUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQYXJhbXNIZWxwU2VydmljZSB7XHJcbiAgcHJpdmF0ZSBiYXNlVVJMID0gJy9lYml6L2FwaS92MS9nYXRld2F5L2hlbHBVUkxzLyc7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cENsaWVudCwgQEluamVjdCgnZWJpelJvb3RVUkwnKSBlYml6Um9vdFVSTDogc3RyaW5nKSB7ICAgICBcclxuICAgIHRoaXMuYmFzZVVSTCA9IGViaXpSb290VVJMICsgdGhpcy5iYXNlVVJMO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHJldHJpZXZlSGVscFVSTChoZWxwVVJMUGFyYW1OYW1lOiBzdHJpbmcpIDogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuYmFzZVVSTCArIGhlbHBVUkxQYXJhbU5hbWUsIHsgcmVzcG9uc2VUeXBlOiAndGV4dCcgfSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -1,11 +1,14 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
1
|
+
import { Inject, Injectable } from '@angular/core';
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
3
|
import * as i1 from "@angular/common/http";
|
|
4
4
|
export class OepaPinService {
|
|
5
5
|
http;
|
|
6
|
+
ebizRootURL;
|
|
6
7
|
pinsUrl = '/ebiz/api/v1/pins';
|
|
7
|
-
constructor(http) {
|
|
8
|
+
constructor(http, ebizRootURL) {
|
|
8
9
|
this.http = http;
|
|
10
|
+
this.ebizRootURL = ebizRootURL;
|
|
11
|
+
this.pinsUrl = ebizRootURL + this.pinsUrl;
|
|
9
12
|
}
|
|
10
13
|
/**
|
|
11
14
|
* Retrieve an attestation by id.
|
|
@@ -42,7 +45,7 @@ export class OepaPinService {
|
|
|
42
45
|
retrievePin(userID) {
|
|
43
46
|
return this.http.get(this.pinsUrl + '/' + userID);
|
|
44
47
|
}
|
|
45
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OepaPinService, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
48
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OepaPinService, deps: [{ token: i1.HttpClient }, { token: 'ebizRootURL' }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
46
49
|
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OepaPinService, providedIn: 'root' });
|
|
47
50
|
}
|
|
48
51
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OepaPinService, decorators: [{
|
|
@@ -50,5 +53,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
50
53
|
args: [{
|
|
51
54
|
providedIn: 'root'
|
|
52
55
|
}]
|
|
53
|
-
}], ctorParameters: () => [{ type: i1.HttpClient }
|
|
54
|
-
|
|
56
|
+
}], ctorParameters: () => [{ type: i1.HttpClient }, { type: undefined, decorators: [{
|
|
57
|
+
type: Inject,
|
|
58
|
+
args: ['ebizRootURL']
|
|
59
|
+
}] }] });
|
|
60
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2VwYS1waW4uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29lcGEtdWktbGliL3NyYy9saWIvcGluLW1vZGFsL29lcGEtcGluLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQVluRCxNQUFNLE9BQU8sY0FBYztJQUdMO0lBQWlEO0lBRjdELE9BQU8sR0FBRyxtQkFBbUIsQ0FBQztJQUV0QyxZQUFvQixJQUFnQixFQUFpQyxXQUFtQjtRQUFwRSxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQWlDLGdCQUFXLEdBQVgsV0FBVyxDQUFRO1FBQ3RGLElBQUksQ0FBQyxPQUFPLEdBQUcsV0FBVyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDNUMsQ0FBQztJQUVEOzs7T0FHRztJQUNJLHVCQUF1QixDQUFDLGFBQXFCO1FBQ2xELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQWtCLElBQUksQ0FBQyxPQUFPLEdBQUcsaUJBQWlCLEdBQUcsYUFBYSxDQUFDLENBQUM7SUFDMUYsQ0FBQztJQUVEOzs7T0FHRztJQUNJLG1CQUFtQixDQUFDLGVBQXVCO1FBQ2hELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQWtCLElBQUksQ0FBQyxPQUFPLEdBQUcsZUFBZSxHQUFHLGVBQWUsQ0FBQyxDQUFDO0lBQzFGLENBQUM7SUFFRDs7T0FFRztJQUNJLHdCQUF3QjtRQUM3QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUF1QixJQUFJLENBQUMsT0FBTyxHQUFHLG1CQUFtQixDQUFDLENBQUM7SUFDakYsQ0FBQztJQUVEOzs7T0FHRztJQUNJLFFBQVEsQ0FBQyxHQUFZO1FBQzFCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQVUsSUFBSSxDQUFDLE9BQU8sR0FBRyxXQUFXLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxXQUFXLENBQUMsTUFBYztRQUMvQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFVLElBQUksQ0FBQyxPQUFPLEdBQUcsR0FBRyxHQUFHLE1BQU0sQ0FBQyxDQUFDO0lBQzdELENBQUM7d0dBN0NVLGNBQWMsNENBR3FCLGFBQWE7NEdBSGhELGNBQWMsY0FGYixNQUFNOzs0RkFFUCxjQUFjO2tCQUgxQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBSXdDLE1BQU07MkJBQUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgT2VwYUF0dGVzdGF0aW9uIH0gZnJvbSAnLi9vZXBhLWF0dGVzdGF0aW9uJztcbmltcG9ydCB7IE9lcGFTZWN1cml0eVF1ZXN0aW9uIH0gZnJvbSAnLi9vZXBhLXNlY3VyaXR5LXF1ZXN0aW9uJztcbmltcG9ydCB7IE9lcGFQaW4gfSBmcm9tICcuL29lcGEtcGluJztcblxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBPZXBhUGluU2VydmljZSB7XG4gIHByaXZhdGUgcGluc1VybCA9ICcvZWJpei9hcGkvdjEvcGlucyc7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LCBASW5qZWN0KCdlYml6Um9vdFVSTCcpIHByaXZhdGUgZWJpelJvb3RVUkw6IHN0cmluZykge1xuICAgIHRoaXMucGluc1VybCA9IGViaXpSb290VVJMICsgdGhpcy5waW5zVXJsO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlIGFuIGF0dGVzdGF0aW9uIGJ5IGlkLlxuICAgKiBAcGFyYW0gYXR0ZXN0YXRpb25JRFxuICAgKi9cbiAgcHVibGljIHJldHJpZXZlQXR0ZXN0YXRpb25CeUlEKGF0dGVzdGF0aW9uSUQ6IHN0cmluZyk6IE9ic2VydmFibGU8T2VwYUF0dGVzdGF0aW9uPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8T2VwYUF0dGVzdGF0aW9uPih0aGlzLnBpbnNVcmwgKyAnL2F0dGVzdGF0aW9uSWQvJyArIGF0dGVzdGF0aW9uSUQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlIGFuIGF0dGVzdGF0aW9uIG9mIHRoZSBzcGVjaWZpZWQgdHlwZS5cbiAgICogQHBhcmFtIGF0dGVzdGF0aW9uVHlwZVxuICAgKi9cbiAgcHVibGljIHJldHJpZXZlQXR0ZXN0YXRpb24oYXR0ZXN0YXRpb25UeXBlOiBzdHJpbmcpOiBPYnNlcnZhYmxlPE9lcGFBdHRlc3RhdGlvbj4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PE9lcGFBdHRlc3RhdGlvbj4odGhpcy5waW5zVXJsICsgJy9hdHRlc3RhdGlvbi8nICsgYXR0ZXN0YXRpb25UeXBlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZSBhIHJhbmRvbSBzZWN1cml0eSBxdWVzdGlvbiBmb3IgdGhlIGN1cnJlbnQgdXNlci5cbiAgICovXG4gIHB1YmxpYyByZXRyaWV2ZVNlY3VyaXR5UXVlc3Rpb24oKTogT2JzZXJ2YWJsZTxPZXBhU2VjdXJpdHlRdWVzdGlvbj4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PE9lcGFTZWN1cml0eVF1ZXN0aW9uPih0aGlzLnBpbnNVcmwgKyAnL3NlY3VyaXR5UXVlc3Rpb24nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZSB0aGUgcGluIGVudGVyZWQgYnkgYSB1c2VyLlxuICAgKiBAcGFyYW0gcGluXG4gICAqL1xuICBwdWJsaWMgdmFsaWRhdGUocGluOiBPZXBhUGluKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PGJvb2xlYW4+KHRoaXMucGluc1VybCArICcvdmFsaWRhdGUnLCBwaW4pO1xuICB9XG5cbiAgLyoqXG4gICAqIFxuICAgKiBAcGFyYW0gdXNlcklEIFJldHJpZXZlIHRoZSBQaW4gZm9yIHRoZSBzcGVjaWZpZWQgdXNlcklEXG4gICAqIEByZXR1cm5zIE9lcGFQaW5cbiAgICovXG4gIHB1YmxpYyByZXRyaWV2ZVBpbih1c2VySUQ6IHN0cmluZyk6IE9ic2VydmFibGU8T2VwYVBpbj4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PE9lcGFQaW4+KHRoaXMucGluc1VybCArICcvJyArIHVzZXJJRCk7XG4gIH1cblxufVxuIl19
|