@csmart/ngc-smart-victim 0.1.5 → 0.1.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (128) hide show
  1. package/karma.conf.js +32 -0
  2. package/ng-package.json +7 -0
  3. package/package.json +13 -26
  4. package/src/lib/caseNote/caseNote.component.css +20 -0
  5. package/src/lib/caseNote/caseNote.component.html +188 -0
  6. package/src/lib/caseNote/caseNote.component.ts +248 -0
  7. package/src/lib/common-dialog/common-dialog.component.css +10 -0
  8. package/src/lib/common-dialog/common-dialog.component.html +23 -0
  9. package/src/lib/common-dialog/common-dialog.component.spec.ts +25 -0
  10. package/src/lib/common-dialog/common-dialog.component.ts +21 -0
  11. package/src/lib/common-dialog/common-dialog.module.ts +25 -0
  12. package/src/lib/common-dialog/common-dialog.service.ts +35 -0
  13. package/src/lib/contact/contact.component.css +20 -0
  14. package/src/lib/contact/contact.component.html +124 -0
  15. package/src/lib/contact/contact.component.ts +176 -0
  16. package/src/lib/intake.service.ts +82 -0
  17. package/src/lib/safetyPlan/serviceProvider.component.ts +94 -0
  18. package/src/lib/safetyPlan/victimSafetyPlan.component.css +27 -0
  19. package/src/lib/safetyPlan/victimSafetyPlan.component.html +85 -0
  20. package/src/lib/safetyPlan/victimSafetyPlan.component.ts +178 -0
  21. package/src/lib/safetyPlan/victimSafetyPlanDetail.component.html +234 -0
  22. package/src/lib/safetyPlan/victimSafetyPlanDetail.component.ts +492 -0
  23. package/src/lib/shared/app.shared.module.ts +118 -0
  24. package/src/lib/shared/directives/phone-mask.directive.ts +41 -0
  25. package/src/lib/shared/validators/date.validator.ts +73 -0
  26. package/src/lib/shared/validators/index.ts +1 -0
  27. package/src/lib/smart-victim-delete-confirm.component.ts +35 -0
  28. package/src/lib/smart-victim-detail/smart-victim-detail.component.css +43 -0
  29. package/src/lib/smart-victim-detail/smart-victim-detail.component.html +860 -0
  30. package/src/lib/smart-victim-detail/smart-victim-detail.component.spec.ts +25 -0
  31. package/src/lib/smart-victim-detail/smart-victim-detail.component.ts +1241 -0
  32. package/src/lib/smart-victim.component.css +192 -0
  33. package/src/lib/smart-victim.component.html +133 -0
  34. package/src/lib/smart-victim.component.spec.ts +25 -0
  35. package/src/lib/smart-victim.component.ts +323 -0
  36. package/src/lib/smart-victim.model.ts +301 -0
  37. package/src/lib/smart-victim.module.ts +116 -0
  38. package/src/lib/smart-victim.service.spec.ts +12 -0
  39. package/src/lib/smart-victim.service.ts +563 -0
  40. package/src/lib/victim-routing.module.ts +34 -0
  41. package/{lib/victimSearch/VictimSearchFilter.d.ts → src/lib/victimSearch/VictimSearchFilter.ts} +4 -2
  42. package/src/lib/victimSearch/victimSearchForm.component.html +35 -0
  43. package/src/lib/victimSearch/victimSearchForm.component.ts +41 -0
  44. package/src/public-api.ts +12 -0
  45. package/src/test.ts +22 -0
  46. package/tsconfig.lib.json +37 -0
  47. package/tsconfig.spec.json +17 -0
  48. package/tslint.json +17 -0
  49. package/bundles/csmart-ngc-smart-victim.umd.js +0 -6426
  50. package/bundles/csmart-ngc-smart-victim.umd.js.map +0 -1
  51. package/bundles/csmart-ngc-smart-victim.umd.min.js +0 -16
  52. package/bundles/csmart-ngc-smart-victim.umd.min.js.map +0 -1
  53. package/csmart-ngc-smart-victim.d.ts +0 -19
  54. package/csmart-ngc-smart-victim.metadata.json +0 -1
  55. package/esm2015/csmart-ngc-smart-victim.js +0 -25
  56. package/esm2015/lib/caseNote/caseNote.component.js +0 -349
  57. package/esm2015/lib/common-dialog/common-dialog.component.js +0 -46
  58. package/esm2015/lib/common-dialog/common-dialog.module.js +0 -32
  59. package/esm2015/lib/common-dialog/common-dialog.service.js +0 -63
  60. package/esm2015/lib/contact/contact.component.js +0 -228
  61. package/esm2015/lib/intake.service.js +0 -183
  62. package/esm2015/lib/safetyPlan/serviceProvider.component.js +0 -130
  63. package/esm2015/lib/safetyPlan/victimSafetyPlan.component.js +0 -257
  64. package/esm2015/lib/safetyPlan/victimSafetyPlanDetail.component.js +0 -556
  65. package/esm2015/lib/shared/app.shared.module.js +0 -81
  66. package/esm2015/lib/shared/directives/phone-mask.directive.js +0 -168
  67. package/esm2015/lib/shared/validators/date.validator.js +0 -108
  68. package/esm2015/lib/shared/validators/index.js +0 -7
  69. package/esm2015/lib/smart-victim-delete-confirm.component.js +0 -61
  70. package/esm2015/lib/smart-victim-detail/smart-victim-detail.component.js +0 -1405
  71. package/esm2015/lib/smart-victim.component.js +0 -476
  72. package/esm2015/lib/smart-victim.model.js +0 -631
  73. package/esm2015/lib/smart-victim.module.js +0 -84
  74. package/esm2015/lib/smart-victim.service.js +0 -792
  75. package/esm2015/lib/victim-routing.module.js +0 -40
  76. package/esm2015/lib/victimSearch/VictimSearchFilter.js +0 -20
  77. package/esm2015/lib/victimSearch/victimSearchForm.component.js +0 -59
  78. package/esm2015/public-api.js +0 -13
  79. package/esm5/csmart-ngc-smart-victim.js +0 -25
  80. package/esm5/lib/caseNote/caseNote.component.js +0 -372
  81. package/esm5/lib/common-dialog/common-dialog.component.js +0 -48
  82. package/esm5/lib/common-dialog/common-dialog.module.js +0 -36
  83. package/esm5/lib/common-dialog/common-dialog.service.js +0 -75
  84. package/esm5/lib/contact/contact.component.js +0 -281
  85. package/esm5/lib/intake.service.js +0 -194
  86. package/esm5/lib/safetyPlan/serviceProvider.component.js +0 -99
  87. package/esm5/lib/safetyPlan/victimSafetyPlan.component.js +0 -306
  88. package/esm5/lib/safetyPlan/victimSafetyPlanDetail.component.js +0 -628
  89. package/esm5/lib/shared/app.shared.module.js +0 -85
  90. package/esm5/lib/shared/directives/phone-mask.directive.js +0 -184
  91. package/esm5/lib/shared/validators/date.validator.js +0 -108
  92. package/esm5/lib/shared/validators/index.js +0 -7
  93. package/esm5/lib/smart-victim-delete-confirm.component.js +0 -51
  94. package/esm5/lib/smart-victim-detail/smart-victim-detail.component.js +0 -1497
  95. package/esm5/lib/smart-victim.component.js +0 -528
  96. package/esm5/lib/smart-victim.model.js +0 -541
  97. package/esm5/lib/smart-victim.module.js +0 -84
  98. package/esm5/lib/smart-victim.service.js +0 -1063
  99. package/esm5/lib/victim-routing.module.js +0 -44
  100. package/esm5/lib/victimSearch/VictimSearchFilter.js +0 -24
  101. package/esm5/lib/victimSearch/victimSearchForm.component.js +0 -70
  102. package/esm5/public-api.js +0 -13
  103. package/fesm2015/csmart-ngc-smart-victim.js +0 -5682
  104. package/fesm2015/csmart-ngc-smart-victim.js.map +0 -1
  105. package/fesm5/csmart-ngc-smart-victim.js +0 -6203
  106. package/fesm5/csmart-ngc-smart-victim.js.map +0 -1
  107. package/lib/caseNote/caseNote.component.d.ts +0 -45
  108. package/lib/common-dialog/common-dialog.component.d.ts +0 -11
  109. package/lib/common-dialog/common-dialog.module.d.ts +0 -2
  110. package/lib/common-dialog/common-dialog.service.d.ts +0 -8
  111. package/lib/contact/contact.component.d.ts +0 -37
  112. package/lib/intake.service.d.ts +0 -54
  113. package/lib/safetyPlan/serviceProvider.component.d.ts +0 -16
  114. package/lib/safetyPlan/victimSafetyPlan.component.d.ts +0 -49
  115. package/lib/safetyPlan/victimSafetyPlanDetail.component.d.ts +0 -57
  116. package/lib/shared/app.shared.module.d.ts +0 -2
  117. package/lib/shared/directives/phone-mask.directive.d.ts +0 -14
  118. package/lib/shared/validators/date.validator.d.ts +0 -9
  119. package/lib/shared/validators/index.d.ts +0 -1
  120. package/lib/smart-victim-delete-confirm.component.d.ts +0 -9
  121. package/lib/smart-victim-detail/smart-victim-detail.component.d.ts +0 -109
  122. package/lib/smart-victim.component.d.ts +0 -63
  123. package/lib/smart-victim.model.d.ts +0 -204
  124. package/lib/smart-victim.module.d.ts +0 -2
  125. package/lib/smart-victim.service.d.ts +0 -67
  126. package/lib/victim-routing.module.d.ts +0 -2
  127. package/lib/victimSearch/victimSearchForm.component.d.ts +0 -11
  128. package/public-api.d.ts +0 -4
