@openhi/constructs 0.0.0 → 0.0.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.
Files changed (101) hide show
  1. package/lib/chunk-LZOMFHX3.mjs +38 -0
  2. package/lib/chunk-LZOMFHX3.mjs.map +1 -0
  3. package/lib/index.d.mts +788 -0
  4. package/lib/index.d.ts +869 -3
  5. package/lib/index.js +1318 -19
  6. package/lib/index.js.map +1 -0
  7. package/lib/index.mjs +1303 -0
  8. package/lib/index.mjs.map +1 -0
  9. package/lib/rest-api-lambda.handler.d.mts +6 -0
  10. package/lib/rest-api-lambda.handler.d.ts +6 -0
  11. package/lib/rest-api-lambda.handler.js +677 -0
  12. package/lib/rest-api-lambda.handler.js.map +1 -0
  13. package/lib/rest-api-lambda.handler.mjs +646 -0
  14. package/lib/rest-api-lambda.handler.mjs.map +1 -0
  15. package/package.json +37 -28
  16. package/lib/app/index.d.ts +0 -4
  17. package/lib/app/index.js +0 -21
  18. package/lib/app/open-hi-app.d.ts +0 -85
  19. package/lib/app/open-hi-app.js +0 -127
  20. package/lib/app/open-hi-environment.d.ts +0 -59
  21. package/lib/app/open-hi-environment.js +0 -72
  22. package/lib/app/open-hi-service.d.ts +0 -169
  23. package/lib/app/open-hi-service.js +0 -195
  24. package/lib/app/open-hi-stage.d.ts +0 -71
  25. package/lib/app/open-hi-stage.js +0 -70
  26. package/lib/components/acm/root-wildcard-certificate.d.ts +0 -15
  27. package/lib/components/acm/root-wildcard-certificate.js +0 -35
  28. package/lib/components/api-gateway/core-http-api.d.ts +0 -10
  29. package/lib/components/api-gateway/core-http-api.js +0 -44
  30. package/lib/components/api-gateway/http-lambda-integration-no-permissions.d.ts +0 -18
  31. package/lib/components/api-gateway/http-lambda-integration-no-permissions.js +0 -26
  32. package/lib/components/app-sync/core-graphql-api.d.ts +0 -12
  33. package/lib/components/app-sync/core-graphql-api.js +0 -54
  34. package/lib/components/auth.d.ts +0 -75
  35. package/lib/components/auth.js +0 -100
  36. package/lib/components/cognito/core-user-pool-client.d.ts +0 -10
  37. package/lib/components/cognito/core-user-pool-client.js +0 -47
  38. package/lib/components/cognito/core-user-pool-domain.d.ts +0 -10
  39. package/lib/components/cognito/core-user-pool-domain.js +0 -41
  40. package/lib/components/cognito/core-user-pool-kms-key.d.ts +0 -10
  41. package/lib/components/cognito/core-user-pool-kms-key.js +0 -37
  42. package/lib/components/cognito/core-user-pool.d.ts +0 -10
  43. package/lib/components/cognito/core-user-pool.js +0 -54
  44. package/lib/components/core.d.ts +0 -102
  45. package/lib/components/core.js +0 -79
  46. package/lib/components/dynamodb/dynamo-db-data-store.d.ts +0 -33
  47. package/lib/components/dynamodb/dynamo-db-data-store.js +0 -107
  48. package/lib/components/event-bridge/data-event-bus.d.ts +0 -19
  49. package/lib/components/event-bridge/data-event-bus.js +0 -34
  50. package/lib/components/event-bridge/ops-event-bus.d.ts +0 -19
  51. package/lib/components/event-bridge/ops-event-bus.js +0 -34
  52. package/lib/components/global.d.ts +0 -36
  53. package/lib/components/global.js +0 -63
  54. package/lib/components/index.d.ts +0 -1
  55. package/lib/components/index.js +0 -18
  56. package/lib/components/route-53/child-hosted-zone.d.ts +0 -20
  57. package/lib/components/route-53/child-hosted-zone.js +0 -48
  58. package/lib/components/route-53/root-hosted-zone.d.ts +0 -10
  59. package/lib/components/route-53/root-hosted-zone.js +0 -20
  60. package/lib/components/ssm/discoverable-string-parameter.d.ts +0 -59
  61. package/lib/components/ssm/discoverable-string-parameter.js +0 -50
  62. package/lib/components/ssm/index.d.ts +0 -1
  63. package/lib/components/ssm/index.js +0 -18
  64. package/lib/data/dynamo/ehr/r4/Patient.d.ts +0 -180
  65. package/lib/data/dynamo/ehr/r4/Patient.js +0 -192
  66. package/lib/data/dynamo/ehr/r4/ehr-r4-data-service.d.ts +0 -162
  67. package/lib/data/dynamo/ehr/r4/ehr-r4-data-service.js +0 -37
  68. package/lib/data/hello-world.d.ts +0 -39
  69. package/lib/data/hello-world.js +0 -59
  70. package/lib/data/import-patient-with-dynalite.d.ts +0 -1
  71. package/lib/data/import-patient-with-dynalite.js +0 -87
  72. package/lib/data/import-patient.d.ts +0 -47
  73. package/lib/data/import-patient.js +0 -158
  74. package/lib/data/lambda/rest-api-lambda.d.ts +0 -13
  75. package/lib/data/lambda/rest-api-lambda.handler.d.ts +0 -1
  76. package/lib/data/lambda/rest-api-lambda.handler.js +0 -10
  77. package/lib/data/lambda/rest-api-lambda.js +0 -22
  78. package/lib/data/middleware/open-hi-context.d.ts +0 -13
  79. package/lib/data/middleware/open-hi-context.js +0 -31
  80. package/lib/data/rest-api/ehr/r4/Patient.d.ts +0 -16
  81. package/lib/data/rest-api/ehr/r4/Patient.js +0 -234
  82. package/lib/data/rest-api/rest-api-local.d.ts +0 -1
  83. package/lib/data/rest-api/rest-api-local.js +0 -8
  84. package/lib/data/rest-api/rest-api-mockdata.d.ts +0 -7
  85. package/lib/data/rest-api/rest-api-mockdata.js +0 -585
  86. package/lib/data/rest-api/rest-api.d.ts +0 -3
  87. package/lib/data/rest-api/rest-api.js +0 -26
  88. package/lib/lib/compression.d.ts +0 -27
  89. package/lib/lib/compression.js +0 -87
  90. package/lib/services/index.d.ts +0 -5
  91. package/lib/services/index.js +0 -22
  92. package/lib/services/open-hi-auth-service.d.ts +0 -31
  93. package/lib/services/open-hi-auth-service.js +0 -31
  94. package/lib/services/open-hi-core-service.d.ts +0 -15
  95. package/lib/services/open-hi-core-service.js +0 -38
  96. package/lib/services/open-hi-data-service.d.ts +0 -18
  97. package/lib/services/open-hi-data-service.js +0 -18
  98. package/lib/services/open-hi-global-service.d.ts +0 -15
  99. package/lib/services/open-hi-global-service.js +0 -44
  100. package/lib/services/open-hi-rest-api-service.d.ts +0 -17
  101. package/lib/services/open-hi-rest-api-service.js +0 -107
