@coralogix/rum-cli 1.1.37 → 1.1.41

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 (86) hide show
  1. package/README.md +1 -1
  2. package/api/base/base.api.ts +27 -30
  3. package/api/source-maps/source-maps.api.ts +78 -0
  4. package/cli/commands/source-maps/upload-source-maps-command.ts +3 -2
  5. package/consts/consts.ts +1 -0
  6. package/dist/api/base/base.api.d.ts +9 -7
  7. package/dist/api/base/base.api.js +14 -19
  8. package/dist/api/source-maps/source-maps.api.d.ts +5 -2
  9. package/dist/api/source-maps/source-maps.api.js +57 -3
  10. package/dist/cli/commands/source-maps/upload-source-maps-command.js +4 -3
  11. package/dist/consts/consts.js +3 -2
  12. package/dist/grpc-client/grpc-client-factory.d.ts +72 -0
  13. package/dist/models/source-maps-commands.model.d.ts +1 -0
  14. package/dist/models/source-maps-commands.model.js +1 -1
  15. package/dist/proto-models/com/coralogix/blobset/v2/blobset_query_service.d.ts +150 -0
  16. package/dist/proto-models/com/coralogix/blobset/v2/blobset_query_service.js +29 -1
  17. package/dist/proto-models/com/coralogix/blobset/v2/case_file.d.ts +36 -0
  18. package/dist/proto-models/com/coralogix/blobset/v2/case_file.js +161 -0
  19. package/dist/proto-models/com/coralogix/blobset/v2/dsym.d.ts +1 -0
  20. package/dist/proto-models/com/coralogix/blobset/v2/dsym.js +33 -3
  21. package/dist/proto-models/com/coralogix/blobset/v2/entity_metadata.d.ts +31 -0
  22. package/dist/proto-models/com/coralogix/blobset/v2/entity_metadata.js +215 -7
  23. package/dist/proto-models/com/coralogix/blobset/v2/entity_type.d.ts +3 -1
  24. package/dist/proto-models/com/coralogix/blobset/v2/entity_type.js +13 -1
  25. package/dist/proto-models/com/coralogix/blobset/v2/investigation_file.d.ts +36 -0
  26. package/dist/proto-models/com/coralogix/blobset/v2/investigation_file.js +161 -0
  27. package/dist/proto-models/com/coralogix/blobset/v2/proguard.d.ts +68 -0
  28. package/dist/proto-models/com/coralogix/blobset/v2/proguard.js +400 -0
  29. package/dist/proto-models/com/coralogix/rum/v2/application_releases.d.ts +38 -0
  30. package/dist/proto-models/com/coralogix/rum/v2/application_releases.js +180 -0
  31. package/dist/proto-models/com/coralogix/rum/v2/merge_error.d.ts +38 -0
  32. package/dist/proto-models/com/coralogix/rum/v2/merge_error.js +171 -0
  33. package/dist/proto-models/com/coralogix/rum/v2/release_entity_metadata.d.ts +4 -0
  34. package/dist/proto-models/com/coralogix/rum/v2/release_entity_metadata.js +93 -9
  35. package/dist/proto-models/com/coralogix/rum/v2/rum_merge_erros_service.d.ts +197 -0
  36. package/dist/proto-models/com/coralogix/rum/v2/rum_merge_erros_service.js +478 -0
  37. package/dist/proto-models/com/coralogix/rum/v2/rum_service.d.ts +107 -0
  38. package/dist/proto-models/com/coralogix/rum/v2/rum_service.js +385 -2
  39. package/dist/proto-models/com/coralogix/rum/v2/rum_source_map_service.d.ts +46 -0
  40. package/dist/proto-models/com/coralogix/rum/v2/rum_source_map_service.js +142 -2
  41. package/dist/proto-models/com/coralogix/rum/v2/saved_filter.d.ts +4 -1
  42. package/dist/proto-models/com/coralogix/rum/v2/saved_filter.js +19 -1
  43. package/dist/proto-models/com/coralogix/rum/v2/template.d.ts +2 -0
  44. package/dist/proto-models/com/coralogix/rum/v2/template.js +31 -3
  45. package/dist/services/base/base.service.js +2 -2
  46. package/dist/services/source-maps/source-maps.service.d.ts +1 -0
  47. package/dist/services/source-maps/source-maps.service.js +23 -1
  48. package/dist/utils/file-processor.utils.js +16 -12
  49. package/models/source-maps-commands.model.ts +1 -0
  50. package/package.json +3 -3
  51. package/proto-models/com/coralogix/blobset/v2/blobset_query_service.ts +28 -0
  52. package/proto-models/com/coralogix/blobset/v2/case_file.ts +188 -0
  53. package/proto-models/com/coralogix/blobset/v2/dsym.ts +35 -1
  54. package/proto-models/com/coralogix/blobset/v2/entity_metadata.ts +243 -1
  55. package/proto-models/com/coralogix/blobset/v2/entity_type.ts +12 -0
  56. package/proto-models/com/coralogix/blobset/v2/investigation_file.ts +188 -0
  57. package/proto-models/com/coralogix/blobset/v2/proguard.ts +466 -0
  58. package/proto-models/com/coralogix/rum/v2/application_releases.ts +213 -0
  59. package/proto-models/com/coralogix/rum/v2/merge_error.ts +201 -0
  60. package/proto-models/com/coralogix/rum/v2/release_entity_metadata.ts +96 -4
  61. package/proto-models/com/coralogix/rum/v2/rum_merge_erros_service.ts +566 -0
  62. package/proto-models/com/coralogix/rum/v2/rum_service.ts +462 -0
  63. package/proto-models/com/coralogix/rum/v2/rum_source_map_service.ts +164 -0
  64. package/proto-models/com/coralogix/rum/v2/saved_filter.ts +18 -0
  65. package/proto-models/com/coralogix/rum/v2/template.ts +33 -1
  66. package/protofetch.lock +4 -4
  67. package/protofetch.toml +2 -2
  68. package/protos/com/coralogix/blobset/v2/blobset_query_service.proto +7 -0
  69. package/protos/com/coralogix/blobset/v2/case_file.proto +12 -0
  70. package/protos/com/coralogix/blobset/v2/dsym.proto +1 -0
  71. package/protos/com/coralogix/blobset/v2/entity_metadata.proto +14 -1
  72. package/protos/com/coralogix/blobset/v2/entity_type.proto +3 -1
  73. package/protos/com/coralogix/blobset/v2/investigation_file.proto +12 -0
  74. package/protos/com/coralogix/blobset/v2/proguard.proto +30 -0
  75. package/protos/com/coralogix/rum/v2/application_releases.proto +14 -0
  76. package/protos/com/coralogix/rum/v2/merge_error.proto +13 -0
  77. package/protos/com/coralogix/rum/v2/release_entity_metadata.proto +7 -0
  78. package/protos/com/coralogix/rum/v2/rum_merge_erros_service.proto +42 -0
  79. package/protos/com/coralogix/rum/v2/rum_service.proto +23 -0
  80. package/protos/com/coralogix/rum/v2/rum_source_map_service.proto +11 -0
  81. package/protos/com/coralogix/rum/v2/saved_filter.proto +3 -0
  82. package/protos/com/coralogix/rum/v2/template.proto +2 -0
  83. package/protoset.bin +0 -0
  84. package/services/base/base.service.ts +1 -2
  85. package/services/source-maps/source-maps.service.ts +26 -0
  86. package/utils/file-processor.utils.ts +14 -12
@@ -8,7 +8,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
8
8
  return (mod && mod.__esModule) ? mod : { "default": mod };
9
9
  };
10
10
  Object.defineProperty(exports, "__esModule", { value: true });
11
- exports.EntityMetadata = exports.SourceMapMetadata = exports.ProguardMetadata = exports.DsymMetadata = exports.protobufPackage = void 0;
11
+ exports.EntityMetadata = exports.CaseFileMetadata = exports.InvestigationFileMetadata = exports.SourceMapMetadata = exports.ProguardMetadata = exports.DsymMetadata = exports.protobufPackage = void 0;
12
12
  /* eslint-disable */
13
13
  const minimal_1 = __importDefault(require("protobufjs/minimal"));
14
14
  exports.protobufPackage = "com.coralogix.blobset.v2";
@@ -231,7 +231,14 @@ exports.ProguardMetadata = {
231
231
  },
232
232
  };
233
233
  function createBaseSourceMapMetadata() {
234
- return { application: "", releaseId: "", commitHash: undefined, repoName: undefined, orgName: undefined };
234
+ return {
235
+ application: "",
236
+ releaseId: "",
237
+ commitHash: undefined,
238
+ repoName: undefined,
239
+ orgName: undefined,
240
+ internalVersion: undefined,
241
+ };
235
242
  }
236
243
  exports.SourceMapMetadata = {
237
244
  encode(message, writer = minimal_1.default.Writer.create()) {
@@ -250,6 +257,9 @@ exports.SourceMapMetadata = {
250
257
  if (message.orgName !== undefined) {
251
258
  writer.uint32(42).string(message.orgName);
252
259
  }
260
+ if (message.internalVersion !== undefined) {
261
+ writer.uint32(48).int32(message.internalVersion);
262
+ }
253
263
  return writer;
254
264
  },
255
265
  decode(input, length) {
@@ -289,6 +299,12 @@ exports.SourceMapMetadata = {
289
299
  }
290
300
  message.orgName = reader.string();
291
301
  continue;
302
+ case 6:
303
+ if (tag !== 48) {
304
+ break;
305
+ }
306
+ message.internalVersion = reader.int32();
307
+ continue;
292
308
  }
293
309
  if ((tag & 7) === 4 || tag === 0) {
294
310
  break;
@@ -304,6 +320,7 @@ exports.SourceMapMetadata = {
304
320
  commitHash: isSet(object.commitHash) ? globalThis.String(object.commitHash) : undefined,
305
321
  repoName: isSet(object.repoName) ? globalThis.String(object.repoName) : undefined,
306
322
  orgName: isSet(object.orgName) ? globalThis.String(object.orgName) : undefined,
323
+ internalVersion: isSet(object.internalVersion) ? globalThis.Number(object.internalVersion) : undefined,
307
324
  };
308
325
  },
309
326
  toJSON(message) {
@@ -323,19 +340,157 @@ exports.SourceMapMetadata = {
323
340
  if (message.orgName !== undefined) {
324
341
  obj.orgName = message.orgName;
325
342
  }
343
+ if (message.internalVersion !== undefined) {
344
+ obj.internalVersion = Math.round(message.internalVersion);
345
+ }
326
346
  return obj;
327
347
  },
328
348
  create(base) {
329
349
  return exports.SourceMapMetadata.fromPartial(base !== null && base !== void 0 ? base : {});
330
350
  },
331
351
  fromPartial(object) {
332
- var _a, _b, _c, _d, _e;
352
+ var _a, _b, _c, _d, _e, _f;
333
353
  const message = createBaseSourceMapMetadata();
334
354
  message.application = (_a = object.application) !== null && _a !== void 0 ? _a : "";
335
355
  message.releaseId = (_b = object.releaseId) !== null && _b !== void 0 ? _b : "";
336
356
  message.commitHash = (_c = object.commitHash) !== null && _c !== void 0 ? _c : undefined;
337
357
  message.repoName = (_d = object.repoName) !== null && _d !== void 0 ? _d : undefined;
338
358
  message.orgName = (_e = object.orgName) !== null && _e !== void 0 ? _e : undefined;
359
+ message.internalVersion = (_f = object.internalVersion) !== null && _f !== void 0 ? _f : undefined;
360
+ return message;
361
+ },
362
+ };
363
+ function createBaseInvestigationFileMetadata() {
364
+ return { fileId: "", fileName: "" };
365
+ }
366
+ exports.InvestigationFileMetadata = {
367
+ encode(message, writer = minimal_1.default.Writer.create()) {
368
+ if (message.fileId !== "") {
369
+ writer.uint32(10).string(message.fileId);
370
+ }
371
+ if (message.fileName !== "") {
372
+ writer.uint32(18).string(message.fileName);
373
+ }
374
+ return writer;
375
+ },
376
+ decode(input, length) {
377
+ const reader = input instanceof minimal_1.default.Reader ? input : minimal_1.default.Reader.create(input);
378
+ let end = length === undefined ? reader.len : reader.pos + length;
379
+ const message = createBaseInvestigationFileMetadata();
380
+ while (reader.pos < end) {
381
+ const tag = reader.uint32();
382
+ switch (tag >>> 3) {
383
+ case 1:
384
+ if (tag !== 10) {
385
+ break;
386
+ }
387
+ message.fileId = reader.string();
388
+ continue;
389
+ case 2:
390
+ if (tag !== 18) {
391
+ break;
392
+ }
393
+ message.fileName = reader.string();
394
+ continue;
395
+ }
396
+ if ((tag & 7) === 4 || tag === 0) {
397
+ break;
398
+ }
399
+ reader.skipType(tag & 7);
400
+ }
401
+ return message;
402
+ },
403
+ fromJSON(object) {
404
+ return {
405
+ fileId: isSet(object.fileId) ? globalThis.String(object.fileId) : "",
406
+ fileName: isSet(object.fileName) ? globalThis.String(object.fileName) : "",
407
+ };
408
+ },
409
+ toJSON(message) {
410
+ const obj = {};
411
+ if (message.fileId !== "") {
412
+ obj.fileId = message.fileId;
413
+ }
414
+ if (message.fileName !== "") {
415
+ obj.fileName = message.fileName;
416
+ }
417
+ return obj;
418
+ },
419
+ create(base) {
420
+ return exports.InvestigationFileMetadata.fromPartial(base !== null && base !== void 0 ? base : {});
421
+ },
422
+ fromPartial(object) {
423
+ var _a, _b;
424
+ const message = createBaseInvestigationFileMetadata();
425
+ message.fileId = (_a = object.fileId) !== null && _a !== void 0 ? _a : "";
426
+ message.fileName = (_b = object.fileName) !== null && _b !== void 0 ? _b : "";
427
+ return message;
428
+ },
429
+ };
430
+ function createBaseCaseFileMetadata() {
431
+ return { fileId: "", fileName: "" };
432
+ }
433
+ exports.CaseFileMetadata = {
434
+ encode(message, writer = minimal_1.default.Writer.create()) {
435
+ if (message.fileId !== "") {
436
+ writer.uint32(10).string(message.fileId);
437
+ }
438
+ if (message.fileName !== "") {
439
+ writer.uint32(18).string(message.fileName);
440
+ }
441
+ return writer;
442
+ },
443
+ decode(input, length) {
444
+ const reader = input instanceof minimal_1.default.Reader ? input : minimal_1.default.Reader.create(input);
445
+ let end = length === undefined ? reader.len : reader.pos + length;
446
+ const message = createBaseCaseFileMetadata();
447
+ while (reader.pos < end) {
448
+ const tag = reader.uint32();
449
+ switch (tag >>> 3) {
450
+ case 1:
451
+ if (tag !== 10) {
452
+ break;
453
+ }
454
+ message.fileId = reader.string();
455
+ continue;
456
+ case 2:
457
+ if (tag !== 18) {
458
+ break;
459
+ }
460
+ message.fileName = reader.string();
461
+ continue;
462
+ }
463
+ if ((tag & 7) === 4 || tag === 0) {
464
+ break;
465
+ }
466
+ reader.skipType(tag & 7);
467
+ }
468
+ return message;
469
+ },
470
+ fromJSON(object) {
471
+ return {
472
+ fileId: isSet(object.fileId) ? globalThis.String(object.fileId) : "",
473
+ fileName: isSet(object.fileName) ? globalThis.String(object.fileName) : "",
474
+ };
475
+ },
476
+ toJSON(message) {
477
+ const obj = {};
478
+ if (message.fileId !== "") {
479
+ obj.fileId = message.fileId;
480
+ }
481
+ if (message.fileName !== "") {
482
+ obj.fileName = message.fileName;
483
+ }
484
+ return obj;
485
+ },
486
+ create(base) {
487
+ return exports.CaseFileMetadata.fromPartial(base !== null && base !== void 0 ? base : {});
488
+ },
489
+ fromPartial(object) {
490
+ var _a, _b;
491
+ const message = createBaseCaseFileMetadata();
492
+ message.fileId = (_a = object.fileId) !== null && _a !== void 0 ? _a : "";
493
+ message.fileName = (_b = object.fileName) !== null && _b !== void 0 ? _b : "";
339
494
  return message;
340
495
  },
341
496
  };
@@ -355,6 +510,12 @@ exports.EntityMetadata = {
355
510
  case "proguardMetadata":
356
511
  exports.ProguardMetadata.encode(message.metadata.proguardMetadata, writer.uint32(26).fork()).ldelim();
357
512
  break;
513
+ case "investigationFileMetadata":
514
+ exports.InvestigationFileMetadata.encode(message.metadata.investigationFileMetadata, writer.uint32(34).fork()).ldelim();
515
+ break;
516
+ case "caseFileMetadata":
517
+ exports.CaseFileMetadata.encode(message.metadata.caseFileMetadata, writer.uint32(42).fork()).ldelim();
518
+ break;
358
519
  }
359
520
  return writer;
360
521
  },
@@ -389,6 +550,24 @@ exports.EntityMetadata = {
389
550
  proguardMetadata: exports.ProguardMetadata.decode(reader, reader.uint32()),
390
551
  };
391
552
  continue;
553
+ case 4:
554
+ if (tag !== 34) {
555
+ break;
556
+ }
557
+ message.metadata = {
558
+ $case: "investigationFileMetadata",
559
+ investigationFileMetadata: exports.InvestigationFileMetadata.decode(reader, reader.uint32()),
560
+ };
561
+ continue;
562
+ case 5:
563
+ if (tag !== 42) {
564
+ break;
565
+ }
566
+ message.metadata = {
567
+ $case: "caseFileMetadata",
568
+ caseFileMetadata: exports.CaseFileMetadata.decode(reader, reader.uint32()),
569
+ };
570
+ continue;
392
571
  }
393
572
  if ((tag & 7) === 4 || tag === 0) {
394
573
  break;
@@ -405,11 +584,18 @@ exports.EntityMetadata = {
405
584
  ? { $case: "sourceMapMetadata", sourceMapMetadata: exports.SourceMapMetadata.fromJSON(object.sourceMapMetadata) }
406
585
  : isSet(object.proguardMetadata)
407
586
  ? { $case: "proguardMetadata", proguardMetadata: exports.ProguardMetadata.fromJSON(object.proguardMetadata) }
408
- : undefined,
587
+ : isSet(object.investigationFileMetadata)
588
+ ? {
589
+ $case: "investigationFileMetadata",
590
+ investigationFileMetadata: exports.InvestigationFileMetadata.fromJSON(object.investigationFileMetadata),
591
+ }
592
+ : isSet(object.caseFileMetadata)
593
+ ? { $case: "caseFileMetadata", caseFileMetadata: exports.CaseFileMetadata.fromJSON(object.caseFileMetadata) }
594
+ : undefined,
409
595
  };
410
596
  },