@@ -1,1063 +0,0 @@
1
- /**
2
- * @fileoverview added by tsickle
3
- * Generated from: lib/smart-victim.service.ts
4
- * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
5
- */
6
- import { HttpClient, HttpHeaders } from '@angular/common/http';
7
- import { Injectable, Inject } from '@angular/core';
8
- import { SMART_LOOKUP_SERVICE_URL, SMART_OFFENDER_SERVICE_URL, SMART_VICTIM_SERVICE_URL } from './smart-victim.model';
9
- import { throwError as observableThrowError } from 'rxjs';
10
- import { map, catchError } from 'rxjs/operators';
11
- import { Apollo } from 'apollo-angular';
12
- import * as i0 from "@angular/core";
13
- import * as i1 from "@angular/common/http";
14
- import * as i2 from "./smart-victim.model";
15
- import * as i3 from "apollo-angular";
16
- /** @type {?} */
17
- var headers = new HttpHeaders({ 'Content-Type': 'application/json' });
18
- /** @type {?} */
19
- var options = { headers: headers };
20
- var NgcSmartVictimService = /** @class */ (function () {
21
- function NgcSmartVictimService(http, smartOffenderServiceUrl, smartLookupServiceUrl, smartVictimServiceUrl, apollo) {
22
- this.http = http;
23
- this.smartOffenderServiceUrl = smartOffenderServiceUrl;
24
- this.smartLookupServiceUrl = smartLookupServiceUrl;
25
- this.smartVictimServiceUrl = smartVictimServiceUrl;
26
- this.apollo = apollo;
27
- this.serviceApiUrl = 'https://smart-service-test.azurewebsites.net/graphql';
28
- }
29
- // getVictimInsurances(offenderId: any) {
30
- // return this.http.get(this.smartOffenderServiceUrl + '/VictimInsurances/?offenderId=' + offenderId).pipe();
31
- // }
32
- // getVictimInsurance(id: any) {
33
- // return this.http.get(this.smartOffenderServiceUrl + '/VictimInsurances/?id=' + id).pipe();
34
- // }
35
- // postVictimInsurance(val: any) {
36
- // return this.http.post(this.smartOffenderServiceUrl + '/VictimInsurances', val).pipe();
37
- // }
38
- // putVictimInsurance(id: any, val: any) {
39
- // return this.http.put(this.smartOffenderServiceUrl + '/VictimInsurances/?id=' + id, val).pipe();
40
- // }
41
- // deleteVictimInsurance(id: any) {
42
- // return this.http.delete(this.smartOffenderServiceUrl + '/VictimInsurances/?id=' + id).pipe();
43
- // }
44
- // getVictimInsuranceTypes() {
45
- // return this.http.get(this.smartLookupServiceUrl + '/VictimInsuranceTypes').pipe();
46
- // }
47
- // getVictimInsurancePolicyHolders() {
48
- // return this.http.get(this.smartLookupServiceUrl + '/VictimInsurancePolicyHolders').pipe();
49
- // }
50
- // getVictimInsuranceSwitchReasons() {
51
- // return this.http.get(this.smartLookupServiceUrl + '/VictimInsuranceSwitchReasons').pipe();
52
- // }
53
- // getVictimInsuranceProviders() {
54
- // return this.http.get(this.smartLookupServiceUrl + '/VictimInsuranceProvider').pipe();
55
- // }
56
- // getVictimInsuranceProvider(id) {
57
- // return this.http.get(this.smartLookupServiceUrl + '/VictimInsuranceProviders/' + id).pipe();
58
- // }
59
- // postProviderInformation(val: any) {
60
- // return this.http.post(this.smartLookupServiceUrl + '/VictimInsuranceProviders', val).pipe();
61
- // }
62
- // getVictimInsurances(offenderId: any) {
63
- // return this.http.get(this.smartOffenderServiceUrl + '/VictimInsurances/?offenderId=' + offenderId).pipe();
64
- // }
65
- // getVictimInsurance(id: any) {
66
- // return this.http.get(this.smartOffenderServiceUrl + '/VictimInsurances/?id=' + id).pipe();
67
- // }
68
- // postVictimInsurance(val: any) {
69
- // return this.http.post(this.smartOffenderServiceUrl + '/VictimInsurances', val).pipe();
70
- // }
71
- // putVictimInsurance(id: any, val: any) {
72
- // return this.http.put(this.smartOffenderServiceUrl + '/VictimInsurances/?id=' + id, val).pipe();
73
- // }
74
- // deleteVictimInsurance(id: any) {
75
- // return this.http.delete(this.smartOffenderServiceUrl + '/VictimInsurances/?id=' + id).pipe();
76
- // }
77
- // getVictimInsuranceTypes() {
78
- // return this.http.get(this.smartLookupServiceUrl + '/VictimInsuranceTypes').pipe();
79
- // }
80
- // getVictimInsurancePolicyHolders() {
81
- // return this.http.get(this.smartLookupServiceUrl + '/VictimInsurancePolicyHolders').pipe();
82
- // }
83
- // getVictimInsuranceSwitchReasons() {
84
- // return this.http.get(this.smartLookupServiceUrl + '/VictimInsuranceSwitchReasons').pipe();
85
- // }
86
- // getVictimInsuranceProviders() {
87
- // return this.http.get(this.smartLookupServiceUrl + '/VictimInsuranceProvider').pipe();
88
- // }
89
- // getVictimInsuranceProvider(id) {
90
- // return this.http.get(this.smartLookupServiceUrl + '/VictimInsuranceProviders/' + id).pipe();
91
- // }
92
- // postProviderInformation(val: any) {
93
- // return this.http.post(this.smartLookupServiceUrl + '/VictimInsuranceProviders', val).pipe();
94
- // }
95
- /**
96
- * @private
97
- * @param {?} error
98
- * @return {?}
99
- */
100
- NgcSmartVictimService.prototype.handleError =
101
- // getVictimInsurances(offenderId: any) {
102
- // return this.http.get(this.smartOffenderServiceUrl + '/VictimInsurances/?offenderId=' + offenderId).pipe();
103
- // }
104
- // getVictimInsurance(id: any) {
105
- // return this.http.get(this.smartOffenderServiceUrl + '/VictimInsurances/?id=' + id).pipe();
106
- // }
107
- // postVictimInsurance(val: any) {
108
- // return this.http.post(this.smartOffenderServiceUrl + '/VictimInsurances', val).pipe();
109
- // }
110
- // putVictimInsurance(id: any, val: any) {
111
- // return this.http.put(this.smartOffenderServiceUrl + '/VictimInsurances/?id=' + id, val).pipe();
112
- // }
113
- // deleteVictimInsurance(id: any) {
114
- // return this.http.delete(this.smartOffenderServiceUrl + '/VictimInsurances/?id=' + id).pipe();
115
- // }
116
- // getVictimInsuranceTypes() {
117
- // return this.http.get(this.smartLookupServiceUrl + '/VictimInsuranceTypes').pipe();
118
- // }
119
- // getVictimInsurancePolicyHolders() {
120
- // return this.http.get(this.smartLookupServiceUrl + '/VictimInsurancePolicyHolders').pipe();
121
- // }
122
- // getVictimInsuranceSwitchReasons() {
123
- // return this.http.get(this.smartLookupServiceUrl + '/VictimInsuranceSwitchReasons').pipe();
124
- // }
125
- // getVictimInsuranceProviders() {
126
- // return this.http.get(this.smartLookupServiceUrl + '/VictimInsuranceProvider').pipe();
127
- // }
128
- // getVictimInsuranceProvider(id) {
129
- // return this.http.get(this.smartLookupServiceUrl + '/VictimInsuranceProviders/' + id).pipe();
130
- // }
131
- // postProviderInformation(val: any) {
132
- // return this.http.post(this.smartLookupServiceUrl + '/VictimInsuranceProviders', val).pipe();
133
- // }
134
- /**
135
- * @private
136
- * @param {?} error
137
- * @return {?}
138
- */
139
- function (error) {
140
- console.error(error);
141
- return observableThrowError(error.json().error || 'Server error');
142
- };
143
- /**
144
- * @return {?}
145
- */
146
- NgcSmartVictimService.prototype.getDrugsTypes = /**
147
- * @return {?}
148
- */
149
- function () {
150
- return this.http.get(this.smartLookupServiceUrl + 'DrugTypes', options).pipe(map((/**
151
- * @param {?} res
152
- * @return {?}
153
- */
154
- function (res) { return res; })));
155
- };
156
- /**
157
- * @param {?} offenderId
158
- * @return {?}
159
- */
160
- NgcSmartVictimService.prototype.getDocketList = /**
161
- * @param {?} offenderId
162
- * @return {?}
163
- */
164
- function (offenderId) {
165
- /** @type {?} */
166
- var queryString = "\n {\n findDockets(input: { where: { offenderId:" + offenderId + " } }) {\n totalCount\n message\n data {\n docketId\n docketNumber\n \n }\n }\n }";
167
- return this.http.post(this.serviceApiUrl, { query: queryString }).pipe(map((/**
168
- * @param {?} __0
169
- * @return {?}
170
- */
171
- function (_a) {
172
- var data = _a.data;
173
- console.log('dockets for this offender:', data.findDockets.data);
174
- return data.findDockets.data;
175
- })));
176
- };
177
- /**
178
- * @return {?}
179
- */
180
- NgcSmartVictimService.prototype.getSupportTypes = /**
181
- * @return {?}
182
- */
183
- function () {
184
- return this.http.get(this.smartLookupServiceUrl + 'VictimSupportTypes', options).pipe(map((/**
185
- * @param {?} res
186
- * @return {?}
187
- */
188
- function (res) { return res; })));
189
- };
190
- /**
191
- * @return {?}
192
- */
193
- NgcSmartVictimService.prototype.getPrefixes = /**
194
- * @return {?}
195
- */
196
- function () {
197
- return this.http.get(this.smartLookupServiceUrl + 'Prefixes', options).pipe(map((/**
198
- * @param {?} res
199
- * @return {?}
200
- */
201
- function (res) { return res; })));
202
- };
203
- /**
204
- * @return {?}
205
- */
206
- NgcSmartVictimService.prototype.getSuffixes = /**
207
- * @return {?}
208
- */
209
- function () {
210
- return this.http.get(this.smartLookupServiceUrl + 'Suffixes', options).pipe(map((/**
211
- * @param {?} res
212
- * @return {?}
213
- */
214
- function (res) { return res; })));
215
- };
216
- /**
217
- * @return {?}
218
- */
219
- NgcSmartVictimService.prototype.getRelationshipTypes = /**
220
- * @return {?}
221
- */
222
- function () {
223
- return this.http.get(this.smartLookupServiceUrl + 'RelationshipTypes', options).pipe(map((/**
224
- * @param {?} res
225
- * @return {?}
226
- */
227
- function (res) { return res; })));
228
- };
229
- /**
230
- * @return {?}
231
- */
232
- NgcSmartVictimService.prototype.getGenders = /**
233
- * @return {?}
234
- */
235
- function () {
236
- return this.http.get(this.smartLookupServiceUrl + 'Genders', options).pipe(map((/**
237
- * @param {?} res
238
- * @return {?}
239
- */
240
- function (res) { return res; })));
241
- };
242
- /**
243
- * @return {?}
244
- */
245
- NgcSmartVictimService.prototype.getWeaponTypes = /**
246
- * @return {?}
247
- */
248
- function () {
249
- return this.http.get(this.smartLookupServiceUrl + 'WeaponTypes', options).pipe(map((/**
250
- * @param {?} res
251
- * @return {?}
252
- */
253
- function (res) { return res; })));
254
- };
255
- /**
256
- * @return {?}
257
- */
258
- NgcSmartVictimService.prototype.getFlagOptionYesNoUnknowns = /**
259
- * @return {?}
260
- */
261
- function () {
262
- return this.http.get(this.smartLookupServiceUrl + 'FlagOptionYesNoUnknowns', options).pipe(map((/**
263
- * @param {?} res
264
- * @return {?}
265
- */
266
- function (res) {
267
- return res;
268
- })));
269
- };
270
- /**
271
- * @return {?}
272
- */
273
- NgcSmartVictimService.prototype.getContactTypes = /**
274
- * @return {?}
275
- */
276
- function () {
277
- return this.http.get(this.smartLookupServiceUrl + 'ContactTypes', options).pipe(map((/**
278
- * @param {?} res
279
- * @return {?}
280
- */
281
- function (res) {
282
- return res;
283
- })));
284
- };
285
- /**
286
- * @return {?}
287
- */
288
- NgcSmartVictimService.prototype.getContactMethods = /**
289
- * @return {?}
290
- */
291
- function () {
292
- return this.http.get(this.smartLookupServiceUrl + 'VictimContactMethods', options).pipe(map((/**
293
- * @param {?} res
294
- * @return {?}
295
- */
296
- function (res) {
297
- return res;
298
- })));
299
- };
300
- /**
301
- * @return {?}
302
- */
303
- NgcSmartVictimService.prototype.getContactBys = /**
304
- * @return {?}
305
- */
306
- function () {
307
- return this.http.get(this.smartLookupServiceUrl + 'VictimContactPurposes', options).pipe(map((/**
308
- * @param {?} res
309
- * @return {?}
310
- */
311
- function (res) {
312
- return res;
313
- })));
314
- };
315
- /**
316
- * @return {?}
317
- */
318
- NgcSmartVictimService.prototype.getVictimContactPurposes = /**
319
- * @return {?}
320
- */
321
- function () {
322
- return this.http.get(this.smartLookupServiceUrl + 'VictimContactPurposes', options).pipe(map((/**
323
- * @param {?} res
324
- * @return {?}
325
- */
326
- function (res) {
327
- return res;
328
- })));
329
- };
330
- /**
331
- * @return {?}
332
- */
333
- NgcSmartVictimService.prototype.getVictimServiceTypes = /**
334
- * @return {?}
335
- */
336
- function () {
337
- return this.http.get(this.smartLookupServiceUrl + 'VictimServiceTypes', options).pipe(map((/**
338
- * @param {?} res
339
- * @return {?}
340
- */
341
- function (res) {
342
- return res;
343
- })));
344
- };
345
- /**
346
- * @return {?}
347
- */
348
- NgcSmartVictimService.prototype.getVictimServiceStatus = /**
349
- * @return {?}
350
- */
351
- function () {
352
- return this.http.get(this.smartLookupServiceUrl + 'VictimServiceStatus', options).pipe(map((/**
353
- * @param {?} res
354
- * @return {?}
355
- */
356
- function (res) {
357
- return res;
358
- })));
359
- };
360
- /**
361
- * @return {?}
362
- */
363
- NgcSmartVictimService.prototype.getvVictimServiceTypeProgramProviders = /**
364
- * @return {?}
365
- */
366
- function () {
367
- return this.http.get(this.smartLookupServiceUrl + 'vVictimServiceTypeProgramProviders', options).pipe(map((/**
368
- * @param {?} res
369
- * @return {?}
370
- */
371
- function (res) {
372
- return res;
373
- })));
374
- };
375
- /**
376
- * @param {?} val
377
- * @return {?}
378
- */
379
- NgcSmartVictimService.prototype.getVictim = /**
380
- * @param {?} val
381
- * @return {?}
382
- */
383
- function (val) {
384
- return this.http.get(this.smartVictimServiceUrl + 'Victims/' + val, options).pipe(map((/**
385
- * @param {?} res
386
- * @return {?}
387
- */
388
- function (res) {
389
- console.log('victim return data');
390
- console.log(res);
391
- return res;
392
- })));
393
- };
394
- /**
395
- * @param {?} val
396
- * @return {?}
397
- */
398
- NgcSmartVictimService.prototype.getVictimAdvocate = /**
399
- * @param {?} val
400
- * @return {?}
401
- */
402
- function (val) {
403
- return this.http.get(this.smartVictimServiceUrl + 'VictimAdvocates/' + val, options).pipe(map((/**
404
- * @param {?} res
405
- * @return {?}
406
- */
407
- function (res) {
408
- return res;
409
- })));
410
- };
411
- /**
412
- * @param {?} val
413
- * @return {?}
414
- */
415
- NgcSmartVictimService.prototype.getVictimGuardian = /**
416
- * @param {?} val
417
- * @return {?}
418
- */
419
- function (val) {
420
- return this.http.get(this.smartVictimServiceUrl + 'VictimGuardians/' + val, options).pipe(map((/**
421
- * @param {?} res
422
- * @return {?}
423
- */
424
- function (res) {
425
- return res;
426
- })));
427
- };
428
- /**
429
- * @param {?} val
430
- * @return {?}
431
- */
432
- NgcSmartVictimService.prototype.postVictims = /**
433
- * @param {?} val
434
- * @return {?}
435
- */
436
- function (val) {
437
- /** @type {?} */
438
- var tempVal = JSON.stringify(val);
439
- return this.http.post(this.smartVictimServiceUrl + 'Victims', tempVal, options).pipe(map((/**
440
- * @param {?} res
441
- * @return {?}
442
- */
443
- function (res) { return res; })));
444
- };
445
- /**
446
- * @param {?} id
447
- * @param {?} val
448
- * @return {?}
449
- */
450
- NgcSmartVictimService.prototype.putVictims = /**
451
- * @param {?} id
452
- * @param {?} val
453
- * @return {?}
454
- */
455
- function (id, val) {
456
- /** @type {?} */
457
- var tempVal = JSON.stringify(val);
458
- return this.http.put(this.smartVictimServiceUrl + 'Victims/' + id, tempVal, options).pipe(map((/**
459
- * @param {?} res
460
- * @return {?}
461
- */
462
- function (res) { return res; })));
463
- };
464
- /**
465
- * @param {?} id
466
- * @param {?} val
467
- * @return {?}
468
- */
469
- NgcSmartVictimService.prototype.putVictimAdvocate = /**
470
- * @param {?} id
471
- * @param {?} val
472
- * @return {?}
473
- */
474
- function (id, val) {
475
- /** @type {?} */
476
- var body;
477
- body = JSON.stringify(val);
478
- return this.http.put(this.smartVictimServiceUrl + 'VictimAdvocates/' + id, body, options).pipe(map((/**
479
- * @param {?} res
480
- * @return {?}
481
- */
482
- function (res) { return res; })));
483
- };
484
- /**
485
- * @param {?} id
486
- * @param {?} val
487
- * @return {?}
488
- */
489
- NgcSmartVictimService.prototype.postVictimAdvocate = /**
490
- * @param {?} id
491
- * @param {?} val
492
- * @return {?}
493
- */
494
- function (id, val) {
495
- /** @type {?} */
496
- var tempVal = JSON.stringify(val);
497
- return this.http.post(this.smartVictimServiceUrl + 'VictimAdvocates/' + id, tempVal, options).pipe(map((/**
498
- * @param {?} res
499
- * @return {?}
500
- */
501
- function (res) { return res; })));
502
- };
503
- /**
504
- * @param {?} id
505
- * @param {?} val
506
- * @return {?}
507
- */
508
- NgcSmartVictimService.prototype.putVictimGuardian = /**
509
- * @param {?} id
510
- * @param {?} val
511
- * @return {?}
512
- */
513
- function (id, val) {
514
- console.log('update victim guardian');
515
- console.log(val);
516
- /** @type {?} */
517
- var tempVal = JSON.stringify(val);
518
- return this.http.put(this.smartVictimServiceUrl + 'VictimGuardians/' + id, tempVal, options).pipe(map((/**
519
- * @param {?} res
520
- * @return {?}
521
- */
522
- function (res) { return res; })));
523
- };
524
- /**
525
- * @param {?} id
526
- * @param {?} val
527
- * @return {?}
528
- */
529
- NgcSmartVictimService.prototype.postVictimGuardian = /**
530
- * @param {?} id
531
- * @param {?} val
532
- * @return {?}
533
- */
534
- function (id, val) {
535
- /** @type {?} */
536
- var tempVal = JSON.stringify(val);
537
- return this.http.post(this.smartVictimServiceUrl + 'VictimGuardians/' + id, tempVal, options).pipe(map((/**
538
- * @param {?} res
539
- * @return {?}
540
- */
541
- function (res) { return res; })));
542
- };
543
- /**
544
- * @param {?} val
545
- * @return {?}
546
- */
547
- NgcSmartVictimService.prototype.getVictimDrugUse = /**
548
- * @param {?} val
549
- * @return {?}
550
- */
551
- function (val) {
552
- return this.http.get(this.smartVictimServiceUrl + 'VictimDrugUses/' + val, options).pipe(map((/**
553
- * @param {?} res
554
- * @return {?}
555
- */
556
- function (res) {
557
- return res;
558
- })));
559
- };
560
- /**
561
- * @param {?} id
562
- * @param {?} val
563
- * @return {?}
564
- */
565
- NgcSmartVictimService.prototype.putVictimDrugUse = /**
566
- * @param {?} id
567
- * @param {?} val
568
- * @return {?}
569
- */
570
- function (id, val) {
571
- /** @type {?} */
572
- var tempVal = JSON.stringify(val);
573
- return this.http.put(this.smartVictimServiceUrl + 'VictimDrugUses/' + id, tempVal, options).pipe(map((/**
574
- * @param {?} res
575
- * @return {?}
576
- */
577
- function (res) { return res; })));
578
- };
579
- /**
580
- * @param {?} id
581
- * @param {?} val
582
- * @return {?}
583
- */
584
- NgcSmartVictimService.prototype.postVictimDrugUse = /**
585
- * @param {?} id
586
- * @param {?} val
587
- * @return {?}
588
- */
589
- function (id, val) {
590
- /** @type {?} */
591
- var tempVal = JSON.stringify(val);
592
- return this.http.post(this.smartVictimServiceUrl + 'VictimDrugUses/' + id, tempVal, options).pipe(map((/**
593
- * @param {?} res
594
- * @return {?}
595
- */
596
- function (res) { return res; })));
597
- };
598
- /**
599
- * @param {?} id
600
- * @param {?} val
601
- * @return {?}
602
- */
603
- NgcSmartVictimService.prototype.putVictimWeaponUse = /**
604
- * @param {?} id
605
- * @param {?} val
606
- * @return {?}
607
- */
608
- function (id, val) {
609
- /** @type {?} */
610
- var tempVal = JSON.stringify(val);
611
- return this.http.put(this.smartVictimServiceUrl + 'VictimWeaponUses/' + id, tempVal, options).pipe(map((/**
612
- * @param {?} res
613
- * @return {?}
614
- */
615
- function (res) { return res; })));
616
- };
617
- /**
618
- * @param {?} id
619
- * @param {?} val
620
- * @return {?}
621
- */
622
- NgcSmartVictimService.prototype.postVictimWeaponUse = /**
623
- * @param {?} id
624
- * @param {?} val
625
- * @return {?}
626
- */
627
- function (id, val) {
628
- /** @type {?} */
629
- var tempVal = JSON.stringify(val);
630
- return this.http.post(this.smartVictimServiceUrl + 'VictimWeaponUses/' + id, tempVal, options).pipe(map((/**
631
- * @param {?} res
632
- * @return {?}
633
- */
634
- function (res) { return res; })));
635
- };
636
- /**
637
- * @param {?} id
638
- * @param {?} val
639
- * @return {?}
640
- */
641
- NgcSmartVictimService.prototype.putVictimSupport = /**
642
- * @param {?} id
643
- * @param {?} val
644
- * @return {?}
645
- */
646
- function (id, val) {
647
- /** @type {?} */
648
- var tempVal = JSON.stringify(val);
649
- return this.http.put(this.smartVictimServiceUrl + 'VictimSupports/' + id, tempVal, options).pipe(map((/**
650
- * @param {?} res
651
- * @return {?}
652
- */
653
- function (res) { return res; })));
654
- };
655
- /**
656
- * @param {?} id
657
- * @param {?} val
658
- * @return {?}
659
- */
660
- NgcSmartVictimService.prototype.postVictimSupport = /**
661
- * @param {?} id
662
- * @param {?} val
663
- * @return {?}
664
- */
665
- function (id, val) {
666
- /** @type {?} */
667
- var tempVal = JSON.stringify(val);
668
- return this.http.post(this.smartVictimServiceUrl + 'VictimSupports/' + id, tempVal, options).pipe(map((/**
669
- * @param {?} res
670
- * @return {?}
671
- */
672
- function (res) { return res; })));
673
- };
674
- /**
675
- * @param {?} val
676
- * @return {?}
677
- */
678
- NgcSmartVictimService.prototype.deleteVictims = /**
679
- * @param {?} val
680
- * @return {?}
681
- */
682
- function (val) {
683
- return this.http.delete(this.smartVictimServiceUrl + 'Victims/' + val, options).pipe(map((/**
684
- * @param {?} res
685
- * @return {?}
686
- */
687
- function (res) { return res; })));
688
- };
689
- // //==============Victim Serive===================================
690
- // //==============Victim Serive===================================
691
- /**
692
- * @param {?} offenderId
693
- * @return {?}
694
- */
695
- NgcSmartVictimService.prototype.getVictims =
696
- // //==============Victim Serive===================================
697
- /**
698
- * @param {?} offenderId
699
- * @return {?}
700
- */
701
- function (offenderId) {
702
- return this.http.get(this.smartVictimServiceUrl + 'Victims/offender/' + offenderId)
703
- .pipe(map((/**
704
- * @param {?} res
705
- * @return {?}
706
- */
707
- function (res) {
708
- return res;
709
- })), catchError(this.handleError));
710
- };
711
- /**
712
- * @param {?} filter
713
- * @return {?}
714
- */
715
- NgcSmartVictimService.prototype.getVictimsByFilter = /**
716
- * @param {?} filter
717
- * @return {?}
718
- */
719
- function (filter) {
720
- return this.http
721
- .post(this.smartVictimServiceUrl + '/Victims', JSON.stringify(filter), { headers: headers })
722
- .pipe(map((/**
723
- * @param {?} res
724
- * @return {?}
725
- */
726
- function (res) {
727
- return res;
728
- })), catchError(this.handleError));
729
- };
730
- /**
731
- * @param {?} filter
732
- * @return {?}
733
- */
734
- NgcSmartVictimService.prototype.getVictimListByFilter = /**
735
- * @param {?} filter
736
- * @return {?}
737
- */
738
- function (filter) {
739
- console.log('filer in service');
740
- console.log(filter);
741
- return this.http
742
- .post(this.smartVictimServiceUrl + 'vVictims/Filter', JSON.stringify(filter), options)
743
- .pipe();
744
- };
745
- /**
746
- * @param {?} victimId
747
- * @return {?}
748
- */
749
- NgcSmartVictimService.prototype.getCasetNotes = /**
750
- * @param {?} victimId
751
- * @return {?}
752
- */
753
- function (victimId) {
754
- return this.http.get(this.smartVictimServiceUrl + 'VictimCaseNotes/victim/' + victimId)
755
- .pipe(map((/**
756
- * @param {?} res
757
- * @return {?}
758
- */
759
- function (res) {
760
- return res;
761
- })), catchError(this.handleError));
762
- };
763
- /**
764
- * @param {?} caseNote
765
- * @return {?}
766
- */
767
- NgcSmartVictimService.prototype.addCaseNote = /**
768
- * @param {?} caseNote
769
- * @return {?}
770
- */
771
- function (caseNote) {
772
- /** @type {?} */
773
- var body;
774
- body = JSON.stringify(caseNote);
775
- return this.http
776
- .post(this.smartVictimServiceUrl + 'VictimCaseNotes/', body, options);
777
- };
778
- /**
779
- * @param {?} caseNote
780
- * @return {?}
781
- */
782
- NgcSmartVictimService.prototype.updateCaseNote = /**
783
- * @param {?} caseNote
784
- * @return {?}
785
- */
786
- function (caseNote) {
787
- /** @type {?} */
788
- var body;
789
- body = JSON.stringify(caseNote);
790
- return this.http
791
- .put(this.smartVictimServiceUrl + 'VictimCaseNotes/' + caseNote.victimCaseNoteId, body, options);
792
- };
793
- /**
794
- * @param {?} id
795
- * @param {?} staffId
796
- * @return {?}
797
- */
798
- NgcSmartVictimService.prototype.deleteCaseNote = /**
799
- * @param {?} id
800
- * @param {?} staffId
801
- * @return {?}
802
- */
803
- function (id, staffId) {
804
- return this.http.delete(this.smartVictimServiceUrl + "VictimCaseNotes/" + id + "?staffId=" + staffId);
805
- };
806
- /**
807
- * @param {?} victimId
808
- * @return {?}
809
- */
810
- NgcSmartVictimService.prototype.getContacts = /**
811
- * @param {?} victimId
812
- * @return {?}
813
- */
814
- function (victimId) {
815
- return this.http.get(this.smartVictimServiceUrl + 'VictimContacts/victim/' + victimId)
816
- .pipe(map((/**
817
- * @param {?} res
818
- * @return {?}
819
- */
820
- function (res) {
821
- return res;
822
- })), catchError(this.handleError));
823
- };
824
- /**
825
- * @param {?} contact
826
- * @return {?}
827
- */
828
- NgcSmartVictimService.prototype.addContact = /**
829
- * @param {?} contact
830
- * @return {?}
831
- */
832
- function (contact) {
833
- /** @type {?} */
834
- var body;
835
- body = JSON.stringify(contact);
836
- return this.http
837
- .post(this.smartVictimServiceUrl + 'VictimContacts/', body, options);
838
- };
839
- /**
840
- * @param {?} contact
841
- * @return {?}
842
- */
843
- NgcSmartVictimService.prototype.updateContact = /**
844
- * @param {?} contact
845
- * @return {?}
846
- */
847
- function (contact) {
848
- /** @type {?} */
849
- var body;
850
- body = JSON.stringify(contact);
851
- return this.http
852
- .put(this.smartVictimServiceUrl + 'VictimContacts/' + contact.victimContactId, body, options);
853
- };
854
- /**
855
- * @param {?} victimId
856
- * @return {?}
857
- */
858
- NgcSmartVictimService.prototype.getSafetyPlans = /**
859
- * @param {?} victimId
860
- * @return {?}
861
- */
862
- function (victimId) {
863
- return this.http.get(this.smartVictimServiceUrl + 'vVictimServiceLists/victim/' + victimId)
864
- .pipe(map((/**
865
- * @param {?} res
866
- * @return {?}
867
- */
868
- function (res) {
869
- return res;
870
- })), catchError(this.handleError));
871
- };
872
- /**
873
- * @param {?} victimServiceId
874
- * @return {?}
875
- */
876
- NgcSmartVictimService.prototype.getVictimServices = /**
877
- * @param {?} victimServiceId
878
- * @return {?}
879
- */
880
- function (victimServiceId) {
881
- return this.http.get(this.smartVictimServiceUrl + 'vVictimServiceLists/victimServiceId/' + victimServiceId)
882
- .pipe(map((/**
883
- * @param {?} res
884
- * @return {?}
885
- */
886
- function (res) {
887
- return res;
888
- })), catchError(this.handleError));
889
- };
890
- /**
891
- * @param {?} victimServiceId
892
- * @return {?}
893
- */
894
- NgcSmartVictimService.prototype.getVictimServiceDetail = /**
895
- * @param {?} victimServiceId
896
- * @return {?}
897
- */
898
- function (victimServiceId) {
899
- return this.http.get(this.smartVictimServiceUrl + 'VictimServiceDetails/' + victimServiceId)
900
- .pipe(map((/**
901
- * @param {?} res
902
- * @return {?}
903
- */
904
- function (res) {
905
- return res;
906
- })), catchError(this.handleError));
907
- };
908
- /**
909
- * @param {?} victimSafetyPlan
910
- * @return {?}
911
- */
912
- NgcSmartVictimService.prototype.addSafetyPlan = /**
913
- * @param {?} victimSafetyPlan
914
- * @return {?}
915
- */
916
- function (victimSafetyPlan) {
917
- /** @type {?} */
918
- var body;
919
- body = JSON.stringify(victimSafetyPlan);
920
- return this.http
921
- .post(this.smartVictimServiceUrl + 'VictimServices/', body, options)
922
- .pipe();
923
- };
924
- /**
925
- * @param {?} victimSafetyPlan
926
- * @return {?}
927
- */
928
- NgcSmartVictimService.prototype.updateSafetyPlan = /**
929
- * @param {?} victimSafetyPlan
930
- * @return {?}
931
- */
932
- function (victimSafetyPlan) {
933
- /** @type {?} */
934
- var body;
935
- body = JSON.stringify(victimSafetyPlan);
936
- return this.http
937
- .put(this.smartVictimServiceUrl + 'VictimServices/' + victimSafetyPlan.victimServiceId, body, options);
938
- };
939
- /**
940
- * @param {?} victimServiceStatusHistory
941
- * @return {?}
942
- */
943
- NgcSmartVictimService.prototype.addVictimServiceStatus = /**
944
- * @param {?} victimServiceStatusHistory
945
- * @return {?}
946
- */
947
- function (victimServiceStatusHistory) {
948
- /** @type {?} */
949
- var body;
950
- body = JSON.stringify(victimServiceStatusHistory);
951
- return this.http
952
- .post(this.smartVictimServiceUrl + 'VictimServiceStatusHistories/', body, options);
953
- };
954
- /**
955
- * @param {?} victimServiceId
956
- * @return {?}
957
- */
958
- NgcSmartVictimService.prototype.getServiceStatusHistories = /**
959
- * @param {?} victimServiceId
960
- * @return {?}
961
- */
962
- function (victimServiceId) {
963
- return this.http.get(this.smartVictimServiceUrl + 'VictimServiceStatusHistories/victimServiceId/' + victimServiceId)
964
- .pipe(map((/**
965
- * @param {?} res
966
- * @return {?}
967
- */
968
- function (res) {
969
- return res;
970
- })), catchError(this.handleError));
971
- };
972
- /**
973
- * @param {?} victimServiceId
974
- * @param {?} staffId
975
- * @return {?}
976
- */
977
- NgcSmartVictimService.prototype.deleteSafetyPlan = /**
978
- * @param {?} victimServiceId
979
- * @param {?} staffId
980
- * @return {?}
981
- */
982
- function (victimServiceId, staffId) {
983
- return this.http.delete(this.smartVictimServiceUrl + "VictimServices/" + victimServiceId + "?staffId=" + staffId);
984
- };
985
- /**
986
- * @param {?} victimServiceDetail
987
- * @return {?}
988
- */
989
- NgcSmartVictimService.prototype.addPlanProvider = /**
990
- * @param {?} victimServiceDetail
991
- * @return {?}
992
- */
993
- function (victimServiceDetail) {
994
- /** @type {?} */
995
- var body;
996
- body = JSON.stringify(victimServiceDetail);
997
- return this.http
998
- .post(this.smartVictimServiceUrl + 'VictimServiceDetails/', body, options)
999
- .pipe();
1000
- };
1001
- /**
1002
- * @param {?} victimProgramProviderId
1003
- * @param {?} staffId
1004
- * @return {?}
1005
- */
1006
- NgcSmartVictimService.prototype.deleteProvider = /**
1007
- * @param {?} victimProgramProviderId
1008
- * @param {?} staffId
1009
- * @return {?}
1010
- */
1011
- function (victimProgramProviderId, staffId) {
1012
- return this.http.delete(this.smartVictimServiceUrl + "VictimServiceDetails/" + victimProgramProviderId + "?staffId=" + staffId);
1013
- };
1014
- NgcSmartVictimService.decorators = [
1015
- { type: Injectable, args: [{
1016
- providedIn: 'root'
1017
- },] }
1018
- ];
1019
- /** @nocollapse */
1020
- NgcSmartVictimService.ctorParameters = function () { return [
1021
- { type: HttpClient },
1022
- { type: String, decorators: [{ type: Inject, args: [SMART_OFFENDER_SERVICE_URL,] }] },
1023
- { type: String, decorators: [{ type: Inject, args: [SMART_LOOKUP_SERVICE_URL,] }] },
1024
- { type: String, decorators: [{ type: Inject, args: [SMART_VICTIM_SERVICE_URL,] }] },
1025
- { type: Apollo }
1026
- ]; };
1027
- /** @nocollapse */ NgcSmartVictimService.ngInjectableDef = i0.defineInjectable({ factory: function NgcSmartVictimService_Factory() { return new NgcSmartVictimService(i0.inject(i1.HttpClient), i0.inject(i2.SMART_OFFENDER_SERVICE_URL), i0.inject(i2.SMART_LOOKUP_SERVICE_URL), i0.inject(i2.SMART_VICTIM_SERVICE_URL), i0.inject(i3.Apollo)); }, token: NgcSmartVictimService, providedIn: "root" });
1028
- return NgcSmartVictimService;
1029
- }());
1030
- export { NgcSmartVictimService };
1031
- if (false) {
1032
- /**
1033
- * @type {?}
1034
- * @private
1035
- */
1036
- NgcSmartVictimService.prototype.serviceApiUrl;
1037
- /**
1038
- * @type {?}
1039
- * @private
1040
- */
1041
- NgcSmartVictimService.prototype.http;
1042
- /**
1043
- * @type {?}
1044
- * @private
1045
- */
1046
- NgcSmartVictimService.prototype.smartOffenderServiceUrl;
1047
- /**
1048
- * @type {?}
1049
- * @private
1050
- */
1051
- NgcSmartVictimService.prototype.smartLookupServiceUrl;
1052
- /**
1053
- * @type {?}
1054
- * @private
1055
- */
1056
- NgcSmartVictimService.prototype.smartVictimServiceUrl;
1057
- /**
1058
- * @type {?}
1059
- * @private
1060
- */
1061
- NgcSmartVictimService.prototype.apollo;
1062
- }
1063
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtdmljdGltLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AY3NtYXJ0L25nYy1zbWFydC12aWN0aW0vIiwic291cmNlcyI6WyJsaWIvc21hcnQtdmljdGltLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFlLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzVFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSwwQkFBMEIsRUFBQyx3QkFBd0IsRUFFVyxNQUFNLHNCQUFzQixDQUFDO0FBQzlILE9BQU8sRUFBYyxVQUFVLElBQUksb0JBQW9CLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDckUsT0FBTyxFQUFFLEdBQUcsRUFBQyxVQUFVLEVBQVUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7OztJQUdsQyxPQUFPLEdBQUcsSUFBSSxXQUFXLENBQUMsRUFBRSxjQUFjLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQzs7SUFDakUsT0FBTyxHQUFHLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRTtBQUVwQztJQUtFLCtCQUFvQixJQUFnQixFQUNVLHVCQUErQixFQUNqQyxxQkFBNkIsRUFDN0IscUJBQTZCLEVBQy9ELE1BQWM7UUFKSixTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ1UsNEJBQXVCLEdBQXZCLHVCQUF1QixDQUFRO1FBQ2pDLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBUTtRQUM3QiwwQkFBcUIsR0FBckIscUJBQXFCLENBQVE7UUFDL0QsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUxoQixrQkFBYSxHQUFJLHNEQUFzRCxDQUFDO0lBTzFFLENBQUM7SUFFUCx5Q0FBeUM7SUFDekMsK0dBQStHO0lBQy9HLElBQUk7SUFFSixnQ0FBZ0M7SUFD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QUF3Qjs7Ozs7SUFDbEMsd0RBQTJFOzs7OztJQUMzRSxzREFBdUU7Ozs7O0lBQ3ZFLHNEQUF1RTs7Ozs7SUFDdkUsdUNBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCxIdHRwUmVzcG9uc2UsIEh0dHBIZWFkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU01BUlRfTE9PS1VQX1NFUlZJQ0VfVVJMLCBTTUFSVF9PRkZFTkRFUl9TRVJWSUNFX1VSTCxTTUFSVF9WSUNUSU1fU0VSVklDRV9VUkwsXHJcbiAgICBWaWN0aW1MaXN0RmlsdGVyLFZpY3RpbURydWdVc2UsVmljdGltLFZpY3RpbVNhZmV0eVBsYW4sXHJcbiAgIENhc2VOb3RlLENvbnRhY3QsVmljdGltU2VydmljZURldGFpbCxWaWN0aW1TZXJ2aWNlU3RhdHVzSGlzdG9yeSxWaWN0aW1BZHZvY2F0ZSxWaWN0aW1HdWFyZGlhbn0gZnJvbSAnLi9zbWFydC12aWN0aW0ubW9kZWwnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCB0aHJvd0Vycm9yIGFzIG9ic2VydmFibGVUaHJvd0Vycm9yfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgbWFwLGNhdGNoRXJyb3IsIGZpbHRlciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgQXBvbGxvIH0gZnJvbSAnYXBvbGxvLWFuZ3VsYXInO1xyXG5cclxuXHJcbmNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoeyAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nIH0pO1xyXG5jb25zdCBvcHRpb25zID0geyBoZWFkZXJzOiBoZWFkZXJzIH07XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOZ2NTbWFydFZpY3RpbVNlcnZpY2Uge1xyXG4gIHByaXZhdGUgc2VydmljZUFwaVVybCA9ICAnaHR0cHM6Ly9zbWFydC1zZXJ2aWNlLXRlc3QuYXp1cmV3ZWJzaXRlcy5uZXQvZ3JhcGhxbCc7XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxyXG4gICAgQEluamVjdChTTUFSVF9PRkZFTkRFUl9TRVJWSUNFX1VSTCkgcHJpdmF0ZSBzbWFydE9mZmVuZGVyU2VydmljZVVybDogc3RyaW5nLFxyXG4gICAgQEluamVjdChTTUFSVF9MT09LVVBfU0VSVklDRV9VUkwpIHByaXZhdGUgc21hcnRMb29rdXBTZXJ2aWNlVXJsOiBzdHJpbmcsXHJcbiAgICBASW5qZWN0KFNNQVJUX1ZJQ1RJTV9TRVJWSUNFX1VSTCkgcHJpdmF0ZSBzbWFydFZpY3RpbVNlcnZpY2VVcmw6IHN0cmluZyxcclxuICAgIHByaXZhdGUgYXBvbGxvOiBBcG9sbG9cclxuXHJcbiAgICApIHsgfVxyXG5cclxuICAvLyBnZXRWaWN0aW1JbnN1cmFuY2VzKG9mZmVuZGVySWQ6IGFueSkge1xyXG4gIC8vICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5zbWFydE9mZmVuZGVyU2VydmljZVVybCArICcvVmljdGltSW5zdXJhbmNlcy8/b2ZmZW5kZXJJZD0nICsgb2ZmZW5kZXJJZCkucGlwZSgpO1xyXG4gIC8vIH1cclxuXHJcbiAgLy8gZ2V0VmljdGltSW5zdXJhbmNlKGlkOiBhbnkpIHtcclxuICAvLyAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuc21hcnRPZmZlbmRlclNlcnZpY2VVcmwgKyAnL1ZpY3RpbUluc3VyYW5jZXMvP2lkPScgKyBpZCkucGlwZSgpO1xyXG4gIC8vIH0gXHJcblxyXG4gIC8vIHBvc3RWaWN0aW1JbnN1cmFuY2UodmFsOiBhbnkpIHtcclxuICAvLyAgIHJldHVybiB0aGlzLmh0dHAucG9zdCh0aGlzLnNtYXJ0T2ZmZW5kZXJTZXJ2aWNlVXJsICsgJy9WaWN0aW1JbnN1cmFuY2VzJywgdmFsKS5waXBlKCk7XHJcbiAgLy8gfVxyXG5cclxuICAvLyBwdXRWaWN0aW1JbnN1cmFuY2UoaWQ6IGFueSwgdmFsOiBhbnkpIHtcclxuICAvLyAgIHJldHVybiB0aGlzLmh0dHAucHV0KHRoaXMuc21hcnRPZmZlbmRlclNlcnZpY2VVcmwgKyAnL1ZpY3RpbUluc3VyYW5jZXMvP2lkPScgKyBpZCwgdmFsKS5waXBlKCk7XHJcbiAgLy8gfVxyXG5cclxuICAvLyBkZWxldGVWaWN0aW1JbnN1cmFuY2UoaWQ6IGFueSkge1xyXG4gIC8vICAgcmV0dXJuIHRoaXMuaHR0cC5kZWxldGUodGhpcy5zbWFydE9mZmVuZGVyU2VydmljZVVybCArICcvVmljdGltSW5zdXJhbmNlcy8/aWQ9JyArIGlkKS5waXBlKCk7XHJcbiAgLy8gfVxyXG4gIFxyXG4gIC8vIGdldFZpY3RpbUluc3VyYW5jZVR5cGVzKCkge1xyXG4gIC8vICAgICByZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLnNtYXJ0TG9va3VwU2VydmljZVVybCArICcvVmljdGltSW5zdXJhbmNlVHlwZXMnKS5waXBlKCk7XHJcbiAgLy8gfVxyXG5cclxuICAvLyBnZXRWaWN0aW1JbnN1cmFuY2VQb2xpY3lIb2xkZXJzKCkge1xyXG4gIC8vICAgICByZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLnNtYXJ0TG9va3VwU2VydmljZVVybCArICcvVmljdGltSW5zdXJhbmNlUG9saWN5SG9sZGVycycpLnBpcGUoKTtcclxuICAvLyB9XHJcblxyXG4vLyAgIGdldFZpY3RpbUluc3VyYW5jZVN3aXRjaFJlYXNvbnMoKSB7XHJcbi8vICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuc21hcnRMb29rdXBTZXJ2aWNlVXJsICsgJy9WaWN0aW1JbnN1cmFuY2VTd2l0Y2hSZWFzb25zJykucGlwZSgpO1xyXG4vLyAgIH1cclxuXHJcbi8vICAgZ2V0VmljdGltSW5zdXJhbmNlUHJvdmlkZXJzKCkge1xyXG4vLyAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLnNtYXJ0TG9va3VwU2VydmljZVVybCArICcvVmljdGltSW5zdXJhbmNlUHJvdmlkZXInKS5waXBlKCk7XHJcbi8vICAgfVxyXG5cclxuLy8gICBnZXRWaWN0aW1JbnN1cmFuY2VQcm92aWRlcihpZCkge1xyXG4vLyAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5zbWFydExvb2t1cFNlcnZpY2VVcmwgKyAnL1ZpY3RpbUluc3VyYW5jZVByb3ZpZGVycy8nICsgaWQpLnBpcGUoKTtcclxuLy8gfVxyXG5cclxuLy8gICBwb3N0UHJvdmlkZXJJbmZvcm1hdGlvbih2YWw6IGFueSkge1xyXG4vLyAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QodGhpcy5zbWFydExvb2t1cFNlcnZpY2VVcmwgKyAnL1ZpY3RpbUluc3VyYW5jZVByb3ZpZGVycycsIHZhbCkucGlwZSgpO1xyXG4vLyAgIH1cclxuXHJcblxyXG5cclxucHJpdmF0ZSBoYW5kbGVFcnJvcihlcnJvcjogYW55KSB7XHJcbiAgY29uc29sZS5lcnJvcihlcnJvcik7XHJcbiAgcmV0dXJuIG9ic2VydmFibGVUaHJvd0Vycm9yKGVycm9yLmpzb24oKS5lcnJvciB8fCAnU2VydmVyIGVycm9yJyk7XHJcbn1cclxuXHJcbmdldERydWdzVHlwZXMoKSB7XHJcbiAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5zbWFydExvb2t1cFNlcnZpY2VVcmwgICsgJ0RydWdUeXBlcycsIG9wdGlvbnMpLnBpcGVcclxuICAgICAgKFxyXG4gICAgICBtYXAocmVzID0+IHJlcylcclxuICAgICAgKTtcclxufVxyXG5cclxuZ2V0RG9ja2V0TGlzdChvZmZlbmRlcklkOiBudW1iZXIpIHtcclxuICBjb25zdCBxdWVyeVN0cmluZyA9IGBcclxuICB7XHJcbiAgICBmaW5kRG9ja2V0cyhpbnB1dDogeyB3aGVyZTogeyBvZmZlbmRlcklkOiR7b2ZmZW5kZXJJZH0gfSB9KSB7XHJcbiAgICAgIHRvdGFsQ291bnRcclxuICAgICAgbWVzc2FnZVxyXG4gICAgICBkYXRhIHtcclxuICAgICAgICBkb2NrZXRJZFxyXG4gICAgICAgIGRvY2tldE51bWJlclxyXG4gICAgICBcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1gO1xyXG5cclxuICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8YW55Pih0aGlzLnNlcnZpY2VBcGlVcmwsIHsgcXVlcnk6IHF1ZXJ5U3RyaW5nIH0pLnBpcGUoXHJcbiAgICBtYXAoKHsgZGF0YSB9KSA9PiB7XHJcbiAgICAgIGNvbnNvbGUubG9nKCdkb2NrZXRzIGZvciB0aGlzIG9mZmVuZGVyOicsIGRhdGEuZmluZERvY2tldHMuZGF0YSk7XHJcbiAgICAgIHJldHVybiBkYXRhLmZpbmREb2NrZXRzLmRhdGE7XHJcbiAgICB9KSk7XHJcblxyXG5cclxufVxyXG5cclxuZ2V0U3VwcG9ydFR5cGVzKCkge1xyXG4gIHJldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuc21hcnRMb29rdXBTZXJ2aWNlVXJsICsgJ1ZpY3RpbVN1cHBvcnRUeXBlcycsIG9wdGlvbnMpLnBpcGVcclxuICAgICAgKFxyXG4gICAgICBtYXAocmVzID0+IHJlcylcclxuICAgICAgKTtcclxufVxyXG5cclxuZ2V0UHJlZml4ZXMoKSB7XHJcbiAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5zbWFydExvb2t1cFNlcnZpY2VVcmwgICsgJ1ByZWZpeGVzJywgb3B0aW9ucykucGlwZVxyXG4gICAgICAoXHJcbiAgICAgIG1hcChyZXMgPT4gcmVzKVxyXG4gICAgICApO1xyXG59XHJcblxyXG5nZXRTdWZmaXhlcygpIHtcclxuICByZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLnNtYXJ0TG9va3VwU2VydmljZVVybCAgKyAnU3VmZml4ZXMnLCBvcHRpb25zKS5waXBlXHJcbiAgICAgIChcclxuICAgICAgbWFwKHJlcyA9PiByZXMpXHJcbiAgICAgICk7XHJcbn1cclxuXHJcbmdldFJlbGF0aW9uc2hpcFR5cGVzKCkge1xyXG4gIHJldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuc21hcnRMb29rdXBTZXJ2aWNlVXJsICArICdSZWxhdGlvbnNoaXBUeXBlcycsIG9wdGlvbnMpLnBpcGVcclxuICAgICAgKFxyXG4gICAgICBtYXAocmVzID0+IHJlcylcclxuICAgICAgKTtcclxufVxyXG5cclxuZ2V0R2VuZGVycygpIHtcclxuICByZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLnNtYXJ0TG9va3VwU2VydmljZVVybCAgKyAnR2VuZGVycycsIG9wdGlvbnMpLnBpcGVcclxuICAgICAgKFxyXG4gICAgICBtYXAocmVzID0+IHJlcylcclxuICAgICAgKTtcclxufVxyXG5cclxuZ2V0V2VhcG9uVHlwZXMoKSB7XHJcbiAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5zbWFydExvb2t1cFNlcnZpY2VVcmwgICsgJ1dlYXBvblR5cGVzJywgb3B0aW9ucykucGlwZVxyXG4gICAgICAoXHJcbiAgICAgIG1hcChyZXMgPT4gcmVzKVxyXG4gICAgICApO1xyXG59XHJcblxyXG5nZXRGbGFnT3B0aW9uWWVzTm9Vbmtub3ducygpIHtcclxuIHJldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuc21hcnRMb29rdXBTZXJ2aWNlVXJsICsgJ0ZsYWdPcHRpb25ZZXNOb1Vua25vd25zJywgb3B0aW9ucykucGlwZVxyXG4gICAgICAoXHJcbiAgICAgIG1hcChyZXMgPT4geyBcclxuICAgICAgICAgIHJldHVybiByZXM7XHJcbiAgICAgIH0pXHJcbiAgICAgICk7XHJcbn1cclxuXHJcbmdldENvbnRhY3RUeXBlcygpIHtcclxuICByZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLnNtYXJ0TG9va3VwU2VydmljZVVybCArICdDb250YWN0VHlwZXMnLCBvcHRpb25zKS5waXBlXHJcbiAgICAgICAoXHJcbiAgICAgICBtYXAocmVzID0+IHsgXHJcbiAgICAgICAgICAgcmV0dXJuIHJlcztcclxuICAgICAgIH0pXHJcbiAgICAgICApO1xyXG4gfVxyXG4gZ2V0Q29udGFjdE1ldGhvZHMoKSB7XHJcbiAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5zbWFydExvb2t1cFNlcnZpY2VVcmwgKyAnVmljdGltQ29udGFjdE1ldGhvZHMnLCBvcHRpb25zKS5waXBlXHJcbiAgICAgICAoXHJcbiAgICAgICBtYXAocmVzID0+IHsgXHJcbiAgICAgICAgICAgcmV0dXJuIHJlcztcclxuICAgICAgIH0pXHJcbiAgICAgICApO1xyXG4gfVxyXG4gZ2V0Q29udGFjdEJ5cygpe1xyXG4gIHJldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuc21hcnRMb29rdXBTZXJ2aWNlVXJsICsgJ1ZpY3RpbUNvbnRhY3RQdXJwb3NlcycsIG9wdGlvbnMpLnBpcGVcclxuICAoXHJcbiAgbWFwKHJlcyA9PiB7IFxyXG4gICAgICByZXR1cm4gcmVzO1xyXG4gIH0pXHJcbiAgKTtcclxuXHJcbiB9XHJcblxyXG5nZXRWaWN0aW1Db250YWN0UHVycG9zZXMoKSB7XHJcbiAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5zbWFydExvb2t1cFNlcnZpY2VVcmwgKyAnVmljdGltQ29udGFjdFB1cnBvc2VzJywgb3B0aW9ucykucGlwZVxyXG4gICAgICAgKFxyXG4gICAgICAgbWFwKHJlcyA9PiB7IFxyXG4gICAgICAgICAgIHJldHVybiByZXM7XHJcbiAgICAgICB9KVxyXG4gICAgICAgKTtcclxuIH1cclxuXHJcbiBnZXRWaWN0aW1TZXJ2aWNlVHlwZXMoKSB7XHJcbiAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5zbWFydExvb2t1cFNlcnZpY2VVcmwgKyAnVmljdGltU2VydmljZVR5cGVzJywgb3B0aW9ucykucGlwZVxyXG4gICAgICAgKFxyXG4gICAgICAgbWFwKHJlcyA9PiB7IFxyXG4gICAgICAgICAgIHJldHVybiByZXM7XHJcbiAgICAgICB9KVxyXG4gICAgICAgKTtcclxuIH1cclxuIGdldFZpY3RpbVNlcnZpY2VTdGF0dXMoKSB7XHJcbiAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5zbWFydExvb2t1cFNlcnZpY2VVcmwgKyAnVmljdGltU2VydmljZVN0YXR1cycsIG9wdGlvbnMpLnBpcGVcclxuICAgICAgIChcclxuICAgICAgIG1hcChyZXMgPT4geyBcclxuICAgICAgICAgICByZXR1cm4gcmVzO1xyXG4gICAgICAgfSlcclxuICAgICAgICk7XHJcbiB9XHJcblxyXG4gZ2V0dlZpY3RpbVNlcnZpY2VUeXBlUHJvZ3JhbVByb3ZpZGVycygpIHtcclxuICByZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLnNtYXJ0TG9va3VwU2VydmljZVVybCArICd2VmljdGltU2VydmljZVR5cGVQcm9ncmFtUHJvdmlkZXJzJywgb3B0aW9ucykucGlwZVxyXG4gICAgICAgKFxyXG4gICAgICAgbWFwKHJlcyA9PiB7IFxyXG4gICAgICAgICAgIHJldHVybiByZXM7XHJcbiAgICAgICB9KVxyXG4gICAgICAgKTtcclxuIH1cclxuXHJcblxyXG5nZXRWaWN0aW0odmFsOiBhbnkpIHtcclxuICByZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLnNtYXJ0VmljdGltU2VydmljZVVybCArICdWaWN0aW1zLycgKyB2YWwsIG9wdGlvbnMpLnBpcGVcclxuICAoXHJcbiAgICBtYXAocmVzID0+IHsgXHJcbiAgICAgIGNvbnNvbGUubG9nKCd2aWN0aW0gcmV0dXJuIGRhdGEnKTtcclxuICAgICAgY29uc29sZS5sb2cocmVzKTsgIFxyXG4gICAgICByZXR1cm4gcmVzO1xyXG5cclxuICAgIH0pXHJcbiAgICAgICk7XHJcbn1cclxuXHJcbmdldFZpY3RpbUFkdm9jYXRlKHZhbDogYW55KSB7XHJcbiAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5zbWFydFZpY3RpbVNlcnZpY2VVcmwgKyAnVmljdGltQWR2b2NhdGVzLycgKyB2YWwsIG9wdGlvbnMpLnBpcGVcclxuICAgICAgKFxyXG5cclxuICAgICAgbWFwKHJlcyA9PiB7IFxyXG4gICAgICAgICAgcmV0dXJuIHJlczt9KVxyXG4gICAgICApO1xyXG59XHJcblxyXG5nZXRWaWN0aW1HdWFyZGlhbih2YWw6IGFueSkge1xyXG4gIHJldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuc21hcnRWaWN0aW1TZXJ2aWNlVXJsICsgJ1ZpY3RpbUd1YXJkaWFucy8nICsgdmFsLCBvcHRpb25zKS5waXBlXHJcbiAgICAgIChcclxuXHJcbiAgICAgIG1hcChyZXMgPT4geyBcclxuICAgICAgICAgIHJldHVybiByZXM7fSlcclxuICAgICAgKTtcclxufVxyXG5cclxucG9zdFZpY3RpbXModmFsOiBhbnkpIHtcclxuICBjb25zdCB0ZW1wVmFsID0gSlNPTi5zdHJpbmdpZnkodmFsKTtcclxuICByZXR1cm4gdGhpcy5odHRwLnBvc3QodGhpcy5zbWFydFZpY3RpbVNlcnZpY2VVcmwrICdWaWN0aW1zJywgdGVtcFZhbCwgb3B0aW9ucykucGlwZVxyXG4gICAgICAoXHJcbiAgICAgIG1hcChyZXMgPT4geyByZXR1cm4gcmVzO30pXHJcbiAgICAgICk7XHJcbn1cclxuXHJcbnB1dFZpY3RpbXMoaWQ6IGFueSwgdmFsOiBhbnkpIHtcclxuICBjb25zdCB0ZW1wVmFsID0gSlNPTi5zdHJpbmdpZnkodmFsKTtcclxuICByZXR1cm4gdGhpcy5odHRwLnB1dCh0aGlzLnNtYXJ0VmljdGltU2VydmljZVVybCArICdWaWN0aW1zLycgKyBpZCwgdGVtcFZhbCwgb3B0aW9ucykucGlwZVxyXG4gICAgICAoXHJcbiAgICAgIG1hcChyZXMgPT4geyByZXR1cm4gcmVzO30pXHJcbiAgICAgICk7XHJcbn1cclxuXHJcbnB1dFZpY3RpbUFkdm9jYXRlKGlkOiBhbnksIHZhbDogVmljdGltQWR2b2NhdGUpIHtcclxuICBsZXQgYm9keTogc3RyaW5nO1xyXG4gIGJvZHkgPSBKU09OLnN0cmluZ2lmeSh2YWwpO1xyXG4gIHJldHVybiB0aGlzLmh0dHAucHV0KHRoaXMuc21hcnRWaWN0aW1TZXJ2aWNlVXJsICsgJ1ZpY3RpbUFkdm9jYXRlcy8nICsgaWQsIGJvZHksIG9wdGlvbnMpLnBpcGVcclxuICAgICAgKFxyXG4gICAgICBtYXAocmVzID0+IHsgcmV0dXJuIHJlczt9KVxyXG4gICAgICApO1xyXG5cclxuXHJcblxyXG5cclxufVxyXG5cclxucG9zdFZpY3RpbUFkdm9jYXRlKGlkOiBhbnksIHZhbDogYW55KSB7XHJcbiAgY29uc3QgdGVtcFZhbCA9IEpTT04uc3RyaW5naWZ5KHZhbCk7XHJcbiAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHRoaXMuc21hcnRWaWN0aW1TZXJ2aWNlVXJsICsgJ1ZpY3RpbUFkdm9jYXRlcy8nICsgaWQsIHRlbXBWYWwsIG9wdGlvbnMpLnBpcGVcclxuICAgICAgKFxyXG4gICAgICBtYXAocmVzID0+IHsgcmV0dXJuIHJlczt9KVxyXG4gICAgICApO1xyXG59XHJcblxyXG5wdXRWaWN0aW1HdWFyZGlhbihpZDogYW55LCB2YWw6IGFueSkge1xyXG4gIGNvbnNvbGUubG9nKCd1cGRhdGUgdmljdGltIGd1YXJkaWFuJyk7XHJcbiAgY29uc29sZS5sb2codmFsKTtcclxuICBjb25zdCB0ZW1wVmFsID0gSlNPTi5zdHJpbmdpZnkodmFsKTtcclxuICByZXR1cm4gdGhpcy5odHRwLnB1dCh0aGlzLnNtYXJ0VmljdGltU2VydmljZVVybCArICdWaWN0aW1HdWFyZGlhbnMvJyArIGlkLCB0ZW1wVmFsLCBvcHRpb25zKS5waXBlXHJcbiAgICAgIChcclxuICAgICAgbWFwKHJlcyA9PiB7IHJldHVybiByZXM7fSlcclxuICAgICAgKTtcclxufVxyXG5cclxucG9zdFZpY3RpbUd1YXJkaWFuKGlkOiBhbnksIHZhbDogYW55KSB7XHJcbiAgY29uc3QgdGVtcFZhbCA9IEpTT04uc3RyaW5naWZ5KHZhbCk7XHJcbiAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHRoaXMuc21hcnRWaWN0aW1TZXJ2aWNlVXJsICsgJ1ZpY3RpbUd1YXJkaWFucy8nICsgaWQsIHRlbXBWYWwsIG9wdGlvbnMpLnBpcGVcclxuICAgICAgKFxyXG4gICAgICBtYXAocmVzID0+IHsgcmV0dXJuIHJlczt9KVxyXG4gICAgICApO1xyXG59XHJcblxyXG5nZXRWaWN0aW1EcnVnVXNlKHZhbDogYW55KTogT2JzZXJ2YWJsZTxWaWN0aW1EcnVnVXNlW10+e1xyXG4gIHJldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuc21hcnRWaWN0aW1TZXJ2aWNlVXJsICsgJ1ZpY3RpbURydWdVc2VzLycgKyB2YWwsIG9wdGlvbnMpLnBpcGVcclxuICAgICAgKFxyXG4gICAgICBtYXAoKHJlczogVmljdGltRHJ1Z1VzZVtdKSA9PiB7IFxyXG4gICAgICAgICAgICByZXR1cm4gcmVzO30pXHJcbiAgICAgICk7XHJcbn1cclxuXHJcbnB1dFZpY3RpbURydWdVc2UoaWQ6IGFueSwgdmFsOiBWaWN0aW1EcnVnVXNlW10pIHtcclxuICBjb25zdCB0ZW1wVmFsID0gSlNPTi5zdHJpbmdpZnkodmFsKTtcclxuXHJcbiAgcmV0dXJuIHRoaXMuaHR0cC5wdXQodGhpcy5zbWFydFZpY3RpbVNlcnZpY2VVcmwgKyAnVmljdGltRHJ1Z1VzZXMvJyArIGlkLCB0ZW1wVmFsLCBvcHRpb25zKS5waXBlXHJcbiAgICAgIChcclxuICAgICAgbWFwKHJlcyA9PiB7IHJldHVybiByZXM7fSlcclxuICAgICAgKTtcclxufVxyXG5cclxucG9zdFZpY3RpbURydWdVc2UoaWQ6IGFueSwgdmFsOiBhbnkpIHtcclxuICBjb25zdCB0ZW1wVmFsID0gSlNPTi5zdHJpbmdpZnkodmFsKTtcclxuICByZXR1cm4gdGhpcy5odHRwLnBvc3QodGhpcy5zbWFydFZpY3RpbVNlcnZpY2VVcmwgKyAnVmljdGltRHJ1Z1VzZXMvJyArIGlkLCB0ZW1wVmFsLCBvcHRpb25zKS5waXBlXHJcbiAgICAgIChcclxuICAgICAgbWFwKHJlcyA9PiB7IHJldHVybiByZXM7fSlcclxuICAgICAgKTtcclxufVxyXG5cclxucHV0VmljdGltV2VhcG9uVXNlKGlkOiBhbnksIHZhbDogYW55KSB7XHJcbiAgY29uc3QgdGVtcFZhbCA9IEpTT04uc3RyaW5naWZ5KHZhbCk7XHJcbiAgcmV0dXJuIHRoaXMuaHR0cC5wdXQodGhpcy5zbWFydFZpY3RpbVNlcnZpY2VVcmwgKyAnVmljdGltV2VhcG9uVXNlcy8nICsgaWQsIHRlbXBWYWwsIG9wdGlvbnMpLnBpcGVcclxuICAgICAgKFxyXG4gICAgICBtYXAocmVzID0+IHsgcmV0dXJuIHJlczt9KVxyXG4gICAgICApO1xyXG59XHJcblxyXG5wb3N0VmljdGltV2VhcG9uVXNlKGlkOiBhbnksIHZhbDogYW55KSB7XHJcbiAgY29uc3QgdGVtcFZhbCA9IEpTT04uc3RyaW5naWZ5KHZhbCk7XHJcbiAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHRoaXMuc21hcnRWaWN0aW1TZXJ2aWNlVXJsICsgJ1ZpY3RpbVdlYXBvblVzZXMvJyArIGlkLCB0ZW1wVmFsLCBvcHRpb25zKS5waXBlXHJcbiAgICAgIChcclxuICAgICAgbWFwKHJlcyA9PiB7IHJldHVybiByZXM7fSlcclxuICAgICAgKTtcclxufVxyXG5wdXRWaWN0aW1TdXBwb3J0KGlkOiBhbnksIHZhbDogYW55KSB7XHJcbiAgY29uc3QgdGVtcFZhbCA9IEpTT04uc3RyaW5naWZ5KHZhbCk7XHJcbiAgcmV0dXJuIHRoaXMuaHR0cC5wdXQodGhpcy5zbWFydFZpY3RpbVNlcnZpY2VVcmwgKyAnVmljdGltU3VwcG9ydHMvJyArIGlkLCB0ZW1wVmFsLCBvcHRpb25zKS5waXBlXHJcbiAgICAgIChcclxuICAgICAgbWFwKHJlcyA9PiB7IHJldHVybiByZXM7fSlcclxuICAgICAgKTtcclxufVxyXG5cclxucG9zdFZpY3RpbVN1cHBvcnQoaWQ6IGFueSwgdmFsOiBhbnkpIHtcclxuICBjb25zdCB0ZW1wVmFsID0gSlNPTi5zdHJpbmdpZnkodmFsKTtcclxuICByZXR1cm4gdGhpcy5odHRwLnBvc3QodGhpcy5zbWFydFZpY3RpbVNlcnZpY2VVcmwgKyAnVmljdGltU3VwcG9ydHMvJyArIGlkLCB0ZW1wVmFsLCBvcHRpb25zKS5waXBlXHJcbiAgICAgIChcclxuICAgICAgbWFwKHJlcyA9PiB7IHJldHVybiByZXM7fSlcclxuICAgICAgKTtcclxufVxyXG5cclxuZGVsZXRlVmljdGltcyh2YWw6IGFueSkge1xyXG4gIHJldHVybiB0aGlzLmh0dHAuZGVsZXRlKHRoaXMuc21hcnRWaWN0aW1TZXJ2aWNlVXJsKyAnVmljdGltcy8nICsgdmFsLCBvcHRpb25zKS5waXBlXHJcbiAgKFxyXG4gIG1hcChyZXMgPT4geyByZXR1cm4gcmVzO30pXHJcbiAgKTtcclxufVxyXG5cclxuXHJcblxyXG5cclxuLy8gLy89PT09PT09PT09PT09PVZpY3RpbSBTZXJpdmU9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG5cclxuZ2V0VmljdGltcyhvZmZlbmRlcklkOiBudW1iZXIpOiBPYnNlcnZhYmxlIDxWaWN0aW1bXT4ge1xyXG5cclxuICByZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLnNtYXJ0VmljdGltU2VydmljZVVybCAgKyAnVmljdGltcy9vZmZlbmRlci8nICsgb2ZmZW5kZXJJZClcclxuICAucGlwZShtYXAoKHJlczogVmljdGltW10pID0+IHtcclxuICAgIFxyXG4gICAgICByZXR1cm4gcmVzO1xyXG4gIH0pXHJcbiAgLGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvcikpO1xyXG59XHJcblxyXG5nZXRWaWN0aW1zQnlGaWx0ZXIoZmlsdGVyOiBWaWN0aW1MaXN0RmlsdGVyKTogT2JzZXJ2YWJsZTxWaWN0aW1bXT57XHJcbiAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgICAgICAgLnBvc3QodGhpcy5zbWFydFZpY3RpbVNlcnZpY2VVcmwgKyAnL1ZpY3RpbXMnLCBKU09OLnN0cmluZ2lmeShmaWx0ZXIpLCB7IGhlYWRlcnM6IGhlYWRlcnMgfSlcclxuICAgICAgICAgIC5waXBlKG1hcCgocmVzOiBWaWN0aW1bXSkgPT4ge1xyXG4gICAgICAgICAgICAgIHJldHVybiByZXM7XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgLGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvcikpO1xyXG59XHJcblxyXG5nZXRWaWN0aW1MaXN0QnlGaWx0ZXIoZmlsdGVyOiBWaWN0aW1MaXN0RmlsdGVyKSBcclxue1xyXG4gIGNvbnNvbGUubG9nKCdmaWxlciBpbiBzZXJ2aWNlJyk7XHJcbiAgY29uc29sZS5sb2coZmlsdGVyKTtcclxuXHJcbiAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gIC5wb3N0KHRoaXMuc21hcnRWaWN0aW1TZXJ2aWNlVXJsICsgJ3ZWaWN0aW1zL0ZpbHRlcicsIEpTT04uc3RyaW5naWZ5KGZpbHRlciksIG9wdGlvbnMpXHJcbiAgLnBpcGUoKTtcclxuXHJcbn1cclxuXHJcblxyXG5nZXRDYXNldE5vdGVzKHZpY3RpbUlkOiBudW1iZXIpOiBPYnNlcnZhYmxlIDxDYXNlTm90ZVtdPiB7XHJcblxyXG4gIHJldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuc21hcnRWaWN0aW1TZXJ2aWNlVXJsICsgJ1ZpY3RpbUNhc2VOb3Rlcy92aWN0aW0vJyArIHZpY3RpbUlkKVxyXG4gIC5waXBlKG1hcCgocmVzOiBDYXNlTm90ZVtdKSA9PiB7XHJcbiAgICAgIHJldHVybiByZXM7XHJcbiAgfSlcclxuICAsY2F0Y2hFcnJvcih0aGlzLmhhbmRsZUVycm9yKSk7XHJcbiBcclxuXHJcbn1cclxuYWRkQ2FzZU5vdGUoY2FzZU5vdGU6IENhc2VOb3RlKSB7XHJcbiAgbGV0IGJvZHk6IHN0cmluZztcclxuICAgICAgICAgYm9keSA9IEpTT04uc3RyaW5naWZ5KGNhc2VOb3RlKTtcclxuICAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgICAgLnBvc3QodGhpcy5zbWFydFZpY3RpbVNlcnZpY2VVcmwgKyAnVmljdGltQ2FzZU5vdGVzLycsIGJvZHksIG9wdGlvbnMpO1xyXG4gXHJcbiB9XHJcblxyXG4gXHJcbnVwZGF0ZUNhc2VOb3RlKGNhc2VOb3RlOiBDYXNlTm90ZSl7XHJcblxyXG4gIGxldCBib2R5OiBzdHJpbmc7XHJcbiAgYm9keSA9IEpTT04uc3RyaW5naWZ5KGNhc2VOb3RlKTtcclxuICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgIC5wdXQodGhpcy5zbWFydFZpY3RpbVNlcnZpY2VVcmwgKyAnVmljdGltQ2FzZU5vdGVzLycgKyBjYXNlTm90ZS52aWN0aW1DYXNlTm90ZUlkLCBib2R5LCBvcHRpb25zKVxyXG5cclxuICAgICAgO1xyXG4gfVxyXG5cclxuZGVsZXRlQ2FzZU5vdGUoaWQ6IG51bWJlciwgc3RhZmZJZDogbnVtYmVyKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmh0dHAuZGVsZXRlKGAke3RoaXMuc21hcnRWaWN0aW1TZXJ2aWNlVXJsfVZpY3RpbUNhc2VOb3Rlcy8ke2lkfT9zdGFmZklkPSR7c3RhZmZJZH1gKTtcclxuICB9XHJcblxyXG4gIGdldENvbnRhY3RzKHZpY3RpbUlkOiBudW1iZXIpOiBPYnNlcnZhYmxlIDxDb250YWN0W10+IHtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLnNtYXJ0VmljdGltU2VydmljZVVybCArICdWaWN0aW1Db250YWN0cy92aWN0aW0vJyArIHZpY3RpbUlkKVxyXG4gICAgLnBpcGUobWFwKChyZXM6IENvbnRhY3RbXSkgPT4ge1xyXG4gICAgICAgIHJldHVybiByZXM7XHJcbiAgICB9KVxyXG4gICAgLGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvcikpO1xyXG4gIFxyXG4gIH1cclxuICBhZGRDb250YWN0KGNvbnRhY3Q6IENvbnRhY3QpIHtcclxuICAgIGxldCBib2R5OiBzdHJpbmc7XHJcbiAgICAgICAgICAgYm9keSA9IEpTT04uc3RyaW5naWZ5KGNvbnRhY3QpO1xyXG4gICAgICAgICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgICAgLnBvc3QodGhpcy5zbWFydFZpY3RpbVNlcnZpY2VVcmwgKyAnVmljdGltQ29udGFjdHMvJywgYm9keSwgb3B0aW9ucyk7XHJcbiAgIFxyXG4gICB9XHJcbiAgXHJcbiAgIFxyXG4gIHVwZGF0ZUNvbnRhY3QoY29udGFjdDogQ29udGFjdCl7XHJcbiAgXHJcbiAgICBsZXQgYm9keTogc3RyaW5nO1xyXG4gICAgYm9keSA9IEpTT04uc3RyaW5naWZ5KGNvbnRhY3QpO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgICAgIC5wdXQodGhpcy5zbWFydFZpY3RpbVNlcnZpY2VVcmwgKyAnVmljdGltQ29udGFjdHMvJyArIGNvbnRhY3QudmljdGltQ29udGFjdElkLCBib2R5LCBvcHRpb25zKVxyXG4gIFxyXG4gICAgICAgIDtcclxuICAgfVxyXG4gIFxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcbmdldFNhZmV0eVBsYW5zKHZpY3RpbUlkOiBudW1iZXIpOiBPYnNlcnZhYmxlIDxWaWN0aW1TYWZldHlQbGFuW10+IHtcclxuXHJcbiAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuc21hcnRWaWN0aW1TZXJ2aWNlVXJsICsgJ3ZWaWN0aW1TZXJ2aWNlTGlzdHMvdmljdGltLycgKyB2aWN0aW1JZClcclxuICAgICAgLnBpcGUobWFwKChyZXM6IFZpY3RpbVNhZmV0eVBsYW5bXSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHJlcztcclxuICAgICAgfSlcclxuICAgICAgLGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvcikpO1xyXG4gIH1cclxuXHJcbmdldFZpY3RpbVNlcnZpY2VzKHZpY3RpbVNlcnZpY2VJZDogbnVtYmVyKTogT2JzZXJ2YWJsZSA8VmljdGltU2FmZXR5UGxhbltdPiB7XHJcblxyXG4gICAgICByZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLnNtYXJ0VmljdGltU2VydmljZVVybCArICd2VmljdGltU2VydmljZUxpc3RzL3ZpY3RpbVNlcnZpY2VJZC8nICsgdmljdGltU2VydmljZUlkKVxyXG4gICAgICAucGlwZShtYXAoKHJlczogVmljdGltU2FmZXR5UGxhbltdKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gIHJlcztcclxuICAgICAgfSlcclxuICAgICAgLGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvcikpO1xyXG4gIFxyXG4gIH1cclxuXHJcbmdldFZpY3RpbVNlcnZpY2VEZXRhaWwodmljdGltU2VydmljZUlkOiBudW1iZXIpOiBPYnNlcnZhYmxlIDxWaWN0aW1TZXJ2aWNlRGV0YWlsW10+IHtcclxuXHJcbiAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5zbWFydFZpY3RpbVNlcnZpY2VVcmwgKyAnVmljdGltU2VydmljZURldGFpbHMvJyArIHZpY3RpbVNlcnZpY2VJZClcclxuICAucGlwZShtYXAoKHJlczogVmljdGltU2VydmljZURldGFpbFtdKSA9PiB7XHJcbiAgXHJcbiAgICAgIHJldHVybiByZXM7XHJcbiAgfSlcclxuICAsY2F0Y2hFcnJvcih0aGlzLmhhbmRsZUVycm9yKSk7XHJcblxyXG59XHJcbmFkZFNhZmV0eVBsYW4odmljdGltU2FmZXR5UGxhbjogVmljdGltU2FmZXR5UGxhbikge1xyXG5cclxuICBsZXQgYm9keTogc3RyaW5nO1xyXG4gICAgICAgICAgYm9keSA9IEpTT04uc3RyaW5naWZ5KHZpY3RpbVNhZmV0eVBsYW4pO1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgICAgICAgLnBvc3QodGhpcy5zbWFydFZpY3RpbVNlcnZpY2VVcmwgKyAnVmljdGltU2VydmljZXMvJywgYm9keSwgb3B0aW9ucylcclxuICAgICAgICAgIC5waXBlKCk7XHJcbiAgXHJcbiAgfVxyXG51cGRhdGVTYWZldHlQbGFuKHZpY3RpbVNhZmV0eVBsYW46IFZpY3RpbVNhZmV0eVBsYW4pe1xyXG5cclxuICAgICAgbGV0IGJvZHk6IHN0cmluZztcclxuICAgICAgYm9keSA9IEpTT04uc3RyaW5naWZ5KHZpY3RpbVNhZmV0eVBsYW4pO1xyXG4gICAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgICAgICAucHV0KHRoaXMuc21hcnRWaWN0aW1TZXJ2aWNlVXJsICsgJ1ZpY3RpbVNlcnZpY2VzLycgKyB2aWN0aW1TYWZldHlQbGFuLnZpY3RpbVNlcnZpY2VJZCwgYm9keSwgb3B0aW9ucylcclxuXHJcbiAgICAgICAgICA7XHJcbiAgICAgfVxyXG5hZGRWaWN0aW1TZXJ2aWNlU3RhdHVzKHZpY3RpbVNlcnZpY2VTdGF0dXNIaXN0b3J5OiBWaWN0aW1TZXJ2aWNlU3RhdHVzSGlzdG9yeSl7XHJcbiAgbGV0IGJvZHk6IHN0cmluZztcclxuICBib2R5ID0gSlNPTi5zdHJpbmdpZnkodmljdGltU2VydmljZVN0YXR1c0hpc3RvcnkpO1xyXG4gIHJldHVybiB0aGlzLmh0dHBcclxuICAucG9zdCh0aGlzLnNtYXJ0VmljdGltU2VydmljZVVybCArICdWaWN0aW1TZXJ2aWNlU3RhdHVzSGlzdG9yaWVzLycsIGJvZHksIG9wdGlvbnMpO1xyXG5cclxuICB9XHJcblxyXG5nZXRTZXJ2aWNlU3RhdHVzSGlzdG9yaWVzKHZpY3RpbVNlcnZpY2VJZDogbnVtYmVyKXtcclxuICByZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLnNtYXJ0VmljdGltU2VydmljZVVybCArICdWaWN0aW1TZXJ2aWNlU3RhdHVzSGlzdG9yaWVzL3ZpY3RpbVNlcnZpY2VJZC8nICsgdmljdGltU2VydmljZUlkKVxyXG4gIC5waXBlKFxyXG4gICAgICBtYXAoKHJlczogVmljdGltU2VydmljZVN0YXR1c0hpc3RvcnlbXSkgPT4ge1xyXG4gIFxyXG4gICAgICAgICAgcmV0dXJuIHJlcztcclxuICAgICAgfSlcclxuICAgICAgLGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvcilcclxuICApO1xyXG59XHJcblxyXG5kZWxldGVTYWZldHlQbGFuKHZpY3RpbVNlcnZpY2VJZDogbnVtYmVyLCBzdGFmZklkOiBudW1iZXIpIHtcclxuICByZXR1cm4gdGhpcy5odHRwLmRlbGV0ZShgJHt0aGlzLnNtYXJ0VmljdGltU2VydmljZVVybH1WaWN0aW1TZXJ2aWNlcy8ke3ZpY3RpbVNlcnZpY2VJZH0/c3RhZmZJZD0ke3N0YWZmSWR9YCk7XHJcblxyXG4gIH1cclxuYWRkUGxhblByb3ZpZGVyKHZpY3RpbVNlcnZpY2VEZXRhaWw6VmljdGltU2VydmljZURldGFpbCl7XHJcbiAgICAgIGxldCBib2R5OiBzdHJpbmc7XHJcbiAgICAgIGJvZHkgPSBKU09OLnN0cmluZ2lmeSh2aWN0aW1TZXJ2aWNlRGV0YWlsKTtcclxuICAgICAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgICAucG9zdCh0aGlzLnNtYXJ0VmljdGltU2VydmljZVVybCArICdWaWN0aW1TZXJ2aWNlRGV0YWlscy8nLCBib2R5LCBvcHRpb25zKVxyXG4gICAgICAucGlwZSgpO1xyXG5cclxuICB9XHJcblxyXG5kZWxldGVQcm92aWRlcih2aWN0aW1Qcm9ncmFtUHJvdmlkZXJJZDogc3RyaW5nLCBzdGFmZklkOiBudW1iZXIpe1xyXG4gIHJldHVybiB0aGlzLmh0dHAuZGVsZXRlKGAke3RoaXMuc21hcnRWaWN0aW1TZXJ2aWNlVXJsfVZpY3RpbVNlcnZpY2VEZXRhaWxzLyR7dmljdGltUHJvZ3JhbVByb3ZpZGVySWR9P3N0YWZmSWQ9JHtzdGFmZklkfWApO1xyXG5cclxufVxyXG5cclxufVxyXG4iXX0=