@@ -1,585 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.organizationsMock = exports.careTeamParticipantsMock = exports.patientsMock = void 0;
4
- const patientsMock = {
5
- "019bb003-7de1-7290-bf54-84ba6b4936f1": {
6
- resourceType: "Patient",
7
- identifier: [
8
- {
9
- use: "official",
10
- value: "019bb003-7de1-7290-bf54-84ba6b4936f1",
11
- type: [
12
- {
13
- coding: [
14
- {
15
- system: "openhi",
16
- version: "v0.0.1",
17
- display: "system",
18
- userSelected: false,
19
- },
20
- ],
21
- text: "OpenHI Internal Identifier",
22
- },
23
- ],
24
- },
25
- ],
26
- active: true,
27
- name: [
28
- {
29
- use: "usual",
30
- text: "Dr. Karl Stephen McDanielson IV",
31
- family: "McDanielson",
32
- given: "Karl",
33
- prefix: "Dr.",
34
- suffix: "IV",
35
- },
36
- ],
37
- telecom: [
38
- {
39
- system: "phone",
40
- value: "18885550100",
41
- use: "mobile",
42
- rank: 2,
43
- },
44
- {
45
- system: "sms",
46
- value: "18885550100",
47
- use: "mobile",
48
- rank: 1,
49
- },
50
- ],
51
- gender: "male",
52
- birthDate: "19560908",
53
- deceasedBoolean: true,
54
- deceasedDateTime: null,
55
- address: [
56
- {
57
- use: "home",
58
- type: "both",
59
- text: "432 Cedar St., St. Paul, MN 92033",
60
- line: "432 Cedar St.",
61
- city: "St. Paul",
62
- district: "Warren County",
63
- state: "MN",
64
- postalCode: "92033",
65
- country: "US",
66
- },
67
- ],
68
- maritalStatus: {
69
- coding: [
70
- {
71
- system: "openhi",
72
- version: "v0.0.1",
73
- display: "any",
74
- userSelected: false,
75
- },
76
- ],
77
- text: "Married",
78
- },
79
- multipleBirthBoolean: true,
80
- multipleBirthInteger: 1,
81
- contact: null,
82
- animal: null,
83
- communication: [
84
- {
85
- language: {
86
- text: "en-US",
87
- },
88
- preferred: false,
89
- },
90
- {
91
- language: {
92
- text: "eo-AQ",
93
- },
94
- preferred: true,
95
- },
96
- ],
97
- generalPractitioner: [
98
- {
99
- reference: "/careteam_participants/019bb00e-04ab-7614-aab4-1b86b3a9f12d",
100
- identifier: "019bb00e-04ab-7614-aab4-1b86b3a9f12d",
101
- display: "Dr. Moreau",
102
- },
103
- {
104
- reference: "/careteam_participants/019bb016-7aad-70af-a553-e05123271886",
105
- identifier: "019bb016-7aad-70af-a553-e05123271886",
106
- display: "Dr. West",
107
- },
108
- ],
109
- managingOrganization: {
110
- reference: "/organizations/019bb02c-25c9-7a81-8d2c-cf6b7f233b08",
111
- identifier: "019bb02c-25c9-7a81-8d2c-cf6b7f233b08",
112
- display: "Real Good Medical Care Inc.",
113
- },
114
- link: null,
115
- },
116
- "019bb003-7de1-7559-99ca-a922e1009338": {
117
- resourceType: "Patient",
118
- identifier: [
119
- {
120
- use: "official",
121
- value: "019bb003-7de1-7559-99ca-a922e1009338",
122
- type: [
123
- {
124
- coding: [
125
- {
126
- system: "openhi",
127
- version: "v0.0.1",
128
- display: "system",
129
- userSelected: false,
130
- },
131
- ],
132
- text: "OpenHI Internal Identifier",
133
- },
134
- ],
135
- },
136
- ],
137
- active: true,
138
- name: [
139
- {
140
- use: "official",
141
- text: "Dr. Linda Elise Farquar",
142
- family: "Farquar",
143
- given: "Linda",
144
- prefix: "Dr.",
145
- suffix: null,
146
- },
147
- ],
148
- telecom: [
149
- {
150
- system: "sms",
151
- value: "18885550101",
152
- use: "mobile",
153
- rank: 3,
154
- },
155
- {
156
- system: "phone",
157
- value: "18885550101",
158
- use: "mobile",
159
- rank: 1,
160
- },
161
- {
162
- system: "email",
163
- value: "linda@farquarfamily.net",
164
- use: "home",
165
- rank: 2,
166
- },
167
- ],
168
- gender: "female",
169
- birthDate: "19840721",
170
- deceasedBoolean: false,
171
- deceasedDateTime: null,
172
- address: [
173
- {
174
- use: "home",
175
- type: "both",
176
- text: "1776 America Esplanade, Sacremento, CA 98077",
177
- line: "1776 America Esplanade",
178
- city: "Sacremento",
179
- district: "Sacremento County",
180
- state: "CA",
181
- postalCode: "98077",
182
- country: "US",
183
- },
184
- ],
185
- maritalStatus: {
186
- coding: [
187
- {
188
- system: "openhi",
189
- version: "v0.0.1",
190
- display: "any",
191
- userSelected: false,
192
- },
193
- ],
194
- text: "Single",
195
- },
196
- multipleBirthBoolean: false,
197
- multipleBirthInteger: null,
198
- contact: [],
199
- communication: [
200
- {
201
- language: {
202
- text: "es-MX",
203
- },
204
- preferred: true,
205
- },
206
- {
207
- language: {
208
- text: "eo-AQ",
209
- },
210
- preferred: false,
211
- },
212
- ],
213
- generalPractitioner: [
214
- {
215
- reference: "/careteam_participants/019bb00e-04ab-7614-aab4-1b86b3a9f12d",
216
- identifier: "019bb00e-04ab-7614-aab4-1b86b3a9f12d",
217
- display: "Dr. Moreau",
218
- },
219
- {
220
- reference: "/careteam_participants/019bb016-7aad-70af-a553-e05123271886",
221
- identifier: "019bb016-7aad-70af-a553-e05123271886",
222
- display: "Dr. West",
223
- },
224
- ],
225
- managingOrganization: {
226
- reference: "/organizations/019bb02c-25c9-7a81-8d2c-cf6b7f233b08",
227
- identifier: "019bb02c-25c9-7a81-8d2c-cf6b7f233b08",
228
- display: "Real Good Medical Care Inc.",
229
- },
230
- link: null,
231
- },
232
- "019bb003-7de1-78c9-9305-01eaf2dd852b": {
233
- resourceType: "Patient",
234
- identifier: [
235
- {
236
- use: "official",
237
- value: "019bb003-7de1-78c9-9305-01eaf2dd852b",
238
- type: [
239
- {
240
- coding: [
241
- {
242
- system: "openhi",
243
- version: "v0.0.1",
244
- display: "system",
245
- userSelected: false,
246
- },
247
- ],
248
- text: "OpenHI Internal Identifier",
249
- },
250
- ],
251
- },
252
- ],
253
- active: true,
254
- name: [
255
- {
256
- use: "usual",
257
- text: "Jasimine Davida Ellison",
258
- family: "Ellison",
259
- given: "Jasimine",
260
- prefix: "Ms.",
261
- suffix: null,
262
- },
263
- ],
264
- telecom: [
265
- {
266
- system: "phone",
267
- value: "18885550102",
268
- use: "home",
269
- rank: 2,
270
- },
271
- {
272
- system: "fax",
273
- value: "18885550103",
274
- use: "home",
275
- rank: 1,
276
- },
277
- ],
278
- gender: "female",
279
- birthDate: "19760101",
280
- deceasedBoolean: false,
281
- deceasedDateTime: null,
282
- address: [
283
- {
284
- use: "home",
285
- type: "both",
286
- text: "1088 Hastings Blvd., New Orleans, LA, 78912",
287
- line: "1088 Hastings Blvd.",
288
- city: "New Orleans",
289
- district: "Orleans Parish",
290
- state: "LA",
291
- postalCode: "78912",
292
- country: "US",
293
- },
294
- ],
295
- maritalStatus: {
296
- coding: [
297
- {
298
- system: "openhi",
299
- version: "v0.0.1",
300
- display: "any",
301
- userSelected: false,
302
- },
303
- ],
304
- text: "Single",
305
- },
306
- multipleBirthBoolean: true,
307
- multipleBirthInteger: 3,
308
- contact: null,
309
- communication: [
310
- {
311
- language: {
312
- text: "en-US",
313
- },
314
- preferred: false,
315
- },
316
- {
317
- language: {
318
- text: "fr-AQ",
319
- },
320
- preferred: true,
321
- },
322
- ],
323
- generalPractitioner: [
324
- {
325
- reference: "/careteam_participants/019bb00e-04ab-7614-aab4-1b86b3a9f12d",
326
- identifier: "019bb00e-04ab-7614-aab4-1b86b3a9f12d",
327
- display: "Dr. Moreau",
328
- },
329
- {
330
- reference: "/careteam_participants/019bb016-7aad-70af-a553-e05123271886",
331
- identifier: "019bb016-7aad-70af-a553-e05123271886",
332
- display: "Dr. West",
333
- },
334
- ],
335
- managingOrganization: {
336
- reference: "/organizations/019bb02c-25c9-7a81-8d2c-cf6b7f233b08",
337
- identifier: "019bb02c-25c9-7a81-8d2c-cf6b7f233b08",
338
- display: "Real Good Medical Care Inc.",
339
- },
340
- link: null,
341
- },
342
- "019bb003-7de1-7fa1-9532-3de54627923b": {
343
- identifier: [
344
- {
345
- use: "official",
346
- value: "019bb003-7de1-7fa1-9532-3de54627923b",
347
- type: [
348
- {
349
- coding: [
350
- {
351
- system: "openhi",
352
- version: "v0.0.1",
353
- display: "system",
354
- userSelected: false,
355
- },
356
- ],
357
- text: "OpenHI Internal Identifier",
358
- },
359
- ],
360
- },
361
- ],
362
- active: true,
363
- name: [
364
- {
365
- use: "usual",
366
- text: "Dr. Mario Luigi Mushroom",
367
- family: "Mushroom",
368
- given: "Mario",
369
- prefix: "Dr.",
370
- suffix: null,
371
- },
372
- ],
373
- telecom: [
374
- {
375
- system: "email",
376
- value: "mario@mushroomkingdom.org",
377
- use: "home",
378
- rank: 1,
379
- },
380
- {
381
- system: "sms",
382
- value: "18885550104",
383
- use: "mobile",
384
- rank: 2,
385
- },
386
- {
387
- system: "phone",
388
- value: "18885550103",
389
- use: "mobile",
390
- rank: 3,
391
- },
392
- ],
393
- gender: "male",
394
- birthDate: "19810709",
395
- deceasedBoolean: false,
396
- deceasedDateTime: null,
397
- address: [
398
- {
399
- use: "home",
400
- type: "both",
401
- text: "657 Green Shell Lane, NYC, NY 11236",
402
- line: "657 Green Shell Lane",
403
- city: "New York City",
404
- district: "Kings County",
405
- state: "NY",
406
- postalCode: "11236",
407
- country: "US",
408
- },
409
- ],
410
- maritalStatus: {
411
- coding: [
412
- {
413
- system: "openhi",
414
- version: "v0.0.1",
415
- display: "any",
416
- userSelected: false,
417
- },
418
- ],
419
- text: "Single",
420
- },
421
- multipleBirthBoolean: false,
422
- multipleBirthInteger: 1,
423
- contact: [],
424
- communication: [
425
- {
426
- language: {
427
- text: "en-US",
428
- },
429
- preferred: false,
430
- },
431
- {
432
- language: {
433
- text: "eo-AQ",
434
- },
435
- preferred: true,
436
- },
437
- ],
438
- generalPractitioner: [
439
- {
440
- reference: "/careteam_participants/019bb00e-04ab-7614-aab4-1b86b3a9f12d",
441
- identifier: "019bb00e-04ab-7614-aab4-1b86b3a9f12d",
442
- display: "Dr. Moreau",
443
- },
444
- {
445
- reference: "/careteam_participants/019bb016-7aad-70af-a553-e05123271886",
446
- identifier: "019bb016-7aad-70af-a553-e05123271886",
447
- display: "Dr. West",
448
- },
449
- ],
450
- managingOrganization: {
451
- reference: "/organizations/019bb02c-25c9-7a81-8d2c-cf6b7f233b08",
452
- identifier: "019bb02c-25c9-7a81-8d2c-cf6b7f233b08",
453
- display: "Real Good Medical Care Inc.",
454
- },
455
- link: null,
456
- },
457
- };
458
- exports.patientsMock = patientsMock;
459
- const careTeamParticipantsMock = {
460
- "019bb00e-04ab-7614-aab4-1b86b3a9f12d": {
461
- role: {
462
- coding: [
463
- {
464
- system: "openhi",
465
- version: "v0.0.1",
466
- display: "any",
467
- userSelected: false,
468
- },
469
- ],
470
- text: "Primary care physician",
471
- },
472
- member: {
473
- reference: "/persons/019bb058-2824-7c26-9cfd-09257cb98c75",
474
- identifier: "019bb058-2824-7c26-9cfd-09257cb98c75",
475
- display: "Dr. Moreau",
476
- },
477
- onBehalfOf: {
478
- reference: "/organizations/019bb02c-25c9-7a81-8d2c-cf6b7f233b08",
479
- identifier: "019bb02c-25c9-7a81-8d2c-cf6b7f233b08",
480
- display: "Real Good Medical Care Inc.",
481
- },
482
- },
483
- "019bb016-7aad-70af-a553-e05123271886": {
484
- role: {
485
- coding: [
486
- {
487
- system: "openhi",
488
- version: "v0.0.1",
489
- display: "any",
490
- userSelected: false,
491
- },
492
- ],
493
- text: "Primary care physician",
494
- },
495
- member: {
496
- reference: "/persons/019bb059-2d95-7c96-b15d-75fbb6ddfd25",
497
- identifier: "019bb059-2d95-7c96-b15d-75fbb6ddfd25",
498
- display: "Dr. West",
499
- },
500
- onBehalfOf: {
501
- reference: "/organizations/019bb02c-25c9-7a81-8d2c-cf6b7f233b08",
502
- identifier: "019bb02c-25c9-7a81-8d2c-cf6b7f233b08",
503
- display: "Real Good Medical Care Inc.",
504
- },
505
- },
506
- };
507
- exports.careTeamParticipantsMock = careTeamParticipantsMock;
508
- const organizationsMock = {
509
- "019bb02c-25c9-7a81-8d2c-cf6b7f233b08": {
510
- resourceType: "Organization",
511
- identifier: [
512
- {
513
- use: "official",
514
- value: "019bb02c-25c9-7a81-8d2c-cf6b7f233b08",
515
- type: [
516
- {
517
- coding: [
518
- {
519
- system: "openhi",
520
- version: "v0.0.1",
521
- display: "system",
522
- userSelected: false,
523
- },
524
- ],
525
- text: "OpenHI Internal Identifier",
526
- },
527
- ],
528
- },
529
- ],
530
- active: true,
531
- type: [
532
- {
533
- coding: [
534
- {
535
- system: "openhi",
536
- version: "v0.0.1",
537
- display: "all",
538
- userSelected: false,
539
- },
540
- ],
541
- text: "Primary Care Facility",
542
- },
543
- ],
544
- name: "Real Good Medical Care Inc.",
545
- alias: ["Real Good Healthcare", "Real Good Doctors", "Health Wizards"],
546
- telecom: [
547
- {
548
- system: "email",
549
- value: "contact@realgoodmedicalcare.co.uk",
550
- use: "work",
551
- rank: 3,
552
- },
553
- {
554
- system: "fax",
555
- value: "18885550107",
556
- use: "work",
557
- rank: 2,
558
- },
559
- {
560
- system: "phone",
561
- value: "18885550106",
562
- use: "work",
563
- rank: 1,
564
- },
565
- ],
566
- address: [
567
- {
568
- use: "work",
569
- type: "both",
570
- text: "1202 Napoleon Ave., Kalamazoo, MI 76543",
571
- line: "1202 Napoleon Ave.",
572
- city: "Kalamazoo",
573
- district: "Kalamazoo County",
574
- state: "MI",
575
- postalCode: "76543",
576
- country: "US",
577
- },
578
- ],
579
- partOf: null,
580
- contact: [],
581
- endpoint: null,
582
- },
583
- };
584
- exports.organizationsMock = organizationsMock;
585
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdC1hcGktbW9ja2RhdGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZGF0YS9yZXN0LWFwaS9yZXN0LWFwaS1tb2NrZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFHQSxNQUFNLFlBQVksR0FBZTtJQUMvQixzQ0FBc0MsRUFBRTtRQUN0QyxZQUFZLEVBQUUsU0FBUztRQUN2QixVQUFVLEVBQUU7WUFDVjtnQkFDRSxHQUFHLEVBQUUsVUFBVTtnQkFDZixLQUFLLEVBQUUsc0NBQXNDO2dCQUM3QyxJQUFJLEVBQUU7b0JBQ0o7d0JBQ0UsTUFBTSxFQUFFOzRCQUNOO2dDQUNFLE1BQU0sRUFBRSxRQUFRO2dDQUNoQixPQUFPLEVBQUUsUUFBUTtnQ0FDakIsT0FBTyxFQUFFLFFBQVE7Z0NBQ2pCLFlBQVksRUFBRSxLQUFLOzZCQUNwQjt5QkFDRjt3QkFDRCxJQUFJLEVBQUUsNEJBQTRCO3FCQUNuQztpQkFDRjthQUNGO1NBQ0Y7UUFDRCxNQUFNLEVBQUUsSUFBSTtRQUNaLElBQUksRUFBRTtZQUNKO2dCQUNFLEdBQUcsRUFBRSxPQUFPO2dCQUNaLElBQUksRUFBRSxpQ0FBaUM7Z0JBQ3ZDLE1BQU0sRUFBRSxhQUFhO2dCQUNyQixLQUFLLEVBQUUsTUFBTTtnQkFDYixNQUFNLEVBQUUsS0FBSztnQkFDYixNQUFNLEVBQUUsSUFBSTthQUNiO1NBQ0Y7UUFDRCxPQUFPLEVBQUU7WUFDUDtnQkFDRSxNQUFNLEVBQUUsT0FBTztnQkFDZixLQUFLLEVBQUUsYUFBYTtnQkFDcEIsR0FBRyxFQUFFLFFBQVE7Z0JBQ2IsSUFBSSxFQUFFLENBQUM7YUFDUjtZQUNEO2dCQUNFLE1BQU0sRUFBRSxLQUFLO2dCQUNiLEtBQUssRUFBRSxhQUFhO2dCQUNwQixHQUFHLEVBQUUsUUFBUTtnQkFDYixJQUFJLEVBQUUsQ0FBQzthQUNSO1NBQ0Y7UUFDRCxNQUFNLEVBQUUsTUFBTTtRQUNkLFNBQVMsRUFBRSxVQUFVO1FBQ3JCLGVB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LElBQUk7Z0JBQ1gsVUFBVSxFQUFFLE9BQU87Z0JBQ25CLE9BQU8sRUFBRSxJQUFJO2FBQ2Q7U0FDRjtRQUNELE1BQU0sRUFBRSxJQUFJO1FBQ1osT0FBTyxFQUFFLEVBQUU7UUFDWCxRQUFRLEVBQUUsSUFBSTtLQUNmO0NBQ0YsQ0FBQztBQUUrQyw4Q0FBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbnRlcmZhY2UgRGljdGlvbmFyeSB7XG4gIFtrZXk6IHN0cmluZ106IG9iamVjdDtcbn1cbmNvbnN0IHBhdGllbnRzTW9jazogRGljdGlvbmFyeSA9IHtcbiAgXCIwMTliYjAwMy03ZGUxLTcyOTAtYmY1NC04NGJhNmI0OTM2ZjFcIjoge1xuICAgIHJlc291cmNlVHlwZTogXCJQYXRpZW50XCIsXG4gICAgaWRlbnRpZmllcjogW1xuICAgICAge1xuICAgICAgICB1c2U6IFwib2ZmaWNpYWxcIixcbiAgICAgICAgdmFsdWU6IFwiMDE5YmIwMDMtN2RlMS03MjkwLWJmNTQtODRiYTZiNDkzNmYxXCIsXG4gICAgICAgIHR5cGU6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb2Rpbmc6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHN5c3RlbTogXCJvcGVuaGlcIixcbiAgICAgICAgICAgICAgICB2ZXJzaW9uOiBcInYwLjAuMVwiLFxuICAgICAgICAgICAgICAgIGRpc3BsYXk6IFwic3lzdGVtXCIsXG4gICAgICAgICAgICAgICAgdXNlclNlbGVjdGVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICB0ZXh0OiBcIk9wZW5ISSBJbnRlcm5hbCBJZGVudGlmaWVyXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgXSxcbiAgICBhY3RpdmU6IHRydWUsXG4gICAgbmFtZTogW1xuICAgICAge1xuICAgICAgICB1c2U6IFwidXN1YWxcIixcbiAgICAgICAgdGV4dDogXCJEci4gS2FybCBTdGVwaGVuIE1jRGFuaWVsc29uIElWXCIsXG4gICAgICAgIGZhbWlseTogXCJNY0RhbmllbHNvblwiLFxuICAgICAgICBnaXZlbjogXCJLYXJsXCIsXG4gICAgICAgIHByZWZpeDogXCJEci5cIixcbiAgICAgICAgc3VmZml4OiBcIklWXCIsXG4gICAgICB9LFxuICAgIF0sXG4gICAgdGVsZWNvbTogW1xuICAgICAge1xuICAgICAgICBzeXN0ZW06IFwicGhvbmVcIixcbiAgICAgICAgdmFsdWU6IFwiMTg4ODU1NTAxMDBcIixcbiAgICAgICAgdXNlOiBcIm1vYmlsZVwiLFxuICAgICAgICByYW5rOiAyLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgc3lzdGVtOiBcInNtc1wiLFxuICAgICAgICB2YWx1ZTogXCIxODg4NTU1MDEwMFwiLFxuICAgICAgICB1c2U6IFwibW9iaWxlXCIsXG4gICAgICAgIHJhbms6IDEsXG4gICAgICB9LFxuICAgIF0sXG4gICAgZ2VuZGVyOiBcIm1hbGVcIixcbiAgICBiaXJ0aERhdGU6IFwiMTk1NjA5MDhcIixcbiAgICBkZWNlYXNlZEJvb2xlYW46IHRydWUsXG4gICAgZGVjZWFzZWREYXRlVGltZTogbnVsbCxcbiAgICBhZGRyZXNzOiBbXG4gICAgICB7XG4gICAgICAgIHVzZTogXCJob21lXCIsXG4gICAgICAgIHR5cGU6IFwiYm90aFwiLFxuICAgICAgICB0ZXh0OiBcIjQzMiBDZWRhciBTdC4sIFN0LiBQYXVsLCBNTiA5MjAzM1wiLFxuICAgICAgICBsaW5lOiBcIjQzMiBDZWRhciBTdC5cIixcbiAgICAgICAgY2l0eTogXCJTdC4gUGF1bFwiLFxuICAgICAgICBkaXN0cmljdDogXCJXYXJyZW4gQ291bnR5XCIsXG4gICAgICAgIHN0YXRlOiBcIk1OXCIsXG4gICAgICAgIHBvc3RhbENvZGU6IFwiOTIwMzNcIixcbiAgICAgICAgY291bnRyeTogXCJVU1wiLFxuICAgICAgfSxcbiAgICBdLFxuICAgIG1hcml0YWxTdGF0dXM6IHtcbiAgICAgIGNvZGluZzogW1xuICAgICAgICB7XG4gICAgICAgICAgc3lzdGVtOiBcIm9wZW5oaVwiLFxuICAgICAgICAgIHZlcnNpb246IFwidjAuMC4xXCIsXG4gICAgICAgICAgZGlzcGxheTogXCJhbnlcIixcbiAgICAgICAgICB1c2VyU2VsZWN0ZWQ6IGZhbHNlLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIHRleHQ6IFwiTWFycmllZFwiLFxuICAgIH0sXG4gICAgbXVsdGlwbGVCaXJ0aEJvb2xlYW46IHRydWUsXG4gICAgbXVsdGlwbGVCaXJ0aEludGVnZXI6IDEsXG4gICAgY29udGFjdDogbnVsbCxcbiAgICBhbmltYWw6IG51bGwsXG4gICAgY29tbXVuaWNhdGlvbjogW1xuICAgICAge1xuICAgICAgICBsYW5ndWFnZToge1xuICAgICAgICAgIHRleHQ6IFwiZW4tVVNcIixcbiAgICAgICAgfSxcbiAgICAgICAgcHJlZmVycmVkOiBmYWxzZSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGxhbmd1YWdlOiB7XG4gICAgICAgICAgdGV4dDogXCJlby1BUVwiLFxuICAgICAgICB9LFxuICAgICAgICBwcmVmZXJyZWQ6IHRydWUsXG4gICAgICB9LFxuICAgIF0sXG4gICAgZ2VuZXJhbFByYWN0aXRpb25lcjogW1xuICAgICAge1xuICAgICAgICByZWZlcmVuY2U6XG4gICAgICAgICAgXCIvY2FyZXRlYW1fcGFydGljaXBhbnRzLzAxOWJiMDBlLTA0YWItNzYxNC1hYWI0LTFiODZiM2E5ZjEyZFwiLFxuICAgICAgICBpZGVudGlmaWVyOiBcIjAxOWJiMDBlLTA0YWItNzYxNC1hYWI0LTFiODZiM2E5ZjEyZFwiLFxuICAgICAgICBkaXNwbGF5OiBcIkRyLiBNb3JlYXVcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHJlZmVyZW5jZTpcbiAgICAgICAgICBcIi9jYXJldGVhbV9wYXJ0aWNpcGFudHMvMDE5YmIwMTYtN2FhZC03MGFmLWE1NTMtZTA1MTIzMjcxODg2XCIsXG4gICAgICAgIGlkZW50aWZpZXI6IFwiMDE5YmIwMTYtN2FhZC03MGFmLWE1NTMtZTA1MTIzMjcxODg2XCIsXG4gICAgICAgIGRpc3BsYXk6IFwiRHIuIFdlc3RcIixcbiAgICAgIH0sXG4gICAgXSxcbiAgICBtYW5hZ2luZ09yZ2FuaXphdGlvbjoge1xuICAgICAgcmVmZXJlbmNlOiBcIi9vcmdhbml6YXRpb25zLzAxOWJiMDJjLTI1YzktN2E4MS04ZDJjLWNmNmI3ZjIzM2IwOFwiLFxuICAgICAgaWRlbnRpZmllcjogXCIwMTliYjAyYy0yNWM5LTdhODEtOGQyYy1jZjZiN2YyMzNiMDhcIixcbiAgICAgIGRpc3BsYXk6IFwiUmVhbCBHb29kIE1lZGljYWwgQ2FyZSBJbmMuXCIsXG4gICAgfSxcbiAgICBsaW5rOiBudWxsLFxuICB9LFxuICBcIjAxOWJiMDAzLTdkZTEtNzU1OS05OWNhLWE5MjJlMTAwOTMzOFwiOiB7XG4gICAgcmVzb3VyY2VUeXBlOiBcIlBhdGllbnRcIixcbiAgICBpZGVudGlmaWVyOiBbXG4gICAgICB7XG4gICAgICAgIHVzZTogXCJvZmZpY2lhbFwiLFxuICAgICAgICB2YWx1ZTogXCIwMTliYjAwMy03ZGUxLTc1NTktOTljYS1hOTIyZTEwMDkzMzhcIixcbiAgICAgICAgdHlwZTogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvZGluZzogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgc3lzdGVtOiBcIm9wZW5oaVwiLFxuICAgICAgICAgICAgICAgIHZlcnNpb246IFwidjAuMC4xXCIsXG4gICAgICAgICAgICAgICAgZGlzcGxheTogXCJzeXN0ZW1cIixcbiAgICAgICAgICAgICAgICB1c2VyU2VsZWN0ZWQ6IGZhbHNlLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIHRleHQ6IFwiT3BlbkhJIEludGVybmFsIElkZW50aWZpZXJcIixcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICBdLFxuICAgIGFjdGl2ZTogdHJ1ZSxcbiAgICBuYW1lOiBbXG4gICAgICB7XG4gICAgICAgIHVzZTogXCJvZmZpY2lhbFwiLFxuICAgICAgICB0ZXh0OiBcIkRyLiBMaW5kYSBFbGlzZSBGYXJxdWFyXCIsXG4gICAgICAgIGZhbWlseTogXCJGYXJxdWFyXCIsXG4gICAgICAgIGdpdmVuOiBcIkxpbmRhXCIsXG4gICAgICAgIHByZWZpeDogXCJEci5cIixcbiAgICAgICAgc3VmZml4OiBudWxsLFxuICAgICAgfSxcbiAgICBdLFxuICAgIHRlbGVjb206IFtcbiAgICAgIHtcbiAgICAgICAgc3lzdGVtOiBcInNtc1wiLFxuICAgICAgICB2YWx1ZTogXCIxODg4NTU1MDEwMVwiLFxuICAgICAgICB1c2U6IFwibW9iaWxlXCIsXG4gICAgICAgIHJhbms6IDMsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBzeXN0ZW06IFwicGhvbmVcIixcbiAgICAgICAgdmFsdWU6IFwiMTg4ODU1NTAxMDFcIixcbiAgICAgICAgdXNlOiBcIm1vYmlsZVwiLFxuICAgICAgICByYW5rOiAxLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgc3lzdGVtOiBcImVtYWlsXCIsXG4gICAgICAgIHZhbHVlOiBcImxpbmRhQGZhcnF1YXJmYW1pbHkubmV0XCIsXG4gICAgICAgIHVzZTogXCJob21lXCIsXG4gICAgICAgIHJhbms6IDIsXG4gICAgICB9LFxuICAgIF0sXG4gICAgZ2VuZGVyOiBcImZlbWFsZVwiLFxuICAgIGJpcnRoRGF0ZTogXCIxOTg0MDcyMVwiLFxuICAgIGRlY2Vhc2VkQm9vbGVhbjogZmFsc2UsXG4gICAgZGVjZWFzZWREYXRlVGltZTogbnVsbCxcbiAgICBhZGRyZXNzOiBbXG4gICAgICB7XG4gICAgICAgIHVzZTogXCJob21lXCIsXG4gICAgICAgIHR5cGU6IFwiYm90aFwiLFxuICAgICAgICB0ZXh0OiBcIjE3NzYgQW1lcmljYSBFc3BsYW5hZGUsIFNhY3JlbWVudG8sIENBIDk4MDc3XCIsXG4gICAgICAgIGxpbmU6IFwiMTc3NiBBbWVyaWNhIEVzcGxhbmFkZVwiLFxuICAgICAgICBjaXR5OiBcIlNhY3JlbWVudG9cIixcbiAgICAgICAgZGlzdHJpY3Q6IFwiU2FjcmVtZW50byBDb3VudHlcIixcbiAgICAgICAgc3RhdGU6IFwiQ0FcIixcbiAgICAgICAgcG9zdGFsQ29kZTogXCI5ODA3N1wiLFxuICAgICAgICBjb3VudHJ5OiBcIlVTXCIsXG4gICAgICB9LFxuICAgIF0sXG4gICAgbWFyaXRhbFN0YXR1czoge1xuICAgICAgY29kaW5nOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBzeXN0ZW06IFwib3BlbmhpXCIsXG4gICAgICAgICAgdmVyc2lvbjogXCJ2MC4wLjFcIixcbiAgICAgICAgICBkaXNwbGF5OiBcImFueVwiLFxuICAgICAgICAgIHVzZXJTZWxlY3RlZDogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgdGV4dDogXCJTaW5nbGVcIixcbiAgICB9LFxuICAgIG11bHRpcGxlQmlydGhCb29sZWFuOiBmYWxzZSxcbiAgICBtdWx0aXBsZUJpcnRoSW50ZWdlcjogbnVsbCxcbiAgICBjb250YWN0OiBbXSxcbiAgICBjb21tdW5pY2F0aW9uOiBbXG4gICAgICB7XG4gICAgICAgIGxhbmd1YWdlOiB7XG4gICAgICAgICAgdGV4dDogXCJlcy1NWFwiLFxuICAgICAgICB9LFxuICAgICAgICBwcmVmZXJyZWQ6IHRydWUsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBsYW5ndWFnZToge1xuICAgICAgICAgIHRleHQ6IFwiZW8tQVFcIixcbiAgICAgICAgfSxcbiAgICAgICAgcHJlZmVycmVkOiBmYWxzZSxcbiAgICAgIH0sXG4gICAgXSxcbiAgICBnZW5lcmFsUHJhY3RpdGlvbmVyOiBbXG4gICAgICB7XG4gICAgICAgIHJlZmVyZW5jZTpcbiAgICAgICAgICBcIi9jYXJldGVhbV9wYXJ0aWNpcGFudHMvMDE5YmIwMGUtMDRhYi03NjE0LWFhYjQtMWI4NmIzYTlmMTJkXCIsXG4gICAgICAgIGlkZW50aWZpZXI6IFwiMDE5YmIwMGUtMDRhYi03NjE0LWFhYjQtMWI4NmIzYTlmMTJkXCIsXG4gICAgICAgIGRpc3BsYXk6IFwiRHIuIE1vcmVhdVwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgcmVmZXJlbmNlOlxuICAgICAgICAgIFwiL2NhcmV0ZWFtX3BhcnRpY2lwYW50cy8wMTliYjAxNi03YWFkLTcwYWYtYTU1My1lMDUxMjMyNzE4ODZcIixcbiAgICAgICAgaWRlbnRpZmllcjogXCIwMTliYjAxNi03YWFkLTcwYWYtYTU1My1lMDUxMjMyNzE4ODZcIixcbiAgICAgICAgZGlzcGxheTogXCJEci4gV2VzdFwiLFxuICAgICAgfSxcbiAgICBdLFxuICAgIG1hbmFnaW5nT3JnYW5pemF0aW9uOiB7XG4gICAgICByZWZlcmVuY2U6IFwiL29yZ2FuaXphdGlvbnMvMDE5YmIwMmMtMjVjOS03YTgxLThkMmMtY2Y2YjdmMjMzYjA4XCIsXG4gICAgICBpZGVudGlmaWVyOiBcIjAxOWJiMDJjLTI1YzktN2E4MS04ZDJjLWNmNmI3ZjIzM2IwOFwiLFxuICAgICAgZGlzcGxheTogXCJSZWFsIEdvb2QgTWVkaWNhbCBDYXJlIEluYy5cIixcbiAgICB9LFxuICAgIGxpbms6IG51bGwsXG4gIH0sXG4gIFwiMDE5YmIwMDMtN2RlMS03OGM5LTkzMDUtMDFlYWYyZGQ4NTJiXCI6IHtcbiAgICByZXNvdXJjZVR5cGU6IFwiUGF0aWVudFwiLFxuICAgIGlkZW50aWZpZXI6IFtcbiAgICAgIHtcbiAgICAgICAgdXNlOiBcIm9mZmljaWFsXCIsXG4gICAgICAgIHZhbHVlOiBcIjAxOWJiMDAzLTdkZTEtNzhjOS05MzA1LTAxZWFmMmRkODUyYlwiLFxuICAgICAgICB0eXBlOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgY29kaW5nOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBzeXN0ZW06IFwib3BlbmhpXCIsXG4gICAgICAgICAgICAgICAgdmVyc2lvbjogXCJ2MC4wLjFcIixcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBcInN5c3RlbVwiLFxuICAgICAgICAgICAgICAgIHVzZXJTZWxlY3RlZDogZmFsc2UsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgdGV4dDogXCJPcGVuSEkgSW50ZXJuYWwgSWRlbnRpZmllclwiLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgIF0sXG4gICAgYWN0aXZlOiB0cnVlLFxuICAgIG5hbWU6IFtcbiAgICAgIHtcbiAgICAgICAgdXNlOiBcInVzdWFsXCIsXG4gICAgICAgIHRleHQ6IFwiSmFzaW1pbmUgRGF2aWRhIEVsbGlzb25cIixcbiAgICAgICAgZmFtaWx5OiBcIkVsbGlzb25cIixcbiAgICAgICAgZ2l2ZW46IFwiSmFzaW1pbmVcIixcbiAgICAgICAgcHJlZml4OiBcIk1zLlwiLFxuICAgICAgICBzdWZmaXg6IG51bGwsXG4gICAgICB9LFxuICAgIF0sXG4gICAgdGVsZWNvbTogW1xuICAgICAge1xuICAgICAgICBzeXN0ZW06IFwicGhvbmVcIixcbiAgICAgICAgdmFsdWU6IFwiMTg4ODU1NTAxMDJcIixcbiAgICAgICAgdXNlOiBcImhvbWVcIixcbiAgICAgICAgcmFuazogMixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHN5c3RlbTogXCJmYXhcIixcbiAgICAgICAgdmFsdWU6IFwiMTg4ODU1NTAxMDNcIixcbiAgICAgICAgdXNlOiBcImhvbWVcIixcbiAgICAgICAgcmFuazogMSxcbiAgICAgIH0sXG4gICAgXSxcbiAgICBnZW5kZXI6IFwiZmVtYWxlXCIsXG4gICAgYmlydGhEYXRlOiBcIjE5NzYwMTAxXCIsXG4gICAgZGVjZWFzZWRCb29sZWFuOiBmYWxzZSxcbiAgICBkZWNlYXNlZERhdGVUaW1lOiBudWxsLFxuICAgIGFkZHJlc3M6IFtcbiAgICAgIHtcbiAgICAgICAgdXNlOiBcImhvbWVcIixcbiAgICAgICAgdHlwZTogXCJib3RoXCIsXG4gICAgICAgIHRleHQ6IFwiMTA4OCBIYXN0aW5ncyBCbHZkLiwgTmV3IE9ybGVhbnMsIExBLCA3ODkxMlwiLFxuICAgICAgICBsaW5lOiBcIjEwODggSGFzdGluZ3MgQmx2ZC5cIixcbiAgICAgICAgY2l0eTogXCJOZXcgT3JsZWFuc1wiLFxuICAgICAgICBkaXN0cmljdDogXCJPcmxlYW5zIFBhcmlzaFwiLFxuICAgICAgICBzdGF0ZTogXCJMQVwiLFxuICAgICAgICBwb3N0YWxDb2RlOiBcIjc4OTEyXCIsXG4gICAgICAgIGNvdW50cnk6IFwiVVNcIixcbiAgICAgIH0sXG4gICAgXSxcbiAgICBtYXJpdGFsU3RhdHVzOiB7XG4gICAgICBjb2Rpbmc6IFtcbiAgICAgICAge1xuICAgICAgICAgIHN5c3RlbTogXCJvcGVuaGlcIixcbiAgICAgICAgICB2ZXJzaW9uOiBcInYwLjAuMVwiLFxuICAgICAgICAgIGRpc3BsYXk6IFwiYW55XCIsXG4gICAgICAgICAgdXNlclNlbGVjdGVkOiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICB0ZXh0OiBcIlNpbmdsZVwiLFxuICAgIH0sXG4gICAgbXVsdGlwbGVCaXJ0aEJvb2xlYW46IHRydWUsXG4gICAgbXVsdGlwbGVCaXJ0aEludGVnZXI6IDMsXG4gICAgY29udGFjdDogbnVsbCxcbiAgICBjb21tdW5pY2F0aW9uOiBbXG4gICAgICB7XG4gICAgICAgIGxhbmd1YWdlOiB7XG4gICAgICAgICAgdGV4dDogXCJlbi1VU1wiLFxuICAgICAgICB9LFxuICAgICAgICBwcmVmZXJyZWQ6IGZhbHNlLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbGFuZ3VhZ2U6IHtcbiAgICAgICAgICB0ZXh0OiBcImZyLUFRXCIsXG4gICAgICAgIH0sXG4gICAgICAgIHByZWZlcnJlZDogdHJ1ZSxcbiAgICAgIH0sXG4gICAgXSxcbiAgICBnZW5lcmFsUHJhY3RpdGlvbmVyOiBbXG4gICAgICB7XG4gICAgICAgIHJlZmVyZW5jZTpcbiAgICAgICAgICBcIi9jYXJldGVhbV9wYXJ0aWNpcGFudHMvMDE5YmIwMGUtMDRhYi03NjE0LWFhYjQtMWI4NmIzYTlmMTJkXCIsXG4gICAgICAgIGlkZW50aWZpZXI6IFwiMDE5YmIwMGUtMDRhYi03NjE0LWFhYjQtMWI4NmIzYTlmMTJkXCIsXG4gICAgICAgIGRpc3BsYXk6IFwiRHIuIE1vcmVhdVwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgcmVmZXJlbmNlOlxuICAgICAgICAgIFwiL2NhcmV0ZWFtX3BhcnRpY2lwYW50cy8wMTliYjAxNi03YWFkLTcwYWYtYTU1My1lMDUxMjMyNzE4ODZcIixcbiAgICAgICAgaWRlbnRpZmllcjogXCIwMTliYjAxNi03YWFkLTcwYWYtYTU1My1lMDUxMjMyNzE4ODZcIixcbiAgICAgICAgZGlzcGxheTogXCJEci4gV2VzdFwiLFxuICAgICAgfSxcbiAgICBdLFxuICAgIG1hbmFnaW5nT3JnYW5pemF0aW9uOiB7XG4gICAgICByZWZlcmVuY2U6IFwiL29yZ2FuaXphdGlvbnMvMDE5YmIwMmMtMjVjOS03YTgxLThkMmMtY2Y2YjdmMjMzYjA4XCIsXG4gICAgICBpZGVudGlmaWVyOiBcIjAxOWJiMDJjLTI1YzktN2E4MS04ZDJjLWNmNmI3ZjIzM2IwOFwiLFxuICAgICAgZGlzcGxheTogXCJSZWFsIEdvb2QgTWVkaWNhbCBDYXJlIEluYy5cIixcbiAgICB9LFxuICAgIGxpbms6IG51bGwsXG4gIH0sXG4gIFwiMDE5YmIwMDMtN2RlMS03ZmExLTk1MzItM2RlNTQ2Mjc5MjNiXCI6IHtcbiAgICBpZGVudGlmaWVyOiBbXG4gICAgICB7XG4gICAgICAgIHVzZTogXCJvZmZpY2lhbFwiLFxuICAgICAgICB2YWx1ZTogXCIwMTliYjAwMy03ZGUxLTdmYTEtOTUzMi0zZGU1NDYyNzkyM2JcIixcbiAgICAgICAgdHlwZTogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvZGluZzogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgc3lzdGVtOiBcIm9wZW5oaVwiLFxuICAgICAgICAgICAgICAgIHZlcnNpb246IFwidjAuMC4xXCIsXG4gICAgICAgICAgICAgICAgZGlzcGxheTogXCJzeXN0ZW1cIixcbiAgICAgICAgICAgICAgICB1c2VyU2VsZWN0ZWQ6IGZhbHNlLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIHRleHQ6IFwiT3BlbkhJIEludGVybmFsIElkZW50aWZpZXJcIixcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICBdLFxuICAgIGFjdGl2ZTogdHJ1ZSxcbiAgICBuYW1lOiBbXG4gICAgICB7XG4gICAgICAgIHVzZTogXCJ1c3VhbFwiLFxuICAgICAgICB0ZXh0OiBcIkRyLiBNYXJpbyBMdWlnaSBNdXNocm9vbVwiLFxuICAgICAgICBmYW1pbHk6IFwiTXVzaHJvb21cIixcbiAgICAgICAgZ2l2ZW46IFwiTWFyaW9cIixcbiAgICAgICAgcHJlZml4OiBcIkRyLlwiLFxuICAgICAgICBzdWZmaXg6IG51bGwsXG4gICAgICB9LFxuICAgIF0sXG4gICAgdGVsZWNvbTogW1xuICAgICAge1xuICAgICAgICBzeXN0ZW06IFwiZW1haWxcIixcbiAgICAgICAgdmFsdWU6IFwibWFyaW9AbXVzaHJvb21raW5nZG9tLm9yZ1wiLFxuICAgICAgICB1c2U6IFwiaG9tZVwiLFxuICAgICAgICByYW5rOiAxLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgc3lzdGVtOiBcInNtc1wiLFxuICAgICAgICB2YWx1ZTogXCIxODg4NTU1MDEwNFwiLFxuICAgICAgICB1c2U6IFwibW9iaWxlXCIsXG4gICAgICAgIHJhbms6IDIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBzeXN0ZW06IFwicGhvbmVcIixcbiAgICAgICAgdmFsdWU6IFwiMTg4ODU1NTAxMDNcIixcbiAgICAgICAgdXNlOiBcIm1vYmlsZVwiLFxuICAgICAgICByYW5rOiAzLFxuICAgICAgfSxcbiAgICBdLFxuICAgIGdlbmRlcjogXCJtYWxlXCIsXG4gICAgYmlydGhEYXRlOiBcIjE5ODEwNzA5XCIsXG4gICAgZGVjZWFzZWRCb29sZWFuOiBmYWxzZSxcbiAgICBkZWNlYXNlZERhdGVUaW1lOiBudWxsLFxuICAgIGFkZHJlc3M6IFtcbiAgICAgIHtcbiAgICAgICAgdXNlOiBcImhvbWVcIixcbiAgICAgICAgdHlwZTogXCJib3RoXCIsXG4gICAgICAgIHRleHQ6IFwiNjU3IEdyZWVuIFNoZWxsIExhbmUsIE5ZQywgTlkgMTEyMzZcIixcbiAgICAgICAgbGluZTogXCI2NTcgR3JlZW4gU2hlbGwgTGFuZVwiLFxuICAgICAgICBjaXR5OiBcIk5ldyBZb3JrIENpdHlcIixcbiAgICAgICAgZGlzdHJpY3Q6IFwiS2luZ3MgQ291bnR5XCIsXG4gICAgICAgIHN0YXRlOiBcIk5ZXCIsXG4gICAgICAgIHBvc3RhbENvZGU6IFwiMTEyMzZcIixcbiAgICAgICAgY291bnRyeTogXCJVU1wiLFxuICAgICAgfSxcbiAgICBdLFxuICAgIG1hcml0YWxTdGF0dXM6IHtcbiAgICAgIGNvZGluZzogW1xuICAgICAgICB7XG4gICAgICAgICAgc3lzdGVtOiBcIm9wZW5oaVwiLFxuICAgICAgICAgIHZlcnNpb246IFwidjAuMC4xXCIsXG4gICAgICAgICAgZGlzcGxheTogXCJhbnlcIixcbiAgICAgICAgICB1c2VyU2VsZWN0ZWQ6IGZhbHNlLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIHRleHQ6IFwiU2luZ2xlXCIsXG4gICAgfSxcbiAgICBtdWx0aXBsZUJpcnRoQm9vbGVhbjogZmFsc2UsXG4gICAgbXVsdGlwbGVCaXJ0aEludGVnZXI6IDEsXG4gICAgY29udGFjdDogW10sXG4gICAgY29tbXVuaWNhdGlvbjogW1xuICAgICAge1xuICAgICAgICBsYW5ndWFnZToge1xuICAgICAgICAgIHRleHQ6IFwiZW4tVVNcIixcbiAgICAgICAgfSxcbiAgICAgICAgcHJlZmVycmVkOiBmYWxzZSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGxhbmd1YWdlOiB7XG4gICAgICAgICAgdGV4dDogXCJlby1BUVwiLFxuICAgICAgICB9LFxuICAgICAgICBwcmVmZXJyZWQ6IHRydWUsXG4gICAgICB9LFxuICAgIF0sXG4gICAgZ2VuZXJhbFByYWN0aXRpb25lcjogW1xuICAgICAge1xuICAgICAgICByZWZlcmVuY2U6XG4gICAgICAgICAgXCIvY2FyZXRlYW1fcGFydGljaXBhbnRzLzAxOWJiMDBlLTA0YWItNzYxNC1hYWI0LTFiODZiM2E5ZjEyZFwiLFxuICAgICAgICBpZGVudGlmaWVyOiBcIjAxOWJiMDBlLTA0YWItNzYxNC1hYWI0LTFiODZiM2E5ZjEyZFwiLFxuICAgICAgICBkaXNwbGF5OiBcIkRyLiBNb3JlYXVcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHJlZmVyZW5jZTpcbiAgICAgICAgICBcIi9jYXJldGVhbV9wYXJ0aWNpcGFudHMvMDE5YmIwMTYtN2FhZC03MGFmLWE1NTMtZTA1MTIzMjcxODg2XCIsXG4gICAgICAgIGlkZW50aWZpZXI6IFwiMDE5YmIwMTYtN2FhZC03MGFmLWE1NTMtZTA1MTIzMjcxODg2XCIsXG4gICAgICAgIGRpc3BsYXk6IFwiRHIuIFdlc3RcIixcbiAgICAgIH0sXG4gICAgXSxcbiAgICBtYW5hZ2luZ09yZ2FuaXphdGlvbjoge1xuICAgICAgcmVmZXJlbmNlOiBcIi9vcmdhbml6YXRpb25zLzAxOWJiMDJjLTI1YzktN2E4MS04ZDJjLWNmNmI3ZjIzM2IwOFwiLFxuICAgICAgaWRlbnRpZmllcjogXCIwMTliYjAyYy0yNWM5LTdhODEtOGQyYy1jZjZiN2YyMzNiMDhcIixcbiAgICAgIGRpc3BsYXk6IFwiUmVhbCBHb29kIE1lZGljYWwgQ2FyZSBJbmMuXCIsXG4gICAgfSxcbiAgICBsaW5rOiBudWxsLFxuICB9LFxufTtcblxuY29uc3QgY2FyZVRlYW1QYXJ0aWNpcGFudHNNb2NrOiBEaWN0aW9uYXJ5ID0ge1xuICBcIjAxOWJiMDBlLTA0YWItNzYxNC1hYWI0LTFiODZiM2E5ZjEyZFwiOiB7XG4gICAgcm9sZToge1xuICAgICAgY29kaW5nOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBzeXN0ZW06IFwib3BlbmhpXCIsXG4gICAgICAgICAgdmVyc2lvbjogXCJ2MC4wLjFcIixcbiAgICAgICAgICBkaXNwbGF5OiBcImFueVwiLFxuICAgICAgICAgIHVzZXJTZWxlY3RlZDogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgdGV4dDogXCJQcmltYXJ5IGNhcmUgcGh5c2ljaWFuXCIsXG4gICAgfSxcbiAgICBtZW1iZXI6IHtcbiAgICAgIHJlZmVyZW5jZTogXCIvcGVyc29ucy8wMTliYjA1OC0yODI0LTdjMjYtOWNmZC0wOTI1N2NiOThjNzVcIixcbiAgICAgIGlkZW50aWZpZXI6IFwiMDE5YmIwNTgtMjgyNC03YzI2LTljZmQtMDkyNTdjYjk4Yzc1XCIsXG4gICAgICBkaXNwbGF5OiBcIkRyLiBNb3JlYXVcIixcbiAgICB9LFxuICAgIG9uQmVoYWxmT2Y6IHtcbiAgICAgIHJlZmVyZW5jZTogXCIvb3JnYW5pemF0aW9ucy8wMTliYjAyYy0yNWM5LTdhODEtOGQyYy1jZjZiN2YyMzNiMDhcIixcbiAgICAgIGlkZW50aWZpZXI6IFwiMDE5YmIwMmMtMjVjOS03YTgxLThkMmMtY2Y2YjdmMjMzYjA4XCIsXG4gICAgICBkaXNwbGF5OiBcIlJlYWwgR29vZCBNZWRpY2FsIENhcmUgSW5jLlwiLFxuICAgIH0sXG4gIH0sXG4gIFwiMDE5YmIwMTYtN2FhZC03MGFmLWE1NTMtZTA1MTIzMjcxODg2XCI6IHtcbiAgICByb2xlOiB7XG4gICAgICBjb2Rpbmc6IFtcbiAgICAgICAge1xuICAgICAgICAgIHN5c3RlbTogXCJvcGVuaGlcIixcbiAgICAgICAgICB2ZXJzaW9uOiBcInYwLjAuMVwiLFxuICAgICAgICAgIGRpc3BsYXk6IFwiYW55XCIsXG4gICAgICAgICAgdXNlclNlbGVjdGVkOiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICB0ZXh0OiBcIlByaW1hcnkgY2FyZSBwaHlzaWNpYW5cIixcbiAgICB9LFxuICAgIG1lbWJlcjoge1xuICAgICAgcmVmZXJlbmNlOiBcIi9wZXJzb25zLzAxOWJiMDU5LTJkOTUtN2M5Ni1iMTVkLTc1ZmJiNmRkZmQyNVwiLFxuICAgICAgaWRlbnRpZmllcjogXCIwMTliYjA1OS0yZDk1LTdjOTYtYjE1ZC03NWZiYjZkZGZkMjVcIixcbiAgICAgIGRpc3BsYXk6IFwiRHIuIFdlc3RcIixcbiAgICB9LFxuICAgIG9uQmVoYWxmT2Y6IHtcbiAgICAgIHJlZmVyZW5jZTogXCIvb3JnYW5pemF0aW9ucy8wMTliYjAyYy0yNWM5LTdhODEtOGQyYy1jZjZiN2YyMzNiMDhcIixcbiAgICAgIGlkZW50aWZpZXI6IFwiMDE5YmIwMmMtMjVjOS03YTgxLThkMmMtY2Y2YjdmMjMzYjA4XCIsXG4gICAgICBkaXNwbGF5OiBcIlJlYWwgR29vZCBNZWRpY2FsIENhcmUgSW5jLlwiLFxuICAgIH0sXG4gIH0sXG59O1xuXG5jb25zdCBvcmdhbml6YXRpb25zTW9jazogRGljdGlvbmFyeSA9IHtcbiAgXCIwMTliYjAyYy0yNWM5LTdhODEtOGQyYy1jZjZiN2YyMzNiMDhcIjoge1xuICAgIHJlc291cmNlVHlwZTogXCJPcmdhbml6YXRpb25cIixcbiAgICBpZGVudGlmaWVyOiBbXG4gICAgICB7XG4gICAgICAgIHVzZTogXCJvZmZpY2lhbFwiLFxuICAgICAgICB2YWx1ZTogXCIwMTliYjAyYy0yNWM5LTdhODEtOGQyYy1jZjZiN2YyMzNiMDhcIixcbiAgICAgICAgdHlwZTogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvZGluZzogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgc3lzdGVtOiBcIm9wZW5oaVwiLFxuICAgICAgICAgICAgICAgIHZlcnNpb246IFwidjAuMC4xXCIsXG4gICAgICAgICAgICAgICAgZGlzcGxheTogXCJzeXN0ZW1cIixcbiAgICAgICAgICAgICAgICB1c2VyU2VsZWN0ZWQ6IGZhbHNlLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIHRleHQ6IFwiT3BlbkhJIEludGVybmFsIElkZW50aWZpZXJcIixcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICBdLFxuICAgIGFjdGl2ZTogdHJ1ZSxcbiAgICB0eXBlOiBbXG4gICAgICB7XG4gICAgICAgIGNvZGluZzogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHN5c3RlbTogXCJvcGVuaGlcIixcbiAgICAgICAgICAgIHZlcnNpb246IFwidjAuMC4xXCIsXG4gICAgICAgICAgICBkaXNwbGF5OiBcImFsbFwiLFxuICAgICAgICAgICAgdXNlclNlbGVjdGVkOiBmYWxzZSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICB0ZXh0OiBcIlByaW1hcnkgQ2FyZSBGYWNpbGl0eVwiLFxuICAgICAgfSxcbiAgICBdLFxuICAgIG5hbWU6IFwiUmVhbCBHb29kIE1lZGljYWwgQ2FyZSBJbmMuXCIsXG4gICAgYWxpYXM6IFtcIlJlYWwgR29vZCBIZWFsdGhjYXJlXCIsIFwiUmVhbCBHb29kIERvY3RvcnNcIiwgXCJIZWFsdGggV2l6YXJkc1wiXSxcbiAgICB0ZWxlY29tOiBbXG4gICAgICB7XG4gICAgICAgIHN5c3RlbTogXCJlbWFpbFwiLFxuICAgICAgICB2YWx1ZTogXCJjb250YWN0QHJlYWxnb29kbWVkaWNhbGNhcmUuY28udWtcIixcbiAgICAgICAgdXNlOiBcIndvcmtcIixcbiAgICAgICAgcmFuazogMyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHN5c3RlbTogXCJmYXhcIixcbiAgICAgICAgdmFsdWU6IFwiMTg4ODU1NTAxMDdcIixcbiAgICAgICAgdXNlOiBcIndvcmtcIixcbiAgICAgICAgcmFuazogMixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHN5c3RlbTogXCJwaG9uZVwiLFxuICAgICAgICB2YWx1ZTogXCIxODg4NTU1MDEwNlwiLFxuICAgICAgICB1c2U6IFwid29ya1wiLFxuICAgICAgICByYW5rOiAxLFxuICAgICAgfSxcbiAgICBdLFxuICAgIGFkZHJlc3M6IFtcbiAgICAgIHtcbiAgICAgICAgdXNlOiBcIndvcmtcIixcbiAgICAgICAgdHlwZTogXCJib3RoXCIsXG4gICAgICAgIHRleHQ6IFwiMTIwMiBOYXBvbGVvbiBBdmUuLCBLYWxhbWF6b28sIE1JIDc2NTQzXCIsXG4gICAgICAgIGxpbmU6IFwiMTIwMiBOYXBvbGVvbiBBdmUuXCIsXG4gICAgICAgIGNpdHk6IFwiS2FsYW1hem9vXCIsXG4gICAgICAgIGRpc3RyaWN0OiBcIkthbGFtYXpvbyBDb3VudHlcIixcbiAgICAgICAgc3RhdGU6IFwiTUlcIixcbiAgICAgICAgcG9zdGFsQ29kZTogXCI3NjU0M1wiLFxuICAgICAgICBjb3VudHJ5OiBcIlVTXCIsXG4gICAgICB9LFxuICAgIF0sXG4gICAgcGFydE9mOiBudWxsLFxuICAgIGNvbnRhY3Q6IFtdLFxuICAgIGVuZHBvaW50OiBudWxsLFxuICB9LFxufTtcblxuZXhwb3J0IHsgcGF0aWVudHNNb2NrLCBjYXJlVGVhbVBhcnRpY2lwYW50c01vY2ssIG9yZ2FuaXphdGlvbnNNb2NrIH07XG4iXX0=
@@ -1,3 +0,0 @@
1
- import { Express } from "express";
2
- declare const app: Express;
3
- export { app };
@@ -1,26 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.app = void 0;
7
- const path_1 = __importDefault(require("path"));
8
- const cors_1 = __importDefault(require("cors"));
9
- const express_1 = __importDefault(require("express"));
10
- const open_hi_context_1 = require("../middleware/open-hi-context");
11
- const Patient_1 = require("./ehr/r4/Patient");
12
- const app = (0, express_1.default)();
13
- exports.app = app;
14
- app.set("view engine", "ejs");
15
- app.set("views", path_1.default.join(__dirname, "views"));
16
- app.use((0, cors_1.default)());
17
- app.use(express_1.default.json());
18
- app.use(express_1.default.urlencoded({ extended: true }));
19
- app.get("/", (_req, res) => {
20
- return res.status(200).json({ message: "POC App is running" });
21
- });
22
- // Tenant/workspace resolved from headers/env (or JWT when implemented); attached to req for /ehr routes
23
- app.use("/ehr", open_hi_context_1.openHiContextMiddleware);
24
- // FHIR R4 EHR endpoints: path structure mirrors folder structure (ehr/r4/Patient.ts → /ehr/r4/Patient)
25
- app.use("/ehr/r4/Patient", Patient_1.patientRouter);
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdC1hcGkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZGF0YS9yZXN0LWFwaS9yZXN0LWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxnREFBd0I7QUFDeEIsZ0RBQXdCO0FBQ3hCLHNEQUE4RDtBQUM5RCxtRUFBd0U7QUFDeEUsOENBQWlEO0FBRWpELE1BQU0sR0FBRyxHQUFZLElBQUEsaUJBQU8sR0FBRSxDQUFDO0FBbUJ0QixrQkFBRztBQWpCWixHQUFHLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUM5QixHQUFHLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxjQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO0FBRWhELEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBQSxjQUFJLEdBQUUsQ0FBQyxDQUFDO0FBQ2hCLEdBQUcsQ0FBQyxHQUFHLENBQUMsaUJBQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0FBQ3hCLEdBQUcsQ0FBQyxHQUFHLENBQUMsaUJBQU8sQ0FBQyxVQUFVLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBRWhELEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBYSxFQUFFLEdBQWEsRUFBRSxFQUFFO0lBQzVDLE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDO0FBQ2pFLENBQUMsQ0FBQyxDQUFDO0FBRUgsd0dBQXdHO0FBQ3hHLEdBQUcsQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLHlDQUF1QixDQUFDLENBQUM7QUFFekMsdUdBQXVHO0FBQ3ZHLEdBQUcsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLEVBQUUsdUJBQWEsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIjtcbmltcG9ydCBjb3JzIGZyb20gXCJjb3JzXCI7XG5pbXBvcnQgZXhwcmVzcywgeyBFeHByZXNzLCBSZXF1ZXN0LCBSZXNwb25zZSB9IGZyb20gXCJleHByZXNzXCI7XG5pbXBvcnQgeyBvcGVuSGlDb250ZXh0TWlkZGxld2FyZSB9IGZyb20gXCIuLi9taWRkbGV3YXJlL29wZW4taGktY29udGV4dFwiO1xuaW1wb3J0IHsgcGF0aWVudFJvdXRlciB9IGZyb20gXCIuL2Voci9yNC9QYXRpZW50XCI7XG5cbmNvbnN0IGFwcDogRXhwcmVzcyA9IGV4cHJlc3MoKTtcblxuYXBwLnNldChcInZpZXcgZW5naW5lXCIsIFwiZWpzXCIpO1xuYXBwLnNldChcInZpZXdzXCIsIHBhdGguam9pbihfX2Rpcm5hbWUsIFwidmlld3NcIikpO1xuXG5hcHAudXNlKGNvcnMoKSk7XG5hcHAudXNlKGV4cHJlc3MuanNvbigpKTtcbmFwcC51c2UoZXhwcmVzcy51cmxlbmNvZGVkKHsgZXh0ZW5kZWQ6IHRydWUgfSkpO1xuXG5hcHAuZ2V0KFwiL1wiLCAoX3JlcTogUmVxdWVzdCwgcmVzOiBSZXNwb25zZSkgPT4ge1xuICByZXR1cm4gcmVzLnN0YXR1cygyMDApLmpzb24oeyBtZXNzYWdlOiBcIlBPQyBBcHAgaXMgcnVubmluZ1wiIH0pO1xufSk7XG5cbi8vIFRlbmFudC93b3Jrc3BhY2UgcmVzb2x2ZWQgZnJvbSBoZWFkZXJzL2VudiAob3IgSldUIHdoZW4gaW1wbGVtZW50ZWQpOyBhdHRhY2hlZCB0byByZXEgZm9yIC9laHIgcm91dGVzXG5hcHAudXNlKFwiL2VoclwiLCBvcGVuSGlDb250ZXh0TWlkZGxld2FyZSk7XG5cbi8vIEZISVIgUjQgRUhSIGVuZHBvaW50czogcGF0aCBzdHJ1Y3R1cmUgbWlycm9ycyBmb2xkZXIgc3RydWN0dXJlIChlaHIvcjQvUGF0aWVudC50cyDihpIgL2Voci9yNC9QYXRpZW50KVxuYXBwLnVzZShcIi9laHIvcjQvUGF0aWVudFwiLCBwYXRpZW50Um91dGVyKTtcblxuZXhwb3J0IHsgYXBwIH07XG4iXX0=