411
597
  toJSON(message) {
412
- var _a, _b, _c;
598
+ var _a, _b, _c, _d, _e;
413
599
  const obj = {};
414
600
  if (((_a = message.metadata) === null || _a === void 0 ? void 0 : _a.$case) === "dsymMetadata") {
415
601
  obj.dsymMetadata = exports.DsymMetadata.toJSON(message.metadata.dsymMetadata);
@@ -420,13 +606,19 @@ exports.EntityMetadata = {
420
606
  if (((_c = message.metadata) === null || _c === void 0 ? void 0 : _c.$case) === "proguardMetadata") {
421
607
  obj.proguardMetadata = exports.ProguardMetadata.toJSON(message.metadata.proguardMetadata);
422
608
  }
609
+ if (((_d = message.metadata) === null || _d === void 0 ? void 0 : _d.$case) === "investigationFileMetadata") {
610
+ obj.investigationFileMetadata = exports.InvestigationFileMetadata.toJSON(message.metadata.investigationFileMetadata);
611
+ }
612
+ if (((_e = message.metadata) === null || _e === void 0 ? void 0 : _e.$case) === "caseFileMetadata") {
613
+ obj.caseFileMetadata = exports.CaseFileMetadata.toJSON(message.metadata.caseFileMetadata);
614
+ }
423
615
  return obj;
424
616
  },
425
617
  create(base) {
426
618
  return exports.EntityMetadata.fromPartial(base !== null && base !== void 0 ? base : {});
427
619
  },
428
620
  fromPartial(object) {
429
- var _a, _b, _c, _d, _e, _f, _g, _h, _j;
621
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q;
430
622
  const message = createBaseEntityMetadata();
431
623
  if (((_a = object.metadata) === null || _a === void 0 ? void 0 : _a.$case) === "dsymMetadata" &&
432
624
  ((_b = object.metadata) === null || _b === void 0 ? void 0 : _b.dsymMetadata) !== undefined &&
@@ -452,10 +644,26 @@ exports.EntityMetadata = {
452
644
  proguardMetadata: exports.ProguardMetadata.fromPartial(object.metadata.proguardMetadata),
453
645
  };
454
646
  }
647
+ if (((_k = object.metadata) === null || _k === void 0 ? void 0 : _k.$case) === "investigationFileMetadata" &&
648
+ ((_l = object.metadata) === null || _l === void 0 ? void 0 : _l.investigationFileMetadata) !== undefined &&
649
+ ((_m = object.metadata) === null || _m === void 0 ? void 0 : _m.investigationFileMetadata) !== null) {
650
+ message.metadata = {
651
+ $case: "investigationFileMetadata",
652
+ investigationFileMetadata: exports.InvestigationFileMetadata.fromPartial(object.metadata.investigationFileMetadata),
653
+ };
654
+ }
655
+ if (((_o = object.metadata) === null || _o === void 0 ? void 0 : _o.$case) === "caseFileMetadata" &&
656
+ ((_p = object.metadata) === null || _p === void 0 ? void 0 : _p.caseFileMetadata) !== undefined &&
657
+ ((_q = object.metadata) === null || _q === void 0 ? void 0 : _q.caseFileMetadata) !== null) {
658
+ message.metadata = {
659
+ $case: "caseFileMetadata",
660
+ caseFileMetadata: exports.CaseFileMetadata.fromPartial(object.metadata.caseFileMetadata),
661
+ };
662
+ }
455
663
  return message;
456
664
  },
457
665
  };
458
666
  function isSet(value) {
459
667
  return value !== null && value !== undefined;
460
668
  }
461
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5X21ldGFkYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvdG8tbW9kZWxzL2NvbS9jb3JhbG9naXgvYmxvYnNldC92Mi9lbnRpdHlfbWV0YWRhdGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLHNEQUFzRDtBQUN0RCxZQUFZO0FBQ1osa0NBQWtDO0FBQ2xDLGlDQUFpQztBQUNqQyx5REFBeUQ7Ozs7OztBQUV6RCxvQkFBb0I7QUFDcEIsaUVBQXFDO0FBRXhCLFFBQUEsZUFBZSxHQUFHLDBCQUEwQixDQUFDO0FBa0MxRCxTQUFTLHNCQUFzQjtJQUM3QixPQUFPLEVBQUUsV0FBVyxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLENBQUM7QUFDNUcsQ0FBQztBQUVZLFFBQUEsWUFBWSxHQUFHO0lBQzFCLE1BQU0sQ0FBQyxPQUFxQixFQUFFLFNBQXFCLGlCQUFHLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRTtRQUNwRSxJQUFJLE9BQU8sQ0FBQyxXQUFXLEtBQUssRUFBRSxFQUFFO1lBQzlCLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztTQUMvQztRQUNELElBQUksT0FBTyxDQUFDLFNBQVMsS0FBSyxFQUFFLEVBQUU7WUFDNUIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQzdDO1FBQ0QsSUFBSSxPQUFPLENBQUMsVUFBVSxLQUFLLFNBQVMsRUFBRTtZQUNwQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDOUM7UUFD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SUFDRSxDQUFBLE1BQUEsTUFBTSxDQUFDLFFBQVEsMENBQUUsS0FBSyxNQUFLLG1CQUFtQjtZQUM5QyxDQUFBLE1BQUEsTUFBTSxDQUFDLFFBQVEsMENBQUUsaUJBQWlCLE1BQUssU0FBUztZQUNoRCxDQUFBLE1BQUEsTUFBTSxDQUFDLFFBQVEsMENBQUUsaUJBQWlCLE1BQUssSUFBSSxFQUMzQztZQUNBLE9BQU8sQ0FBQyxRQUFRLEdBQUc7Z0JBQ2pCLEtBQUssRUFBRSxtQkFBbUI7Z0JBQzFCLGlCQUFpQixFQUFFLHlCQUFpQixDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDO2FBQ3BGLENBQUM7U0FDSDtRQUNELElBQ0UsQ0FBQSxNQUFBLE1BQU0sQ0FBQyxRQUFRLDBDQUFFLEtBQUssTUFBSyxrQkFBa0I7WUFDN0MsQ0FBQSxNQUFBLE1BQU0sQ0FBQyxRQUFRLDBDQUFFLGdCQUFnQixNQUFLLFNBQVM7WUFDL0MsQ0FBQSxNQUFBLE1BQU0sQ0FBQyxRQUFRLDBDQUFFLGdCQUFnQixNQUFLLElBQUksRUFDMUM7WUFDQSxPQUFPLENBQUMsUUFBUSxHQUFHO2dCQUNqQixLQUFLLEVBQUUsa0JBQWtCO2dCQUN6QixnQkFBZ0IsRUFBRSx3QkFBZ0IsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQzthQUNqRixDQUFDO1NBQ0g7UUFDRCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0NBQ0YsQ0FBQztBQVdGLFNBQVMsS0FBSyxDQUFDLEtBQVU7SUFDdkIsT0FBTyxLQUFLLEtBQUssSUFBSSxJQUFJLEtBQUssS0FBSyxTQUFTLENBQUM7QUFDL0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvZGUgZ2VuZXJhdGVkIGJ5IHByb3RvYy1nZW4tdHNfcHJvdG8uIERPIE5PVCBFRElULlxuLy8gdmVyc2lvbnM6XG4vLyAgIHByb3RvYy1nZW4tdHNfcHJvdG8gIHYxLjE4MS4xXG4vLyAgIHByb3RvYyAgICAgICAgICAgICAgIHYzLjE5LjFcbi8vIHNvdXJjZTogY29tL2NvcmFsb2dpeC9ibG9ic2V0L3YyL2VudGl0eV9tZXRhZGF0YS5wcm90b1xuXG4vKiBlc2xpbnQtZGlzYWJsZSAqL1xuaW1wb3J0IF9tMCBmcm9tIFwicHJvdG9idWZqcy9taW5pbWFsXCI7XG5cbmV4cG9ydCBjb25zdCBwcm90b2J1ZlBhY2thZ2UgPSBcImNvbS5jb3JhbG9naXguYmxvYnNldC52MlwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIERzeW1NZXRhZGF0YSB7XG4gIGFwcGxpY2F0aW9uOiBzdHJpbmc7XG4gIHJlbGVhc2VJZDogc3RyaW5nO1xuICBjb21taXRIYXNoPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICByZXBvTmFtZT86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgb3JnTmFtZT86IHN0cmluZyB8IHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQcm9ndWFyZE1ldGFkYXRhIHtcbiAgYXBwbGljYXRpb246IHN0cmluZztcbiAgcmVsZWFzZUlkOiBzdHJpbmc7XG4gIGNvbW1pdEhhc2g/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHJlcG9OYW1lPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBvcmdOYW1lPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNvdXJjZU1hcE1ldGFkYXRhIHtcbiAgYXBwbGljYXRpb246IHN0cmluZztcbiAgcmVsZWFzZUlkOiBzdHJpbmc7XG4gIGNvbW1pdEhhc2g/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHJlcG9OYW1lPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBvcmdOYW1lPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEVudGl0eU1ldGFkYXRhIHtcbiAgbWV0YWRhdGE/OlxuICAgIHwgeyAkY2FzZTogXCJkc3ltTWV0YWRhdGFcIjsgZHN5bU1ldGFkYXRhOiBEc3ltTWV0YWRhdGEgfVxuICAgIHwgeyAkY2FzZTogXCJzb3VyY2VNYXBNZXRhZGF0YVwiOyBzb3VyY2VNYXBNZXRhZGF0YTogU291cmNlTWFwTWV0YWRhdGEgfVxuICAgIHwgeyAkY2FzZTogXCJwcm9ndWFyZE1ldGFkYXRhXCI7IHByb2d1YXJkTWV0YWRhdGE6IFByb2d1YXJkTWV0YWRhdGEgfVxuICAgIHwgdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVCYXNlRHN5bU1ldGFkYXRhKCk6IERzeW1NZXRhZGF0YSB7XG4gIHJldHVybiB7IGFwcGxpY2F0aW9uOiBcIlwiLCByZWxlYXNlSWQ6IFwiXCIsIGNvbW1pdEhhc2g6IHVuZGVmaW5lZCwgcmVwb05hbWU6IHVuZGVmaW5lZCwgb3JnTmFtZTogdW5kZWZpbmVkIH07XG59XG5cbmV4cG9ydCBjb25zdCBEc3ltTWV0YWRhdGEgPSB7XG4gIGVuY29kZShtZXNzYWdlOiBEc3ltTWV0YWRhdGEsIHdyaXRlcjogX20wLldyaXRlciA9IF9tMC5Xcml0ZXIuY3JlYXRlKCkpOiBfbTAuV3JpdGVyIHtcbiAgICBpZiAobWVzc2FnZS5hcHBsaWNhdGlvbiAhPT0gXCJcIikge1xuICAgICAgd3JpdGVyLnVpbnQzMigxMCkuc3RyaW5nKG1lc3NhZ2UuYXBwbGljYXRpb24pO1xuICAgIH1cbiAgICBpZiAobWVzc2FnZS5yZWxlYXNlSWQgIT09IFwiXCIpIHtcbiAgICAgIHdyaXRlci51aW50MzIoMTgpLnN0cmluZyhtZXNzYWdlLnJlbGVhc2VJZCk7XG4gICAgfVxuICAgIGlmIChtZXNzYWdlLmNvbW1pdEhhc2ggIT09IHVuZGVmaW5lZCkge1xuICAgICAgd3JpdGVyLnVpbnQzMigyNikuc3RyaW5nKG1lc3NhZ2UuY29tbWl0SGFzaCk7XG4gICAgfVxuICAgIGlmIChtZXNzYWdlLnJlcG9OYW1lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHdyaXRlci51aW50MzIoMzQpLnN0cmluZyhtZXNzYWdlLnJlcG9OYW1lKTtcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2Uub3JnTmFtZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB3cml0ZXIudWludDMyKDQyKS5zdHJpbmcobWVzc2FnZS5vcmdOYW1lKTtcbiAgICB9XG4gICAgcmV0dXJuIHdyaXRlcjtcbiAgfSxcblxuICBkZWNvZGUoaW5wdXQ6IF9tMC5SZWFkZXIgfCBVaW50OEFycmF5LCBsZW5ndGg/OiBudW1iZXIpOiBEc3ltTWV0YWRhdGEge1xuICAgIGNvbnN0IHJlYWRlciA9IGlucHV0IGluc3RhbmNlb2YgX20wLlJlYWRlciA/IGlucHV0IDogX20wLlJlYWRlci5jcmVhdGUoaW5wdXQpO1xuICAgIGxldCBlbmQgPSBsZW5ndGggPT09IHVuZGVmaW5lZCA/IHJlYWRlci5sZW4gOiByZWFkZXIucG9zICsgbGVuZ3RoO1xuICAgIGNvbnN0IG1lc3NhZ2UgPSBjcmVhdGVCYXNlRHN5bU1ldGFkYXRhKCk7XG4gICAgd2hpbGUgKHJlYWRlci5wb3MgPCBlbmQpIHtcbiAgICAgIGNvbnN0IHRhZyA9IHJlYWRlci51aW50MzIoKTtcbiAgICAgIHN3aXRjaCAodGFnID4+PiAzKSB7XG4gICAgICAgIGNhc2UgMTpcbiAgICAgICAgICBpZiAodGFnICE9PSAxMCkge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbWVzc2FnZS5hcHBsaWNhdGlvbiA9IHJlYWRlci5zdHJpbmcoKTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgY2FzZSAyOlxuICAgICAgICAgIGlmICh0YWcgIT09IDE4KSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBtZXNzYWdlLnJlbGVhc2VJZCA9IHJlYWRlci5zdHJpbmcoKTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgY2FzZSAzOlxuICAgICAgICAgIGlmICh0YWcgIT09IDI2KSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBtZXNzYWdlLmNvbW1pdEhhc2ggPSByZWFkZXIuc3RyaW5nKCk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIGNhc2UgNDpcbiAgICAgICAgICBpZiAodGFnICE9PSAzNCkge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbWVzc2FnZS5yZXBvTmFtZSA9IHJlYWRlci5zdHJpbmcoKTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgY2FzZSA1OlxuICAgICAgICAgIGlmICh0YWcgIT09IDQyKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBtZXNzYWdlLm9yZ05hbWUgPSByZWFkZXIuc3RyaW5nKCk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBpZiAoKHRhZyAmIDcpID09PSA0IHx8IHRhZyA9PT0gMCkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIHJlYWRlci5za2lwVHlwZSh0YWcgJiA3KTtcbiAgICB9XG4gICAgcmV0dXJuIG1lc3NhZ2U7XG4gIH0sXG5cbiAgZnJvbUpTT04ob2JqZWN0OiBhbnkpOiBEc3ltTWV0YWRhdGEge1xuICAgIHJldHVybiB7XG4gICAgICBhcHBsaWNhdGlvbjogaXNTZXQob2JqZWN0LmFwcGxpY2F0aW9uKSA/IGdsb2JhbFRoaXMuU3RyaW5nKG9iamVjdC5hcHBsaWNhdGlvbikgOiBcIlwiLFxuICAgICAgcmVsZWFzZUlkOiBpc1NldChvYmplY3QucmVsZWFzZUlkKSA/IGdsb2JhbFRoaXMuU3RyaW5nKG9iamVjdC5yZWxlYXNlSWQpIDogXCJcIixcbiAgICAgIGNvbW1pdEhhc2g6IGlzU2V0KG9iamVjdC5jb21taXRIYXNoKSA/IGdsb2JhbFRoaXMuU3RyaW5nKG9iamVjdC5jb21taXRIYXNoKSA6IHVuZGVmaW5lZCxcbiAgICAgIHJlcG9OYW1lOiBpc1NldChvYmplY3QucmVwb05hbWUpID8gZ2xvYmFsVGhpcy5TdHJpbmcob2JqZWN0LnJlcG9OYW1lKSA6IHVuZGVmaW5lZCxcbiAgICAgIG9yZ05hbWU6IGlzU2V0KG9iamVjdC5vcmdOYW1lKSA/IGdsb2JhbFRoaXMuU3RyaW5nKG9iamVjdC5vcmdOYW1lKSA6IHVuZGVmaW5lZCxcbiAgICB9O1xuICB9LFxuXG4gIHRvSlNPTihtZXNzYWdlOiBEc3ltTWV0YWRhdGEpOiB1bmtub3duIHtcbiAgICBjb25zdCBvYmo6IGFueSA9IHt9O1xuICAgIGlmIChtZXNzYWdlLmFwcGxpY2F0aW9uICE9PSBcIlwiKSB7XG4gICAgICBvYmouYXBwbGljYXRpb24gPSBtZXNzYWdlLmFwcGxpY2F0aW9uO1xuICAgIH1cbiAgICBpZiAobWVzc2FnZS5yZWxlYXNlSWQgIT09IFwiXCIpIHtcbiAgICAgIG9iai5yZWxlYXNlSWQgPSBtZXNzYWdlLnJlbGVhc2VJZDtcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UuY29tbWl0SGFzaCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBvYmouY29tbWl0SGFzaCA9IG1lc3NhZ2UuY29tbWl0SGFzaDtcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UucmVwb05hbWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgb2JqLnJlcG9OYW1lID0gbWVzc2FnZS5yZXBvTmFtZTtcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2Uub3JnTmFtZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBvYmoub3JnTmFtZSA9IG1lc3NhZ2Uub3JnTmFtZTtcbiAgICB9XG4gICAgcmV0dXJuIG9iajtcbiAgfSxcblxuICBjcmVhdGUoYmFzZT86IERlZXBQYXJ0aWFsPERzeW1NZXRhZGF0YT4pOiBEc3ltTWV0YWRhdGEge1xuICAgIHJldHVybiBEc3ltTWV0YWRhdGEuZnJvbVBhcnRpYWwoYmFzZSA/PyB7fSk7XG4gIH0sXG4gIGZyb21QYXJ0aWFsKG9iamVjdDogRGVlcFBhcnRpYWw8RHN5bU1ldGFkYXRhPik6IERzeW1NZXRhZGF0YSB7XG4gICAgY29uc3QgbWVzc2FnZSA9IGNyZWF0ZUJhc2VEc3ltTWV0YWRhdGEoKTtcbiAgICBtZXNzYWdlLmFwcGxpY2F0aW9uID0gb2JqZWN0LmFwcGxpY2F0aW9uID8/IFwiXCI7XG4gICAgbWVzc2FnZS5yZWxlYXNlSWQgPSBvYmplY3QucmVsZWFzZUlkID8/IFwiXCI7XG4gICAgbWVzc2FnZS5jb21taXRIYXNoID0gb2JqZWN0LmNvbW1pdEhhc2ggPz8gdW5kZWZpbmVkO1xuICAgIG1lc3NhZ2UucmVwb05hbWUgPSBvYmplY3QucmVwb05hbWUgPz8gdW5kZWZpbmVkO1xuICAgIG1lc3NhZ2Uub3JnTmFtZSA9IG9iamVjdC5vcmdOYW1lID8/IHVuZGVmaW5lZDtcbiAgICByZXR1cm4gbWVzc2FnZTtcbiAgfSxcbn07XG5cbmZ1bmN0aW9uIGNyZWF0ZUJhc2VQcm9ndWFyZE1ldGFkYXRhKCk6IFByb2d1YXJkTWV0YWRhdGEge1xuICByZXR1cm4geyBhcHBsaWNhdGlvbjogXCJcIiwgcmVsZWFzZUlkOiBcIlwiLCBjb21taXRIYXNoOiB1bmRlZmluZWQsIHJlcG9OYW1lOiB1bmRlZmluZWQsIG9yZ05hbWU6IHVuZGVmaW5lZCB9O1xufVxuXG5leHBvcnQgY29uc3QgUHJvZ3VhcmRNZXRhZGF0YSA9IHtcbiAgZW5jb2RlKG1lc3NhZ2U6IFByb2d1YXJkTWV0YWRhdGEsIHdyaXRlcjogX20wLldyaXRlciA9IF9tMC5Xcml0ZXIuY3JlYXRlKCkpOiBfbTAuV3JpdGVyIHtcbiAgICBpZiAobWVzc2FnZS5hcHBsaWNhdGlvbiAhPT0gXCJcIikge1xuICAgICAgd3JpdGVyLnVpbnQzMigxMCkuc3RyaW5nKG1lc3NhZ2UuYXBwbGljYXRpb24pO1xuICAgIH1cbiAgICBpZiAobWVzc2FnZS5yZWxlYXNlSWQgIT09IFwiXCIpIHtcbiAgICAgIHdyaXRlci51aW50MzIoMTgpLnN0cmluZyhtZXNzYWdlLnJlbGVhc2VJZCk7XG4gICAgfVxuICAgIGlmIChtZXNzYWdlLmNvbW1pdEhhc2ggIT09IHVuZGVmaW5lZCkge1xuICAgICAgd3JpdGVyLnVpbnQzMigyNikuc3RyaW5nKG1lc3NhZ2UuY29tbWl0SGFzaCk7XG4gICAgfVxuICAgIGlmIChtZXNzYWdlLnJlcG9OYW1lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHdyaXRlci51aW50MzIoMzQpLnN0cmluZyhtZXNzYWdlLnJlcG9OYW1lKTtcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2Uub3JnTmFtZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB3cml0ZXIudWludDMyKDQyKS5zdHJpbmcobWVzc2FnZS5vcmdOYW1lKTtcbiAgICB9XG4gICAgcmV0dXJuIHdyaXRlcjtcbiAgfSxcblxuICBkZWNvZGUoaW5wdXQ6IF9tMC5SZWFkZXIgfCBVaW50OEFycmF5LCBsZW5ndGg/OiBudW1iZXIpOiBQcm9ndWFyZE1ldGFkYXRhIHtcbiAgICBjb25zdCByZWFkZXIgPSBpbnB1dCBpbnN0YW5jZW9mIF9tMC5SZWFkZXIgPyBpbnB1dCA6IF9tMC5SZWFkZXIuY3JlYXRlKGlucHV0KTtcbiAgICBsZXQgZW5kID0gbGVuZ3RoID09PSB1bmRlZmluZWQgPyByZWFkZXIubGVuIDogcmVhZGVyLnBvcyArIGxlbmd0aDtcbiAgICBjb25zdCBtZXNzYWdlID0gY3JlYXRlQmFzZVByb2d1YXJkTWV0YWRhdGEoKTtcbiAgICB3aGlsZSAocmVhZGVyLnBvcyA8IGVuZCkge1xuICAgICAgY29uc3QgdGFnID0gcmVhZGVyLnVpbnQzMigpO1xuICAgICAgc3dpdGNoICh0YWcgPj4+IDMpIHtcbiAgICAgICAgY2FzZSAxOlxuICAgICAgICAgIGlmICh0YWcgIT09IDEwKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBtZXNzYWdlLmFwcGxpY2F0aW9uID0gcmVhZGVyLnN0cmluZygpO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgaWYgKHRhZyAhPT0gMTgpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIG1lc3NhZ2UucmVsZWFzZUlkID0gcmVhZGVyLnN0cmluZygpO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgaWYgKHRhZyAhPT0gMjYpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIG1lc3NhZ2UuY29tbWl0SGFzaCA9IHJlYWRlci5zdHJpbmcoKTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgY2FzZSA0OlxuICAgICAgICAgIGlmICh0YWcgIT09IDM0KSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBtZXNzYWdlLnJlcG9OYW1lID0gcmVhZGVyLnN0cmluZygpO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgaWYgKHRhZyAhPT0gNDIpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIG1lc3NhZ2Uub3JnTmFtZSA9IHJlYWRlci5zdHJpbmcoKTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGlmICgodGFnICYgNykgPT09IDQgfHwgdGFnID09PSAwKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgcmVhZGVyLnNraXBUeXBlKHRhZyAmIDcpO1xuICAgIH1cbiAgICByZXR1cm4gbWVzc2FnZTtcbiAgfSxcblxuICBmcm9tSlNPTihvYmplY3Q6IGFueSk6IFByb2d1YXJkTWV0YWRhdGEge1xuICAgIHJldHVybiB7XG4gICAgICBhcHBsaWNhdGlvbjogaXNTZXQob2JqZWN0LmFwcGxpY2F0aW9uKSA/IGdsb2JhbFRoaXMuU3RyaW5nKG9iamVjdC5hcHBsaWNhdGlvbikgOiBcIlwiLFxuICAgICAgcmVsZWFzZUlkOiBpc1NldChvYmplY3QucmVsZWFzZUlkKSA/IGdsb2JhbFRoaXMuU3RyaW5nKG9iamVjdC5yZWxlYXNlSWQpIDogXCJcIixcbiAgICAgIGNvbW1pdEhhc2g6IGlzU2V0KG9iamVjdC5jb21taXRIYXNoKSA/IGdsb2JhbFRoaXMuU3RyaW5nKG9iamVjdC5jb21taXRIYXNoKSA6IHVuZGVmaW5lZCxcbiAgICAgIHJlcG9OYW1lOiBpc1NldChvYmplY3QucmVwb05hbWUpID8gZ2xvYmFsVGhpcy5TdHJpbmcob2JqZWN0LnJlcG9OYW1lKSA6IHVuZGVmaW5lZCxcbiAgICAgIG9yZ05hbWU6IGlzU2V0KG9iamVjdC5vcmdOYW1lKSA/IGdsb2JhbFRoaXMuU3RyaW5nKG9iamVjdC5vcmdOYW1lKSA6IHVuZGVmaW5lZCxcbiAgICB9O1xuICB9LFxuXG4gIHRvSlNPTihtZXNzYWdlOiBQcm9ndWFyZE1ldGFkYXRhKTogdW5rbm93biB7XG4gICAgY29uc3Qgb2JqOiBhbnkgPSB7fTtcbiAgICBpZiAobWVzc2FnZS5hcHBsaWNhdGlvbiAhPT0gXCJcIikge1xuICAgICAgb2JqLmFwcGxpY2F0aW9uID0gbWVzc2FnZS5hcHBsaWNhdGlvbjtcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UucmVsZWFzZUlkICE9PSBcIlwiKSB7XG4gICAgICBvYmoucmVsZWFzZUlkID0gbWVzc2FnZS5yZWxlYXNlSWQ7XG4gICAgfVxuICAgIGlmIChtZXNzYWdlLmNvbW1pdEhhc2ggIT09IHVuZGVmaW5lZCkge1xuICAgICAgb2JqLmNvbW1pdEhhc2ggPSBtZXNzYWdlLmNvbW1pdEhhc2g7XG4gICAgfVxuICAgIGlmIChtZXNzYWdlLnJlcG9OYW1lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIG9iai5yZXBvTmFtZSA9IG1lc3NhZ2UucmVwb05hbWU7XG4gICAgfVxuICAgIGlmIChtZXNzYWdlLm9yZ05hbWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgb2JqLm9yZ05hbWUgPSBtZXNzYWdlLm9yZ05hbWU7XG4gICAgfVxuICAgIHJldHVybiBvYmo7XG4gIH0sXG5cbiAgY3JlYXRlKGJhc2U/OiBEZWVwUGFydGlhbDxQcm9ndWFyZE1ldGFkYXRhPik6IFByb2d1YXJkTWV0YWRhdGEge1xuICAgIHJldHVybiBQcm9ndWFyZE1ldGFkYXRhLmZyb21QYXJ0aWFsKGJhc2UgPz8ge30pO1xuICB9LFxuICBmcm9tUGFydGlhbChvYmplY3Q6IERlZXBQYXJ0aWFsPFByb2d1YXJkTWV0YWRhdGE+KTogUHJvZ3VhcmRNZXRhZGF0YSB7XG4gICAgY29uc3QgbWVzc2FnZSA9IGNyZWF0ZUJhc2VQcm9ndWFyZE1ldGFkYXRhKCk7XG4gICAgbWVzc2FnZS5hcHBsaWNhdGlvbiA9IG9iamVjdC5hcHBsaWNhdGlvbiA/PyBcIlwiO1xuICAgIG1lc3NhZ2UucmVsZWFzZUlkID0gb2JqZWN0LnJlbGVhc2VJZCA/PyBcIlwiO1xuICAgIG1lc3NhZ2UuY29tbWl0SGFzaCA9IG9iamVjdC5jb21taXRIYXNoID8/IHVuZGVmaW5lZDtcbiAgICBtZXNzYWdlLnJlcG9OYW1lID0gb2JqZWN0LnJlcG9OYW1lID8/IHVuZGVmaW5lZDtcbiAgICBtZXNzYWdlLm9yZ05hbWUgPSBvYmplY3Qub3JnTmFtZSA/PyB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIG1lc3NhZ2U7XG4gIH0sXG59O1xuXG5mdW5jdGlvbiBjcmVhdGVCYXNlU291cmNlTWFwTWV0YWRhdGEoKTogU291cmNlTWFwTWV0YWRhdGEge1xuICByZXR1cm4geyBhcHBsaWNhdGlvbjogXCJcIiwgcmVsZWFzZUlkOiBcIlwiLCBjb21taXRIYXNoOiB1bmRlZmluZWQsIHJlcG9OYW1lOiB1bmRlZmluZWQsIG9yZ05hbWU6IHVuZGVmaW5lZCB9O1xufVxuXG5leHBvcnQgY29uc3QgU291cmNlTWFwTWV0YWRhdGEgPSB7XG4gIGVuY29kZShtZXNzYWdlOiBTb3VyY2VNYXBNZXRhZGF0YSwgd3JpdGVyOiBfbTAuV3JpdGVyID0gX20wLldyaXRlci5jcmVhdGUoKSk6IF9tMC5Xcml0ZXIge1xuICAgIGlmIChtZXNzYWdlLmFwcGxpY2F0aW9uICE9PSBcIlwiKSB7XG4gICAgICB3cml0ZXIudWludDMyKDEwKS5zdHJpbmcobWVzc2FnZS5hcHBsaWNhdGlvbik7XG4gICAgfVxuICAgIGlmIChtZXNzYWdlLnJlbGVhc2VJZCAhPT0gXCJcIikge1xuICAgICAgd3JpdGVyLnVpbnQzMigxOCkuc3RyaW5nKG1lc3NhZ2UucmVsZWFzZUlkKTtcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UuY29tbWl0SGFzaCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB3cml0ZXIudWludDMyKDI2KS5zdHJpbmcobWVzc2FnZS5jb21taXRIYXNoKTtcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UucmVwb05hbWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgd3JpdGVyLnVpbnQzMigzNCkuc3RyaW5nKG1lc3NhZ2UucmVwb05hbWUpO1xuICAgIH1cbiAgICBpZiAobWVzc2FnZS5vcmdOYW1lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHdyaXRlci51aW50MzIoNDIpLnN0cmluZyhtZXNzYWdlLm9yZ05hbWUpO1xuICAgIH1cbiAgICByZXR1cm4gd3JpdGVyO1xuICB9LFxuXG4gIGRlY29kZShpbnB1dDogX20wLlJlYWRlciB8IFVpbnQ4QXJyYXksIGxlbmd0aD86IG51bWJlcik6IFNvdXJjZU1hcE1ldGFkYXRhIHtcbiAgICBjb25zdCByZWFkZXIgPSBpbnB1dCBpbnN0YW5jZW9mIF9tMC5SZWFkZXIgPyBpbnB1dCA6IF9tMC5SZWFkZXIuY3JlYXRlKGlucHV0KTtcbiAgICBsZXQgZW5kID0gbGVuZ3RoID09PSB1bmRlZmluZWQgPyByZWFkZXIubGVuIDogcmVhZGVyLnBvcyArIGxlbmd0aDtcbiAgICBjb25zdCBtZXNzYWdlID0gY3JlYXRlQmFzZVNvdXJjZU1hcE1ldGFkYXRhKCk7XG4gICAgd2hpbGUgKHJlYWRlci5wb3MgPCBlbmQpIHtcbiAgICAgIGNvbnN0IHRhZyA9IHJlYWRlci51aW50MzIoKTtcbiAgICAgIHN3aXRjaCAodGFnID4+PiAzKSB7XG4gICAgICAgIGNhc2UgMTpcbiAgICAgICAgICBpZiAodGFnICE9PSAxMCkge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbWVzc2FnZS5hcHBsaWNhdGlvbiA9IHJlYWRlci5zdHJpbmcoKTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgY2FzZSAyOlxuICAgICAgICAgIGlmICh0YWcgIT09IDE4KSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBtZXNzYWdlLnJlbGVhc2VJZCA9IHJlYWRlci5zdHJpbmcoKTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgY2FzZSAzOlxuICAgICAgICAgIGlmICh0YWcgIT09IDI2KSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBtZXNzYWdlLmNvbW1pdEhhc2ggPSByZWFkZXIuc3RyaW5nKCk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIGNhc2UgNDpcbiAgICAgICAgICBpZiAodGFnICE9PSAzNCkge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbWVzc2FnZS5yZXBvTmFtZSA9IHJlYWRlci5zdHJpbmcoKTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgY2FzZSA1OlxuICAgICAgICAgIGlmICh0YWcgIT09IDQyKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBtZXNzYWdlLm9yZ05hbWUgPSByZWFkZXIuc3RyaW5nKCk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBpZiAoKHRhZyAmIDcpID09PSA0IHx8IHRhZyA9PT0gMCkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIHJlYWRlci5za2lwVHlwZSh0YWcgJiA3KTtcbiAgICB9XG4gICAgcmV0dXJuIG1lc3NhZ2U7XG4gIH0sXG5cbiAgZnJvbUpTT04ob2JqZWN0OiBhbnkpOiBTb3VyY2VNYXBNZXRhZGF0YSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGFwcGxpY2F0aW9uOiBpc1NldChvYmplY3QuYXBwbGljYXRpb24pID8gZ2xvYmFsVGhpcy5TdHJpbmcob2JqZWN0LmFwcGxpY2F0aW9uKSA6IFwiXCIsXG4gICAgICByZWxlYXNlSWQ6IGlzU2V0KG9iamVjdC5yZWxlYXNlSWQpID8gZ2xvYmFsVGhpcy5TdHJpbmcob2JqZWN0LnJlbGVhc2VJZCkgOiBcIlwiLFxuICAgICAgY29tbWl0SGFzaDogaXNTZXQob2JqZWN0LmNvbW1pdEhhc2gpID8gZ2xvYmFsVGhpcy5TdHJpbmcob2JqZWN0LmNvbW1pdEhhc2gpIDogdW5kZWZpbmVkLFxuICAgICAgcmVwb05hbWU6IGlzU2V0KG9iamVjdC5yZXBvTmFtZSkgPyBnbG9iYWxUaGlzLlN0cmluZyhvYmplY3QucmVwb05hbWUpIDogdW5kZWZpbmVkLFxuICAgICAgb3JnTmFtZTogaXNTZXQob2JqZWN0Lm9yZ05hbWUpID8gZ2xvYmFsVGhpcy5TdHJpbmcob2JqZWN0Lm9yZ05hbWUpIDogdW5kZWZpbmVkLFxuICAgIH07XG4gIH0sXG5cbiAgdG9KU09OKG1lc3NhZ2U6IFNvdXJjZU1hcE1ldGFkYXRhKTogdW5rbm93biB7XG4gICAgY29uc3Qgb2JqOiBhbnkgPSB7fTtcbiAgICBpZiAobWVzc2FnZS5hcHBsaWNhdGlvbiAhPT0gXCJcIikge1xuICAgICAgb2JqLmFwcGxpY2F0aW9uID0gbWVzc2FnZS5hcHBsaWNhdGlvbjtcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UucmVsZWFzZUlkICE9PSBcIlwiKSB7XG4gICAgICBvYmoucmVsZWFzZUlkID0gbWVzc2FnZS5yZWxlYXNlSWQ7XG4gICAgfVxuICAgIGlmIChtZXNzYWdlLmNvbW1pdEhhc2ggIT09IHVuZGVmaW5lZCkge1xuICAgICAgb2JqLmNvbW1pdEhhc2ggPSBtZXNzYWdlLmNvbW1pdEhhc2g7XG4gICAgfVxuICAgIGlmIChtZXNzYWdlLnJlcG9OYW1lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIG9iai5yZXBvTmFtZSA9IG1lc3NhZ2UucmVwb05hbWU7XG4gICAgfVxuICAgIGlmIChtZXNzYWdlLm9yZ05hbWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgb2JqLm9yZ05hbWUgPSBtZXNzYWdlLm9yZ05hbWU7XG4gICAgfVxuICAgIHJldHVybiBvYmo7XG4gIH0sXG5cbiAgY3JlYXRlKGJhc2U/OiBEZWVwUGFydGlhbDxTb3VyY2VNYXBNZXRhZGF0YT4pOiBTb3VyY2VNYXBNZXRhZGF0YSB7XG4gICAgcmV0dXJuIFNvdXJjZU1hcE1ldGFkYXRhLmZyb21QYXJ0aWFsKGJhc2UgPz8ge30pO1xuICB9LFxuICBmcm9tUGFydGlhbChvYmplY3Q6IERlZXBQYXJ0aWFsPFNvdXJjZU1hcE1ldGFkYXRhPik6IFNvdXJjZU1hcE1ldGFkYXRhIHtcbiAgICBjb25zdCBtZXNzYWdlID0gY3JlYXRlQmFzZVNvdXJjZU1hcE1ldGFkYXRhKCk7XG4gICAgbWVzc2FnZS5hcHBsaWNhdGlvbiA9IG9iamVjdC5hcHBsaWNhdGlvbiA/PyBcIlwiO1xuICAgIG1lc3NhZ2UucmVsZWFzZUlkID0gb2JqZWN0LnJlbGVhc2VJZCA/PyBcIlwiO1xuICAgIG1lc3NhZ2UuY29tbWl0SGFzaCA9IG9iamVjdC5jb21taXRIYXNoID8/IHVuZGVmaW5lZDtcbiAgICBtZXNzYWdlLnJlcG9OYW1lID0gb2JqZWN0LnJlcG9OYW1lID8/IHVuZGVmaW5lZDtcbiAgICBtZXNzYWdlLm9yZ05hbWUgPSBvYmplY3Qub3JnTmFtZSA/PyB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIG1lc3NhZ2U7XG4gIH0sXG59O1xuXG5mdW5jdGlvbiBjcmVhdGVCYXNlRW50aXR5TWV0YWRhdGEoKTogRW50aXR5TWV0YWRhdGEge1xuICByZXR1cm4geyBtZXRhZGF0YTogdW5kZWZpbmVkIH07XG59XG5cbmV4cG9ydCBjb25zdCBFbnRpdHlNZXRhZGF0YSA9IHtcbiAgZW5jb2RlKG1lc3NhZ2U6IEVudGl0eU1ldGFkYXRhLCB3cml0ZXI6IF9tMC5Xcml0ZXIgPSBfbTAuV3JpdGVyLmNyZWF0ZSgpKTogX20wLldyaXRlciB7XG4gICAgc3dpdGNoIChtZXNzYWdlLm1ldGFkYXRhPy4kY2FzZSkge1xuICAgICAgY2FzZSBcImRzeW1NZXRhZGF0YVwiOlxuICAgICAgICBEc3ltTWV0YWRhdGEuZW5jb2RlKG1lc3NhZ2UubWV0YWRhdGEuZHN5bU1ldGFkYXRhLCB3cml0ZXIudWludDMyKDEwKS5mb3JrKCkpLmxkZWxpbSgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJzb3VyY2VNYXBNZXRhZGF0YVwiOlxuICAgICAgICBTb3VyY2VNYXBNZXRhZGF0YS5lbmNvZGUobWVzc2FnZS5tZXRhZGF0YS5zb3VyY2VNYXBNZXRhZGF0YSwgd3JpdGVyLnVpbnQzMigxOCkuZm9yaygpKS5sZGVsaW0oKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwicHJvZ3VhcmRNZXRhZGF0YVwiOlxuICAgICAgICBQcm9ndWFyZE1ldGFkYXRhLmVuY29kZShtZXNzYWdlLm1ldGFkYXRhLnByb2d1YXJkTWV0YWRhdGEsIHdyaXRlci51aW50MzIoMjYpLmZvcmsoKSkubGRlbGltKCk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICByZXR1cm4gd3JpdGVyO1xuICB9LFxuXG4gIGRlY29kZShpbnB1dDogX20wLlJlYWRlciB8IFVpbnQ4QXJyYXksIGxlbmd0aD86IG51bWJlcik6IEVudGl0eU1ldGFkYXRhIHtcbiAgICBjb25zdCByZWFkZXIgPSBpbnB1dCBpbnN0YW5jZW9mIF9tMC5SZWFkZXIgPyBpbnB1dCA6IF9tMC5SZWFkZXIuY3JlYXRlKGlucHV0KTtcbiAgICBsZXQgZW5kID0gbGVuZ3RoID09PSB1bmRlZmluZWQgPyByZWFkZXIubGVuIDogcmVhZGVyLnBvcyArIGxlbmd0aDtcbiAgICBjb25zdCBtZXNzYWdlID0gY3JlYXRlQmFzZUVudGl0eU1ldGFkYXRhKCk7XG4gICAgd2hpbGUgKHJlYWRlci5wb3MgPCBlbmQpIHtcbiAgICAgIGNvbnN0IHRhZyA9IHJlYWRlci51aW50MzIoKTtcbiAgICAgIHN3aXRjaCAodGFnID4+PiAzKSB7XG4gICAgICAgIGNhc2UgMTpcbiAgICAgICAgICBpZiAodGFnICE9PSAxMCkge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbWVzc2FnZS5tZXRhZGF0YSA9IHsgJGNhc2U6IFwiZHN5bU1ldGFkYXRhXCIsIGRzeW1NZXRhZGF0YTogRHN5bU1ldGFkYXRhLmRlY29kZShyZWFkZXIsIHJlYWRlci51aW50MzIoKSkgfTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgY2FzZSAyOlxuICAgICAgICAgIGlmICh0YWcgIT09IDE4KSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBtZXNzYWdlLm1ldGFkYXRhID0ge1xuICAgICAgICAgICAgJGNhc2U6IFwic291cmNlTWFwTWV0YWRhdGFcIixcbiAgICAgICAgICAgIHNvdXJjZU1hcE1ldGFkYXRhOiBTb3VyY2VNYXBNZXRhZGF0YS5kZWNvZGUocmVhZGVyLCByZWFkZXIudWludDMyKCkpLFxuICAgICAgICAgIH07XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIGNhc2UgMzpcbiAgICAgICAgICBpZiAodGFnICE9PSAyNikge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbWVzc2FnZS5tZXRhZGF0YSA9IHtcbiAgICAgICAgICAgICRjYXNlOiBcInByb2d1YXJkTWV0YWRhdGFcIixcbiAgICAgICAgICAgIHByb2d1YXJkTWV0YWRhdGE6IFByb2d1YXJkTWV0YWRhdGEuZGVjb2RlKHJlYWRlciwgcmVhZGVyLnVpbnQzMigpKSxcbiAgICAgICAgICB9O1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgaWYgKCh0YWcgJiA3KSA9PT0gNCB8fCB0YWcgPT09IDApIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICByZWFkZXIuc2tpcFR5cGUodGFnICYgNyk7XG4gICAgfVxuICAgIHJldHVybiBtZXNzYWdlO1xuICB9LFxuXG4gIGZyb21KU09OKG9iamVjdDogYW55KTogRW50aXR5TWV0YWRhdGEge1xuICAgIHJldHVybiB7XG4gICAgICBtZXRhZGF0YTogaXNTZXQob2JqZWN0LmRzeW1NZXRhZGF0YSlcbiAgICAgICAgPyB7ICRjYXNlOiBcImRzeW1NZXRhZGF0YVwiLCBkc3ltTWV0YWRhdGE6IERzeW1NZXRhZGF0YS5mcm9tSlNPTihvYmplY3QuZHN5bU1ldGFkYXRhKSB9XG4gICAgICAgIDogaXNTZXQob2JqZWN0LnNvdXJjZU1hcE1ldGFkYXRhKVxuICAgICAgICA/IHsgJGNhc2U6IFwic291cmNlTWFwTWV0YWRhdGFcIiwgc291cmNlTWFwTWV0YWRhdGE6IFNvdXJjZU1hcE1ldGFkYXRhLmZyb21KU09OKG9iamVjdC5zb3VyY2VNYXBNZXRhZGF0YSkgfVxuICAgICAgICA6IGlzU2V0KG9iamVjdC5wcm9ndWFyZE1ldGFkYXRhKVxuICAgICAgICA/IHsgJGNhc2U6IFwicHJvZ3VhcmRNZXRhZGF0YVwiLCBwcm9ndWFyZE1ldGFkYXRhOiBQcm9ndWFyZE1ldGFkYXRhLmZyb21KU09OKG9iamVjdC5wcm9ndWFyZE1ldGFkYXRhKSB9XG4gICAgICAgIDogdW5kZWZpbmVkLFxuICAgIH07XG4gIH0sXG5cbiAgdG9KU09OKG1lc3NhZ2U6IEVudGl0eU1ldGFkYXRhKTogdW5rbm93biB7XG4gICAgY29uc3Qgb2JqOiBhbnkgPSB7fTtcbiAgICBpZiAobWVzc2FnZS5tZXRhZGF0YT8uJGNhc2UgPT09IFwiZHN5bU1ldGFkYXRhXCIpIHtcbiAgICAgIG9iai5kc3ltTWV0YWRhdGEgPSBEc3ltTWV0YWRhdGEudG9KU09OKG1lc3NhZ2UubWV0YWRhdGEuZHN5bU1ldGFkYXRhKTtcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UubWV0YWRhdGE/LiRjYXNlID09PSBcInNvdXJjZU1hcE1ldGFkYXRhXCIpIHtcbiAgICAgIG9iai5zb3VyY2VNYXBNZXRhZGF0YSA9IFNvdXJjZU1hcE1ldGFkYXRhLnRvSlNPTihtZXNzYWdlLm1ldGFkYXRhLnNvdXJjZU1hcE1ldGFkYXRhKTtcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UubWV0YWRhdGE/LiRjYXNlID09PSBcInByb2d1YXJkTWV0YWRhdGFcIikge1xuICAgICAgb2JqLnByb2d1YXJkTWV0YWRhdGEgPSBQcm9ndWFyZE1ldGFkYXRhLnRvSlNPTihtZXNzYWdlLm1ldGFkYXRhLnByb2d1YXJkTWV0YWRhdGEpO1xuICAgIH1cbiAgICByZXR1cm4gb2JqO1xuICB9LFxuXG4gIGNyZWF0ZShiYXNlPzogRGVlcFBhcnRpYWw8RW50aXR5TWV0YWRhdGE+KTogRW50aXR5TWV0YWRhdGEge1xuICAgIHJldHVybiBFbnRpdHlNZXRhZGF0YS5mcm9tUGFydGlhbChiYXNlID8/IHt9KTtcbiAgfSxcbiAgZnJvbVBhcnRpYWwob2JqZWN0OiBEZWVwUGFydGlhbDxFbnRpdHlNZXRhZGF0YT4pOiBFbnRpdHlNZXRhZGF0YSB7XG4gICAgY29uc3QgbWVzc2FnZSA9IGNyZWF0ZUJhc2VFbnRpdHlNZXRhZGF0YSgpO1xuICAgIGlmIChcbiAgICAgIG9iamVjdC5tZXRhZGF0YT8uJGNhc2UgPT09IFwiZHN5bU1ldGFkYXRhXCIgJiZcbiAgICAgIG9iamVjdC5tZXRhZGF0YT8uZHN5bU1ldGFkYXRhICE9PSB1bmRlZmluZWQgJiZcbiAgICAgIG9iamVjdC5tZXRhZGF0YT8uZHN5bU1ldGFkYXRhICE9PSBudWxsXG4gICAgKSB7XG4gICAgICBtZXNzYWdlLm1ldGFkYXRhID0ge1xuICAgICAgICAkY2FzZTogXCJkc3ltTWV0YWRhdGFcIixcbiAgICAgICAgZHN5bU1ldGFkYXRhOiBEc3ltTWV0YWRhdGEuZnJvbVBhcnRpYWwob2JqZWN0Lm1ldGFkYXRhLmRzeW1NZXRhZGF0YSksXG4gICAgICB9O1xuICAgIH1cbiAgICBpZiAoXG4gICAgICBvYmplY3QubWV0YWRhdGE/LiRjYXNlID09PSBcInNvdXJjZU1hcE1ldGFkYXRhXCIgJiZcbiAgICAgIG9iamVjdC5tZXRhZGF0YT8uc291cmNlTWFwTWV0YWRhdGEgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgb2JqZWN0Lm1ldGFkYXRhPy5zb3VyY2VNYXBNZXRhZGF0YSAhPT0gbnVsbFxuICAgICkge1xuICAgICAgbWVzc2FnZS5tZXRhZGF0YSA9IHtcbiAgICAgICAgJGNhc2U6IFwic291cmNlTWFwTWV0YWRhdGFcIixcbiAgICAgICAgc291cmNlTWFwTWV0YWRhdGE6IFNvdXJjZU1hcE1ldGFkYXRhLmZyb21QYXJ0aWFsKG9iamVjdC5tZXRhZGF0YS5zb3VyY2VNYXBNZXRhZGF0YSksXG4gICAgICB9O1xuICAgIH1cbiAgICBpZiAoXG4gICAgICBvYmplY3QubWV0YWRhdGE/LiRjYXNlID09PSBcInByb2d1YXJkTWV0YWRhdGFcIiAmJlxuICAgICAgb2JqZWN0Lm1ldGFkYXRhPy5wcm9ndWFyZE1ldGFkYXRhICE9PSB1bmRlZmluZWQgJiZcbiAgICAgIG9iamVjdC5tZXRhZGF0YT8ucHJvZ3VhcmRNZXRhZGF0YSAhPT0gbnVsbFxuICAgICkge1xuICAgICAgbWVzc2FnZS5tZXRhZGF0YSA9IHtcbiAgICAgICAgJGNhc2U6IFwicHJvZ3VhcmRNZXRhZGF0YVwiLFxuICAgICAgICBwcm9ndWFyZE1ldGFkYXRhOiBQcm9ndWFyZE1ldGFkYXRhLmZyb21QYXJ0aWFsKG9iamVjdC5tZXRhZGF0YS5wcm9ndWFyZE1ldGFkYXRhKSxcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiBtZXNzYWdlO1xuICB9LFxufTtcblxudHlwZSBCdWlsdGluID0gRGF0ZSB8IEZ1bmN0aW9uIHwgVWludDhBcnJheSB8IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG5cbmV4cG9ydCB0eXBlIERlZXBQYXJ0aWFsPFQ+ID0gVCBleHRlbmRzIEJ1aWx0aW4gPyBUXG4gIDogVCBleHRlbmRzIGdsb2JhbFRoaXMuQXJyYXk8aW5mZXIgVT4gPyBnbG9iYWxUaGlzLkFycmF5PERlZXBQYXJ0aWFsPFU+PlxuICA6IFQgZXh0ZW5kcyBSZWFkb25seUFycmF5PGluZmVyIFU+ID8gUmVhZG9ubHlBcnJheTxEZWVwUGFydGlhbDxVPj5cbiAgOiBUIGV4dGVuZHMgeyAkY2FzZTogc3RyaW5nIH0gPyB7IFtLIGluIGtleW9mIE9taXQ8VCwgXCIkY2FzZVwiPl0/OiBEZWVwUGFydGlhbDxUW0tdPiB9ICYgeyAkY2FzZTogVFtcIiRjYXNlXCJdIH1cbiAgOiBUIGV4dGVuZHMge30gPyB7IFtLIGluIGtleW9mIFRdPzogRGVlcFBhcnRpYWw8VFtLXT4gfVxuICA6IFBhcnRpYWw8VD47XG5cbmZ1bmN0aW9uIGlzU2V0KHZhbHVlOiBhbnkpOiBib29sZWFuIHtcbiAgcmV0dXJuIHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB1bmRlZmluZWQ7XG59XG4iXX0=
669
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5X21ldGFkYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvdG8tbW9kZWxzL2NvbS9jb3JhbG9naXgvYmxvYnNldC92Mi9lbnRpdHlfbWV0YWRhdGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLHNEQUFzRDtBQUN0RCxZQUFZO0FBQ1osa0NBQWtDO0FBQ2xDLGlDQUFpQztBQUNqQyx5REFBeUQ7Ozs7OztBQUV6RCxvQkFBb0I7QUFDcEIsaUVBQXFDO0FBRXhCLFFBQUEsZUFBZSxHQUFHLDBCQUEwQixDQUFDO0FBK0MxRCxTQUFTLHNCQUFzQjtJQUM3QixPQUFPLEVBQUUsV0FBVyxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLENBQUM7QUFDNUcsQ0FBQztBQUVZLFFBQUEsWUFBWSxHQUFHO0lBQzFCLE1BQU0sQ0FBQyxPQUFxQixFQUFFLFNBQXFCLGlCQUFHLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRTtRQUNwRSxJQUFJLE9BQU8sQ0FBQyxXQUFXLEtBQUssRUFBRSxFQUFFO1lBQzlCLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztTQUMvQztRQUNELElBQUksT0FBTyxDQUFDLFNBQVMsS0FBSyxFQUFFLEVBQUU7WUFDNUIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQzdDO1FBQ0QsSUFBSSxPQUFPLENBQUMsVUFBVSxLQUFLLFNBQVMsRUFBRTtZQUNwQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDOUM7UUFD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QkFBeUIsRUFBRSxpQ0FBeUIsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyx5QkFBeUIsQ0FBQzthQUM1RyxDQUFDO1NBQ0g7UUFDRCxJQUNFLENBQUEsTUFBQSxNQUFNLENBQUMsUUFBUSwwQ0FBRSxLQUFLLE1BQUssa0JBQWtCO1lBQzdDLENBQUEsTUFBQSxNQUFNLENBQUMsUUFBUSwwQ0FBRSxnQkFBZ0IsTUFBSyxTQUFTO1lBQy9DLENBQUEsTUFBQSxNQUFNLENBQUMsUUFBUSwwQ0FBRSxnQkFBZ0IsTUFBSyxJQUFJLEVBQzFDO1lBQ0EsT0FBTyxDQUFDLFFBQVEsR0FBRztnQkFDakIsS0FBSyxFQUFFLGtCQUFrQjtnQkFDekIsZ0JBQWdCLEVBQUUsd0JBQWdCLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUM7YUFDakYsQ0FBQztTQUNIO1FBQ0QsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztDQUNGLENBQUM7QUFXRixTQUFTLEtBQUssQ0FBQyxLQUFVO0lBQ3ZCLE9BQU8sS0FBSyxLQUFLLElBQUksSUFBSSxLQUFLLEtBQUssU0FBUyxDQUFDO0FBQy9DLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb2RlIGdlbmVyYXRlZCBieSBwcm90b2MtZ2VuLXRzX3Byb3RvLiBETyBOT1QgRURJVC5cbi8vIHZlcnNpb25zOlxuLy8gICBwcm90b2MtZ2VuLXRzX3Byb3RvICB2MS4xODEuMVxuLy8gICBwcm90b2MgICAgICAgICAgICAgICB2My4xOS4xXG4vLyBzb3VyY2U6IGNvbS9jb3JhbG9naXgvYmxvYnNldC92Mi9lbnRpdHlfbWV0YWRhdGEucHJvdG9cblxuLyogZXNsaW50LWRpc2FibGUgKi9cbmltcG9ydCBfbTAgZnJvbSBcInByb3RvYnVmanMvbWluaW1hbFwiO1xuXG5leHBvcnQgY29uc3QgcHJvdG9idWZQYWNrYWdlID0gXCJjb20uY29yYWxvZ2l4LmJsb2JzZXQudjJcIjtcblxuZXhwb3J0IGludGVyZmFjZSBEc3ltTWV0YWRhdGEge1xuICBhcHBsaWNhdGlvbjogc3RyaW5nO1xuICByZWxlYXNlSWQ6IHN0cmluZztcbiAgY29tbWl0SGFzaD86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcmVwb05hbWU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIG9yZ05hbWU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvZ3VhcmRNZXRhZGF0YSB7XG4gIGFwcGxpY2F0aW9uOiBzdHJpbmc7XG4gIHJlbGVhc2VJZDogc3RyaW5nO1xuICBjb21taXRIYXNoPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICByZXBvTmFtZT86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgb3JnTmFtZT86IHN0cmluZyB8IHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTb3VyY2VNYXBNZXRhZGF0YSB7XG4gIGFwcGxpY2F0aW9uOiBzdHJpbmc7XG4gIHJlbGVhc2VJZDogc3RyaW5nO1xuICBjb21taXRIYXNoPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICByZXBvTmFtZT86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgb3JnTmFtZT86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgaW50ZXJuYWxWZXJzaW9uPzogbnVtYmVyIHwgdW5kZWZpbmVkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEludmVzdGlnYXRpb25GaWxlTWV0YWRhdGEge1xuICBmaWxlSWQ6IHN0cmluZztcbiAgZmlsZU5hbWU6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDYXNlRmlsZU1ldGFkYXRhIHtcbiAgZmlsZUlkOiBzdHJpbmc7XG4gIGZpbGVOYW1lOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRW50aXR5TWV0YWRhdGEge1xuICBtZXRhZGF0YT86XG4gICAgfCB7ICRjYXNlOiBcImRzeW1NZXRhZGF0YVwiOyBkc3ltTWV0YWRhdGE6IERzeW1NZXRhZGF0YSB9XG4gICAgfCB7ICRjYXNlOiBcInNvdXJjZU1hcE1ldGFkYXRhXCI7IHNvdXJjZU1hcE1ldGFkYXRhOiBTb3VyY2VNYXBNZXRhZGF0YSB9XG4gICAgfCB7ICRjYXNlOiBcInByb2d1YXJkTWV0YWRhdGFcIjsgcHJvZ3VhcmRNZXRhZGF0YTogUHJvZ3VhcmRNZXRhZGF0YSB9XG4gICAgfCB7ICRjYXNlOiBcImludmVzdGlnYXRpb25GaWxlTWV0YWRhdGFcIjsgaW52ZXN0aWdhdGlvbkZpbGVNZXRhZGF0YTogSW52ZXN0aWdhdGlvbkZpbGVNZXRhZGF0YSB9XG4gICAgfCB7ICRjYXNlOiBcImNhc2VGaWxlTWV0YWRhdGFcIjsgY2FzZUZpbGVNZXRhZGF0YTogQ2FzZUZpbGVNZXRhZGF0YSB9XG4gICAgfCB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUJhc2VEc3ltTWV0YWRhdGEoKTogRHN5bU1ldGFkYXRhIHtcbiAgcmV0dXJuIHsgYXBwbGljYXRpb246IFwiXCIsIHJlbGVhc2VJZDogXCJcIiwgY29tbWl0SGFzaDogdW5kZWZpbmVkLCByZXBvTmFtZTogdW5kZWZpbmVkLCBvcmdOYW1lOiB1bmRlZmluZWQgfTtcbn1cblxuZXhwb3J0IGNvbnN0IERzeW1NZXRhZGF0YSA9IHtcbiAgZW5jb2RlKG1lc3NhZ2U6IERzeW1NZXRhZGF0YSwgd3JpdGVyOiBfbTAuV3JpdGVyID0gX20wLldyaXRlci5jcmVhdGUoKSk6IF9tMC5Xcml0ZXIge1xuICAgIGlmIChtZXNzYWdlLmFwcGxpY2F0aW9uICE9PSBcIlwiKSB7XG4gICAgICB3cml0ZXIudWludDMyKDEwKS5zdHJpbmcobWVzc2FnZS5hcHBsaWNhdGlvbik7XG4gICAgfVxuICAgIGlmIChtZXNzYWdlLnJlbGVhc2VJZCAhPT0gXCJcIikge1xuICAgICAgd3JpdGVyLnVpbnQzMigxOCkuc3RyaW5nKG1lc3NhZ2UucmVsZWFzZUlkKTtcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UuY29tbWl0SGFzaCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB3cml0ZXIudWludDMyKDI2KS5zdHJpbmcobWVzc2FnZS5jb21taXRIYXNoKTtcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UucmVwb05hbWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgd3JpdGVyLnVpbnQzMigzNCkuc3RyaW5nKG1lc3NhZ2UucmVwb05hbWUpO1xuICAgIH1cbiAgICBpZiAobWVzc2FnZS5vcmdOYW1lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHdyaXRlci51aW50MzIoNDIpLnN0cmluZyhtZXNzYWdlLm9yZ05hbWUpO1xuICAgIH1cbiAgICByZXR1cm4gd3JpdGVyO1xuICB9LFxuXG4gIGRlY29kZShpbnB1dDogX20wLlJlYWRlciB8IFVpbnQ4QXJyYXksIGxlbmd0aD86IG51bWJlcik6IERzeW1NZXRhZGF0YSB7XG4gICAgY29uc3QgcmVhZGVyID0gaW5wdXQgaW5zdGFuY2VvZiBfbTAuUmVhZGVyID8gaW5wdXQgOiBfbTAuUmVhZGVyLmNyZWF0ZShpbnB1dCk7XG4gICAgbGV0IGVuZCA9IGxlbmd0aCA9PT0gdW5kZWZpbmVkID8gcmVhZGVyLmxlbiA6IHJlYWRlci5wb3MgKyBsZW5ndGg7XG4gICAgY29uc3QgbWVzc2FnZSA9IGNyZWF0ZUJhc2VEc3ltTWV0YWRhdGEoKTtcbiAgICB3aGlsZSAocmVhZGVyLnBvcyA8IGVuZCkge1xuICAgICAgY29uc3QgdGFnID0gcmVhZGVyLnVpbnQzMigpO1xuICAgICAgc3dpdGNoICh0YWcgPj4+IDMpIHtcbiAgICAgICAgY2FzZSAxOlxuICAgICAgICAgIGlmICh0YWcgIT09IDEwKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBtZXNzYWdlLmFwcGxpY2F0aW9uID0gcmVhZGVyLnN0cmluZygpO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgaWYgKHRhZyAhPT0gMTgpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIG1lc3NhZ2UucmVsZWFzZUlkID0gcmVhZGVyLnN0cmluZygpO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgaWYgKHRhZyAhPT0gMjYpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIG1lc3NhZ2UuY29tbWl0SGFzaCA9IHJlYWRlci5zdHJpbmcoKTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgY2FzZSA0OlxuICAgICAgICAgIGlmICh0YWcgIT09IDM0KSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBtZXNzYWdlLnJlcG9OYW1lID0gcmVhZGVyLnN0cmluZygpO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgaWYgKHRhZyAhPT0gNDIpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIG1lc3NhZ2Uub3JnTmFtZSA9IHJlYWRlci5zdHJpbmcoKTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGlmICgodGFnICYgNykgPT09IDQgfHwgdGFnID09PSAwKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgcmVhZGVyLnNraXBUeXBlKHRhZyAmIDcpO1xuICAgIH1cbiAgICByZXR1cm4gbWVzc2FnZTtcbiAgfSxcblxuICBmcm9tSlNPTihvYmplY3Q6IGFueSk6IERzeW1NZXRhZGF0YSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGFwcGxpY2F0aW9uOiBpc1NldChvYmplY3QuYXBwbGljYXRpb24pID8gZ2xvYmFsVGhpcy5TdHJpbmcob2JqZWN0LmFwcGxpY2F0aW9uKSA6IFwiXCIsXG4gICAgICByZWxlYXNlSWQ6IGlzU2V0KG9iamVjdC5yZWxlYXNlSWQpID8gZ2xvYmFsVGhpcy5TdHJpbmcob2JqZWN0LnJlbGVhc2VJZCkgOiBcIlwiLFxuICAgICAgY29tbWl0SGFzaDogaXNTZXQob2JqZWN0LmNvbW1pdEhhc2gpID8gZ2xvYmFsVGhpcy5TdHJpbmcob2JqZWN0LmNvbW1pdEhhc2gpIDogdW5kZWZpbmVkLFxuICAgICAgcmVwb05hbWU6IGlzU2V0KG9iamVjdC5yZXBvTmFtZSkgPyBnbG9iYWxUaGlzLlN0cmluZyhvYmplY3QucmVwb05hbWUpIDogdW5kZWZpbmVkLFxuICAgICAgb3JnTmFtZTogaXNTZXQob2JqZWN0Lm9yZ05hbWUpID8gZ2xvYmFsVGhpcy5TdHJpbmcob2JqZWN0Lm9yZ05hbWUpIDogdW5kZWZpbmVkLFxuICAgIH07XG4gIH0sXG5cbiAgdG9KU09OKG1lc3NhZ2U6IERzeW1NZXRhZGF0YSk6IHVua25vd24ge1xuICAgIGNvbnN0IG9iajogYW55ID0ge307XG4gICAgaWYgKG1lc3NhZ2UuYXBwbGljYXRpb24gIT09IFwiXCIpIHtcbiAgICAgIG9iai5hcHBsaWNhdGlvbiA9IG1lc3NhZ2UuYXBwbGljYXRpb247XG4gICAgfVxuICAgIGlmIChtZXNzYWdlLnJlbGVhc2VJZCAhPT0gXCJcIikge1xuICAgICAgb2JqLnJlbGVhc2VJZCA9IG1lc3NhZ2UucmVsZWFzZUlkO1xuICAgIH1cbiAgICBpZiAobWVzc2FnZS5jb21taXRIYXNoICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIG9iai5jb21taXRIYXNoID0gbWVzc2FnZS5jb21taXRIYXNoO1xuICAgIH1cbiAgICBpZiAobWVzc2FnZS5yZXBvTmFtZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBvYmoucmVwb05hbWUgPSBtZXNzYWdlLnJlcG9OYW1lO1xuICAgIH1cbiAgICBpZiAobWVzc2FnZS5vcmdOYW1lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIG9iai5vcmdOYW1lID0gbWVzc2FnZS5vcmdOYW1lO1xuICAgIH1cbiAgICByZXR1cm4gb2JqO1xuICB9LFxuXG4gIGNyZWF0ZShiYXNlPzogRGVlcFBhcnRpYWw8RHN5bU1ldGFkYXRhPik6IERzeW1NZXRhZGF0YSB7XG4gICAgcmV0dXJuIERzeW1NZXRhZGF0YS5mcm9tUGFydGlhbChiYXNlID8/IHt9KTtcbiAgfSxcbiAgZnJvbVBhcnRpYWwob2JqZWN0OiBEZWVwUGFydGlhbDxEc3ltTWV0YWRhdGE+KTogRHN5bU1ldGFkYXRhIHtcbiAgICBjb25zdCBtZXNzYWdlID0gY3JlYXRlQmFzZURzeW1NZXRhZGF0YSgpO1xuICAgIG1lc3NhZ2UuYXBwbGljYXRpb24gPSBvYmplY3QuYXBwbGljYXRpb24gPz8gXCJcIjtcbiAgICBtZXNzYWdlLnJlbGVhc2VJZCA9IG9iamVjdC5yZWxlYXNlSWQgPz8gXCJcIjtcbiAgICBtZXNzYWdlLmNvbW1pdEhhc2ggPSBvYmplY3QuY29tbWl0SGFzaCA/PyB1bmRlZmluZWQ7XG4gICAgbWVzc2FnZS5yZXBvTmFtZSA9IG9iamVjdC5yZXBvTmFtZSA/PyB1bmRlZmluZWQ7XG4gICAgbWVzc2FnZS5vcmdOYW1lID0gb2JqZWN0Lm9yZ05hbWUgPz8gdW5kZWZpbmVkO1xuICAgIHJldHVybiBtZXNzYWdlO1xuICB9LFxufTtcblxuZnVuY3Rpb24gY3JlYXRlQmFzZVByb2d1YXJkTWV0YWRhdGEoKTogUHJvZ3VhcmRNZXRhZGF0YSB7XG4gIHJldHVybiB7IGFwcGxpY2F0aW9uOiBcIlwiLCByZWxlYXNlSWQ6IFwiXCIsIGNvbW1pdEhhc2g6IHVuZGVmaW5lZCwgcmVwb05hbWU6IHVuZGVmaW5lZCwgb3JnTmFtZTogdW5kZWZpbmVkIH07XG59XG5cbmV4cG9ydCBjb25zdCBQcm9ndWFyZE1ldGFkYXRhID0ge1xuICBlbmNvZGUobWVzc2FnZTogUHJvZ3VhcmRNZXRhZGF0YSwgd3JpdGVyOiBfbTAuV3JpdGVyID0gX20wLldyaXRlci5jcmVhdGUoKSk6IF9tMC5Xcml0ZXIge1xuICAgIGlmIChtZXNzYWdlLmFwcGxpY2F0aW9uICE9PSBcIlwiKSB7XG4gICAgICB3cml0ZXIudWludDMyKDEwKS5zdHJpbmcobWVzc2FnZS5hcHBsaWNhdGlvbik7XG4gICAgfVxuICAgIGlmIChtZXNzYWdlLnJlbGVhc2VJZCAhPT0gXCJcIikge1xuICAgICAgd3JpdGVyLnVpbnQzMigxOCkuc3RyaW5nKG1lc3NhZ2UucmVsZWFzZUlkKTtcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UuY29tbWl0SGFzaCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB3cml0ZXIudWludDMyKDI2KS5zdHJpbmcobWVzc2FnZS5jb21taXRIYXNoKTtcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UucmVwb05hbWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgd3JpdGVyLnVpbnQzMigzNCkuc3RyaW5nKG1lc3NhZ2UucmVwb05hbWUpO1xuICAgIH1cbiAgICBpZiAobWVzc2FnZS5vcmdOYW1lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHdyaXRlci51aW50MzIoNDIpLnN0cmluZyhtZXNzYWdlLm9yZ05hbWUpO1xuICAgIH1cbiAgICByZXR1cm4gd3JpdGVyO1xuICB9LFxuXG4gIGRlY29kZShpbnB1dDogX20wLlJlYWRlciB8IFVpbnQ4QXJyYXksIGxlbmd0aD86IG51bWJlcik6IFByb2d1YXJkTWV0YWRhdGEge1xuICAgIGNvbnN0IHJlYWRlciA9IGlucHV0IGluc3RhbmNlb2YgX20wLlJlYWRlciA/IGlucHV0IDogX20wLlJlYWRlci5jcmVhdGUoaW5wdXQpO1xuICAgIGxldCBlbmQgPSBsZW5ndGggPT09IHVuZGVmaW5lZCA/IHJlYWRlci5sZW4gOiByZWFkZXIucG9zICsgbGVuZ3RoO1xuICAgIGNvbnN0IG1lc3NhZ2UgPSBjcmVhdGVCYXNlUHJvZ3VhcmRNZXRhZGF0YSgpO1xuICAgIHdoaWxlIChyZWFkZXIucG9zIDwgZW5kKSB7XG4gICAgICBjb25zdCB0YWcgPSByZWFkZXIudWludDMyKCk7XG4gICAgICBzd2l0Y2ggKHRhZyA+Pj4gMykge1xuICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgaWYgKHRhZyAhPT0gMTApIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIG1lc3NhZ2UuYXBwbGljYXRpb24gPSByZWFkZXIuc3RyaW5nKCk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIGNhc2UgMjpcbiAgICAgICAgICBpZiAodGFnICE9PSAxOCkge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbWVzc2FnZS5yZWxlYXNlSWQgPSByZWFkZXIuc3RyaW5nKCk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIGNhc2UgMzpcbiAgICAgICAgICBpZiAodGFnICE9PSAyNikge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbWVzc2FnZS5jb21taXRIYXNoID0gcmVhZGVyLnN0cmluZygpO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgaWYgKHRhZyAhPT0gMzQpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIG1lc3NhZ2UucmVwb05hbWUgPSByZWFkZXIuc3RyaW5nKCk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIGNhc2UgNTpcbiAgICAgICAgICBpZiAodGFnICE9PSA0Mikge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbWVzc2FnZS5vcmdOYW1lID0gcmVhZGVyLnN0cmluZygpO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgaWYgKCh0YWcgJiA3KSA9PT0gNCB8fCB0YWcgPT09IDApIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICByZWFkZXIuc2tpcFR5cGUodGFnICYgNyk7XG4gICAgfVxuICAgIHJldHVybiBtZXNzYWdlO1xuICB9LFxuXG4gIGZyb21KU09OKG9iamVjdDogYW55KTogUHJvZ3VhcmRNZXRhZGF0YSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGFwcGxpY2F0aW9uOiBpc1NldChvYmplY3QuYXBwbGljYXRpb24pID8gZ2xvYmFsVGhpcy5TdHJpbmcob2JqZWN0LmFwcGxpY2F0aW9uKSA6IFwiXCIsXG4gICAgICByZWxlYXNlSWQ6IGlzU2V0KG9iamVjdC5yZWxlYXNlSWQpID8gZ2xvYmFsVGhpcy5TdHJpbmcob2JqZWN0LnJlbGVhc2VJZCkgOiBcIlwiLFxuICAgICAgY29tbWl0SGFzaDogaXNTZXQob2JqZWN0LmNvbW1pdEhhc2gpID8gZ2xvYmFsVGhpcy5TdHJpbmcob2JqZWN0LmNvbW1pdEhhc2gpIDogdW5kZWZpbmVkLFxuICAgICAgcmVwb05hbWU6IGlzU2V0KG9iamVjdC5yZXBvTmFtZSkgPyBnbG9iYWxUaGlzLlN0cmluZyhvYmplY3QucmVwb05hbWUpIDogdW5kZWZpbmVkLFxuICAgICAgb3JnTmFtZTogaXNTZXQob2JqZWN0Lm9yZ05hbWUpID8gZ2xvYmFsVGhpcy5TdHJpbmcob2JqZWN0Lm9yZ05hbWUpIDogdW5kZWZpbmVkLFxuICAgIH07XG4gIH0sXG5cbiAgdG9KU09OKG1lc3NhZ2U6IFByb2d1YXJkTWV0YWRhdGEpOiB1bmtub3duIHtcbiAgICBjb25zdCBvYmo6IGFueSA9IHt9O1xuICAgIGlmIChtZXNzYWdlLmFwcGxpY2F0aW9uICE9PSBcIlwiKSB7XG4gICAgICBvYmouYXBwbGljYXRpb24gPSBtZXNzYWdlLmFwcGxpY2F0aW9uO1xuICAgIH1cbiAgICBpZiAobWVzc2FnZS5yZWxlYXNlSWQgIT09IFwiXCIpIHtcbiAgICAgIG9iai5yZWxlYXNlSWQgPSBtZXNzYWdlLnJlbGVhc2VJZDtcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UuY29tbWl0SGFzaCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBvYmouY29tbWl0SGFzaCA9IG1lc3NhZ2UuY29tbWl0SGFzaDtcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UucmVwb05hbWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgb2JqLnJlcG9OYW1lID0gbWVzc2FnZS5yZXBvTmFtZTtcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2Uub3JnTmFtZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBvYmoub3JnTmFtZSA9IG1lc3NhZ2Uub3JnTmFtZTtcbiAgICB9XG4gICAgcmV0dXJuIG9iajtcbiAgfSxcblxuICBjcmVhdGUoYmFzZT86IERlZXBQYXJ0aWFsPFByb2d1YXJkTWV0YWRhdGE+KTogUHJvZ3VhcmRNZXRhZGF0YSB7XG4gICAgcmV0dXJuIFByb2d1YXJkTWV0YWRhdGEuZnJvbVBhcnRpYWwoYmFzZSA/PyB7fSk7XG4gIH0sXG4gIGZyb21QYXJ0aWFsKG9iamVjdDogRGVlcFBhcnRpYWw8UHJvZ3VhcmRNZXRhZGF0YT4pOiBQcm9ndWFyZE1ldGFkYXRhIHtcbiAgICBjb25zdCBtZXNzYWdlID0gY3JlYXRlQmFzZVByb2d1YXJkTWV0YWRhdGEoKTtcbiAgICBtZXNzYWdlLmFwcGxpY2F0aW9uID0gb2JqZWN0LmFwcGxpY2F0aW9uID8/IFwiXCI7XG4gICAgbWVzc2FnZS5yZWxlYXNlSWQgPSBvYmplY3QucmVsZWFzZUlkID8/IFwiXCI7XG4gICAgbWVzc2FnZS5jb21taXRIYXNoID0gb2JqZWN0LmNvbW1pdEhhc2ggPz8gdW5kZWZpbmVkO1xuICAgIG1lc3NhZ2UucmVwb05hbWUgPSBvYmplY3QucmVwb05hbWUgPz8gdW5kZWZpbmVkO1xuICAgIG1lc3NhZ2Uub3JnTmFtZSA9IG9iamVjdC5vcmdOYW1lID8/IHVuZGVmaW5lZDtcbiAgICByZXR1cm4gbWVzc2FnZTtcbiAgfSxcbn07XG5cbmZ1bmN0aW9uIGNyZWF0ZUJhc2VTb3VyY2VNYXBNZXRhZGF0YSgpOiBTb3VyY2VNYXBNZXRhZGF0YSB7XG4gIHJldHVybiB7XG4gICAgYXBwbGljYXRpb246IFwiXCIsXG4gICAgcmVsZWFzZUlkOiBcIlwiLFxuICAgIGNvbW1pdEhhc2g6IHVuZGVmaW5lZCxcbiAgICByZXBvTmFtZTogdW5kZWZpbmVkLFxuICAgIG9yZ05hbWU6IHVuZGVmaW5lZCxcbiAgICBpbnRlcm5hbFZlcnNpb246IHVuZGVmaW5lZCxcbiAgfTtcbn1cblxuZXhwb3J0IGNvbnN0IFNvdXJjZU1hcE1ldGFkYXRhID0ge1xuICBlbmNvZGUobWVzc2FnZTogU291cmNlTWFwTWV0YWRhdGEsIHdyaXRlcjogX20wLldyaXRlciA9IF9tMC5Xcml0ZXIuY3JlYXRlKCkpOiBfbTAuV3JpdGVyIHtcbiAgICBpZiAobWVzc2FnZS5hcHBsaWNhdGlvbiAhPT0gXCJcIikge1xuICAgICAgd3JpdGVyLnVpbnQzMigxMCkuc3RyaW5nKG1lc3NhZ2UuYXBwbGljYXRpb24pO1xuICAgIH1cbiAgICBpZiAobWVzc2FnZS5yZWxlYXNlSWQgIT09IFwiXCIpIHtcbiAgICAgIHdyaXRlci51aW50MzIoMTgpLnN0cmluZyhtZXNzYWdlLnJlbGVhc2VJZCk7XG4gICAgfVxuICAgIGlmIChtZXNzYWdlLmNvbW1pdEhhc2ggIT09IHVuZGVmaW5lZCkge1xuICAgICAgd3JpdGVyLnVpbnQzMigyNikuc3RyaW5nKG1lc3NhZ2UuY29tbWl0SGFzaCk7XG4gICAgfVxuICAgIGlmIChtZXNzYWdlLnJlcG9OYW1lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHdyaXRlci51aW50MzIoMzQpLnN0cmluZyhtZXNzYWdlLnJlcG9OYW1lKTtcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2Uub3JnTmFtZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB3cml0ZXIudWludDMyKDQyKS5zdHJpbmcobWVzc2FnZS5vcmdOYW1lKTtcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UuaW50ZXJuYWxWZXJzaW9uICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHdyaXRlci51aW50MzIoNDgpLmludDMyKG1lc3NhZ2UuaW50ZXJuYWxWZXJzaW9uKTtcbiAgICB9XG4gICAgcmV0dXJuIHdyaXRlcjtcbiAgfSxcblxuICBkZWNvZGUoaW5wdXQ6IF9tMC5SZWFkZXIgfCBVaW50OEFycmF5LCBsZW5ndGg/OiBudW1iZXIpOiBTb3VyY2VNYXBNZXRhZGF0YSB7XG4gICAgY29uc3QgcmVhZGVyID0gaW5wdXQgaW5zdGFuY2VvZiBfbTAuUmVhZGVyID8gaW5wdXQgOiBfbTAuUmVhZGVyLmNyZWF0ZShpbnB1dCk7XG4gICAgbGV0IGVuZCA9IGxlbmd0aCA9PT0gdW5kZWZpbmVkID8gcmVhZGVyLmxlbiA6IHJlYWRlci5wb3MgKyBsZW5ndGg7XG4gICAgY29uc3QgbWVzc2FnZSA9IGNyZWF0ZUJhc2VTb3VyY2VNYXBNZXRhZGF0YSgpO1xuICAgIHdoaWxlIChyZWFkZXIucG9zIDwgZW5kKSB7XG4gICAgICBjb25zdCB0YWcgPSByZWFkZXIudWludDMyKCk7XG4gICAgICBzd2l0Y2ggKHRhZyA+Pj4gMykge1xuICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgaWYgKHRhZyAhPT0gMTApIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIG1lc3NhZ2UuYXBwbGljYXRpb24gPSByZWFkZXIuc3RyaW5nKCk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIGNhc2UgMjpcbiAgICAgICAgICBpZiAodGFnICE9PSAxOCkge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbWVzc2FnZS5yZWxlYXNlSWQgPSByZWFkZXIuc3RyaW5nKCk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIGNhc2UgMzpcbiAgICAgICAgICBpZiAodGFnICE9PSAyNikge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbWVzc2FnZS5jb21taXRIYXNoID0gcmVhZGVyLnN0cmluZygpO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgaWYgKHRhZyAhPT0gMzQpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIG1lc3NhZ2UucmVwb05hbWUgPSByZWFkZXIuc3RyaW5nKCk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIGNhc2UgNTpcbiAgICAgICAgICBpZiAodGFnICE9PSA0Mikge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbWVzc2FnZS5vcmdOYW1lID0gcmVhZGVyLnN0cmluZygpO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgaWYgKHRhZyAhPT0gNDgpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIG1lc3NhZ2UuaW50ZXJuYWxWZXJzaW9uID0gcmVhZGVyLmludDMyKCk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBpZiAoKHRhZyAmIDcpID09PSA0IHx8IHRhZyA9PT0gMCkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIHJlYWRlci5za2lwVHlwZSh0YWcgJiA3KTtcbiAgICB9XG4gICAgcmV0dXJuIG1lc3NhZ2U7XG4gIH0sXG5cbiAgZnJvbUpTT04ob2JqZWN0OiBhbnkpOiBTb3VyY2VNYXBNZXRhZGF0YSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGFwcGxpY2F0aW9uOiBpc1NldChvYmplY3QuYXBwbGljYXRpb24pID8gZ2xvYmFsVGhpcy5TdHJpbmcob2JqZWN0LmFwcGxpY2F0aW9uKSA6IFwiXCIsXG4gICAgICByZWxlYXNlSWQ6IGlzU2V0KG9iamVjdC5yZWxlYXNlSWQpID8gZ2xvYmFsVGhpcy5TdHJpbmcob2JqZWN0LnJlbGVhc2VJZCkgOiBcIlwiLFxuICAgICAgY29tbWl0SGFzaDogaXNTZXQob2JqZWN0LmNvbW1pdEhhc2gpID8gZ2xvYmFsVGhpcy5TdHJpbmcob2JqZWN0LmNvbW1pdEhhc2gpIDogdW5kZWZpbmVkLFxuICAgICAgcmVwb05hbWU6IGlzU2V0KG9iamVjdC5yZXBvTmFtZSkgPyBnbG9iYWxUaGlzLlN0cmluZyhvYmplY3QucmVwb05hbWUpIDogdW5kZWZpbmVkLFxuICAgICAgb3JnTmFtZTogaXNTZXQob2JqZWN0Lm9yZ05hbWUpID8gZ2xvYmFsVGhpcy5TdHJpbmcob2JqZWN0Lm9yZ05hbWUpIDogdW5kZWZpbmVkLFxuICAgICAgaW50ZXJuYWxWZXJzaW9uOiBpc1NldChvYmplY3QuaW50ZXJuYWxWZXJzaW9uKSA/IGdsb2JhbFRoaXMuTnVtYmVyKG9iamVjdC5pbnRlcm5hbFZlcnNpb24pIDogdW5kZWZpbmVkLFxuICAgIH07XG4gIH0sXG5cbiAgdG9KU09OKG1lc3NhZ2U6IFNvdXJjZU1hcE1ldGFkYXRhKTogdW5rbm93biB7XG4gICAgY29uc3Qgb2JqOiBhbnkgPSB7fTtcbiAgICBpZiAobWVzc2FnZS5hcHBsaWNhdGlvbiAhPT0gXCJcIikge1xuICAgICAgb2JqLmFwcGxpY2F0aW9uID0gbWVzc2FnZS5hcHBsaWNhdGlvbjtcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UucmVsZWFzZUlkICE9PSBcIlwiKSB7XG4gICAgICBvYmoucmVsZWFzZUlkID0gbWVzc2FnZS5yZWxlYXNlSWQ7XG4gICAgfVxuICAgIGlmIChtZXNzYWdlLmNvbW1pdEhhc2ggIT09IHVuZGVmaW5lZCkge1xuICAgICAgb2JqLmNvbW1pdEhhc2ggPSBtZXNzYWdlLmNvbW1pdEhhc2g7XG4gICAgfVxuICAgIGlmIChtZXNzYWdlLnJlcG9OYW1lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIG9iai5yZXBvTmFtZSA9IG1lc3NhZ2UucmVwb05hbWU7XG4gICAgfVxuICAgIGlmIChtZXNzYWdlLm9yZ05hbWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgb2JqLm9yZ05hbWUgPSBtZXNzYWdlLm9yZ05hbWU7XG4gICAgfVxuICAgIGlmIChtZXNzYWdlLmludGVybmFsVmVyc2lvbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBvYmouaW50ZXJuYWxWZXJzaW9uID0gTWF0aC5yb3VuZChtZXNzYWdlLmludGVybmFsVmVyc2lvbik7XG4gICAgfVxuICAgIHJldHVybiBvYmo7XG4gIH0sXG5cbiAgY3JlYXRlKGJhc2U/OiBEZWVwUGFydGlhbDxTb3VyY2VNYXBNZXRhZGF0YT4pOiBTb3VyY2VNYXBNZXRhZGF0YSB7XG4gICAgcmV0dXJuIFNvdXJjZU1hcE1ldGFkYXRhLmZyb21QYXJ0aWFsKGJhc2UgPz8ge30pO1xuICB9LFxuICBmcm9tUGFydGlhbChvYmplY3Q6IERlZXBQYXJ0aWFsPFNvdXJjZU1hcE1ldGFkYXRhPik6IFNvdXJjZU1hcE1ldGFkYXRhIHtcbiAgICBjb25zdCBtZXNzYWdlID0gY3JlYXRlQmFzZVNvdXJjZU1hcE1ldGFkYXRhKCk7XG4gICAgbWVzc2FnZS5hcHBsaWNhdGlvbiA9IG9iamVjdC5hcHBsaWNhdGlvbiA/PyBcIlwiO1xuICAgIG1lc3NhZ2UucmVsZWFzZUlkID0gb2JqZWN0LnJlbGVhc2VJZCA/PyBcIlwiO1xuICAgIG1lc3NhZ2UuY29tbWl0SGFzaCA9IG9iamVjdC5jb21taXRIYXNoID8/IHVuZGVmaW5lZDtcbiAgICBtZXNzYWdlLnJlcG9OYW1lID0gb2JqZWN0LnJlcG9OYW1lID8/IHVuZGVmaW5lZDtcbiAgICBtZXNzYWdlLm9yZ05hbWUgPSBvYmplY3Qub3JnTmFtZSA/PyB1bmRlZmluZWQ7XG4gICAgbWVzc2FnZS5pbnRlcm5hbFZlcnNpb24gPSBvYmplY3QuaW50ZXJuYWxWZXJzaW9uID8/IHVuZGVmaW5lZDtcbiAgICByZXR1cm4gbWVzc2FnZTtcbiAgfSxcbn07XG5cbmZ1bmN0aW9uIGNyZWF0ZUJhc2VJbnZlc3RpZ2F0aW9uRmlsZU1ldGFkYXRhKCk6IEludmVzdGlnYXRpb25GaWxlTWV0YWRhdGEge1xuICByZXR1cm4geyBmaWxlSWQ6IFwiXCIsIGZpbGVOYW1lOiBcIlwiIH07XG59XG5cbmV4cG9ydCBjb25zdCBJbnZlc3RpZ2F0aW9uRmlsZU1ldGFkYXRhID0ge1xuICBlbmNvZGUobWVzc2FnZTogSW52ZXN0aWdhdGlvbkZpbGVNZXRhZGF0YSwgd3JpdGVyOiBfbTAuV3JpdGVyID0gX20wLldyaXRlci5jcmVhdGUoKSk6IF9tMC5Xcml0ZXIge1xuICAgIGlmIChtZXNzYWdlLmZpbGVJZCAhPT0gXCJcIikge1xuICAgICAgd3JpdGVyLnVpbnQzMigxMCkuc3RyaW5nKG1lc3NhZ2UuZmlsZUlkKTtcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UuZmlsZU5hbWUgIT09IFwiXCIpIHtcbiAgICAgIHdyaXRlci51aW50MzIoMTgpLnN0cmluZyhtZXNzYWdlLmZpbGVOYW1lKTtcbiAgICB9XG4gICAgcmV0dXJuIHdyaXRlcjtcbiAgfSxcblxuICBkZWNvZGUoaW5wdXQ6IF9tMC5SZWFkZXIgfCBVaW50OEFycmF5LCBsZW5ndGg/OiBudW1iZXIpOiBJbnZlc3RpZ2F0aW9uRmlsZU1ldGFkYXRhIHtcbiAgICBjb25zdCByZWFkZXIgPSBpbnB1dCBpbnN0YW5jZW9mIF9tMC5SZWFkZXIgPyBpbnB1dCA6IF9tMC5SZWFkZXIuY3JlYXRlKGlucHV0KTtcbiAgICBsZXQgZW5kID0gbGVuZ3RoID09PSB1bmRlZmluZWQgPyByZWFkZXIubGVuIDogcmVhZGVyLnBvcyArIGxlbmd0aDtcbiAgICBjb25zdCBtZXNzYWdlID0gY3JlYXRlQmFzZUludmVzdGlnYXRpb25GaWxlTWV0YWRhdGEoKTtcbiAgICB3aGlsZSAocmVhZGVyLnBvcyA8IGVuZCkge1xuICAgICAgY29uc3QgdGFnID0gcmVhZGVyLnVpbnQzMigpO1xuICAgICAgc3dpdGNoICh0YWcgPj4+IDMpIHtcbiAgICAgICAgY2FzZSAxOlxuICAgICAgICAgIGlmICh0YWcgIT09IDEwKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBtZXNzYWdlLmZpbGVJZCA9IHJlYWRlci5zdHJpbmcoKTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgY2FzZSAyOlxuICAgICAgICAgIGlmICh0YWcgIT09IDE4KSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBtZXNzYWdlLmZpbGVOYW1lID0gcmVhZGVyLnN0cmluZygpO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgaWYgKCh0YWcgJiA3KSA9PT0gNCB8fCB0YWcgPT09IDApIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICByZWFkZXIuc2tpcFR5cGUodGFnICYgNyk7XG4gICAgfVxuICAgIHJldHVybiBtZXNzYWdlO1xuICB9LFxuXG4gIGZyb21KU09OKG9iamVjdDogYW55KTogSW52ZXN0aWdhdGlvbkZpbGVNZXRhZGF0YSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGZpbGVJZDogaXNTZXQob2JqZWN0LmZpbGVJZCkgPyBnbG9iYWxUaGlzLlN0cmluZyhvYmplY3QuZmlsZUlkKSA6IFwiXCIsXG4gICAgICBmaWxlTmFtZTogaXNTZXQob2JqZWN0LmZpbGVOYW1lKSA/IGdsb2JhbFRoaXMuU3RyaW5nKG9iamVjdC5maWxlTmFtZSkgOiBcIlwiLFxuICAgIH07XG4gIH0sXG5cbiAgdG9KU09OKG1lc3NhZ2U6IEludmVzdGlnYXRpb25GaWxlTWV0YWRhdGEpOiB1bmtub3duIHtcbiAgICBjb25zdCBvYmo6IGFueSA9IHt9O1xuICAgIGlmIChtZXNzYWdlLmZpbGVJZCAhPT0gXCJcIikge1xuICAgICAgb2JqLmZpbGVJZCA9IG1lc3NhZ2UuZmlsZUlkO1xuICAgIH1cbiAgICBpZiAobWVzc2FnZS5maWxlTmFtZSAhPT0gXCJcIikge1xuICAgICAgb2JqLmZpbGVOYW1lID0gbWVzc2FnZS5maWxlTmFtZTtcbiAgICB9XG4gICAgcmV0dXJuIG9iajtcbiAgfSxcblxuICBjcmVhdGUoYmFzZT86IERlZXBQYXJ0aWFsPEludmVzdGlnYXRpb25GaWxlTWV0YWRhdGE+KTogSW52ZXN0aWdhdGlvbkZpbGVNZXRhZGF0YSB7XG4gICAgcmV0dXJuIEludmVzdGlnYXRpb25GaWxlTWV0YWRhdGEuZnJvbVBhcnRpYWwoYmFzZSA/PyB7fSk7XG4gIH0sXG4gIGZyb21QYXJ0aWFsKG9iamVjdDogRGVlcFBhcnRpYWw8SW52ZXN0aWdhdGlvbkZpbGVNZXRhZGF0YT4pOiBJbnZlc3RpZ2F0aW9uRmlsZU1ldGFkYXRhIHtcbiAgICBjb25zdCBtZXNzYWdlID0gY3JlYXRlQmFzZUludmVzdGlnYXRpb25GaWxlTWV0YWRhdGEoKTtcbiAgICBtZXNzYWdlLmZpbGVJZCA9IG9iamVjdC5maWxlSWQgPz8gXCJcIjtcbiAgICBtZXNzYWdlLmZpbGVOYW1lID0gb2JqZWN0LmZpbGVOYW1lID8/IFwiXCI7XG4gICAgcmV0dXJuIG1lc3NhZ2U7XG4gIH0sXG59O1xuXG5mdW5jdGlvbiBjcmVhdGVCYXNlQ2FzZUZpbGVNZXRhZGF0YSgpOiBDYXNlRmlsZU1ldGFkYXRhIHtcbiAgcmV0dXJuIHsgZmlsZUlkOiBcIlwiLCBmaWxlTmFtZTogXCJcIiB9O1xufVxuXG5leHBvcnQgY29uc3QgQ2FzZUZpbGVNZXRhZGF0YSA9IHtcbiAgZW5jb2RlKG1lc3NhZ2U6IENhc2VGaWxlTWV0YWRhdGEsIHdyaXRlcjogX20wLldyaXRlciA9IF9tMC5Xcml0ZXIuY3JlYXRlKCkpOiBfbTAuV3JpdGVyIHtcbiAgICBpZiAobWVzc2FnZS5maWxlSWQgIT09IFwiXCIpIHtcbiAgICAgIHdyaXRlci51aW50MzIoMTApLnN0cmluZyhtZXNzYWdlLmZpbGVJZCk7XG4gICAgfVxuICAgIGlmIChtZXNzYWdlLmZpbGVOYW1lICE9PSBcIlwiKSB7XG4gICAgICB3cml0ZXIudWludDMyKDE4KS5zdHJpbmcobWVzc2FnZS5maWxlTmFtZSk7XG4gICAgfVxuICAgIHJldHVybiB3cml0ZXI7XG4gIH0sXG5cbiAgZGVjb2RlKGlucHV0OiBfbTAuUmVhZGVyIHwgVWludDhBcnJheSwgbGVuZ3RoPzogbnVtYmVyKTogQ2FzZUZpbGVNZXRhZGF0YSB7XG4gICAgY29uc3QgcmVhZGVyID0gaW5wdXQgaW5zdGFuY2VvZiBfbTAuUmVhZGVyID8gaW5wdXQgOiBfbTAuUmVhZGVyLmNyZWF0ZShpbnB1dCk7XG4gICAgbGV0IGVuZCA9IGxlbmd0aCA9PT0gdW5kZWZpbmVkID8gcmVhZGVyLmxlbiA6IHJlYWRlci5wb3MgKyBsZW5ndGg7XG4gICAgY29uc3QgbWVzc2FnZSA9IGNyZWF0ZUJhc2VDYXNlRmlsZU1ldGFkYXRhKCk7XG4gICAgd2hpbGUgKHJlYWRlci5wb3MgPCBlbmQpIHtcbiAgICAgIGNvbnN0IHRhZyA9IHJlYWRlci51aW50MzIoKTtcbiAgICAgIHN3aXRjaCAodGFnID4+PiAzKSB7XG4gICAgICAgIGNhc2UgMTpcbiAgICAgICAgICBpZiAodGFnICE9PSAxMCkge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbWVzc2FnZS5maWxlSWQgPSByZWFkZXIuc3RyaW5nKCk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIGNhc2UgMjpcbiAgICAgICAgICBpZiAodGFnICE9PSAxOCkge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbWVzc2FnZS5maWxlTmFtZSA9IHJlYWRlci5zdHJpbmcoKTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGlmICgodGFnICYgNykgPT09IDQgfHwgdGFnID09PSAwKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgcmVhZGVyLnNraXBUeXBlKHRhZyAmIDcpO1xuICAgIH1cbiAgICByZXR1cm4gbWVzc2FnZTtcbiAgfSxcblxuICBmcm9tSlNPTihvYmplY3Q6IGFueSk6IENhc2VGaWxlTWV0YWRhdGEge1xuICAgIHJldHVybiB7XG4gICAgICBmaWxlSWQ6IGlzU2V0KG9iamVjdC5maWxlSWQpID8gZ2xvYmFsVGhpcy5TdHJpbmcob2JqZWN0LmZpbGVJZCkgOiBcIlwiLFxuICAgICAgZmlsZU5hbWU6IGlzU2V0KG9iamVjdC5maWxlTmFtZSkgPyBnbG9iYWxUaGlzLlN0cmluZyhvYmplY3QuZmlsZU5hbWUpIDogXCJcIixcbiAgICB9O1xuICB9LFxuXG4gIHRvSlNPTihtZXNzYWdlOiBDYXNlRmlsZU1ldGFkYXRhKTogdW5rbm93biB7XG4gICAgY29uc3Qgb2JqOiBhbnkgPSB7fTtcbiAgICBpZiAobWVzc2FnZS5maWxlSWQgIT09IFwiXCIpIHtcbiAgICAgIG9iai5maWxlSWQgPSBtZXNzYWdlLmZpbGVJZDtcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UuZmlsZU5hbWUgIT09IFwiXCIpIHtcbiAgICAgIG9iai5maWxlTmFtZSA9IG1lc3NhZ2UuZmlsZU5hbWU7XG4gICAgfVxuICAgIHJldHVybiBvYmo7XG4gIH0sXG5cbiAgY3JlYXRlKGJhc2U/OiBEZWVwUGFydGlhbDxDYXNlRmlsZU1ldGFkYXRhPik6IENhc2VGaWxlTWV0YWRhdGEge1xuICAgIHJldHVybiBDYXNlRmlsZU1ldGFkYXRhLmZyb21QYXJ0aWFsKGJhc2UgPz8ge30pO1xuICB9LFxuICBmcm9tUGFydGlhbChvYmplY3Q6IERlZXBQYXJ0aWFsPENhc2VGaWxlTWV0YWRhdGE+KTogQ2FzZUZpbGVNZXRhZGF0YSB7XG4gICAgY29uc3QgbWVzc2FnZSA9IGNyZWF0ZUJhc2VDYXNlRmlsZU1ldGFkYXRhKCk7XG4gICAgbWVzc2FnZS5maWxlSWQgPSBvYmplY3QuZmlsZUlkID8/IFwiXCI7XG4gICAgbWVzc2FnZS5maWxlTmFtZSA9IG9iamVjdC5maWxlTmFtZSA/PyBcIlwiO1xuICAgIHJldHVybiBtZXNzYWdlO1xuICB9LFxufTtcblxuZnVuY3Rpb24gY3JlYXRlQmFzZUVudGl0eU1ldGFkYXRhKCk6IEVudGl0eU1ldGFkYXRhIHtcbiAgcmV0dXJuIHsgbWV0YWRhdGE6IHVuZGVmaW5lZCB9O1xufVxuXG5leHBvcnQgY29uc3QgRW50aXR5TWV0YWRhdGEgPSB7XG4gIGVuY29kZShtZXNzYWdlOiBFbnRpdHlNZXRhZGF0YSwgd3JpdGVyOiBfbTAuV3JpdGVyID0gX20wLldyaXRlci5jcmVhdGUoKSk6IF9tMC5Xcml0ZXIge1xuICAgIHN3aXRjaCAobWVzc2FnZS5tZXRhZGF0YT8uJGNhc2UpIHtcbiAgICAgIGNhc2UgXCJkc3ltTWV0YWRhdGFcIjpcbiAgICAgICAgRHN5bU1ldGFkYXRhLmVuY29kZShtZXNzYWdlLm1ldGFkYXRhLmRzeW1NZXRhZGF0YSwgd3JpdGVyLnVpbnQzMigxMCkuZm9yaygpKS5sZGVsaW0oKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwic291cmNlTWFwTWV0YWRhdGFcIjpcbiAgICAgICAgU291cmNlTWFwTWV0YWRhdGEuZW5jb2RlKG1lc3NhZ2UubWV0YWRhdGEuc291cmNlTWFwTWV0YWRhdGEsIHdyaXRlci51aW50MzIoMTgpLmZvcmsoKSkubGRlbGltKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcInByb2d1YXJkTWV0YWRhdGFcIjpcbiAgICAgICAgUHJvZ3VhcmRNZXRhZGF0YS5lbmNvZGUobWVzc2FnZS5tZXRhZGF0YS5wcm9ndWFyZE1ldGFkYXRhLCB3cml0ZXIudWludDMyKDI2KS5mb3JrKCkpLmxkZWxpbSgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJpbnZlc3RpZ2F0aW9uRmlsZU1ldGFkYXRhXCI6XG4gICAgICAgIEludmVzdGlnYXRpb25GaWxlTWV0YWRhdGEuZW5jb2RlKG1lc3NhZ2UubWV0YWRhdGEuaW52ZXN0aWdhdGlvbkZpbGVNZXRhZGF0YSwgd3JpdGVyLnVpbnQzMigzNCkuZm9yaygpKS5sZGVsaW0oKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiY2FzZUZpbGVNZXRhZGF0YVwiOlxuICAgICAgICBDYXNlRmlsZU1ldGFkYXRhLmVuY29kZShtZXNzYWdlLm1ldGFkYXRhLmNhc2VGaWxlTWV0YWRhdGEsIHdyaXRlci51aW50MzIoNDIpLmZvcmsoKSkubGRlbGltKCk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICByZXR1cm4gd3JpdGVyO1xuICB9LFxuXG4gIGRlY29kZShpbnB1dDogX20wLlJlYWRlciB8IFVpbnQ4QXJyYXksIGxlbmd0aD86IG51bWJlcik6IEVudGl0eU1ldGFkYXRhIHtcbiAgICBjb25zdCByZWFkZXIgPSBpbnB1dCBpbnN0YW5jZW9mIF9tMC5SZWFkZXIgPyBpbnB1dCA6IF9tMC5SZWFkZXIuY3JlYXRlKGlucHV0KTtcbiAgICBsZXQgZW5kID0gbGVuZ3RoID09PSB1bmRlZmluZWQgPyByZWFkZXIubGVuIDogcmVhZGVyLnBvcyArIGxlbmd0aDtcbiAgICBjb25zdCBtZXNzYWdlID0gY3JlYXRlQmFzZUVudGl0eU1ldGFkYXRhKCk7XG4gICAgd2hpbGUgKHJlYWRlci5wb3MgPCBlbmQpIHtcbiAgICAgIGNvbnN0IHRhZyA9IHJlYWRlci51aW50MzIoKTtcbiAgICAgIHN3aXRjaCAodGFnID4+PiAzKSB7XG4gICAgICAgIGNhc2UgMTpcbiAgICAgICAgICBpZiAodGFnICE9PSAxMCkge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbWVzc2FnZS5tZXRhZGF0YSA9IHsgJGNhc2U6IFwiZHN5bU1ldGFkYXRhXCIsIGRzeW1NZXRhZGF0YTogRHN5bU1ldGFkYXRhLmRlY29kZShyZWFkZXIsIHJlYWRlci51aW50MzIoKSkgfTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgY2FzZSAyOlxuICAgICAgICAgIGlmICh0YWcgIT09IDE4KSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBtZXNzYWdlLm1ldGFkYXRhID0ge1xuICAgICAgICAgICAgJGNhc2U6IFwic291cmNlTWFwTWV0YWRhdGFcIixcbiAgICAgICAgICAgIHNvdXJjZU1hcE1ldGFkYXRhOiBTb3VyY2VNYXBNZXRhZGF0YS5kZWNvZGUocmVhZGVyLCByZWFkZXIudWludDMyKCkpLFxuICAgICAgICAgIH07XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIGNhc2UgMzpcbiAgICAgICAgICBpZiAodGFnICE9PSAyNikge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbWVzc2FnZS5tZXRhZGF0YSA9IHtcbiAgICAgICAgICAgICRjYXNlOiBcInByb2d1YXJkTWV0YWRhdGFcIixcbiAgICAgICAgICAgIHByb2d1YXJkTWV0YWRhdGE6IFByb2d1YXJkTWV0YWRhdGEuZGVjb2RlKHJlYWRlciwgcmVhZGVyLnVpbnQzMigpKSxcbiAgICAgICAgICB9O1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgaWYgKHRhZyAhPT0gMzQpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIG1lc3NhZ2UubWV0YWRhdGEgPSB7XG4gICAgICAgICAgICAkY2FzZTogXCJpbnZlc3RpZ2F0aW9uRmlsZU1ldGFkYXRhXCIsXG4gICAgICAgICAgICBpbnZlc3RpZ2F0aW9uRmlsZU1ldGFkYXRhOiBJbnZlc3RpZ2F0aW9uRmlsZU1ldGFkYXRhLmRlY29kZShyZWFkZXIsIHJlYWRlci51aW50MzIoKSksXG4gICAgICAgICAgfTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgY2FzZSA1OlxuICAgICAgICAgIGlmICh0YWcgIT09IDQyKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBtZXNzYWdlLm1ldGFkYXRhID0ge1xuICAgICAgICAgICAgJGNhc2U6IFwiY2FzZUZpbGVNZXRhZGF0YVwiLFxuICAgICAgICAgICAgY2FzZUZpbGVNZXRhZGF0YTogQ2FzZUZpbGVNZXRhZGF0YS5kZWNvZGUocmVhZGVyLCByZWFkZXIudWludDMyKCkpLFxuICAgICAgICAgIH07XG4gICAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBpZiAoKHRhZyAmIDcpID09PSA0IHx8IHRhZyA9PT0gMCkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIHJlYWRlci5za2lwVHlwZSh0YWcgJiA3KTtcbiAgICB9XG4gICAgcmV0dXJuIG1lc3NhZ2U7XG4gIH0sXG5cbiAgZnJvbUpTT04ob2JqZWN0OiBhbnkpOiBFbnRpdHlNZXRhZGF0YSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG1ldGFkYXRhOiBpc1NldChvYmplY3QuZHN5bU1ldGFkYXRhKVxuICAgICAgICA/IHsgJGNhc2U6IFwiZHN5bU1ldGFkYXRhXCIsIGRzeW1NZXRhZGF0YTogRHN5bU1ldGFkYXRhLmZyb21KU09OKG9iamVjdC5kc3ltTWV0YWRhdGEpIH1cbiAgICAgICAgOiBpc1NldChvYmplY3Quc291cmNlTWFwTWV0YWRhdGEpXG4gICAgICAgID8geyAkY2FzZTogXCJzb3VyY2VNYXBNZXRhZGF0YVwiLCBzb3VyY2VNYXBNZXRhZGF0YTogU291cmNlTWFwTWV0YWRhdGEuZnJvbUpTT04ob2JqZWN0LnNvdXJjZU1hcE1ldGFkYXRhKSB9XG4gICAgICAgIDogaXNTZXQob2JqZWN0LnByb2d1YXJkTWV0YWRhdGEpXG4gICAgICAgID8geyAkY2FzZTogXCJwcm9ndWFyZE1ldGFkYXRhXCIsIHByb2d1YXJkTWV0YWRhdGE6IFByb2d1YXJkTWV0YWRhdGEuZnJvbUpTT04ob2JqZWN0LnByb2d1YXJkTWV0YWRhdGEpIH1cbiAgICAgICAgOiBpc1NldChvYmplY3QuaW52ZXN0aWdhdGlvbkZpbGVNZXRhZGF0YSlcbiAgICAgICAgPyB7XG4gICAgICAgICAgJGNhc2U6IFwiaW52ZXN0aWdhdGlvbkZpbGVNZXRhZGF0YVwiLFxuICAgICAgICAgIGludmVzdGlnYXRpb25GaWxlTWV0YWRhdGE6IEludmVzdGlnYXRpb25GaWxlTWV0YWRhdGEuZnJvbUpTT04ob2JqZWN0LmludmVzdGlnYXRpb25GaWxlTWV0YWRhdGEpLFxuICAgICAgICB9XG4gICAgICAgIDogaXNTZXQob2JqZWN0LmNhc2VGaWxlTWV0YWRhdGEpXG4gICAgICAgID8geyAkY2FzZTogXCJjYXNlRmlsZU1ldGFkYXRhXCIsIGNhc2VGaWxlTWV0YWRhdGE6IENhc2VGaWxlTWV0YWRhdGEuZnJvbUpTT04ob2JqZWN0LmNhc2VGaWxlTWV0YWRhdGEpIH1cbiAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgfTtcbiAgfSxcblxuICB0b0pTT04obWVzc2FnZTogRW50aXR5TWV0YWRhdGEpOiB1bmtub3duIHtcbiAgICBjb25zdCBvYmo6IGFueSA9IHt9O1xuICAgIGlmIChtZXNzYWdlLm1ldGFkYXRhPy4kY2FzZSA9PT0gXCJkc3ltTWV0YWRhdGFcIikge1xuICAgICAgb2JqLmRzeW1NZXRhZGF0YSA9IERzeW1NZXRhZGF0YS50b0pTT04obWVzc2FnZS5tZXRhZGF0YS5kc3ltTWV0YWRhdGEpO1xuICAgIH1cbiAgICBpZiAobWVzc2FnZS5tZXRhZGF0YT8uJGNhc2UgPT09IFwic291cmNlTWFwTWV0YWRhdGFcIikge1xuICAgICAgb2JqLnNvdXJjZU1hcE1ldGFkYXRhID0gU291cmNlTWFwTWV0YWRhdGEudG9KU09OKG1lc3NhZ2UubWV0YWRhdGEuc291cmNlTWFwTWV0YWRhdGEpO1xuICAgIH1cbiAgICBpZiAobWVzc2FnZS5tZXRhZGF0YT8uJGNhc2UgPT09IFwicHJvZ3VhcmRNZXRhZGF0YVwiKSB7XG4gICAgICBvYmoucHJvZ3VhcmRNZXRhZGF0YSA9IFByb2d1YXJkTWV0YWRhdGEudG9KU09OKG1lc3NhZ2UubWV0YWRhdGEucHJvZ3VhcmRNZXRhZGF0YSk7XG4gICAgfVxuICAgIGlmIChtZXNzYWdlLm1ldGFkYXRhPy4kY2FzZSA9PT0gXCJpbnZlc3RpZ2F0aW9uRmlsZU1ldGFkYXRhXCIpIHtcbiAgICAgIG9iai5pbnZlc3RpZ2F0aW9uRmlsZU1ldGFkYXRhID0gSW52ZXN0aWdhdGlvbkZpbGVNZXRhZGF0YS50b0pTT04obWVzc2FnZS5tZXRhZGF0YS5pbnZlc3RpZ2F0aW9uRmlsZU1ldGFkYXRhKTtcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UubWV0YWRhdGE/LiRjYXNlID09PSBcImNhc2VGaWxlTWV0YWRhdGFcIikge1xuICAgICAgb2JqLmNhc2VGaWxlTWV0YWRhdGEgPSBDYXNlRmlsZU1ldGFkYXRhLnRvSlNPTihtZXNzYWdlLm1ldGFkYXRhLmNhc2VGaWxlTWV0YWRhdGEpO1xuICAgIH1cbiAgICByZXR1cm4gb2JqO1xuICB9LFxuXG4gIGNyZWF0ZShiYXNlPzogRGVlcFBhcnRpYWw8RW50aXR5TWV0YWRhdGE+KTogRW50aXR5TWV0YWRhdGEge1xuICAgIHJldHVybiBFbnRpdHlNZXRhZGF0YS5mcm9tUGFydGlhbChiYXNlID8/IHt9KTtcbiAgfSxcbiAgZnJvbVBhcnRpYWwob2JqZWN0OiBEZWVwUGFydGlhbDxFbnRpdHlNZXRhZGF0YT4pOiBFbnRpdHlNZXRhZGF0YSB7XG4gICAgY29uc3QgbWVzc2FnZSA9IGNyZWF0ZUJhc2VFbnRpdHlNZXRhZGF0YSgpO1xuICAgIGlmIChcbiAgICAgIG9iamVjdC5tZXRhZGF0YT8uJGNhc2UgPT09IFwiZHN5bU1ldGFkYXRhXCIgJiZcbiAgICAgIG9iamVjdC5tZXRhZGF0YT8uZHN5bU1ldGFkYXRhICE9PSB1bmRlZmluZWQgJiZcbiAgICAgIG9iamVjdC5tZXRhZGF0YT8uZHN5bU1ldGFkYXRhICE9PSBudWxsXG4gICAgKSB7XG4gICAgICBtZXNzYWdlLm1ldGFkYXRhID0ge1xuICAgICAgICAkY2FzZTogXCJkc3ltTWV0YWRhdGFcIixcbiAgICAgICAgZHN5bU1ldGFkYXRhOiBEc3ltTWV0YWRhdGEuZnJvbVBhcnRpYWwob2JqZWN0Lm1ldGFkYXRhLmRzeW1NZXRhZGF0YSksXG4gICAgICB9O1xuICAgIH1cbiAgICBpZiAoXG4gICAgICBvYmplY3QubWV0YWRhdGE/LiRjYXNlID09PSBcInNvdXJjZU1hcE1ldGFkYXRhXCIgJiZcbiAgICAgIG9iamVjdC5tZXRhZGF0YT8uc291cmNlTWFwTWV0YWRhdGEgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgb2JqZWN0Lm1ldGFkYXRhPy5zb3VyY2VNYXBNZXRhZGF0YSAhPT0gbnVsbFxuICAgICkge1xuICAgICAgbWVzc2FnZS5tZXRhZGF0YSA9IHtcbiAgICAgICAgJGNhc2U6IFwic291cmNlTWFwTWV0YWRhdGFcIixcbiAgICAgICAgc291cmNlTWFwTWV0YWRhdGE6IFNvdXJjZU1hcE1ldGFkYXRhLmZyb21QYXJ0aWFsKG9iamVjdC5tZXRhZGF0YS5zb3VyY2VNYXBNZXRhZGF0YSksXG4gICAgICB9O1xuICAgIH1cbiAgICBpZiAoXG4gICAgICBvYmplY3QubWV0YWRhdGE/LiRjYXNlID09PSBcInByb2d1YXJkTWV0YWRhdGFcIiAmJlxuICAgICAgb2JqZWN0Lm1ldGFkYXRhPy5wcm9ndWFyZE1ldGFkYXRhICE9PSB1bmRlZmluZWQgJiZcbiAgICAgIG9iamVjdC5tZXRhZGF0YT8ucHJvZ3VhcmRNZXRhZGF0YSAhPT0gbnVsbFxuICAgICkge1xuICAgICAgbWVzc2FnZS5tZXRhZGF0YSA9IHtcbiAgICAgICAgJGNhc2U6IFwicHJvZ3VhcmRNZXRhZGF0YVwiLFxuICAgICAgICBwcm9ndWFyZE1ldGFkYXRhOiBQcm9ndWFyZE1ldGFkYXRhLmZyb21QYXJ0aWFsKG9iamVjdC5tZXRhZGF0YS5wcm9ndWFyZE1ldGFkYXRhKSxcbiAgICAgIH07XG4gICAgfVxuICAgIGlmIChcbiAgICAgIG9iamVjdC5tZXRhZGF0YT8uJGNhc2UgPT09IFwiaW52ZXN0aWdhdGlvbkZpbGVNZXRhZGF0YVwiICYmXG4gICAgICBvYmplY3QubWV0YWRhdGE/LmludmVzdGlnYXRpb25GaWxlTWV0YWRhdGEgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgb2JqZWN0Lm1ldGFkYXRhPy5pbnZlc3RpZ2F0aW9uRmlsZU1ldGFkYXRhICE9PSBudWxsXG4gICAgKSB7XG4gICAgICBtZXNzYWdlLm1ldGFkYXRhID0ge1xuICAgICAgICAkY2FzZTogXCJpbnZlc3RpZ2F0aW9uRmlsZU1ldGFkYXRhXCIsXG4gICAgICAgIGludmVzdGlnYXRpb25GaWxlTWV0YWRhdGE6IEludmVzdGlnYXRpb25GaWxlTWV0YWRhdGEuZnJvbVBhcnRpYWwob2JqZWN0Lm1ldGFkYXRhLmludmVzdGlnYXRpb25GaWxlTWV0YWRhdGEpLFxuICAgICAgfTtcbiAgICB9XG4gICAgaWYgKFxuICAgICAgb2JqZWN0Lm1ldGFkYXRhPy4kY2FzZSA9PT0gXCJjYXNlRmlsZU1ldGFkYXRhXCIgJiZcbiAgICAgIG9iamVjdC5tZXRhZGF0YT8uY2FzZUZpbGVNZXRhZGF0YSAhPT0gdW5kZWZpbmVkICYmXG4gICAgICBvYmplY3QubWV0YWRhdGE/LmNhc2VGaWxlTWV0YWRhdGEgIT09IG51bGxcbiAgICApIHtcbiAgICAgIG1lc3NhZ2UubWV0YWRhdGEgPSB7XG4gICAgICAgICRjYXNlOiBcImNhc2VGaWxlTWV0YWRhdGFcIixcbiAgICAgICAgY2FzZUZpbGVNZXRhZGF0YTogQ2FzZUZpbGVNZXRhZGF0YS5mcm9tUGFydGlhbChvYmplY3QubWV0YWRhdGEuY2FzZUZpbGVNZXRhZGF0YSksXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gbWVzc2FnZTtcbiAgfSxcbn07XG5cbnR5cGUgQnVpbHRpbiA9IERhdGUgfCBGdW5jdGlvbiB8IFVpbnQ4QXJyYXkgfCBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgdW5kZWZpbmVkO1xuXG5leHBvcnQgdHlwZSBEZWVwUGFydGlhbDxUPiA9IFQgZXh0ZW5kcyBCdWlsdGluID8gVFxuICA6IFQgZXh0ZW5kcyBnbG9iYWxUaGlzLkFycmF5PGluZmVyIFU+ID8gZ2xvYmFsVGhpcy5BcnJheTxEZWVwUGFydGlhbDxVPj5cbiAgOiBUIGV4dGVuZHMgUmVhZG9ubHlBcnJheTxpbmZlciBVPiA/IFJlYWRvbmx5QXJyYXk8RGVlcFBhcnRpYWw8VT4+XG4gIDogVCBleHRlbmRzIHsgJGNhc2U6IHN0cmluZyB9ID8geyBbSyBpbiBrZXlvZiBPbWl0PFQsIFwiJGNhc2VcIj5dPzogRGVlcFBhcnRpYWw8VFtLXT4gfSAmIHsgJGNhc2U6IFRbXCIkY2FzZVwiXSB9XG4gIDogVCBleHRlbmRzIHt9ID8geyBbSyBpbiBrZXlvZiBUXT86IERlZXBQYXJ0aWFsPFRbS10+IH1cbiAgOiBQYXJ0aWFsPFQ+O1xuXG5mdW5jdGlvbiBpc1NldCh2YWx1ZTogYW55KTogYm9vbGVhbiB7XG4gIHJldHVybiB2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkO1xufVxuIl19
@@ -4,7 +4,9 @@ export declare enum EntityType {
4
4
  ENTITY_TYPE_DSYM = 1,
5
5
  ENTITY_TYPE_SOURCE_MAP = 2,
6
6
  ENTITY_TYPE_REACT_NATIVE = 3,
7
- ENTITY_TYPE_PROGUARD = 4
7
+ ENTITY_TYPE_PROGUARD = 4,
8
+ ENTITY_TYPE_INVESTIGATION_FILE = 5,
9
+ ENTITY_TYPE_CASE_FILE = 6
8
10
  }
9
11
  export declare function entityTypeFromJSON(object: any): EntityType;
10
12
  export declare function entityTypeToJSON(object: EntityType): string;
@@ -15,6 +15,8 @@ var EntityType;
15
15
  EntityType[EntityType["ENTITY_TYPE_SOURCE_MAP"] = 2] = "ENTITY_TYPE_SOURCE_MAP";
16
16
  EntityType[EntityType["ENTITY_TYPE_REACT_NATIVE"] = 3] = "ENTITY_TYPE_REACT_NATIVE";
17
17
  EntityType[EntityType["ENTITY_TYPE_PROGUARD"] = 4] = "ENTITY_TYPE_PROGUARD";
18
+ EntityType[EntityType["ENTITY_TYPE_INVESTIGATION_FILE"] = 5] = "ENTITY_TYPE_INVESTIGATION_FILE";
19
+ EntityType[EntityType["ENTITY_TYPE_CASE_FILE"] = 6] = "ENTITY_TYPE_CASE_FILE";
18
20
  })(EntityType = exports.EntityType || (exports.EntityType = {}));
19
21
  function entityTypeFromJSON(object) {
20
22
  switch (object) {
@@ -33,6 +35,12 @@ function entityTypeFromJSON(object) {
33
35
  case 4:
34
36
  case "ENTITY_TYPE_PROGUARD":
35
37
  return EntityType.ENTITY_TYPE_PROGUARD;
38
+ case 5:
39
+ case "ENTITY_TYPE_INVESTIGATION_FILE":
40
+ return EntityType.ENTITY_TYPE_INVESTIGATION_FILE;
41
+ case 6:
42
+ case "ENTITY_TYPE_CASE_FILE":
43
+ return EntityType.ENTITY_TYPE_CASE_FILE;
36
44
  default:
37
45
  throw new globalThis.Error("Unrecognized enum value " + object + " for enum EntityType");
38
46
  }
@@ -50,9 +58,13 @@ function entityTypeToJSON(object) {
50
58
  return "ENTITY_TYPE_REACT_NATIVE";
51
59
  case EntityType.ENTITY_TYPE_PROGUARD:
52
60
  return "ENTITY_TYPE_PROGUARD";
61
+ case EntityType.ENTITY_TYPE_INVESTIGATION_FILE:
62
+ return "ENTITY_TYPE_INVESTIGATION_FILE";
63
+ case EntityType.ENTITY_TYPE_CASE_FILE:
64
+ return "ENTITY_TYPE_CASE_FILE";
53
65
  default:
54
66
  throw new globalThis.Error("Unrecognized enum value " + object + " for enum EntityType");
55
67
  }
56
68
  }
57
69
  exports.entityTypeToJSON = entityTypeToJSON;
58
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5X3R5cGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm90by1tb2RlbHMvY29tL2NvcmFsb2dpeC9ibG9ic2V0L3YyL2VudGl0eV90eXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxzREFBc0Q7QUFDdEQsWUFBWTtBQUNaLGtDQUFrQztBQUNsQyxpQ0FBaUM7QUFDakMscURBQXFEOzs7QUFFckQsb0JBQW9CO0FBRVAsUUFBQSxlQUFlLEdBQUcsMEJBQTBCLENBQUM7QUFFMUQsSUFBWSxVQU1YO0FBTkQsV0FBWSxVQUFVO0lBQ3BCLGlGQUEyQixDQUFBO0lBQzNCLG1FQUFvQixDQUFBO0lBQ3BCLCtFQUEwQixDQUFBO0lBQzFCLG1GQUE0QixDQUFBO0lBQzVCLDJFQUF3QixDQUFBO0FBQzFCLENBQUMsRUFOVyxVQUFVLEdBQVYsa0JBQVUsS0FBVixrQkFBVSxRQU1yQjtBQUVELFNBQWdCLGtCQUFrQixDQUFDLE1BQVc7SUFDNUMsUUFBUSxNQUFNLEVBQUU7UUFDZCxLQUFLLENBQUMsQ0FBQztRQUNQLEtBQUsseUJBQXlCO1lBQzVCLE9BQU8sVUFBVSxDQUFDLHVCQUF1QixDQUFDO1FBQzVDLEtBQUssQ0FBQyxDQUFDO1FBQ1AsS0FBSyxrQkFBa0I7WUFDckIsT0FBTyxVQUFVLENBQUMsZ0JBQWdCLENBQUM7UUFDckMsS0FBSyxDQUFDLENBQUM7UUFDUCxLQUFLLHdCQUF3QjtZQUMzQixPQUFPLFVBQVUsQ0FBQyxzQkFBc0IsQ0FBQztRQUMzQyxLQUFLLENBQUMsQ0FBQztRQUNQLEtBQUssMEJBQTBCO1lBQzdCLE9BQU8sVUFBVSxDQUFDLHdCQUF3QixDQUFDO1FBQzdDLEtBQUssQ0FBQyxDQUFDO1FBQ1AsS0FBSyxzQkFBc0I7WUFDekIsT0FBTyxVQUFVLENBQUMsb0JBQW9CLENBQUM7UUFDekM7WUFDRSxNQUFNLElBQUksVUFBVSxDQUFDLEtBQUssQ0FBQywwQkFBMEIsR0FBRyxNQUFNLEdBQUcsc0JBQXNCLENBQUMsQ0FBQztLQUM1RjtBQUNILENBQUM7QUFwQkQsZ0RBb0JDO0FBRUQsU0FBZ0IsZ0JBQWdCLENBQUMsTUFBa0I7SUFDakQsUUFBUSxNQUFNLEVBQUU7UUFDZCxLQUFLLFVBQVUsQ0FBQyx1QkFBdUI7WUFDckMsT0FBTyx5QkFBeUIsQ0FBQztRQUNuQyxLQUFLLFVBQVUsQ0FBQyxnQkFBZ0I7WUFDOUIsT0FBTyxrQkFBa0IsQ0FBQztRQUM1QixLQUFLLFVBQVUsQ0FBQyxzQkFBc0I7WUFDcEMsT0FBTyx3QkFBd0IsQ0FBQztRQUNsQyxLQUFLLFVBQVUsQ0FBQyx3QkFBd0I7WUFDdEMsT0FBTywwQkFBMEIsQ0FBQztRQUNwQyxLQUFLLFVBQVUsQ0FBQyxvQkFBb0I7WUFDbEMsT0FBTyxzQkFBc0IsQ0FBQztRQUNoQztZQUNFLE1BQU0sSUFBSSxVQUFVLENBQUMsS0FBSyxDQUFDLDBCQUEwQixHQUFHLE1BQU0sR0FBRyxzQkFBc0IsQ0FBQyxDQUFDO0tBQzVGO0FBQ0gsQ0FBQztBQWZELDRDQWVDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29kZSBnZW5lcmF0ZWQgYnkgcHJvdG9jLWdlbi10c19wcm90by4gRE8gTk9UIEVESVQuXG4vLyB2ZXJzaW9uczpcbi8vICAgcHJvdG9jLWdlbi10c19wcm90byAgdjEuMTgxLjFcbi8vICAgcHJvdG9jICAgICAgICAgICAgICAgdjMuMTkuMVxuLy8gc291cmNlOiBjb20vY29yYWxvZ2l4L2Jsb2JzZXQvdjIvZW50aXR5X3R5cGUucHJvdG9cblxuLyogZXNsaW50LWRpc2FibGUgKi9cblxuZXhwb3J0IGNvbnN0IHByb3RvYnVmUGFja2FnZSA9IFwiY29tLmNvcmFsb2dpeC5ibG9ic2V0LnYyXCI7XG5cbmV4cG9ydCBlbnVtIEVudGl0eVR5cGUge1xuICBFTlRJVFlfVFlQRV9VTlNQRUNJRklFRCA9IDAsXG4gIEVOVElUWV9UWVBFX0RTWU0gPSAxLFxuICBFTlRJVFlfVFlQRV9TT1VSQ0VfTUFQID0gMixcbiAgRU5USVRZX1RZUEVfUkVBQ1RfTkFUSVZFID0gMyxcbiAgRU5USVRZX1RZUEVfUFJPR1VBUkQgPSA0LFxufVxuXG5leHBvcnQgZnVuY3Rpb24gZW50aXR5VHlwZUZyb21KU09OKG9iamVjdDogYW55KTogRW50aXR5VHlwZSB7XG4gIHN3aXRjaCAob2JqZWN0KSB7XG4gICAgY2FzZSAwOlxuICAgIGNhc2UgXCJFTlRJVFlfVFlQRV9VTlNQRUNJRklFRFwiOlxuICAgICAgcmV0dXJuIEVudGl0eVR5cGUuRU5USVRZX1RZUEVfVU5TUEVDSUZJRUQ7XG4gICAgY2FzZSAxOlxuICAgIGNhc2UgXCJFTlRJVFlfVFlQRV9EU1lNXCI6XG4gICAgICByZXR1cm4gRW50aXR5VHlwZS5FTlRJVFlfVFlQRV9EU1lNO1xuICAgIGNhc2UgMjpcbiAgICBjYXNlIFwiRU5USVRZX1RZUEVfU09VUkNFX01BUFwiOlxuICAgICAgcmV0dXJuIEVudGl0eVR5cGUuRU5USVRZX1RZUEVfU09VUkNFX01BUDtcbiAgICBjYXNlIDM6XG4gICAgY2FzZSBcIkVOVElUWV9UWVBFX1JFQUNUX05BVElWRVwiOlxuICAgICAgcmV0dXJuIEVudGl0eVR5cGUuRU5USVRZX1RZUEVfUkVBQ1RfTkFUSVZFO1xuICAgIGNhc2UgNDpcbiAgICBjYXNlIFwiRU5USVRZX1RZUEVfUFJPR1VBUkRcIjpcbiAgICAgIHJldHVybiBFbnRpdHlUeXBlLkVOVElUWV9UWVBFX1BST0dVQVJEO1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgZ2xvYmFsVGhpcy5FcnJvcihcIlVucmVjb2duaXplZCBlbnVtIHZhbHVlIFwiICsgb2JqZWN0ICsgXCIgZm9yIGVudW0gRW50aXR5VHlwZVwiKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZW50aXR5VHlwZVRvSlNPTihvYmplY3Q6IEVudGl0eVR5cGUpOiBzdHJpbmcge1xuICBzd2l0Y2ggKG9iamVjdCkge1xuICAgIGNhc2UgRW50aXR5VHlwZS5FTlRJVFlfVFlQRV9VTlNQRUNJRklFRDpcbiAgICAgIHJldHVybiBcIkVOVElUWV9UWVBFX1VOU1BFQ0lGSUVEXCI7XG4gICAgY2FzZSBFbnRpdHlUeXBlLkVOVElUWV9UWVBFX0RTWU06XG4gICAgICByZXR1cm4gXCJFTlRJVFlfVFlQRV9EU1lNXCI7XG4gICAgY2FzZSBFbnRpdHlUeXBlLkVOVElUWV9UWVBFX1NPVVJDRV9NQVA6XG4gICAgICByZXR1cm4gXCJFTlRJVFlfVFlQRV9TT1VSQ0VfTUFQXCI7XG4gICAgY2FzZSBFbnRpdHlUeXBlLkVOVElUWV9UWVBFX1JFQUNUX05BVElWRTpcbiAgICAgIHJldHVybiBcIkVOVElUWV9UWVBFX1JFQUNUX05BVElWRVwiO1xuICAgIGNhc2UgRW50aXR5VHlwZS5FTlRJVFlfVFlQRV9QUk9HVUFSRDpcbiAgICAgIHJldHVybiBcIkVOVElUWV9UWVBFX1BST0dVQVJEXCI7XG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBnbG9iYWxUaGlzLkVycm9yKFwiVW5yZWNvZ25pemVkIGVudW0gdmFsdWUgXCIgKyBvYmplY3QgKyBcIiBmb3IgZW51bSBFbnRpdHlUeXBlXCIpO1xuICB9XG59XG4iXX0=
70
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5X3R5cGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm90by1tb2RlbHMvY29tL2NvcmFsb2dpeC9ibG9ic2V0L3YyL2VudGl0eV90eXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxzREFBc0Q7QUFDdEQsWUFBWTtBQUNaLGtDQUFrQztBQUNsQyxpQ0FBaUM7QUFDakMscURBQXFEOzs7QUFFckQsb0JBQW9CO0FBRVAsUUFBQSxlQUFlLEdBQUcsMEJBQTBCLENBQUM7QUFFMUQsSUFBWSxVQVFYO0FBUkQsV0FBWSxVQUFVO0lBQ3BCLGlGQUEyQixDQUFBO0lBQzNCLG1FQUFvQixDQUFBO0lBQ3BCLCtFQUEwQixDQUFBO0lBQzFCLG1GQUE0QixDQUFBO0lBQzVCLDJFQUF3QixDQUFBO0lBQ3hCLCtGQUFrQyxDQUFBO0lBQ2xDLDZFQUF5QixDQUFBO0FBQzNCLENBQUMsRUFSVyxVQUFVLEdBQVYsa0JBQVUsS0FBVixrQkFBVSxRQVFyQjtBQUVELFNBQWdCLGtCQUFrQixDQUFDLE1BQVc7SUFDNUMsUUFBUSxNQUFNLEVBQUU7UUFDZCxLQUFLLENBQUMsQ0FBQztRQUNQLEtBQUsseUJBQXlCO1lBQzVCLE9BQU8sVUFBVSxDQUFDLHVCQUF1QixDQUFDO1FBQzVDLEtBQUssQ0FBQyxDQUFDO1FBQ1AsS0FBSyxrQkFBa0I7WUFDckIsT0FBTyxVQUFVLENBQUMsZ0JBQWdCLENBQUM7UUFDckMsS0FBSyxDQUFDLENBQUM7UUFDUCxLQUFLLHdCQUF3QjtZQUMzQixPQUFPLFVBQVUsQ0FBQyxzQkFBc0IsQ0FBQztRQUMzQyxLQUFLLENBQUMsQ0FBQztRQUNQLEtBQUssMEJBQTBCO1lBQzdCLE9BQU8sVUFBVSxDQUFDLHdCQUF3QixDQUFDO1FBQzdDLEtBQUssQ0FBQyxDQUFDO1FBQ1AsS0FBSyxzQkFBc0I7WUFDekIsT0FBTyxVQUFVLENBQUMsb0JBQW9CLENBQUM7UUFDekMsS0FBSyxDQUFDLENBQUM7UUFDUCxLQUFLLGdDQUFnQztZQUNuQyxPQUFPLFVBQVUsQ0FBQyw4QkFBOEIsQ0FBQztRQUNuRCxLQUFLLENBQUMsQ0FBQztRQUNQLEtBQUssdUJBQXVCO1lBQzFCLE9BQU8sVUFBVSxDQUFDLHFCQUFxQixDQUFDO1FBQzFDO1lBQ0UsTUFBTSxJQUFJLFVBQVUsQ0FBQyxLQUFLLENBQUMsMEJBQTBCLEdBQUcsTUFBTSxHQUFHLHNCQUFzQixDQUFDLENBQUM7S0FDNUY7QUFDSCxDQUFDO0FBMUJELGdEQTBCQztBQUVELFNBQWdCLGdCQUFnQixDQUFDLE1BQWtCO0lBQ2pELFFBQVEsTUFBTSxFQUFFO1FBQ2QsS0FBSyxVQUFVLENBQUMsdUJBQXVCO1lBQ3JDLE9BQU8seUJBQXlCLENBQUM7UUFDbkMsS0FBSyxVQUFVLENBQUMsZ0JBQWdCO1lBQzlCLE9BQU8sa0JBQWtCLENBQUM7UUFDNUIsS0FBSyxVQUFVLENBQUMsc0JBQXNCO1lBQ3BDLE9BQU8sd0JBQXdCLENBQUM7UUFDbEMsS0FBSyxVQUFVLENBQUMsd0JBQXdCO1lBQ3RDLE9BQU8sMEJBQTBCLENBQUM7UUFDcEMsS0FBSyxVQUFVLENBQUMsb0JBQW9CO1lBQ2xDLE9BQU8sc0JBQXNCLENBQUM7UUFDaEMsS0FBSyxVQUFVLENBQUMsOEJBQThCO1lBQzVDLE9BQU8sZ0NBQWdDLENBQUM7UUFDMUMsS0FBSyxVQUFVLENBQUMscUJBQXFCO1lBQ25DLE9BQU8sdUJBQXVCLENBQUM7UUFDakM7WUFDRSxNQUFNLElBQUksVUFBVSxDQUFDLEtBQUssQ0FBQywwQkFBMEIsR0FBRyxNQUFNLEdBQUcsc0JBQXNCLENBQUMsQ0FBQztLQUM1RjtBQUNILENBQUM7QUFuQkQsNENBbUJDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29kZSBnZW5lcmF0ZWQgYnkgcHJvdG9jLWdlbi10c19wcm90by4gRE8gTk9UIEVESVQuXG4vLyB2ZXJzaW9uczpcbi8vICAgcHJvdG9jLWdlbi10c19wcm90byAgdjEuMTgxLjFcbi8vICAgcHJvdG9jICAgICAgICAgICAgICAgdjMuMTkuMVxuLy8gc291cmNlOiBjb20vY29yYWxvZ2l4L2Jsb2JzZXQvdjIvZW50aXR5X3R5cGUucHJvdG9cblxuLyogZXNsaW50LWRpc2FibGUgKi9cblxuZXhwb3J0IGNvbnN0IHByb3RvYnVmUGFja2FnZSA9IFwiY29tLmNvcmFsb2dpeC5ibG9ic2V0LnYyXCI7XG5cbmV4cG9ydCBlbnVtIEVudGl0eVR5cGUge1xuICBFTlRJVFlfVFlQRV9VTlNQRUNJRklFRCA9IDAsXG4gIEVOVElUWV9UWVBFX0RTWU0gPSAxLFxuICBFTlRJVFlfVFlQRV9TT1VSQ0VfTUFQID0gMixcbiAgRU5USVRZX1RZUEVfUkVBQ1RfTkFUSVZFID0gMyxcbiAgRU5USVRZX1RZUEVfUFJPR1VBUkQgPSA0LFxuICBFTlRJVFlfVFlQRV9JTlZFU1RJR0FUSU9OX0ZJTEUgPSA1LFxuICBFTlRJVFlfVFlQRV9DQVNFX0ZJTEUgPSA2LFxufVxuXG5leHBvcnQgZnVuY3Rpb24gZW50aXR5VHlwZUZyb21KU09OKG9iamVjdDogYW55KTogRW50aXR5VHlwZSB7XG4gIHN3aXRjaCAob2JqZWN0KSB7XG4gICAgY2FzZSAwOlxuICAgIGNhc2UgXCJFTlRJVFlfVFlQRV9VTlNQRUNJRklFRFwiOlxuICAgICAgcmV0dXJuIEVudGl0eVR5cGUuRU5USVRZX1RZUEVfVU5TUEVDSUZJRUQ7XG4gICAgY2FzZSAxOlxuICAgIGNhc2UgXCJFTlRJVFlfVFlQRV9EU1lNXCI6XG4gICAgICByZXR1cm4gRW50aXR5VHlwZS5FTlRJVFlfVFlQRV9EU1lNO1xuICAgIGNhc2UgMjpcbiAgICBjYXNlIFwiRU5USVRZX1RZUEVfU09VUkNFX01BUFwiOlxuICAgICAgcmV0dXJuIEVudGl0eVR5cGUuRU5USVRZX1RZUEVfU09VUkNFX01BUDtcbiAgICBjYXNlIDM6XG4gICAgY2FzZSBcIkVOVElUWV9UWVBFX1JFQUNUX05BVElWRVwiOlxuICAgICAgcmV0dXJuIEVudGl0eVR5cGUuRU5USVRZX1RZUEVfUkVBQ1RfTkFUSVZFO1xuICAgIGNhc2UgNDpcbiAgICBjYXNlIFwiRU5USVRZX1RZUEVfUFJPR1VBUkRcIjpcbiAgICAgIHJldHVybiBFbnRpdHlUeXBlLkVOVElUWV9UWVBFX1BST0dVQVJEO1xuICAgIGNhc2UgNTpcbiAgICBjYXNlIFwiRU5USVRZX1RZUEVfSU5WRVNUSUdBVElPTl9GSUxFXCI6XG4gICAgICByZXR1cm4gRW50aXR5VHlwZS5FTlRJVFlfVFlQRV9JTlZFU1RJR0FUSU9OX0ZJTEU7XG4gICAgY2FzZSA2OlxuICAgIGNhc2UgXCJFTlRJVFlfVFlQRV9DQVNFX0ZJTEVcIjpcbiAgICAgIHJldHVybiBFbnRpdHlUeXBlLkVOVElUWV9UWVBFX0NBU0VfRklMRTtcbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgbmV3IGdsb2JhbFRoaXMuRXJyb3IoXCJVbnJlY29nbml6ZWQgZW51bSB2YWx1ZSBcIiArIG9iamVjdCArIFwiIGZvciBlbnVtIEVudGl0eVR5cGVcIik7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVudGl0eVR5cGVUb0pTT04ob2JqZWN0OiBFbnRpdHlUeXBlKTogc3RyaW5nIHtcbiAgc3dpdGNoIChvYmplY3QpIHtcbiAgICBjYXNlIEVudGl0eVR5cGUuRU5USVRZX1RZUEVfVU5TUEVDSUZJRUQ6XG4gICAgICByZXR1cm4gXCJFTlRJVFlfVFlQRV9VTlNQRUNJRklFRFwiO1xuICAgIGNhc2UgRW50aXR5VHlwZS5FTlRJVFlfVFlQRV9EU1lNOlxuICAgICAgcmV0dXJuIFwiRU5USVRZX1RZUEVfRFNZTVwiO1xuICAgIGNhc2UgRW50aXR5VHlwZS5FTlRJVFlfVFlQRV9TT1VSQ0VfTUFQOlxuICAgICAgcmV0dXJuIFwiRU5USVRZX1RZUEVfU09VUkNFX01BUFwiO1xuICAgIGNhc2UgRW50aXR5VHlwZS5FTlRJVFlfVFlQRV9SRUFDVF9OQVRJVkU6XG4gICAgICByZXR1cm4gXCJFTlRJVFlfVFlQRV9SRUFDVF9OQVRJVkVcIjtcbiAgICBjYXNlIEVudGl0eVR5cGUuRU5USVRZX1RZUEVfUFJPR1VBUkQ6XG4gICAgICByZXR1cm4gXCJFTlRJVFlfVFlQRV9QUk9HVUFSRFwiO1xuICAgIGNhc2UgRW50aXR5VHlwZS5FTlRJVFlfVFlQRV9JTlZFU1RJR0FUSU9OX0ZJTEU6XG4gICAgICByZXR1cm4gXCJFTlRJVFlfVFlQRV9JTlZFU1RJR0FUSU9OX0ZJTEVcIjtcbiAgICBjYXNlIEVudGl0eVR5cGUuRU5USVRZX1RZUEVfQ0FTRV9GSUxFOlxuICAgICAgcmV0dXJuIFwiRU5USVRZX1RZUEVfQ0FTRV9GSUxFXCI7XG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBnbG9iYWxUaGlzLkVycm9yKFwiVW5yZWNvZ25pemVkIGVudW0gdmFsdWUgXCIgKyBvYmplY3QgKyBcIiBmb3IgZW51bSBFbnRpdHlUeXBlXCIpO1xuICB9XG59XG4iXX0=