@simpleangularcontrols/sac-common 13.0.0-rc.11 → 13.0.0-rc.13

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 (72) hide show
  1. package/common/basedatetimecontrol.d.ts.map +1 -1
  2. package/common/baseuploadcontrol.d.ts +73 -52
  3. package/common/baseuploadcontrol.d.ts.map +1 -1
  4. package/controls/input/input.d.ts +4 -4
  5. package/controls/input/input.d.ts.map +1 -1
  6. package/controls/input/inputarea.d.ts +6 -6
  7. package/controls/input/inputarea.d.ts.map +1 -1
  8. package/controls/input/inputpassword.d.ts +8 -8
  9. package/controls/input/inputpassword.d.ts.map +1 -1
  10. package/controls/multilanguage/multilanguageinput.d.ts +3 -3
  11. package/controls/multilanguage/multilanguageinput.d.ts.map +1 -1
  12. package/controls/multilanguage/multilanguageinputarea.d.ts +5 -5
  13. package/controls/multilanguage/multilanguageinputarea.d.ts.map +1 -1
  14. package/controls/treeview/treeview.d.ts +35 -1
  15. package/controls/treeview/treeview.d.ts.map +1 -1
  16. package/esm2020/common/basedatetimecontrol.mjs +10 -10
  17. package/esm2020/common/baseuploadcontrol.mjs +66 -57
  18. package/esm2020/controls/input/input.mjs +6 -6
  19. package/esm2020/controls/input/inputarea.mjs +17 -12
  20. package/esm2020/controls/input/inputpassword.mjs +10 -10
  21. package/esm2020/controls/multilanguage/multilanguageinput.mjs +5 -5
  22. package/esm2020/controls/multilanguage/multilanguageinputarea.mjs +6 -6
  23. package/esm2020/controls/treeview/treeview.mjs +32 -8
  24. package/esm2020/interfaces/ISacUploadEventCompleteState.mjs +3 -0
  25. package/esm2020/interfaces/ISacUploadEventCompleteState.ngfactory.mjs +3 -0
  26. package/esm2020/interfaces/ISacUploadEventCompleteState.ngsummary.mjs +3 -0
  27. package/esm2020/interfaces/ISacValidationKeyService.mjs +3 -3
  28. package/esm2020/public_api.mjs +3 -3
  29. package/esm2020/services/sac-localisation.service.mjs +21 -20
  30. package/esm2020/services/sac-validationkey.service.mjs +5 -5
  31. package/esm2020/validation/mintextlength.validator.mjs +5 -0
  32. package/esm2020/validation/mintextlength.validator.ngfactory.mjs +3 -0
  33. package/esm2020/validation/mintextlength.validator.ngsummary.mjs +3 -0
  34. package/esm2020/validation/validation.mjs +68 -63
  35. package/fesm2015/simpleangularcontrols-sac-common.mjs +1129 -1083
  36. package/fesm2015/simpleangularcontrols-sac-common.mjs.map +1 -1
  37. package/fesm2020/simpleangularcontrols-sac-common.mjs +1132 -1086
  38. package/fesm2020/simpleangularcontrols-sac-common.mjs.map +1 -1
  39. package/interfaces/ISacUploadEventCompleteState.d.ts +6 -0
  40. package/interfaces/ISacUploadEventCompleteState.d.ts.map +1 -0
  41. package/interfaces/ISacUploadEventCompleteState.ngfactory.d.ts +2 -0
  42. package/interfaces/ISacUploadEventCompleteState.ngfactory.d.ts.map +1 -0
  43. package/interfaces/ISacUploadEventCompleteState.ngsummary.d.ts +2 -0
  44. package/interfaces/ISacUploadEventCompleteState.ngsummary.d.ts.map +1 -0
  45. package/interfaces/ISacValidationKeyService.d.ts +2 -2
  46. package/interfaces/ISacValidationKeyService.d.ts.map +1 -1
  47. package/package.json +1 -1
  48. package/public_api.d.ts +1 -0
  49. package/public_api.d.ts.map +1 -1
  50. package/services/sac-localisation.service.d.ts +10 -10
  51. package/services/sac-localisation.service.d.ts.map +1 -1
  52. package/services/sac-validationkey.service.d.ts +2 -2
  53. package/services/sac-validationkey.service.d.ts.map +1 -1
  54. package/simpleangularcontrols-sac-common-13.0.0-rc.13.tgz +0 -0
  55. package/validation/mintextlength.validator.d.ts +3 -0
  56. package/validation/mintextlength.validator.d.ts.map +1 -0
  57. package/validation/mintextlength.validator.ngfactory.d.ts +2 -0
  58. package/validation/mintextlength.validator.ngfactory.d.ts.map +1 -0
  59. package/validation/mintextlength.validator.ngsummary.d.ts +2 -0
  60. package/validation/mintextlength.validator.ngsummary.d.ts.map +1 -0
  61. package/validation/validation.d.ts +56 -56
  62. package/validation/validation.d.ts.map +1 -1
  63. package/esm2020/validation/minlength.validator.mjs +0 -3
  64. package/esm2020/validation/minlength.validator.ngfactory.mjs +0 -3
  65. package/esm2020/validation/minlength.validator.ngsummary.mjs +0 -3
  66. package/simpleangularcontrols-sac-common-13.0.0-rc.11.tgz +0 -0
  67. package/validation/minlength.validator.d.ts +0 -3
  68. package/validation/minlength.validator.d.ts.map +0 -1
  69. package/validation/minlength.validator.ngfactory.d.ts +0 -2
  70. package/validation/minlength.validator.ngfactory.d.ts.map +0 -1
  71. package/validation/minlength.validator.ngsummary.d.ts +0 -2
  72. package/validation/minlength.validator.ngsummary.d.ts.map +0 -1
@@ -1,5 +1,5 @@
1
- function cov_hm7codict(){var path="C:\\Projekte\\simpleangularcontrols-ng13\\ch.jnetwork.sac-controls\\dist\\sac-common\\esm2020\\common\\baseuploadcontrol.mjs";var hash="e215c04763e9cb20c3d149e46300d36d055dd3f8";var global=new Function("return this")();var gcv="__coverage__";var coverageData={path:"C:\\Projekte\\simpleangularcontrols-ng13\\ch.jnetwork.sac-controls\\dist\\sac-common\\esm2020\\common\\baseuploadcontrol.mjs",statementMap:{"0":{start:{line:25,column:8},end:{line:25,column:36}},"1":{start:{line:26,column:8},end:{line:26,column:33}},"2":{start:{line:27,column:8},end:{line:27,column:29}},"3":{start:{line:31,column:8},end:{line:31,column:33}},"4":{start:{line:35,column:8},end:{line:35,column:33}},"5":{start:{line:39,column:8},end:{line:39,column:33}},"6":{start:{line:43,column:8},end:{line:43,column:30}},"7":{start:{line:47,column:8},end:{line:47,column:26}},"8":{start:{line:51,column:8},end:{line:51,column:32}},"9":{start:{line:55,column:8},end:{line:55,column:29}},"10":{start:{line:59,column:8},end:{line:59,column:91}},"11":{start:{line:63,column:8},end:{line:63,column:105}},"12":{start:{line:67,column:8},end:{line:67,column:46}},"13":{start:{line:71,column:8},end:{line:75,column:10}},"14":{start:{line:72,column:12},end:{line:74,column:13}},"15":{start:{line:73,column:16},end:{line:73,column:85}},"16":{start:{line:76,column:8},end:{line:76,column:113}},"17":{start:{line:77,column:8},end:{line:77,column:134}},"18":{start:{line:78,column:8},end:{line:78,column:26}},"19":{start:{line:79,column:8},end:{line:79,column:40}},"20":{start:{line:80,column:8},end:{line:80,column:37}},"21":{start:{line:81,column:8},end:{line:81,column:41}},"22":{start:{line:82,column:8},end:{line:82,column:51}},"23":{start:{line:83,column:8},end:{line:83,column:44}},"24":{start:{line:84,column:8},end:{line:84,column:47}},"25":{start:{line:85,column:8},end:{line:87,column:11}},"26":{start:{line:85,column:39},end:{line:87,column:9}},"27":{start:{line:89,column:8},end:{line:89,column:190}},"28":{start:{line:90,column:8},end:{line:90,column:46}},"29":{start:{line:92,column:8},end:{line:92,column:77}},"30":{start:{line:92,column:55},end:{line:92,column:75}},"31":{start:{line:100,column:8},end:{line:100,column:35}},"32":{start:{line:101,column:8},end:{line:101,column:36}},"33":{start:{line:107,column:8},end:{line:107,column:29}},"34":{start:{line:108,column:8},end:{line:108,column:36}},"35":{start:{line:109,column:8},end:{line:109,column:49}},"36":{start:{line:115,column:8},end:{line:115,column:30}},"37":{start:{line:121,column:8},end:{line:121,column:27}},"38":{start:{line:122,column:8},end:{line:122,column:28}},"39":{start:{line:128,column:8},end:{line:128,column:58}},"40":{start:{line:134,column:8},end:{line:134,column:60}},"41":{start:{line:140,column:8},end:{line:140,column:58}},"42":{start:{line:146,column:8},end:{line:146,column:57}},"43":{start:{line:152,column:8},end:{line:152,column:58}},"44":{start:{line:155,column:8},end:{line:155,column:34}},"45":{start:{line:158,column:8},end:{line:158,column:32}},"46":{start:{line:161,column:8},end:{line:161,column:33}},"47":{start:{line:164,column:8},end:{line:164,column:30}},"48":{start:{line:173,column:8},end:{line:178,column:9}},"49":{start:{line:174,column:12},end:{line:174,column:44}},"50":{start:{line:177,column:12},end:{line:177,column:102}},"51":{start:{line:185,column:8},end:{line:185,column:39}},"52":{start:{line:192,column:8},end:{line:197,column:9}},"53":{start:{line:193,column:12},end:{line:193,column:90}},"54":{start:{line:193,column:49},end:{line:193,column:74}},"55":{start:{line:196,column:12},end:{line:196,column:25}},"56":{start:{line:204,column:8},end:{line:204,column:80}},"57":{start:{line:204,column:44},end:{line:204,column:67}},"58":{start:{line:211,column:8},end:{line:211,column:108}},"59":{start:{line:211,column:45},end:{line:211,column:94}},"60":{start:{line:218,column:8},end:{line:218,column:83}},"61":{start:{line:218,column:44},end:{line:218,column:70}},"62":{start:{line:225,column:8},end:{line:230,column:9}},"63":{start:{line:226,column:12},end:{line:226,column:44}},"64":{start:{line:229,column:12},end:{line:229,column:21}},"65":{start:{line:237,column:8},end:{line:237,column:77}},"66":{start:{line:243,column:8},end:{line:245,column:9}},"67":{start:{line:244,column:12},end:{line:244,column:61}},"68":{start:{line:251,column:8},end:{line:253,column:9}},"69":{start:{line:252,column:12},end:{line:252,column:30}},"70":{start:{line:259,column:8},end:{line:259,column:25}},"71":{start:{line:261,column:8},end:{line:261,column:108}},"72":{start:{line:262,column:8},end:{line:262,column:49}},"73":{start:{line:263,column:8},end:{line:263,column:41}},"74":{start:{line:264,column:8},end:{line:266,column:9}},"75":{start:{line:265,column:12},end:{line:265,column:56}},"76":{start:{line:267,column:8},end:{line:267,column:49}},"77":{start:{line:275,column:22},end:{line:275,column:82}},"78":{start:{line:275,column:52},end:{line:275,column:81}},"79":{start:{line:276,column:8},end:{line:308,column:9}},"80":{start:{line:277,column:12},end:{line:290,column:13}},"81":{start:{line:280,column:16},end:{line:280,column:60}},"82":{start:{line:283,column:16},end:{line:283,column:44}},"83":{start:{line:284,column:16},end:{line:289,column:17}},"84":{start:{line:285,column:20},end:{line:285,column:63}},"85":{start:{line:287,column:21},end:{line:289,column:17}},"86":{start:{line:288,column:20},end:{line:288,column:62}},"87":{start:{line:292,column:13},end:{line:308,column:9}},"88":{start:{line:293,column:12},end:{line:295,column:13}},"89":{start:{line:294,column:16},end:{line:294,column:46}},"90":{start:{line:296,column:12},end:{line:296,column:38}},"91":{start:{line:298,column:13},end:{line:308,column:9}},"92":{start:{line:299,column:12},end:{line:299,column:58}},"93":{start:{line:300,column:12},end:{line:300,column:54}},"94":{start:{line:301,column:12},end:{line:301,column:39}},"95":{start:{line:304,column:12},end:{line:307,column:13}},"96":{start:{line:305,column:16},end:{line:305,column:62}},"97":{start:{line:306,column:16},end:{line:306,column:58}},"98":{start:{line:309,column:8},end:{line:309,column:31}},"99":{start:{line:316,column:8},end:{line:316,column:66}},"100":{start:{line:322,column:8},end:{line:324,column:9}},"101":{start:{line:323,column:12},end:{line:323,column:60}},"102":{start:{line:332,column:8},end:{line:332,column:67}},"103":{start:{line:338,column:8},end:{line:340,column:9}},"104":{start:{line:339,column:12},end:{line:339,column:61}},"105":{start:{line:347,column:20},end:{line:347,column:24}},"106":{start:{line:348,column:8},end:{line:350,column:9}},"107":{start:{line:349,column:12},end:{line:349,column:114}},"108":{start:{line:351,column:8},end:{line:351,column:21}},"109":{start:{line:357,column:8},end:{line:360,column:9}},"110":{start:{line:358,column:12},end:{line:359,column:41}},"111":{start:{line:366,column:8},end:{line:366,column:78}},"112":{start:{line:366,column:44},end:{line:366,column:69}},"113":{start:{line:374,column:8},end:{line:376,column:9}},"114":{start:{line:375,column:12},end:{line:375,column:24}},"115":{start:{line:377,column:22},end:{line:377,column:27}},"116":{start:{line:378,column:27},end:{line:378,column:56}},"117":{start:{line:379,column:8},end:{line:383,column:11}},"118":{start:{line:380,column:12},end:{line:382,column:13}},"119":{start:{line:381,column:16},end:{line:381,column:31}},"120":{start:{line:384,column:8},end:{line:384,column:23}},"121":{start:{line:392,column:8},end:{line:394,column:9}},"122":{start:{line:393,column:12},end:{line:393,column:24}},"123":{start:{line:395,column:8},end:{line:395,column:44}},"124":{start:{line:404,column:8},end:{line:406,column:9}},"125":{start:{line:405,column:12},end:{line:405,column:88}},"126":{start:{line:407,column:8},end:{line:407,column:42}},"127":{start:{line:414,column:8},end:{line:414,column:36}},"128":{start:{line:417,column:0},end:{line:417,column:275}},"129":{start:{line:418,column:0},end:{line:418,column:603}},"130":{start:{line:419,column:0},end:{line:442,column:20}},"131":{start:{line:421,column:42},end:{line:421,column:152}},"132":{start:{line:454,column:8},end:{line:454,column:39}},"133":{start:{line:455,column:8},end:{line:455,column:31}},"134":{start:{line:456,column:8},end:{line:456,column:39}},"135":{start:{line:457,column:8},end:{line:457,column:35}},"136":{start:{line:458,column:8},end:{line:458,column:31}}},fnMap:{"0":{name:"(anonymous_0)",decl:{start:{line:24,column:4},end:{line:24,column:5}},loc:{start:{line:24,column:56},end:{line:93,column:5}},line:24},"1":{name:"(anonymous_1)",decl:{start:{line:71,column:28},end:{line:71,column:29}},loc:{start:{line:71,column:34},end:{line:75,column:9}},line:71},"2":{name:"(anonymous_2)",decl:{start:{line:85,column:31},end:{line:85,column:32}},loc:{start:{line:85,column:39},end:{line:87,column:9}},line:85},"3":{name:"(anonymous_3)",decl:{start:{line:92,column:44},end:{line:92,column:45}},loc:{start:{line:92,column:55},end:{line:92,column:75}},line:92},"4":{name:"(anonymous_4)",decl:{start:{line:99,column:4},end:{line:99,column:5}},loc:{start:{line:99,column:28},end:{line:102,column:5}},line:99},"5":{name:"(anonymous_5)",decl:{start:{line:106,column:4},end:{line:106,column:5}},loc:{start:{line:106,column:22},end:{line:110,column:5}},line:106},"6":{name:"(anonymous_6)",decl:{start:{line:114,column:4},end:{line:114,column:5}},loc:{start:{line:114,column:23},end:{line:116,column:5}},line:114},"7":{name:"(anonymous_7)",decl:{start:{line:120,column:4},end:{line:120,column:5}},loc:{start:{line:120,column:20},end:{line:123,column:5}},line:120},"8":{name:"(anonymous_8)",decl:{start:{line:127,column:4},end:{line:127,column:5}},loc:{start:{line:127,column:21},end:{line:129,column:5}},line:127},"9":{name:"(anonymous_9)",decl:{start:{line:133,column:4},end:{line:133,column:5}},loc:{start:{line:133,column:23},end:{line:135,column:5}},line:133},"10":{name:"(anonymous_10)",decl:{start:{line:139,column:4},end:{line:139,column:5}},loc:{start:{line:139,column:21},end:{line:141,column:5}},line:139},"11":{name:"(anonymous_11)",decl:{start:{line:145,column:4},end:{line:145,column:5}},loc:{start:{line:145,column:20},end:{line:147,column:5}},line:145},"12":{name:"(anonymous_12)",decl:{start:{line:151,column:4},end:{line:151,column:5}},loc:{start:{line:151,column:21},end:{line:153,column:5}},line:151},"13":{name:"(anonymous_13)",decl:{start:{line:154,column:4},end:{line:154,column:5}},loc:{start:{line:154,column:23},end:{line:156,column:5}},line:154},"14":{name:"(anonymous_14)",decl:{start:{line:157,column:4},end:{line:157,column:5}},loc:{start:{line:157,column:21},end:{line:159,column:5}},line:157},"15":{name:"(anonymous_15)",decl:{start:{line:160,column:4},end:{line:160,column:5}},loc:{start:{line:160,column:22},end:{line:162,column:5}},line:160},"16":{name:"(anonymous_16)",decl:{start:{line:163,column:4},end:{line:163,column:5}},loc:{start:{line:163,column:19},end:{line:165,column:5}},line:163},"17":{name:"(anonymous_17)",decl:{start:{line:172,column:4},end:{line:172,column:5}},loc:{start:{line:172,column:15},end:{line:179,column:5}},line:172},"18":{name:"(anonymous_18)",decl:{start:{line:184,column:4},end:{line:184,column:5}},loc:{start:{line:184,column:19},end:{line:186,column:5}},line:184},"19":{name:"(anonymous_19)",decl:{start:{line:191,column:4},end:{line:191,column:5}},loc:{start:{line:191,column:23},end:{line:198,column:5}},line:191},"20":{name:"(anonymous_20)",decl:{start:{line:193,column:40},end:{line:193,column:41}},loc:{start:{line:193,column:49},end:{line:193,column:74}},line:193},"21":{name:"(anonymous_21)",decl:{start:{line:203,column:4},end:{line:203,column:5}},loc:{start:{line:203,column:15},end:{line:205,column:5}},line:203},"22":{name:"(anonymous_22)",decl:{start:{line:204,column:35},end:{line:204,column:36}},loc:{start:{line:204,column:44},end:{line:204,column:67}},line:204},"23":{name:"(anonymous_23)",decl:{start:{line:210,column:4},end:{line:210,column:5}},loc:{start:{line:210,column:22},end:{line:212,column:5}},line:210},"24":{name:"(anonymous_24)",decl:{start:{line:211,column:36},end:{line:211,column:37}},loc:{start:{line:211,column:45},end:{line:211,column:94}},line:211},"25":{name:"(anonymous_25)",decl:{start:{line:217,column:4},end:{line:217,column:5}},loc:{start:{line:217,column:18},end:{line:219,column:5}},line:217},"26":{name:"(anonymous_26)",decl:{start:{line:218,column:35},end:{line:218,column:36}},loc:{start:{line:218,column:44},end:{line:218,column:70}},line:218},"27":{name:"(anonymous_27)",decl:{start:{line:224,column:4},end:{line:224,column:5}},loc:{start:{line:224,column:15},end:{line:231,column:5}},line:224},"28":{name:"(anonymous_28)",decl:{start:{line:236,column:4},end:{line:236,column:5}},loc:{start:{line:236,column:21},end:{line:238,column:5}},line:236},"29":{name:"(anonymous_29)",decl:{start:{line:242,column:4},end:{line:242,column:5}},loc:{start:{line:242,column:16},end:{line:246,column:5}},line:242},"30":{name:"(anonymous_30)",decl:{start:{line:250,column:4},end:{line:250,column:5}},loc:{start:{line:250,column:18},end:{line:254,column:5}},line:250},"31":{name:"(anonymous_31)",decl:{start:{line:258,column:4},end:{line:258,column:5}},loc:{start:{line:258,column:15},end:{line:268,column:5}},line:258},"32":{name:"(anonymous_32)",decl:{start:{line:274,column:4},end:{line:274,column:5}},loc:{start:{line:274,column:20},end:{line:310,column:5}},line:274},"33":{name:"(anonymous_33)",decl:{start:{line:275,column:45},end:{line:275,column:46}},loc:{start:{line:275,column:52},end:{line:275,column:81}},line:275},"34":{name:"(anonymous_34)",decl:{start:{line:315,column:4},end:{line:315,column:5}},loc:{start:{line:315,column:20},end:{line:317,column:5}},line:315},"35":{name:"(anonymous_35)",decl:{start:{line:321,column:4},end:{line:321,column:5}},loc:{start:{line:321,column:15},end:{line:325,column:5}},line:321},"36":{name:"(anonymous_36)",decl:{start:{line:331,column:4},end:{line:331,column:5}},loc:{start:{line:331,column:21},end:{line:333,column:5}},line:331},"37":{name:"(anonymous_37)",decl:{start:{line:337,column:4},end:{line:337,column:5}},loc:{start:{line:337,column:16},end:{line:341,column:5}},line:337},"38":{name:"(anonymous_38)",decl:{start:{line:346,column:4},end:{line:346,column:5}},loc:{start:{line:346,column:20},end:{line:352,column:5}},line:346},"39":{name:"(anonymous_39)",decl:{start:{line:355,column:4},end:{line:355,column:5}},loc:{start:{line:355,column:22},end:{line:361,column:5}},line:355},"40":{name:"(anonymous_40)",decl:{start:{line:365,column:4},end:{line:365,column:5}},loc:{start:{line:365,column:24},end:{line:367,column:5}},line:365},"41":{name:"(anonymous_41)",decl:{start:{line:366,column:35},end:{line:366,column:36}},loc:{start:{line:366,column:44},end:{line:366,column:69}},line:366},"42":{name:"(anonymous_42)",decl:{start:{line:373,column:4},end:{line:373,column:5}},loc:{start:{line:373,column:31},end:{line:385,column:5}},line:373},"43":{name:"(anonymous_43)",decl:{start:{line:379,column:27},end:{line:379,column:28}},loc:{start:{line:379,column:36},end:{line:383,column:9}},line:379},"44":{name:"(anonymous_44)",decl:{start:{line:391,column:4},end:{line:391,column:5}},loc:{start:{line:391,column:30},end:{line:396,column:5}},line:391},"45":{name:"(anonymous_45)",decl:{start:{line:402,column:4},end:{line:402,column:5}},loc:{start:{line:402,column:27},end:{line:408,column:5}},line:402},"46":{name:"(anonymous_46)",decl:{start:{line:413,column:4},end:{line:413,column:5}},loc:{start:{line:413,column:21},end:{line:415,column:5}},line:413},"47":{name:"(anonymous_47)",decl:{start:{line:421,column:28},end:{line:421,column:29}},loc:{start:{line:421,column:40},end:{line:421,column:154}},line:421},"48":{name:"(anonymous_48)",decl:{start:{line:453,column:4},end:{line:453,column:5}},loc:{start:{line:453,column:23},end:{line:459,column:5}},line:453}},branchMap:{"0":{loc:{start:{line:72,column:12},end:{line:74,column:13}},type:"if",locations:[{start:{line:72,column:12},end:{line:74,column:13}},{start:{line:72,column:12},end:{line:74,column:13}}],line:72},"1":{loc:{start:{line:173,column:8},end:{line:178,column:9}},type:"if",locations:[{start:{line:173,column:8},end:{line:178,column:9}},{start:{line:173,column:8},end:{line:178,column:9}}],line:173},"2":{loc:{start:{line:192,column:8},end:{line:197,column:9}},type:"if",locations:[{start:{line:192,column:8},end:{line:197,column:9}},{start:{line:192,column:8},end:{line:197,column:9}}],line:192},"3":{loc:{start:{line:211,column:45},end:{line:211,column:94}},type:"binary-expr",locations:[{start:{line:211,column:45},end:{line:211,column:67}},{start:{line:211,column:71},end:{line:211,column:94}}],line:211},"4":{loc:{start:{line:225,column:8},end:{line:230,column:9}},type:"if",locations:[{start:{line:225,column:8},end:{line:230,column:9}},{start:{line:225,column:8},end:{line:230,column:9}}],line:225},"5":{loc:{start:{line:243,column:8},end:{line:245,column:9}},type:"if",locations:[{start:{line:243,column:8},end:{line:245,column:9}},{start:{line:243,column:8},end:{line:245,column:9}}],line:243},"6":{loc:{start:{line:251,column:8},end:{line:253,column:9}},type:"if",locations:[{start:{line:251,column:8},end:{line:253,column:9}},{start:{line:251,column:8},end:{line:253,column:9}}],line:251},"7":{loc:{start:{line:264,column:8},end:{line:266,column:9}},type:"if",locations:[{start:{line:264,column:8},end:{line:266,column:9}},{start:{line:264,column:8},end:{line:266,column:9}}],line:264},"8":{loc:{start:{line:276,column:8},end:{line:308,column:9}},type:"if",locations:[{start:{line:276,column:8},end:{line:308,column:9}},{start:{line:276,column:8},end:{line:308,column:9}}],line:276},"9":{loc:{start:{line:276,column:12},end:{line:276,column:79}},type:"binary-expr",locations:[{start:{line:276,column:12},end:{line:276,column:36}},{start:{line:276,column:41},end:{line:276,column:65}},{start:{line:276,column:69},end:{line:276,column:78}}],line:276},"10":{loc:{start:{line:277,column:12},end:{line:290,column:13}},type:"if",locations:[{start:{line:277,column:12},end:{line:290,column:13}},{start:{line:277,column:12},end:{line:290,column:13}}],line:277},"11":{loc:{start:{line:277,column:16},end:{line:279,column:47}},type:"binary-expr",locations:[{start:{line:277,column:16},end:{line:277,column:49}},{start:{line:278,column:16},end:{line:278,column:48}},{start:{line:279,column:16},end:{line:279,column:47}}],line:277},"12":{loc:{start:{line:284,column:16},end:{line:289,column:17}},type:"if",locations:[{start:{line:284,column:16},end:{line:289,column:17}},{start:{line:284,column:16},end:{line:289,column:17}}],line:284},"13":{loc:{start:{line:287,column:21},end:{line:289,column:17}},type:"if",locations:[{start:{line:287,column:21},end:{line:289,column:17}},{start:{line:287,column:21},end:{line:289,column:17}}],line:287},"14":{loc:{start:{line:292,column:13},end:{line:308,column:9}},type:"if",locations:[{start:{line:292,column:13},end:{line:308,column:9}},{start:{line:292,column:13},end:{line:308,column:9}}],line:292},"15":{loc:{start:{line:293,column:12},end:{line:295,column:13}},type:"if",locations:[{start:{line:293,column:12},end:{line:295,column:13}},{start:{line:293,column:12},end:{line:295,column:13}}],line:293},"16":{loc:{start:{line:298,column:13},end:{line:308,column:9}},type:"if",locations:[{start:{line:298,column:13},end:{line:308,column:9}},{start:{line:298,column:13},end:{line:308,column:9}}],line:298},"17":{loc:{start:{line:304,column:12},end:{line:307,column:13}},type:"if",locations:[{start:{line:304,column:12},end:{line:307,column:13}},{start:{line:304,column:12},end:{line:307,column:13}}],line:304},"18":{loc:{start:{line:322,column:8},end:{line:324,column:9}},type:"if",locations:[{start:{line:322,column:8},end:{line:324,column:9}},{start:{line:322,column:8},end:{line:324,column:9}}],line:322},"19":{loc:{start:{line:338,column:8},end:{line:340,column:9}},type:"if",locations:[{start:{line:338,column:8},end:{line:340,column:9}},{start:{line:338,column:8},end:{line:340,column:9}}],line:338},"20":{loc:{start:{line:348,column:8},end:{line:350,column:9}},type:"if",locations:[{start:{line:348,column:8},end:{line:350,column:9}},{start:{line:348,column:8},end:{line:350,column:9}}],line:348},"21":{loc:{start:{line:357,column:8},end:{line:360,column:9}},type:"if",locations:[{start:{line:357,column:8},end:{line:360,column:9}},{start:{line:357,column:8},end:{line:360,column:9}}],line:357},"22":{loc:{start:{line:374,column:8},end:{line:376,column:9}},type:"if",locations:[{start:{line:374,column:8},end:{line:376,column:9}},{start:{line:374,column:8},end:{line:376,column:9}}],line:374},"23":{loc:{start:{line:380,column:12},end:{line:382,column:13}},type:"if",locations:[{start:{line:380,column:12},end:{line:382,column:13}},{start:{line:380,column:12},end:{line:382,column:13}}],line:380},"24":{loc:{start:{line:392,column:8},end:{line:394,column:9}},type:"if",locations:[{start:{line:392,column:8},end:{line:394,column:9}},{start:{line:392,column:8},end:{line:394,column:9}}],line:392},"25":{loc:{start:{line:404,column:8},end:{line:406,column:9}},type:"if",locations:[{start:{line:404,column:8},end:{line:406,column:9}},{start:{line:404,column:8},end:{line:406,column:9}}],line:404},"26":{loc:{start:{line:404,column:12},end:{line:404,column:62}},type:"binary-expr",locations:[{start:{line:404,column:12},end:{line:404,column:28}},{start:{line:404,column:32},end:{line:404,column:62}}],line:404}},s:{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"75":0,"76":0,"77":0,"78":0,"79":0,"80":0,"81":0,"82":0,"83":0,"84":0,"85":0,"86":0,"87":0,"88":0,"89":0,"90":0,"91":0,"92":0,"93":0,"94":0,"95":0,"96":0,"97":0,"98":0,"99":0,"100":0,"101":0,"102":0,"103":0,"104":0,"105":0,"106":0,"107":0,"108":0,"109":0,"110":0,"111":0,"112":0,"113":0,"114":0,"115":0,"116":0,"117":0,"118":0,"119":0,"120":0,"121":0,"122":0,"123":0,"124":0,"125":0,"126":0,"127":0,"128":0,"129":0,"130":0,"131":0,"132":0,"133":0,"134":0,"135":0,"136":0},f:{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0},b:{"0":[0,0],"1":[0,0],"2":[0,0],"3":[0,0],"4":[0,0],"5":[0,0],"6":[0,0],"7":[0,0],"8":[0,0],"9":[0,0,0],"10":[0,0],"11":[0,0,0],"12":[0,0],"13":[0,0],"14":[0,0],"15":[0,0],"16":[0,0],"17":[0,0],"18":[0,0],"19":[0,0],"20":[0,0],"21":[0,0],"22":[0,0],"23":[0,0],"24":[0,0],"25":[0,0],"26":[0,0]},inputSourceMap:{version:3,file:"baseuploadcontrol.js",sourceRoot:"",sources:["../../../../projects/sac-common/src/common/baseuploadcontrol.ts"],names:[],mappings:"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",sourcesContent:["import {\r\n Directive,\r\n ElementRef,\r\n EventEmitter,\r\n Injector,\r\n Input,\r\n NgZone,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n Renderer2,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport { AbstractControl, ValidationErrors } from '@angular/forms';\r\nimport {\r\n IdService,\r\n UPLOADX_AJAX,\r\n UPLOADX_FACTORY_OPTIONS,\r\n UPLOADX_OPTIONS,\r\n UploadState,\r\n UploadxOptions,\r\n UploadxService,\r\n} from 'ngx-uploadx';\r\nimport { Observable, of } from 'rxjs';\r\nimport { SacFormLayoutCommon } from '../controls/layout/formlayout';\r\nimport { ISacLocalisationService } from '../interfaces/ISacLocalisationService';\r\nimport { IUploadControl } from '../interfaces/iuploadcontrol';\r\nimport {\r\n SACVALIDATIONKEY_SERVICE,\r\n SacDefaultValidationKeyService,\r\n} from '../services';\r\nimport {\r\n SACLOCALISATION_SERVICE,\r\n SacDefaultLocalisationService,\r\n} from '../services/sac-localisation.service';\r\nimport { Validation } from '../validation';\r\nimport { SacBaseModelControl } from './basemodelcontrol';\r\n\r\n// #region Classes\r\n\r\n/**\r\n * Base Klasse f\xFCr Uploader Control\r\n */\r\n@Directive()\r\nexport abstract class SacUploadBase<VALUE>\r\n extends SacBaseModelControl<VALUE>\r\n implements OnInit, OnDestroy\r\n{\r\n // #region Properties\r\n\r\n /**\r\n * File Input Control\r\n */\r\n @ViewChild('files', { static: true })\r\n private uploadInput: ElementRef;\r\n\r\n /**\r\n * Erlaubte Dateitypen\r\n */\r\n private _allowedtypes: string = '*';\r\n /**\r\n * Files automatisch hochladen\r\n */\r\n private _autoupload: boolean = false;\r\n /**\r\n * Pausieren von Uploads erlauben\r\n */\r\n private _enablepause: boolean = true;\r\n /**\r\n * API Endpoint\r\n */\r\n private _endpoint: string = null;\r\n /**\r\n * Upload Settings\r\n */\r\n private options: UploadxOptions = {};\r\n\r\n /**\r\n * Upload Service\r\n */\r\n protected uploadService: UploadxService;\r\n\r\n /**\r\n * Definiert das Control als Required\r\n */\r\n @Input() public isrequired: boolean = false;\r\n /**\r\n * Max. Dateigr\xF6sse f\xFCr Files die hochgeladen werden k\xF6nnen. 0 deaktiviert den Filter\r\n */\r\n @Input() public maxfilesize: number = 0;\r\n /**\r\n * Resource Key f\xFCr Validation Message Required bei Control\r\n */\r\n @Input() public validationmessagerequired: string =\r\n this.validationKeyService.ValidationErrorRequired;\r\n /**\r\n * Resource Key f\xFCr Validation Message Required in Validation Summary\r\n */\r\n @Input()\r\n public validationmessagesummaryrequired: string =\r\n this.validationKeyService.ValidationErrorSummaryRequired;\r\n /**\r\n * Event wenn ein Error in der Komponente ausgel\xF6st wird.\r\n */\r\n @Output() public onfileerror = new EventEmitter<string>();\r\n\r\n /**\r\n * Handling von neuen Files im Input Control\r\n */\r\n public fileListener = () => {\r\n if (this.uploadInput.nativeElement.files) {\r\n this.uploadService.handleFiles(this.uploadInput.nativeElement.files);\r\n }\r\n };\r\n /**\r\n * Listener f\xFCr Files\r\n */\r\n public listenerFn: () => void;\r\n /**\r\n * Service f\xFCr Error Localisation\r\n */\r\n public lngResourceService: ISacLocalisationService;\r\n /**\r\n * Array von Uploads\r\n */\r\n public uploads: SacUploadFile[];\r\n\r\n // #endregion Properties\r\n\r\n // #region Constructors\r\n\r\n /**\r\n * Constructor\r\n * @param formlayout SacFormLayoutCommon to define scoped layout settings\r\n * @param injector Injector for injecting services\r\n * @param renderer angular rendering engine\r\n * @param ngZone ngzone for handling external scripts\r\n */\r\n constructor(\r\n formlayout: SacFormLayoutCommon,\r\n injector: Injector,\r\n private renderer: Renderer2,\r\n private ngZone: NgZone\r\n ) {\r\n super(formlayout, injector);\r\n\r\n this.validationKeyService = injector.get(\r\n SACVALIDATIONKEY_SERVICE,\r\n new SacDefaultValidationKeyService()\r\n );\r\n\r\n this.lngResourceService = injector.get(\r\n SACLOCALISATION_SERVICE,\r\n new SacDefaultLocalisationService(this.validationKeyService)\r\n );\r\n\r\n this.uploads = [];\r\n\r\n this.options.allowedTypes = '*';\r\n this.options.concurrency = 1;\r\n this.options.token = 'sometoken';\r\n this.options.autoUpload = this._autoupload;\r\n this.options.withCredentials = true;\r\n this.options.chunkSize = 1024 * 16 * 8;\r\n this.options.headers = (f: File) => ({\r\n 'Content-Disposition': `filename=${encodeURI(f.name)}`,\r\n });\r\n\r\n // Init new Service Instance\r\n this.uploadService = new UploadxService(\r\n injector.get(UPLOADX_OPTIONS, null),\r\n injector.get(UPLOADX_FACTORY_OPTIONS),\r\n injector.get(UPLOADX_AJAX),\r\n this.ngZone,\r\n injector.get(IdService)\r\n );\r\n this.uploadService.init(this.options);\r\n\r\n // Subscripe Event for State changes\r\n this.uploadService.events.subscribe((ufile: UploadState) =>\r\n this.onUpload(ufile)\r\n );\r\n }\r\n\r\n // #endregion Constructors\r\n\r\n // #region Public Getters And Setters\r\n\r\n /**\r\n * Erlaubte Dateitypen f\xFCr den Upload. Format: \".xxx,.yyy,.zzz\"\r\n */\r\n @Input()\r\n public set allowedtypes(types: string) {\r\n this._allowedtypes = types;\r\n this.setAllowedTypes(types);\r\n }\r\n\r\n /**\r\n * Files nach der Auswahl automatisch hochladen\r\n */\r\n @Input()\r\n public set autoupload(v: boolean) {\r\n this._autoupload = v;\r\n this.options.autoUpload = v;\r\n this.uploadService.connect(this.options);\r\n }\r\n\r\n /**\r\n * Uploads k\xF6nnen unterbrochen werden\r\n */\r\n @Input()\r\n public set enablepause(v: boolean) {\r\n this._enablepause = v;\r\n }\r\n\r\n /**\r\n * Definiert den Registration Endpoint f\xFCr Uploads.\r\n */\r\n @Input()\r\n public set endpoint(v: string) {\r\n this._endpoint = v;\r\n this.setEndpoint(v);\r\n }\r\n\r\n /**\r\n * Icon for browse button\r\n */\r\n public get IconBrowse(): string {\r\n return this.iconService.UploadComponentBrowseIcon;\r\n }\r\n\r\n /**\r\n * icon for continous buttons\r\n */\r\n public get IconContinue(): string {\r\n return this.iconService.UploadComponentContinueIcon;\r\n }\r\n\r\n /**\r\n * icon for delete buttons\r\n */\r\n public get IconDelete(): string {\r\n return this.iconService.UploadComponentDeleteIcon;\r\n }\r\n\r\n /**\r\n * icon for pause buttons\r\n */\r\n public get IconPause(): string {\r\n return this.iconService.UploadComponentPauseIcon;\r\n }\r\n\r\n /**\r\n * icon for upload button\r\n */\r\n public get IconUpload(): string {\r\n return this.iconService.UploadComponentUploadIcon;\r\n }\r\n\r\n public get allowedtypes(): string {\r\n return this._allowedtypes;\r\n }\r\n\r\n public get autoupload(): boolean {\r\n return this._autoupload;\r\n }\r\n\r\n public get enablepause(): boolean {\r\n return this._enablepause;\r\n }\r\n\r\n public get endpoint(): string {\r\n return this._endpoint;\r\n }\r\n\r\n // #endregion Public Getters And Setters\r\n\r\n // #region Public Methods\r\n\r\n /**\r\n * Name der Datei die Hochgeladen wird\r\n * @returns Observable des Dateinamens.\r\n */\r\n public Filename(): Observable<string> {\r\n if (this.uploads.length > 0) {\r\n return of(this.uploads[0].name);\r\n } else {\r\n return this.lngResourceService.GetString(\r\n this.validationKeyService.UploadNoFilesSelected\r\n );\r\n }\r\n }\r\n\r\n /**\r\n * Gibt an ob Queue Elemente beinhaltet\r\n * @returns Elemente in der Queue\r\n */\r\n public HasQueueItem(): boolean {\r\n return this.uploads.length > 0;\r\n }\r\n\r\n /**\r\n * Gibt an ob ein Upload abgeschlossen ist\r\n * @returns Upload erfolgreich\r\n */\r\n public HasSuccessUpload(): boolean {\r\n if (this.uploads.length > 0) {\r\n return (\r\n this.uploads.filter((itm) => itm.status !== 'complete').length === 0\r\n );\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n /**\r\n * Pr\xFCft ob ein Upload pausiert\r\n * @returns Pausierter Upload ist vorhanden\r\n */\r\n public IsPaused(): boolean {\r\n return this.uploads.filter((itm) => itm.status === 'paused').length > 0;\r\n }\r\n\r\n /**\r\n * Pr\xFCft ob in der Queue Elemente die zum Upload bereit sind vorhanden sind.\r\n * @returns Elemente f\xFCr Upload vorhanden\r\n */\r\n public IsStateToUpload(): boolean {\r\n return (\r\n this.uploads.filter(\r\n (itm) => itm.status === 'added' || itm.status === 'paused'\r\n ).length > 0\r\n );\r\n }\r\n\r\n /**\r\n * Pr\xFCft ob ein Upload eines Files am laufen ist\r\n * @returns Upload ist am laufen\r\n */\r\n public IsUploading(): boolean {\r\n return this.uploads.filter((itm) => itm.status === 'uploading').length > 0;\r\n }\r\n\r\n /**\r\n * Gibt den Uploadfortschritt zur\xFCck\r\n * @returns Upload Fortschritt. Wert von 0-100\r\n */\r\n public Progress(): number {\r\n if (this.uploads.length > 0) {\r\n return this.uploads[0].progress;\r\n } else {\r\n return 0;\r\n }\r\n }\r\n\r\n /**\r\n * Cancel single upload\r\n * @param uploadId ID of File to cancel\r\n */\r\n public cancel(uploadId) {\r\n this.uploadService.control({ action: 'cancel', uploadId: uploadId });\r\n }\r\n\r\n /**\r\n * Cancel all Uploaded files\r\n */\r\n public cancelAll() {\r\n if (this.HasQueueItem() === true) {\r\n this.uploadService.control({ action: 'cancel' });\r\n }\r\n }\r\n\r\n /**\r\n * Destroy des Controls\r\n */\r\n public ngOnDestroy() {\r\n if (this.listenerFn) {\r\n this.listenerFn();\r\n }\r\n }\r\n\r\n /**\r\n * Initialisiert das Control\r\n */\r\n public ngOnInit() {\r\n super.ngOnInit();\r\n // Init Event Listener for Input File Control and Handling Files\r\n this.listenerFn = this.renderer.listen(\r\n this.uploadInput.nativeElement,\r\n 'change',\r\n this.fileListener\r\n );\r\n\r\n this.setAllowedTypes(this._allowedtypes);\r\n this.setEndpoint(this._endpoint);\r\n\r\n if (this._endpoint === null) {\r\n throw new Error('endpoint is not defined!');\r\n }\r\n\r\n this.uploadService.connect(this.options);\r\n }\r\n\r\n /**\r\n * Upload Event\r\n *\r\n * @param uploadsOutStream Upload Item\r\n */\r\n public onUpload(ufile: UploadState) {\r\n const index = this.uploads.findIndex((f) => f.uploadId === ufile.uploadId);\r\n\r\n if (ufile.status === 'added' || (ufile.status === 'queue' && index < 0)) {\r\n if (\r\n this.isExtensionValid(ufile.name) &&\r\n this.isFileSizeValid(ufile.size) &&\r\n this.CustomAddValidation(ufile)\r\n ) {\r\n this.uploads.push(new SacUploadFile(ufile));\r\n } else {\r\n this.cancel(ufile.uploadId);\r\n\r\n if (!this.isExtensionValid(ufile.name)) {\r\n this.onfileerror.emit('INVALID_EXTENSION');\r\n } else if (!this.isFileSizeValid(ufile.size)) {\r\n this.onfileerror.emit('INVALID_FILESIZE');\r\n }\r\n }\r\n } else if (ufile.status === 'cancelled') {\r\n if (index >= 0) {\r\n this.uploads.splice(index, 1);\r\n }\r\n\r\n this.SetUploadValue(null);\r\n } else if (ufile.status === 'complete') {\r\n this.uploads[index].progress = ufile.progress;\r\n this.uploads[index].status = ufile.status;\r\n this.SetUploadValue(ufile);\r\n } else {\r\n if (index >= 0) {\r\n this.uploads[index].progress = ufile.progress;\r\n this.uploads[index].status = ufile.status;\r\n }\r\n }\r\n\r\n this.UpdateFileCount();\r\n }\r\n\r\n /**\r\n * Cancel Single File\r\n * @param uploadId ID of File to Cancel\r\n */\r\n public pause(uploadId) {\r\n this.uploadService.control({ action: 'pause', uploadId });\r\n }\r\n\r\n /**\r\n * Pause all Uploads\r\n */\r\n public pauseAll() {\r\n if (this.IsUploading() === true) {\r\n this.uploadService.control({ action: 'pause' });\r\n }\r\n }\r\n\r\n /**\r\n * Upload Single File\r\n *\r\n * @param uploadId ID of File to Upload\r\n */\r\n public upload(uploadId) {\r\n this.uploadService.control({ action: 'upload', uploadId });\r\n }\r\n\r\n /**\r\n * Upload all queued Files\r\n */\r\n public uploadAll() {\r\n if (this.IsStateToUpload() === true) {\r\n this.uploadService.control({ action: 'upload' });\r\n }\r\n }\r\n\r\n /**\r\n * Validiert das Upload Control\r\n * @param c Control das validiert werden soll\r\n */\r\n public validateData(c: AbstractControl): ValidationErrors | null {\r\n let error: ValidationErrors | null = null;\r\n\r\n if (this.isrequired) {\r\n error = Validation.required(\r\n this.validationmessagerequired,\r\n this.validationmessagesummaryrequired\r\n )(c);\r\n }\r\n\r\n return error;\r\n }\r\n\r\n // #endregion Public Methods\r\n\r\n // #region Public Abstract Methods\r\n\r\n /**\r\n * Methode kann f\xFCr Controls verwendet werden, zus\xE4tzliche Validierungen bei hinzuf\xFCgen der Files zu machen\r\n *\r\n * @param file File das hinzugef\xFCgt wurde.\r\n * @returns Valdierung ist erfolgreich\r\n */\r\n public abstract CustomAddValidation(file: UploadState): boolean;\r\n /**\r\n * Methode welche die Upload ID's in das Model setzt oder l\xF6scht\r\n *\r\n * @param file Type von File ID's\r\n */\r\n public abstract SetUploadValue(file: UploadState): void;\r\n\r\n // #endregion Public Abstract Methods\r\n\r\n // #region Private Methods\r\n\r\n private UpdateFileCount(): void {\r\n // HACK: Add addition property to FormControl. Can be fixed if solution for ticket: https://github.com/angular/angular/issues/19686\r\n if (this.ngControl) {\r\n (this.ngControl as unknown as IUploadControl).uploadedfilecount =\r\n this.UploadedFileCount();\r\n }\r\n }\r\n\r\n /**\r\n * Returns the number of uploaded files\r\n */\r\n private UploadedFileCount(): number {\r\n return this.uploads.filter((itm) => itm.status === 'complete').length;\r\n }\r\n\r\n /**\r\n * Pr\xFCft ob die Dateierweiterung g\xFCltig ist\r\n *\r\n * @param filename Dateiname\r\n */\r\n private isExtensionValid(filename: string): boolean {\r\n if (this._allowedtypes === '*') {\r\n return true;\r\n }\r\n\r\n let isValid: boolean = false;\r\n const extensions: string[] = this._allowedtypes.split(',');\r\n\r\n extensions.forEach((itm) => {\r\n if (filename.toLowerCase().endsWith(itm.toLowerCase())) {\r\n isValid = true;\r\n }\r\n });\r\n\r\n return isValid;\r\n }\r\n\r\n /**\r\n * Pr\xFCft ob das File nicht zu gross ist.\r\n *\r\n * @param filesize Max File Size in Bytes\r\n */\r\n private isFileSizeValid(filesize: number): boolean {\r\n if (this.maxfilesize === 0) {\r\n return true;\r\n }\r\n\r\n return this.maxfilesize >= filesize;\r\n }\r\n\r\n /**\r\n * Setzt die erlaubten Datentypen f\xFCr den Upload\r\n *\r\n * @param types Erlaubte File Extensions\r\n */\r\n private setAllowedTypes(types: string) {\r\n // Pr\xFCfen UploadInput bereits geladen, ist NULL wenn Extension im Markup nach NgModel gesetzt wird.\r\n if (this.uploadInput && this.uploadInput.nativeElement) {\r\n this.renderer.setAttribute(\r\n this.uploadInput.nativeElement,\r\n 'accept',\r\n types\r\n );\r\n }\r\n\r\n this.options.allowedTypes = types;\r\n }\r\n\r\n /**\r\n * Setzt den Upload Endpoit\r\n * @param url Register URI\r\n */\r\n private setEndpoint(url: string) {\r\n this.options.endpoint = url;\r\n }\r\n\r\n // #endregion Private Methods\r\n}\r\n\r\n/**\r\n * Klasse f\xFCr den Upload einer Datei in der Upload Component\r\n */\r\nexport class SacUploadFile {\r\n // #region Properties\r\n\r\n /**\r\n * Document ID\r\n */\r\n public documentid: string;\r\n /**\r\n * Dateiname\r\n */\r\n public name: string;\r\n /**\r\n * Upload Fortschritt\r\n */\r\n public progress: number;\r\n /**\r\n * Upload Status\r\n */\r\n public status: string;\r\n /**\r\n * Upload ID\r\n */\r\n public uploadId: string;\r\n\r\n // #endregion Properties\r\n\r\n // #region Constructors\r\n\r\n /**\r\n * Konstruktor\r\n * @param ufile Upload Status\r\n */\r\n constructor(ufile: UploadState) {\r\n this.uploadId = ufile.uploadId;\r\n this.name = ufile.name;\r\n this.progress = ufile.progress;\r\n this.status = ufile.status;\r\n this.documentid = null;\r\n }\r\n\r\n // #endregion Constructors\r\n}\r\n\r\n// #endregion Classes\r\n"]},_coverageSchema:"1a1c01bbd47fc00a2c39e90264f33305004495a9",hash:"e215c04763e9cb20c3d149e46300d36d055dd3f8"};var coverage=global[gcv]||(global[gcv]={});if(!coverage[path]||coverage[path].hash!==hash){coverage[path]=coverageData;}var actualCoverage=coverage[path];{// @ts-ignore
2
- cov_hm7codict=function(){return actualCoverage;};}return actualCoverage;}cov_hm7codict();import{Directive,EventEmitter,Input,Output,ViewChild}from'@angular/core';import{IdService,UPLOADX_AJAX,UPLOADX_FACTORY_OPTIONS,UPLOADX_OPTIONS,UploadxService}from'ngx-uploadx';import{of}from'rxjs';import{SACVALIDATIONKEY_SERVICE,SacDefaultValidationKeyService}from'../services';import{SACLOCALISATION_SERVICE,SacDefaultLocalisationService}from'../services/sac-localisation.service';import{Validation}from'../validation';import{SacBaseModelControl}from'./basemodelcontrol';import*as i0 from"@angular/core";import*as i1 from"../controls/layout/formlayout";// #region Classes
1
+ function cov_hm7codict(){var path="C:\\Projekte\\simpleangularcontrols-ng13\\ch.jnetwork.sac-controls\\dist\\sac-common\\esm2020\\common\\baseuploadcontrol.mjs";var hash="bda5437f2666bbd6c4135d4fffeabc05b44f41aa";var global=new Function("return this")();var gcv="__coverage__";var coverageData={path:"C:\\Projekte\\simpleangularcontrols-ng13\\ch.jnetwork.sac-controls\\dist\\sac-common\\esm2020\\common\\baseuploadcontrol.mjs",statementMap:{"0":{start:{line:25,column:8},end:{line:25,column:36}},"1":{start:{line:26,column:8},end:{line:26,column:33}},"2":{start:{line:27,column:8},end:{line:27,column:29}},"3":{start:{line:32,column:8},end:{line:32,column:33}},"4":{start:{line:36,column:8},end:{line:36,column:33}},"5":{start:{line:40,column:8},end:{line:40,column:33}},"6":{start:{line:44,column:8},end:{line:44,column:30}},"7":{start:{line:48,column:8},end:{line:48,column:27}},"8":{start:{line:52,column:8},end:{line:52,column:26}},"9":{start:{line:56,column:8},end:{line:60,column:10}},"10":{start:{line:57,column:12},end:{line:59,column:13}},"11":{start:{line:58,column:16},end:{line:58,column:85}},"12":{start:{line:64,column:8},end:{line:64,column:32}},"13":{start:{line:68,column:8},end:{line:68,column:29}},"14":{start:{line:72,column:8},end:{line:72,column:46}},"15":{start:{line:76,column:8},end:{line:76,column:51}},"16":{start:{line:80,column:8},end:{line:80,column:91}},"17":{start:{line:84,column:8},end:{line:84,column:105}},"18":{start:{line:85,column:8},end:{line:85,column:113}},"19":{start:{line:86,column:8},end:{line:86,column:134}},"20":{start:{line:87,column:8},end:{line:87,column:26}},"21":{start:{line:88,column:8},end:{line:88,column:40}},"22":{start:{line:89,column:8},end:{line:89,column:37}},"23":{start:{line:90,column:8},end:{line:90,column:41}},"24":{start:{line:91,column:8},end:{line:91,column:51}},"25":{start:{line:92,column:8},end:{line:92,column:44}},"26":{start:{line:93,column:8},end:{line:93,column:47}},"27":{start:{line:94,column:8},end:{line:96,column:11}},"28":{start:{line:94,column:39},end:{line:96,column:9}},"29":{start:{line:98,column:8},end:{line:98,column:190}},"30":{start:{line:99,column:8},end:{line:99,column:46}},"31":{start:{line:101,column:8},end:{line:101,column:77}},"32":{start:{line:101,column:55},end:{line:101,column:75}},"33":{start:{line:109,column:8},end:{line:109,column:58}},"34":{start:{line:115,column:8},end:{line:115,column:60}},"35":{start:{line:121,column:8},end:{line:121,column:58}},"36":{start:{line:127,column:8},end:{line:127,column:57}},"37":{start:{line:133,column:8},end:{line:133,column:58}},"38":{start:{line:136,column:8},end:{line:136,column:34}},"39":{start:{line:142,column:8},end:{line:142,column:35}},"40":{start:{line:143,column:8},end:{line:143,column:36}},"41":{start:{line:146,column:8},end:{line:146,column:32}},"42":{start:{line:152,column:8},end:{line:152,column:29}},"43":{start:{line:153,column:8},end:{line:153,column:36}},"44":{start:{line:154,column:8},end:{line:154,column:49}},"45":{start:{line:157,column:8},end:{line:157,column:33}},"46":{start:{line:163,column:8},end:{line:163,column:30}},"47":{start:{line:166,column:8},end:{line:166,column:30}},"48":{start:{line:172,column:8},end:{line:172,column:27}},"49":{start:{line:173,column:8},end:{line:173,column:28}},"50":{start:{line:179,column:8},end:{line:179,column:27}},"51":{start:{line:185,column:8},end:{line:185,column:24}},"52":{start:{line:186,column:8},end:{line:186,column:25}},"53":{start:{line:193,column:8},end:{line:198,column:9}},"54":{start:{line:194,column:12},end:{line:194,column:44}},"55":{start:{line:197,column:12},end:{line:197,column:102}},"56":{start:{line:205,column:8},end:{line:205,column:39}},"57":{start:{line:212,column:8},end:{line:217,column:9}},"58":{start:{line:213,column:12},end:{line:213,column:88}},"59":{start:{line:213,column:48},end:{line:213,column:73}},"60":{start:{line:216,column:12},end:{line:216,column:25}},"61":{start:{line:224,column:8},end:{line:224,column:80}},"62":{start:{line:224,column:44},end:{line:224,column:67}},"63":{start:{line:231,column:8},end:{line:231,column:106}},"64":{start:{line:231,column:44},end:{line:231,column:93}},"65":{start:{line:238,column:8},end:{line:238,column:83}},"66":{start:{line:238,column:44},end:{line:238,column:70}},"67":{start:{line:245,column:8},end:{line:250,column:9}},"68":{start:{line:246,column:12},end:{line:246,column:44}},"69":{start:{line:249,column:12},end:{line:249,column:21}},"70":{start:{line:257,column:8},end:{line:257,column:77}},"71":{start:{line:263,column:8},end:{line:265,column:9}},"72":{start:{line:264,column:12},end:{line:264,column:61}},"73":{start:{line:271,column:8},end:{line:273,column:9}},"74":{start:{line:272,column:12},end:{line:272,column:30}},"75":{start:{line:279,column:8},end:{line:279,column:25}},"76":{start:{line:281,column:8},end:{line:281,column:108}},"77":{start:{line:282,column:8},end:{line:282,column:49}},"78":{start:{line:283,column:8},end:{line:283,column:41}},"79":{start:{line:284,column:8},end:{line:284,column:35}},"80":{start:{line:285,column:8},end:{line:287,column:9}},"81":{start:{line:286,column:12},end:{line:286,column:56}},"82":{start:{line:288,column:8},end:{line:288,column:49}},"83":{start:{line:296,column:22},end:{line:296,column:82}},"84":{start:{line:296,column:52},end:{line:296,column:81}},"85":{start:{line:297,column:8},end:{line:335,column:9}},"86":{start:{line:298,column:12},end:{line:311,column:13}},"87":{start:{line:301,column:16},end:{line:301,column:60}},"88":{start:{line:304,column:16},end:{line:304,column:44}},"89":{start:{line:305,column:16},end:{line:310,column:17}},"90":{start:{line:306,column:20},end:{line:306,column:63}},"91":{start:{line:308,column:21},end:{line:310,column:17}},"92":{start:{line:309,column:20},end:{line:309,column:62}},"93":{start:{line:313,column:13},end:{line:335,column:9}},"94":{start:{line:314,column:12},end:{line:316,column:13}},"95":{start:{line:315,column:16},end:{line:315,column:46}},"96":{start:{line:317,column:12},end:{line:317,column:38}},"97":{start:{line:319,column:13},end:{line:335,column:9}},"98":{start:{line:320,column:12},end:{line:320,column:58}},"99":{start:{line:321,column:12},end:{line:321,column:54}},"100":{start:{line:322,column:12},end:{line:322,column:39}},"101":{start:{line:323,column:32},end:{line:327,column:13}},"102":{start:{line:328,column:12},end:{line:328,column:52}},"103":{start:{line:331,column:12},end:{line:334,column:13}},"104":{start:{line:332,column:16},end:{line:332,column:62}},"105":{start:{line:333,column:16},end:{line:333,column:58}},"106":{start:{line:336,column:8},end:{line:336,column:31}},"107":{start:{line:343,column:8},end:{line:343,column:66}},"108":{start:{line:349,column:8},end:{line:351,column:9}},"109":{start:{line:350,column:12},end:{line:350,column:60}},"110":{start:{line:357,column:8},end:{line:357,column:35}},"111":{start:{line:365,column:8},end:{line:365,column:67}},"112":{start:{line:371,column:8},end:{line:373,column:9}},"113":{start:{line:372,column:12},end:{line:372,column:61}},"114":{start:{line:380,column:20},end:{line:380,column:24}},"115":{start:{line:381,column:8},end:{line:383,column:9}},"116":{start:{line:382,column:12},end:{line:382,column:114}},"117":{start:{line:384,column:8},end:{line:384,column:21}},"118":{start:{line:390,column:8},end:{line:392,column:9}},"119":{start:{line:391,column:12},end:{line:391,column:72}},"120":{start:{line:398,column:8},end:{line:398,column:78}},"121":{start:{line:398,column:44},end:{line:398,column:69}},"122":{start:{line:406,column:8},end:{line:408,column:9}},"123":{start:{line:407,column:12},end:{line:407,column:24}},"124":{start:{line:409,column:22},end:{line:409,column:27}},"125":{start:{line:410,column:27},end:{line:410,column:56}},"126":{start:{line:411,column:8},end:{line:415,column:11}},"127":{start:{line:412,column:12},end:{line:414,column:13}},"128":{start:{line:413,column:16},end:{line:413,column:31}},"129":{start:{line:416,column:8},end:{line:416,column:23}},"130":{start:{line:424,column:8},end:{line:426,column:9}},"131":{start:{line:425,column:12},end:{line:425,column:24}},"132":{start:{line:427,column:8},end:{line:427,column:44}},"133":{start:{line:436,column:8},end:{line:438,column:9}},"134":{start:{line:437,column:12},end:{line:437,column:88}},"135":{start:{line:439,column:8},end:{line:439,column:42}},"136":{start:{line:446,column:8},end:{line:446,column:36}},"137":{start:{line:449,column:0},end:{line:449,column:275}},"138":{start:{line:450,column:0},end:{line:450,column:657}},"139":{start:{line:451,column:0},end:{line:478,column:20}},"140":{start:{line:453,column:42},end:{line:453,column:152}},"141":{start:{line:490,column:8},end:{line:490,column:39}},"142":{start:{line:491,column:8},end:{line:491,column:31}},"143":{start:{line:492,column:8},end:{line:492,column:39}},"144":{start:{line:493,column:8},end:{line:493,column:35}},"145":{start:{line:494,column:8},end:{line:494,column:31}}},fnMap:{"0":{name:"(anonymous_0)",decl:{start:{line:24,column:4},end:{line:24,column:5}},loc:{start:{line:24,column:56},end:{line:102,column:5}},line:24},"1":{name:"(anonymous_1)",decl:{start:{line:56,column:28},end:{line:56,column:29}},loc:{start:{line:56,column:34},end:{line:60,column:9}},line:56},"2":{name:"(anonymous_2)",decl:{start:{line:94,column:31},end:{line:94,column:32}},loc:{start:{line:94,column:39},end:{line:96,column:9}},line:94},"3":{name:"(anonymous_3)",decl:{start:{line:101,column:44},end:{line:101,column:45}},loc:{start:{line:101,column:55},end:{line:101,column:75}},line:101},"4":{name:"(anonymous_4)",decl:{start:{line:108,column:4},end:{line:108,column:5}},loc:{start:{line:108,column:21},end:{line:110,column:5}},line:108},"5":{name:"(anonymous_5)",decl:{start:{line:114,column:4},end:{line:114,column:5}},loc:{start:{line:114,column:23},end:{line:116,column:5}},line:114},"6":{name:"(anonymous_6)",decl:{start:{line:120,column:4},end:{line:120,column:5}},loc:{start:{line:120,column:21},end:{line:122,column:5}},line:120},"7":{name:"(anonymous_7)",decl:{start:{line:126,column:4},end:{line:126,column:5}},loc:{start:{line:126,column:20},end:{line:128,column:5}},line:126},"8":{name:"(anonymous_8)",decl:{start:{line:132,column:4},end:{line:132,column:5}},loc:{start:{line:132,column:21},end:{line:134,column:5}},line:132},"9":{name:"(anonymous_9)",decl:{start:{line:135,column:4},end:{line:135,column:5}},loc:{start:{line:135,column:23},end:{line:137,column:5}},line:135},"10":{name:"(anonymous_10)",decl:{start:{line:141,column:4},end:{line:141,column:5}},loc:{start:{line:141,column:28},end:{line:144,column:5}},line:141},"11":{name:"(anonymous_11)",decl:{start:{line:145,column:4},end:{line:145,column:5}},loc:{start:{line:145,column:21},end:{line:147,column:5}},line:145},"12":{name:"(anonymous_12)",decl:{start:{line:151,column:4},end:{line:151,column:5}},loc:{start:{line:151,column:22},end:{line:155,column:5}},line:151},"13":{name:"(anonymous_13)",decl:{start:{line:156,column:4},end:{line:156,column:5}},loc:{start:{line:156,column:22},end:{line:158,column:5}},line:156},"14":{name:"(anonymous_14)",decl:{start:{line:162,column:4},end:{line:162,column:5}},loc:{start:{line:162,column:23},end:{line:164,column:5}},line:162},"15":{name:"(anonymous_15)",decl:{start:{line:165,column:4},end:{line:165,column:5}},loc:{start:{line:165,column:19},end:{line:167,column:5}},line:165},"16":{name:"(anonymous_16)",decl:{start:{line:171,column:4},end:{line:171,column:5}},loc:{start:{line:171,column:20},end:{line:174,column:5}},line:171},"17":{name:"(anonymous_17)",decl:{start:{line:178,column:4},end:{line:178,column:5}},loc:{start:{line:178,column:16},end:{line:180,column:5}},line:178},"18":{name:"(anonymous_18)",decl:{start:{line:184,column:4},end:{line:184,column:5}},loc:{start:{line:184,column:17},end:{line:187,column:5}},line:184},"19":{name:"(anonymous_19)",decl:{start:{line:192,column:4},end:{line:192,column:5}},loc:{start:{line:192,column:15},end:{line:199,column:5}},line:192},"20":{name:"(anonymous_20)",decl:{start:{line:204,column:4},end:{line:204,column:5}},loc:{start:{line:204,column:19},end:{line:206,column:5}},line:204},"21":{name:"(anonymous_21)",decl:{start:{line:211,column:4},end:{line:211,column:5}},loc:{start:{line:211,column:23},end:{line:218,column:5}},line:211},"22":{name:"(anonymous_22)",decl:{start:{line:213,column:39},end:{line:213,column:40}},loc:{start:{line:213,column:48},end:{line:213,column:73}},line:213},"23":{name:"(anonymous_23)",decl:{start:{line:223,column:4},end:{line:223,column:5}},loc:{start:{line:223,column:15},end:{line:225,column:5}},line:223},"24":{name:"(anonymous_24)",decl:{start:{line:224,column:35},end:{line:224,column:36}},loc:{start:{line:224,column:44},end:{line:224,column:67}},line:224},"25":{name:"(anonymous_25)",decl:{start:{line:230,column:4},end:{line:230,column:5}},loc:{start:{line:230,column:22},end:{line:232,column:5}},line:230},"26":{name:"(anonymous_26)",decl:{start:{line:231,column:35},end:{line:231,column:36}},loc:{start:{line:231,column:44},end:{line:231,column:93}},line:231},"27":{name:"(anonymous_27)",decl:{start:{line:237,column:4},end:{line:237,column:5}},loc:{start:{line:237,column:18},end:{line:239,column:5}},line:237},"28":{name:"(anonymous_28)",decl:{start:{line:238,column:35},end:{line:238,column:36}},loc:{start:{line:238,column:44},end:{line:238,column:70}},line:238},"29":{name:"(anonymous_29)",decl:{start:{line:244,column:4},end:{line:244,column:5}},loc:{start:{line:244,column:15},end:{line:251,column:5}},line:244},"30":{name:"(anonymous_30)",decl:{start:{line:256,column:4},end:{line:256,column:5}},loc:{start:{line:256,column:21},end:{line:258,column:5}},line:256},"31":{name:"(anonymous_31)",decl:{start:{line:262,column:4},end:{line:262,column:5}},loc:{start:{line:262,column:16},end:{line:266,column:5}},line:262},"32":{name:"(anonymous_32)",decl:{start:{line:270,column:4},end:{line:270,column:5}},loc:{start:{line:270,column:18},end:{line:274,column:5}},line:270},"33":{name:"(anonymous_33)",decl:{start:{line:278,column:4},end:{line:278,column:5}},loc:{start:{line:278,column:15},end:{line:289,column:5}},line:278},"34":{name:"(anonymous_34)",decl:{start:{line:295,column:4},end:{line:295,column:5}},loc:{start:{line:295,column:20},end:{line:337,column:5}},line:295},"35":{name:"(anonymous_35)",decl:{start:{line:296,column:45},end:{line:296,column:46}},loc:{start:{line:296,column:52},end:{line:296,column:81}},line:296},"36":{name:"(anonymous_36)",decl:{start:{line:342,column:4},end:{line:342,column:5}},loc:{start:{line:342,column:20},end:{line:344,column:5}},line:342},"37":{name:"(anonymous_37)",decl:{start:{line:348,column:4},end:{line:348,column:5}},loc:{start:{line:348,column:15},end:{line:352,column:5}},line:348},"38":{name:"(anonymous_38)",decl:{start:{line:356,column:4},end:{line:356,column:5}},loc:{start:{line:356,column:20},end:{line:358,column:5}},line:356},"39":{name:"(anonymous_39)",decl:{start:{line:364,column:4},end:{line:364,column:5}},loc:{start:{line:364,column:21},end:{line:366,column:5}},line:364},"40":{name:"(anonymous_40)",decl:{start:{line:370,column:4},end:{line:370,column:5}},loc:{start:{line:370,column:16},end:{line:374,column:5}},line:370},"41":{name:"(anonymous_41)",decl:{start:{line:379,column:4},end:{line:379,column:5}},loc:{start:{line:379,column:20},end:{line:385,column:5}},line:379},"42":{name:"(anonymous_42)",decl:{start:{line:388,column:4},end:{line:388,column:5}},loc:{start:{line:388,column:22},end:{line:393,column:5}},line:388},"43":{name:"(anonymous_43)",decl:{start:{line:397,column:4},end:{line:397,column:5}},loc:{start:{line:397,column:24},end:{line:399,column:5}},line:397},"44":{name:"(anonymous_44)",decl:{start:{line:398,column:35},end:{line:398,column:36}},loc:{start:{line:398,column:44},end:{line:398,column:69}},line:398},"45":{name:"(anonymous_45)",decl:{start:{line:405,column:4},end:{line:405,column:5}},loc:{start:{line:405,column:31},end:{line:417,column:5}},line:405},"46":{name:"(anonymous_46)",decl:{start:{line:411,column:27},end:{line:411,column:28}},loc:{start:{line:411,column:36},end:{line:415,column:9}},line:411},"47":{name:"(anonymous_47)",decl:{start:{line:423,column:4},end:{line:423,column:5}},loc:{start:{line:423,column:30},end:{line:428,column:5}},line:423},"48":{name:"(anonymous_48)",decl:{start:{line:434,column:4},end:{line:434,column:5}},loc:{start:{line:434,column:27},end:{line:440,column:5}},line:434},"49":{name:"(anonymous_49)",decl:{start:{line:445,column:4},end:{line:445,column:5}},loc:{start:{line:445,column:21},end:{line:447,column:5}},line:445},"50":{name:"(anonymous_50)",decl:{start:{line:453,column:28},end:{line:453,column:29}},loc:{start:{line:453,column:40},end:{line:453,column:154}},line:453},"51":{name:"(anonymous_51)",decl:{start:{line:489,column:4},end:{line:489,column:5}},loc:{start:{line:489,column:23},end:{line:495,column:5}},line:489}},branchMap:{"0":{loc:{start:{line:57,column:12},end:{line:59,column:13}},type:"if",locations:[{start:{line:57,column:12},end:{line:59,column:13}},{start:{line:57,column:12},end:{line:59,column:13}}],line:57},"1":{loc:{start:{line:193,column:8},end:{line:198,column:9}},type:"if",locations:[{start:{line:193,column:8},end:{line:198,column:9}},{start:{line:193,column:8},end:{line:198,column:9}}],line:193},"2":{loc:{start:{line:212,column:8},end:{line:217,column:9}},type:"if",locations:[{start:{line:212,column:8},end:{line:217,column:9}},{start:{line:212,column:8},end:{line:217,column:9}}],line:212},"3":{loc:{start:{line:231,column:44},end:{line:231,column:93}},type:"binary-expr",locations:[{start:{line:231,column:44},end:{line:231,column:66}},{start:{line:231,column:70},end:{line:231,column:93}}],line:231},"4":{loc:{start:{line:245,column:8},end:{line:250,column:9}},type:"if",locations:[{start:{line:245,column:8},end:{line:250,column:9}},{start:{line:245,column:8},end:{line:250,column:9}}],line:245},"5":{loc:{start:{line:263,column:8},end:{line:265,column:9}},type:"if",locations:[{start:{line:263,column:8},end:{line:265,column:9}},{start:{line:263,column:8},end:{line:265,column:9}}],line:263},"6":{loc:{start:{line:271,column:8},end:{line:273,column:9}},type:"if",locations:[{start:{line:271,column:8},end:{line:273,column:9}},{start:{line:271,column:8},end:{line:273,column:9}}],line:271},"7":{loc:{start:{line:285,column:8},end:{line:287,column:9}},type:"if",locations:[{start:{line:285,column:8},end:{line:287,column:9}},{start:{line:285,column:8},end:{line:287,column:9}}],line:285},"8":{loc:{start:{line:297,column:8},end:{line:335,column:9}},type:"if",locations:[{start:{line:297,column:8},end:{line:335,column:9}},{start:{line:297,column:8},end:{line:335,column:9}}],line:297},"9":{loc:{start:{line:297,column:12},end:{line:297,column:79}},type:"binary-expr",locations:[{start:{line:297,column:12},end:{line:297,column:36}},{start:{line:297,column:41},end:{line:297,column:65}},{start:{line:297,column:69},end:{line:297,column:78}}],line:297},"10":{loc:{start:{line:298,column:12},end:{line:311,column:13}},type:"if",locations:[{start:{line:298,column:12},end:{line:311,column:13}},{start:{line:298,column:12},end:{line:311,column:13}}],line:298},"11":{loc:{start:{line:298,column:16},end:{line:300,column:47}},type:"binary-expr",locations:[{start:{line:298,column:16},end:{line:298,column:49}},{start:{line:299,column:16},end:{line:299,column:48}},{start:{line:300,column:16},end:{line:300,column:47}}],line:298},"12":{loc:{start:{line:305,column:16},end:{line:310,column:17}},type:"if",locations:[{start:{line:305,column:16},end:{line:310,column:17}},{start:{line:305,column:16},end:{line:310,column:17}}],line:305},"13":{loc:{start:{line:308,column:21},end:{line:310,column:17}},type:"if",locations:[{start:{line:308,column:21},end:{line:310,column:17}},{start:{line:308,column:21},end:{line:310,column:17}}],line:308},"14":{loc:{start:{line:313,column:13},end:{line:335,column:9}},type:"if",locations:[{start:{line:313,column:13},end:{line:335,column:9}},{start:{line:313,column:13},end:{line:335,column:9}}],line:313},"15":{loc:{start:{line:314,column:12},end:{line:316,column:13}},type:"if",locations:[{start:{line:314,column:12},end:{line:316,column:13}},{start:{line:314,column:12},end:{line:316,column:13}}],line:314},"16":{loc:{start:{line:319,column:13},end:{line:335,column:9}},type:"if",locations:[{start:{line:319,column:13},end:{line:335,column:9}},{start:{line:319,column:13},end:{line:335,column:9}}],line:319},"17":{loc:{start:{line:331,column:12},end:{line:334,column:13}},type:"if",locations:[{start:{line:331,column:12},end:{line:334,column:13}},{start:{line:331,column:12},end:{line:334,column:13}}],line:331},"18":{loc:{start:{line:349,column:8},end:{line:351,column:9}},type:"if",locations:[{start:{line:349,column:8},end:{line:351,column:9}},{start:{line:349,column:8},end:{line:351,column:9}}],line:349},"19":{loc:{start:{line:371,column:8},end:{line:373,column:9}},type:"if",locations:[{start:{line:371,column:8},end:{line:373,column:9}},{start:{line:371,column:8},end:{line:373,column:9}}],line:371},"20":{loc:{start:{line:381,column:8},end:{line:383,column:9}},type:"if",locations:[{start:{line:381,column:8},end:{line:383,column:9}},{start:{line:381,column:8},end:{line:383,column:9}}],line:381},"21":{loc:{start:{line:390,column:8},end:{line:392,column:9}},type:"if",locations:[{start:{line:390,column:8},end:{line:392,column:9}},{start:{line:390,column:8},end:{line:392,column:9}}],line:390},"22":{loc:{start:{line:406,column:8},end:{line:408,column:9}},type:"if",locations:[{start:{line:406,column:8},end:{line:408,column:9}},{start:{line:406,column:8},end:{line:408,column:9}}],line:406},"23":{loc:{start:{line:412,column:12},end:{line:414,column:13}},type:"if",locations:[{start:{line:412,column:12},end:{line:414,column:13}},{start:{line:412,column:12},end:{line:414,column:13}}],line:412},"24":{loc:{start:{line:424,column:8},end:{line:426,column:9}},type:"if",locations:[{start:{line:424,column:8},end:{line:426,column:9}},{start:{line:424,column:8},end:{line:426,column:9}}],line:424},"25":{loc:{start:{line:436,column:8},end:{line:438,column:9}},type:"if",locations:[{start:{line:436,column:8},end:{line:438,column:9}},{start:{line:436,column:8},end:{line:438,column:9}}],line:436},"26":{loc:{start:{line:436,column:12},end:{line:436,column:62}},type:"binary-expr",locations:[{start:{line:436,column:12},end:{line:436,column:28}},{start:{line:436,column:32},end:{line:436,column:62}}],line:436}},s:{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"75":0,"76":0,"77":0,"78":0,"79":0,"80":0,"81":0,"82":0,"83":0,"84":0,"85":0,"86":0,"87":0,"88":0,"89":0,"90":0,"91":0,"92":0,"93":0,"94":0,"95":0,"96":0,"97":0,"98":0,"99":0,"100":0,"101":0,"102":0,"103":0,"104":0,"105":0,"106":0,"107":0,"108":0,"109":0,"110":0,"111":0,"112":0,"113":0,"114":0,"115":0,"116":0,"117":0,"118":0,"119":0,"120":0,"121":0,"122":0,"123":0,"124":0,"125":0,"126":0,"127":0,"128":0,"129":0,"130":0,"131":0,"132":0,"133":0,"134":0,"135":0,"136":0,"137":0,"138":0,"139":0,"140":0,"141":0,"142":0,"143":0,"144":0,"145":0},f:{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0},b:{"0":[0,0],"1":[0,0],"2":[0,0],"3":[0,0],"4":[0,0],"5":[0,0],"6":[0,0],"7":[0,0],"8":[0,0],"9":[0,0,0],"10":[0,0],"11":[0,0,0],"12":[0,0],"13":[0,0],"14":[0,0],"15":[0,0],"16":[0,0],"17":[0,0],"18":[0,0],"19":[0,0],"20":[0,0],"21":[0,0],"22":[0,0],"23":[0,0],"24":[0,0],"25":[0,0],"26":[0,0]},inputSourceMap:{version:3,file:"baseuploadcontrol.js",sourceRoot:"",sources:["../../../../projects/sac-common/src/common/baseuploadcontrol.ts"],names:[],mappings:"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",sourcesContent:["import { SacFormLayoutCommon } from '../controls/layout/formlayout';\r\nimport { ISacLocalisationService } from '../interfaces/ISacLocalisationService';\r\nimport { ISacUploadEventCompleteState } from '../interfaces/ISacUploadEventCompleteState';\r\nimport { IUploadControl } from '../interfaces/iuploadcontrol';\r\nimport { SACVALIDATIONKEY_SERVICE, SacDefaultValidationKeyService } from '../services';\r\nimport { SACLOCALISATION_SERVICE, SacDefaultLocalisationService } from '../services/sac-localisation.service';\r\nimport { Validation } from '../validation';\r\nimport { SacBaseModelControl } from './basemodelcontrol';\r\nimport {\r\n Directive,\r\n ElementRef,\r\n EventEmitter,\r\n Injector,\r\n Input,\r\n NgZone,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n Renderer2,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport { AbstractControl, ValidationErrors } from '@angular/forms';\r\nimport {\r\n IdService,\r\n UPLOADX_AJAX,\r\n UPLOADX_FACTORY_OPTIONS,\r\n UPLOADX_OPTIONS,\r\n UploadState,\r\n UploadxOptions,\r\n UploadxService,\r\n} from 'ngx-uploadx';\r\nimport { Observable, of } from 'rxjs';\r\n\r\n// #region Exported Classes\r\n\r\n/**\r\n * Base Klasse f\xFCr Uploader Control\r\n */\r\n@Directive()\r\nexport abstract class SacUploadBase<VALUE> extends SacBaseModelControl<VALUE> implements OnInit, OnDestroy {\r\n // #region Properties\r\n\r\n /**\r\n * Erlaubte Dateitypen\r\n */\r\n private _allowedtypes: string = '*';\r\n\r\n /**\r\n * Files automatisch hochladen\r\n */\r\n private _autoupload: boolean = false;\r\n\r\n /**\r\n * Pausieren von Uploads erlauben\r\n */\r\n private _enablepause: boolean = true;\r\n\r\n /**\r\n * API Endpoint\r\n */\r\n private _endpoint: string = null;\r\n\r\n /**\r\n * Token for Bearer Authentication\r\n */\r\n private _token: string | null = null;\r\n\r\n /**\r\n * Upload Settings\r\n */\r\n private options: UploadxOptions = {};\r\n\r\n /**\r\n * File Input Control\r\n */\r\n @ViewChild('files', { static: true })\r\n private uploadInput: ElementRef;\r\n\r\n /**\r\n * Upload Service\r\n */\r\n protected uploadService: UploadxService;\r\n\r\n /**\r\n * Handling von neuen Files im Input Control\r\n */\r\n public fileListener = () => {\r\n if (this.uploadInput.nativeElement.files) {\r\n this.uploadService.handleFiles(this.uploadInput.nativeElement.files);\r\n }\r\n };\r\n\r\n /**\r\n * Definiert das Control als Required\r\n */\r\n @Input() public isrequired: boolean = false;\r\n\r\n /**\r\n * Listener f\xFCr Files\r\n */\r\n public listenerFn: () => void;\r\n\r\n /**\r\n * Service f\xFCr Error Localisation\r\n */\r\n public lngResourceService: ISacLocalisationService;\r\n\r\n /**\r\n * Max. Dateigr\xF6sse f\xFCr Files die hochgeladen werden k\xF6nnen. 0 deaktiviert den Filter\r\n */\r\n @Input() public maxfilesize: number = 0;\r\n\r\n /**\r\n * Event when an error is triggered in the component.\r\n */\r\n @Output() public onfileerror = new EventEmitter<string>();\r\n\r\n /**\r\n * Event when a file has been uploaded. The event is triggered for multiple uploads per file.\r\n */\r\n @Output()\r\n public onuploadcomplete = new EventEmitter<ISacUploadEventCompleteState>();\r\n\r\n /**\r\n * Array von Uploads\r\n */\r\n public uploads: SacUploadFile[];\r\n\r\n /**\r\n * Resource Key f\xFCr Validation Message Required bei Control\r\n */\r\n @Input() public validationmessagerequired: string = this.validationKeyService.ValidationErrorRequired;\r\n\r\n /**\r\n * Resource Key f\xFCr Validation Message Required in Validation Summary\r\n */\r\n @Input()\r\n public validationmessagesummaryrequired: string = this.validationKeyService.ValidationErrorSummaryRequired;\r\n\r\n // #endregion Properties\r\n\r\n // #region Constructors\r\n\r\n /**\r\n * Constructor\r\n * @param formlayout SacFormLayoutCommon to define scoped layout settings\r\n * @param injector Injector for injecting services\r\n * @param renderer angular rendering engine\r\n * @param ngZone ngzone for handling external scripts\r\n */\r\n constructor(\r\n formlayout: SacFormLayoutCommon,\r\n injector: Injector,\r\n private renderer: Renderer2,\r\n private ngZone: NgZone\r\n ) {\r\n super(formlayout, injector);\r\n\r\n this.validationKeyService = injector.get(SACVALIDATIONKEY_SERVICE, new SacDefaultValidationKeyService());\r\n\r\n this.lngResourceService = injector.get(\r\n SACLOCALISATION_SERVICE,\r\n new SacDefaultLocalisationService(this.validationKeyService)\r\n );\r\n\r\n this.uploads = [];\r\n\r\n this.options.allowedTypes = '*';\r\n this.options.concurrency = 1;\r\n this.options.token = 'sometoken';\r\n this.options.autoUpload = this._autoupload;\r\n this.options.withCredentials = true;\r\n this.options.chunkSize = 1024 * 16 * 8;\r\n this.options.headers = (f: File) => ({\r\n 'Content-Disposition': `filename=${encodeURI(f.name)}`,\r\n });\r\n\r\n // Init new Service Instance\r\n this.uploadService = new UploadxService(\r\n injector.get(UPLOADX_OPTIONS, null),\r\n injector.get(UPLOADX_FACTORY_OPTIONS),\r\n injector.get(UPLOADX_AJAX),\r\n this.ngZone,\r\n injector.get(IdService)\r\n );\r\n this.uploadService.init(this.options);\r\n\r\n // Subscripe Event for State changes\r\n this.uploadService.events.subscribe((ufile: UploadState) => this.onUpload(ufile));\r\n }\r\n\r\n // #endregion Constructors\r\n\r\n // #region Public Getters And Setters\r\n\r\n /**\r\n * Icon for browse button\r\n */\r\n public get IconBrowse(): string {\r\n return this.iconService.UploadComponentBrowseIcon;\r\n }\r\n\r\n /**\r\n * icon for continous buttons\r\n */\r\n public get IconContinue(): string {\r\n return this.iconService.UploadComponentContinueIcon;\r\n }\r\n\r\n /**\r\n * icon for delete buttons\r\n */\r\n public get IconDelete(): string {\r\n return this.iconService.UploadComponentDeleteIcon;\r\n }\r\n\r\n /**\r\n * icon for pause buttons\r\n */\r\n public get IconPause(): string {\r\n return this.iconService.UploadComponentPauseIcon;\r\n }\r\n\r\n /**\r\n * icon for upload button\r\n */\r\n public get IconUpload(): string {\r\n return this.iconService.UploadComponentUploadIcon;\r\n }\r\n\r\n public get allowedtypes(): string {\r\n return this._allowedtypes;\r\n }\r\n\r\n /**\r\n * Erlaubte Dateitypen f\xFCr den Upload. Format: \".xxx,.yyy,.zzz\"\r\n */\r\n @Input()\r\n public set allowedtypes(types: string) {\r\n this._allowedtypes = types;\r\n this.setAllowedTypes(types);\r\n }\r\n\r\n public get autoupload(): boolean {\r\n return this._autoupload;\r\n }\r\n\r\n /**\r\n * Files nach der Auswahl automatisch hochladen\r\n */\r\n @Input()\r\n public set autoupload(v: boolean) {\r\n this._autoupload = v;\r\n this.options.autoUpload = v;\r\n this.uploadService.connect(this.options);\r\n }\r\n\r\n public get enablepause(): boolean {\r\n return this._enablepause;\r\n }\r\n\r\n /**\r\n * Uploads k\xF6nnen unterbrochen werden\r\n */\r\n @Input()\r\n public set enablepause(v: boolean) {\r\n this._enablepause = v;\r\n }\r\n\r\n public get endpoint(): string {\r\n return this._endpoint;\r\n }\r\n\r\n /**\r\n * Definiert den Registration Endpoint f\xFCr Uploads.\r\n */\r\n @Input()\r\n public set endpoint(v: string) {\r\n this._endpoint = v;\r\n this.setEndpoint(v);\r\n }\r\n\r\n /**\r\n * Token for Bearer Authentication\r\n */\r\n public get token(): string | null {\r\n return this._token;\r\n }\r\n\r\n /**\r\n * Token for Bearer Authentication\r\n */\r\n @Input()\r\n public set token(v: string | null) {\r\n this._token = v;\r\n this.setToken(v);\r\n }\r\n\r\n // #endregion Public Getters And Setters\r\n\r\n // #region Public Methods\r\n\r\n /**\r\n * Methode kann f\xFCr Controls verwendet werden, zus\xE4tzliche Validierungen bei hinzuf\xFCgen der Files zu machen\r\n *\r\n * @param file File das hinzugef\xFCgt wurde.\r\n * @returns Valdierung ist erfolgreich\r\n */\r\n public abstract CustomAddValidation(file: UploadState): boolean;\r\n\r\n /**\r\n * Name der Datei die Hochgeladen wird\r\n * @returns Observable des Dateinamens.\r\n */\r\n public Filename(): Observable<string> {\r\n if (this.uploads.length > 0) {\r\n return of(this.uploads[0].name);\r\n } else {\r\n return this.lngResourceService.GetString(this.validationKeyService.UploadNoFilesSelected);\r\n }\r\n }\r\n\r\n /**\r\n * Gibt an ob Queue Elemente beinhaltet\r\n * @returns Elemente in der Queue\r\n */\r\n public HasQueueItem(): boolean {\r\n return this.uploads.length > 0;\r\n }\r\n\r\n /**\r\n * Gibt an ob ein Upload abgeschlossen ist\r\n * @returns Upload erfolgreich\r\n */\r\n public HasSuccessUpload(): boolean {\r\n if (this.uploads.length > 0) {\r\n return this.uploads.filter((itm) => itm.status !== 'complete').length === 0;\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n /**\r\n * Pr\xFCft ob ein Upload pausiert\r\n * @returns Pausierter Upload ist vorhanden\r\n */\r\n public IsPaused(): boolean {\r\n return this.uploads.filter((itm) => itm.status === 'paused').length > 0;\r\n }\r\n\r\n /**\r\n * Pr\xFCft ob in der Queue Elemente die zum Upload bereit sind vorhanden sind.\r\n * @returns Elemente f\xFCr Upload vorhanden\r\n */\r\n public IsStateToUpload(): boolean {\r\n return this.uploads.filter((itm) => itm.status === 'added' || itm.status === 'paused').length > 0;\r\n }\r\n\r\n /**\r\n * Pr\xFCft ob ein Upload eines Files am laufen ist\r\n * @returns Upload ist am laufen\r\n */\r\n public IsUploading(): boolean {\r\n return this.uploads.filter((itm) => itm.status === 'uploading').length > 0;\r\n }\r\n\r\n /**\r\n * Gibt den Uploadfortschritt zur\xFCck\r\n * @returns Upload Fortschritt. Wert von 0-100\r\n */\r\n public Progress(): number {\r\n if (this.uploads.length > 0) {\r\n return this.uploads[0].progress;\r\n } else {\r\n return 0;\r\n }\r\n }\r\n\r\n /**\r\n * Methode welche die Upload ID's in das Model setzt oder l\xF6scht\r\n *\r\n * @param file Type von File ID's\r\n */\r\n public abstract SetUploadValue(file: UploadState): void;\r\n\r\n /**\r\n * Cancel single upload\r\n * @param uploadId ID of File to cancel\r\n */\r\n public cancel(uploadId) {\r\n this.uploadService.control({ action: 'cancel', uploadId: uploadId });\r\n }\r\n\r\n /**\r\n * Cancel all Uploaded files\r\n */\r\n public cancelAll() {\r\n if (this.HasQueueItem() === true) {\r\n this.uploadService.control({ action: 'cancel' });\r\n }\r\n }\r\n\r\n /**\r\n * Destroy des Controls\r\n */\r\n public ngOnDestroy() {\r\n if (this.listenerFn) {\r\n this.listenerFn();\r\n }\r\n }\r\n\r\n /**\r\n * Initialisiert das Control\r\n */\r\n public ngOnInit() {\r\n super.ngOnInit();\r\n // Init Event Listener for Input File Control and Handling Files\r\n this.listenerFn = this.renderer.listen(this.uploadInput.nativeElement, 'change', this.fileListener);\r\n\r\n this.setAllowedTypes(this._allowedtypes);\r\n this.setEndpoint(this._endpoint);\r\n this.setToken(this._token);\r\n\r\n if (this._endpoint === null) {\r\n throw new Error('endpoint is not defined!');\r\n }\r\n\r\n this.uploadService.connect(this.options);\r\n }\r\n\r\n /**\r\n * Upload Event\r\n *\r\n * @param uploadsOutStream Upload Item\r\n */\r\n public onUpload(ufile: UploadState) {\r\n const index = this.uploads.findIndex((f) => f.uploadId === ufile.uploadId);\r\n\r\n if (ufile.status === 'added' || (ufile.status === 'queue' && index < 0)) {\r\n if (\r\n this.isExtensionValid(ufile.name) &&\r\n this.isFileSizeValid(ufile.size) &&\r\n this.CustomAddValidation(ufile)\r\n ) {\r\n this.uploads.push(new SacUploadFile(ufile));\r\n } else {\r\n this.cancel(ufile.uploadId);\r\n\r\n if (!this.isExtensionValid(ufile.name)) {\r\n this.onfileerror.emit('INVALID_EXTENSION');\r\n } else if (!this.isFileSizeValid(ufile.size)) {\r\n this.onfileerror.emit('INVALID_FILESIZE');\r\n }\r\n }\r\n } else if (ufile.status === 'cancelled') {\r\n if (index >= 0) {\r\n this.uploads.splice(index, 1);\r\n }\r\n\r\n this.SetUploadValue(null);\r\n } else if (ufile.status === 'complete') {\r\n this.uploads[index].progress = ufile.progress;\r\n this.uploads[index].status = ufile.status;\r\n this.SetUploadValue(ufile);\r\n\r\n const uploadState: ISacUploadEventCompleteState = {\r\n name: ufile.name,\r\n size: ufile.size,\r\n uploadid: this.uploads[index].uploadId,\r\n };\r\n\r\n this.onuploadcomplete.emit(uploadState);\r\n } else {\r\n if (index >= 0) {\r\n this.uploads[index].progress = ufile.progress;\r\n this.uploads[index].status = ufile.status;\r\n }\r\n }\r\n\r\n this.UpdateFileCount();\r\n }\r\n\r\n /**\r\n * Cancel Single File\r\n * @param uploadId ID of File to Cancel\r\n */\r\n public pause(uploadId) {\r\n this.uploadService.control({ action: 'pause', uploadId });\r\n }\r\n\r\n /**\r\n * Pause all Uploads\r\n */\r\n public pauseAll() {\r\n if (this.IsUploading() === true) {\r\n this.uploadService.control({ action: 'pause' });\r\n }\r\n }\r\n\r\n /**\r\n * Sets the bearer token in the upload service\r\n */\r\n public setToken(value: string) {\r\n this.options.token = value;\r\n }\r\n\r\n /**\r\n * Upload Single File\r\n *\r\n * @param uploadId ID of File to Upload\r\n */\r\n public upload(uploadId) {\r\n this.uploadService.control({ action: 'upload', uploadId });\r\n }\r\n\r\n /**\r\n * Upload all queued Files\r\n */\r\n public uploadAll() {\r\n if (this.IsStateToUpload() === true) {\r\n this.uploadService.control({ action: 'upload' });\r\n }\r\n }\r\n\r\n /**\r\n * Validiert das Upload Control\r\n * @param c Control das validiert werden soll\r\n */\r\n public validateData(c: AbstractControl): ValidationErrors | null {\r\n let error: ValidationErrors | null = null;\r\n\r\n if (this.isrequired) {\r\n error = Validation.required(this.validationmessagerequired, this.validationmessagesummaryrequired)(c);\r\n }\r\n\r\n return error;\r\n }\r\n\r\n // #endregion Public Methods\r\n\r\n // #region Private Methods\r\n\r\n private UpdateFileCount(): void {\r\n // HACK: Add addition property to FormControl. Can be fixed if solution for ticket: https://github.com/angular/angular/issues/19686\r\n if (this.ngControl) {\r\n (this.ngControl as unknown as IUploadControl).uploadedfilecount = this.UploadedFileCount();\r\n }\r\n }\r\n\r\n /**\r\n * Returns the number of uploaded files\r\n */\r\n private UploadedFileCount(): number {\r\n return this.uploads.filter((itm) => itm.status === 'complete').length;\r\n }\r\n\r\n /**\r\n * Pr\xFCft ob die Dateierweiterung g\xFCltig ist\r\n *\r\n * @param filename Dateiname\r\n */\r\n private isExtensionValid(filename: string): boolean {\r\n if (this._allowedtypes === '*') {\r\n return true;\r\n }\r\n\r\n let isValid: boolean = false;\r\n const extensions: string[] = this._allowedtypes.split(',');\r\n\r\n extensions.forEach((itm) => {\r\n if (filename.toLowerCase().endsWith(itm.toLowerCase())) {\r\n isValid = true;\r\n }\r\n });\r\n\r\n return isValid;\r\n }\r\n\r\n /**\r\n * Pr\xFCft ob das File nicht zu gross ist.\r\n *\r\n * @param filesize Max File Size in Bytes\r\n */\r\n private isFileSizeValid(filesize: number): boolean {\r\n if (this.maxfilesize === 0) {\r\n return true;\r\n }\r\n\r\n return this.maxfilesize >= filesize;\r\n }\r\n\r\n /**\r\n * Setzt die erlaubten Datentypen f\xFCr den Upload\r\n *\r\n * @param types Erlaubte File Extensions\r\n */\r\n private setAllowedTypes(types: string) {\r\n // Pr\xFCfen UploadInput bereits geladen, ist NULL wenn Extension im Markup nach NgModel gesetzt wird.\r\n if (this.uploadInput && this.uploadInput.nativeElement) {\r\n this.renderer.setAttribute(this.uploadInput.nativeElement, 'accept', types);\r\n }\r\n\r\n this.options.allowedTypes = types;\r\n }\r\n\r\n /**\r\n * Setzt den Upload Endpoit\r\n * @param url Register URI\r\n */\r\n private setEndpoint(url: string) {\r\n this.options.endpoint = url;\r\n }\r\n\r\n // #endregion Private Methods\r\n}\r\n\r\n/**\r\n * Klasse f\xFCr den Upload einer Datei in der Upload Component\r\n */\r\nexport class SacUploadFile {\r\n // #region Properties\r\n\r\n /**\r\n * Document ID\r\n */\r\n public documentid: string;\r\n\r\n /**\r\n * Dateiname\r\n */\r\n public name: string;\r\n\r\n /**\r\n * Upload Fortschritt\r\n */\r\n public progress: number;\r\n\r\n /**\r\n * Upload Status\r\n */\r\n public status: string;\r\n\r\n /**\r\n * Upload ID\r\n */\r\n public uploadId: string;\r\n\r\n // #endregion Properties\r\n\r\n // #region Constructors\r\n\r\n /**\r\n * Konstruktor\r\n * @param ufile Upload Status\r\n */\r\n constructor(ufile: UploadState) {\r\n this.uploadId = ufile.uploadId;\r\n this.name = ufile.name;\r\n this.progress = ufile.progress;\r\n this.status = ufile.status;\r\n this.documentid = null;\r\n }\r\n\r\n // #endregion Constructors\r\n}\r\n\r\n// #endregion Exported Classes\r\n"]},_coverageSchema:"1a1c01bbd47fc00a2c39e90264f33305004495a9",hash:"bda5437f2666bbd6c4135d4fffeabc05b44f41aa"};var coverage=global[gcv]||(global[gcv]={});if(!coverage[path]||coverage[path].hash!==hash){coverage[path]=coverageData;}var actualCoverage=coverage[path];{// @ts-ignore
2
+ cov_hm7codict=function(){return actualCoverage;};}return actualCoverage;}cov_hm7codict();import{SACVALIDATIONKEY_SERVICE,SacDefaultValidationKeyService}from'../services';import{SACLOCALISATION_SERVICE,SacDefaultLocalisationService}from'../services/sac-localisation.service';import{Validation}from'../validation';import{SacBaseModelControl}from'./basemodelcontrol';import{Directive,EventEmitter,Input,Output,ViewChild}from'@angular/core';import{IdService,UPLOADX_AJAX,UPLOADX_FACTORY_OPTIONS,UPLOADX_OPTIONS,UploadxService}from'ngx-uploadx';import{of}from'rxjs';import*as i0 from"@angular/core";import*as i1 from"../controls/layout/formlayout";// #region Exported Classes
3
3
  /**
4
4
  * Base Klasse für Uploader Control
5
5
  */export class SacUploadBase extends SacBaseModelControl{// #endregion Properties
@@ -10,7 +10,8 @@ cov_hm7codict=function(){return actualCoverage;};}return actualCoverage;}cov_hm7
10
10
  * @param injector Injector for injecting services
11
11
  * @param renderer angular rendering engine
12
12
  * @param ngZone ngzone for handling external scripts
13
- */constructor(formlayout,injector,renderer,ngZone){cov_hm7codict().f[0]++;cov_hm7codict().s[0]++;super(formlayout,injector);cov_hm7codict().s[1]++;this.renderer=renderer;cov_hm7codict().s[2]++;this.ngZone=ngZone;/**
13
+ */constructor(formlayout,injector,renderer,ngZone){cov_hm7codict().f[0]++;cov_hm7codict().s[0]++;super(formlayout,injector);cov_hm7codict().s[1]++;this.renderer=renderer;cov_hm7codict().s[2]++;this.ngZone=ngZone;// #region Properties
14
+ /**
14
15
  * Erlaubte Dateitypen
15
16
  */cov_hm7codict().s[3]++;this._allowedtypes='*';/**
16
17
  * Files automatisch hochladen
@@ -19,119 +20,127 @@ cov_hm7codict=function(){return actualCoverage;};}return actualCoverage;}cov_hm7
19
20
  */cov_hm7codict().s[5]++;this._enablepause=true;/**
20
21
  * API Endpoint
21
22
  */cov_hm7codict().s[6]++;this._endpoint=null;/**
23
+ * Token for Bearer Authentication
24
+ */cov_hm7codict().s[7]++;this._token=null;/**
22
25
  * Upload Settings
23
- */cov_hm7codict().s[7]++;this.options={};/**
26
+ */cov_hm7codict().s[8]++;this.options={};/**
27
+ * Handling von neuen Files im Input Control
28
+ */cov_hm7codict().s[9]++;this.fileListener=()=>{cov_hm7codict().f[1]++;cov_hm7codict().s[10]++;if(this.uploadInput.nativeElement.files){cov_hm7codict().b[0][0]++;cov_hm7codict().s[11]++;this.uploadService.handleFiles(this.uploadInput.nativeElement.files);}else{cov_hm7codict().b[0][1]++;}};/**
24
29
  * Definiert das Control als Required
25
- */cov_hm7codict().s[8]++;this.isrequired=false;/**
30
+ */cov_hm7codict().s[12]++;this.isrequired=false;/**
26
31
  * Max. Dateigrösse für Files die hochgeladen werden können. 0 deaktiviert den Filter
27
- */cov_hm7codict().s[9]++;this.maxfilesize=0;/**
32
+ */cov_hm7codict().s[13]++;this.maxfilesize=0;/**
33
+ * Event when an error is triggered in the component.
34
+ */cov_hm7codict().s[14]++;this.onfileerror=new EventEmitter();/**
35
+ * Event when a file has been uploaded. The event is triggered for multiple uploads per file.
36
+ */cov_hm7codict().s[15]++;this.onuploadcomplete=new EventEmitter();/**
28
37
  * Resource Key für Validation Message Required bei Control
29
- */cov_hm7codict().s[10]++;this.validationmessagerequired=this.validationKeyService.ValidationErrorRequired;/**
38
+ */cov_hm7codict().s[16]++;this.validationmessagerequired=this.validationKeyService.ValidationErrorRequired;/**
30
39
  * Resource Key für Validation Message Required in Validation Summary
31
- */cov_hm7codict().s[11]++;this.validationmessagesummaryrequired=this.validationKeyService.ValidationErrorSummaryRequired;/**
32
- * Event wenn ein Error in der Komponente ausgelöst wird.
33
- */cov_hm7codict().s[12]++;this.onfileerror=new EventEmitter();/**
34
- * Handling von neuen Files im Input Control
35
- */cov_hm7codict().s[13]++;this.fileListener=()=>{cov_hm7codict().f[1]++;cov_hm7codict().s[14]++;if(this.uploadInput.nativeElement.files){cov_hm7codict().b[0][0]++;cov_hm7codict().s[15]++;this.uploadService.handleFiles(this.uploadInput.nativeElement.files);}else{cov_hm7codict().b[0][1]++;}};cov_hm7codict().s[16]++;this.validationKeyService=injector.get(SACVALIDATIONKEY_SERVICE,new SacDefaultValidationKeyService());cov_hm7codict().s[17]++;this.lngResourceService=injector.get(SACLOCALISATION_SERVICE,new SacDefaultLocalisationService(this.validationKeyService));cov_hm7codict().s[18]++;this.uploads=[];cov_hm7codict().s[19]++;this.options.allowedTypes='*';cov_hm7codict().s[20]++;this.options.concurrency=1;cov_hm7codict().s[21]++;this.options.token='sometoken';cov_hm7codict().s[22]++;this.options.autoUpload=this._autoupload;cov_hm7codict().s[23]++;this.options.withCredentials=true;cov_hm7codict().s[24]++;this.options.chunkSize=1024*16*8;cov_hm7codict().s[25]++;this.options.headers=f=>{cov_hm7codict().f[2]++;cov_hm7codict().s[26]++;return{'Content-Disposition':`filename=${encodeURI(f.name)}`};};// Init new Service Instance
36
- cov_hm7codict().s[27]++;this.uploadService=new UploadxService(injector.get(UPLOADX_OPTIONS,null),injector.get(UPLOADX_FACTORY_OPTIONS),injector.get(UPLOADX_AJAX),this.ngZone,injector.get(IdService));cov_hm7codict().s[28]++;this.uploadService.init(this.options);// Subscripe Event for State changes
37
- cov_hm7codict().s[29]++;this.uploadService.events.subscribe(ufile=>{cov_hm7codict().f[3]++;cov_hm7codict().s[30]++;return this.onUpload(ufile);});}// #endregion Constructors
40
+ */cov_hm7codict().s[17]++;this.validationmessagesummaryrequired=this.validationKeyService.ValidationErrorSummaryRequired;cov_hm7codict().s[18]++;this.validationKeyService=injector.get(SACVALIDATIONKEY_SERVICE,new SacDefaultValidationKeyService());cov_hm7codict().s[19]++;this.lngResourceService=injector.get(SACLOCALISATION_SERVICE,new SacDefaultLocalisationService(this.validationKeyService));cov_hm7codict().s[20]++;this.uploads=[];cov_hm7codict().s[21]++;this.options.allowedTypes='*';cov_hm7codict().s[22]++;this.options.concurrency=1;cov_hm7codict().s[23]++;this.options.token='sometoken';cov_hm7codict().s[24]++;this.options.autoUpload=this._autoupload;cov_hm7codict().s[25]++;this.options.withCredentials=true;cov_hm7codict().s[26]++;this.options.chunkSize=1024*16*8;cov_hm7codict().s[27]++;this.options.headers=f=>{cov_hm7codict().f[2]++;cov_hm7codict().s[28]++;return{'Content-Disposition':`filename=${encodeURI(f.name)}`};};// Init new Service Instance
41
+ cov_hm7codict().s[29]++;this.uploadService=new UploadxService(injector.get(UPLOADX_OPTIONS,null),injector.get(UPLOADX_FACTORY_OPTIONS),injector.get(UPLOADX_AJAX),this.ngZone,injector.get(IdService));cov_hm7codict().s[30]++;this.uploadService.init(this.options);// Subscripe Event for State changes
42
+ cov_hm7codict().s[31]++;this.uploadService.events.subscribe(ufile=>{cov_hm7codict().f[3]++;cov_hm7codict().s[32]++;return this.onUpload(ufile);});}// #endregion Constructors
38
43
  // #region Public Getters And Setters
39
44
  /**
40
- * Erlaubte Dateitypen für den Upload. Format: ".xxx,.yyy,.zzz"
41
- */set allowedtypes(types){cov_hm7codict().f[4]++;cov_hm7codict().s[31]++;this._allowedtypes=types;cov_hm7codict().s[32]++;this.setAllowedTypes(types);}/**
42
- * Files nach der Auswahl automatisch hochladen
43
- */set autoupload(v){cov_hm7codict().f[5]++;cov_hm7codict().s[33]++;this._autoupload=v;cov_hm7codict().s[34]++;this.options.autoUpload=v;cov_hm7codict().s[35]++;this.uploadService.connect(this.options);}/**
44
- * Uploads können unterbrochen werden
45
- */set enablepause(v){cov_hm7codict().f[6]++;cov_hm7codict().s[36]++;this._enablepause=v;}/**
46
- * Definiert den Registration Endpoint für Uploads.
47
- */set endpoint(v){cov_hm7codict().f[7]++;cov_hm7codict().s[37]++;this._endpoint=v;cov_hm7codict().s[38]++;this.setEndpoint(v);}/**
48
45
  * Icon for browse button
49
- */get IconBrowse(){cov_hm7codict().f[8]++;cov_hm7codict().s[39]++;return this.iconService.UploadComponentBrowseIcon;}/**
46
+ */get IconBrowse(){cov_hm7codict().f[4]++;cov_hm7codict().s[33]++;return this.iconService.UploadComponentBrowseIcon;}/**
50
47
  * icon for continous buttons
51
- */get IconContinue(){cov_hm7codict().f[9]++;cov_hm7codict().s[40]++;return this.iconService.UploadComponentContinueIcon;}/**
48
+ */get IconContinue(){cov_hm7codict().f[5]++;cov_hm7codict().s[34]++;return this.iconService.UploadComponentContinueIcon;}/**
52
49
  * icon for delete buttons
53
- */get IconDelete(){cov_hm7codict().f[10]++;cov_hm7codict().s[41]++;return this.iconService.UploadComponentDeleteIcon;}/**
50
+ */get IconDelete(){cov_hm7codict().f[6]++;cov_hm7codict().s[35]++;return this.iconService.UploadComponentDeleteIcon;}/**
54
51
  * icon for pause buttons
55
- */get IconPause(){cov_hm7codict().f[11]++;cov_hm7codict().s[42]++;return this.iconService.UploadComponentPauseIcon;}/**
52
+ */get IconPause(){cov_hm7codict().f[7]++;cov_hm7codict().s[36]++;return this.iconService.UploadComponentPauseIcon;}/**
56
53
  * icon for upload button
57
- */get IconUpload(){cov_hm7codict().f[12]++;cov_hm7codict().s[43]++;return this.iconService.UploadComponentUploadIcon;}get allowedtypes(){cov_hm7codict().f[13]++;cov_hm7codict().s[44]++;return this._allowedtypes;}get autoupload(){cov_hm7codict().f[14]++;cov_hm7codict().s[45]++;return this._autoupload;}get enablepause(){cov_hm7codict().f[15]++;cov_hm7codict().s[46]++;return this._enablepause;}get endpoint(){cov_hm7codict().f[16]++;cov_hm7codict().s[47]++;return this._endpoint;}// #endregion Public Getters And Setters
58
- // #region Public Methods
59
- /**
54
+ */get IconUpload(){cov_hm7codict().f[8]++;cov_hm7codict().s[37]++;return this.iconService.UploadComponentUploadIcon;}get allowedtypes(){cov_hm7codict().f[9]++;cov_hm7codict().s[38]++;return this._allowedtypes;}/**
55
+ * Erlaubte Dateitypen für den Upload. Format: ".xxx,.yyy,.zzz"
56
+ */set allowedtypes(types){cov_hm7codict().f[10]++;cov_hm7codict().s[39]++;this._allowedtypes=types;cov_hm7codict().s[40]++;this.setAllowedTypes(types);}get autoupload(){cov_hm7codict().f[11]++;cov_hm7codict().s[41]++;return this._autoupload;}/**
57
+ * Files nach der Auswahl automatisch hochladen
58
+ */set autoupload(v){cov_hm7codict().f[12]++;cov_hm7codict().s[42]++;this._autoupload=v;cov_hm7codict().s[43]++;this.options.autoUpload=v;cov_hm7codict().s[44]++;this.uploadService.connect(this.options);}get enablepause(){cov_hm7codict().f[13]++;cov_hm7codict().s[45]++;return this._enablepause;}/**
59
+ * Uploads können unterbrochen werden
60
+ */set enablepause(v){cov_hm7codict().f[14]++;cov_hm7codict().s[46]++;this._enablepause=v;}get endpoint(){cov_hm7codict().f[15]++;cov_hm7codict().s[47]++;return this._endpoint;}/**
61
+ * Definiert den Registration Endpoint für Uploads.
62
+ */set endpoint(v){cov_hm7codict().f[16]++;cov_hm7codict().s[48]++;this._endpoint=v;cov_hm7codict().s[49]++;this.setEndpoint(v);}/**
63
+ * Token for Bearer Authentication
64
+ */get token(){cov_hm7codict().f[17]++;cov_hm7codict().s[50]++;return this._token;}/**
65
+ * Token for Bearer Authentication
66
+ */set token(v){cov_hm7codict().f[18]++;cov_hm7codict().s[51]++;this._token=v;cov_hm7codict().s[52]++;this.setToken(v);}/**
60
67
  * Name der Datei die Hochgeladen wird
61
68
  * @returns Observable des Dateinamens.
62
- */Filename(){cov_hm7codict().f[17]++;cov_hm7codict().s[48]++;if(this.uploads.length>0){cov_hm7codict().b[1][0]++;cov_hm7codict().s[49]++;return of(this.uploads[0].name);}else{cov_hm7codict().b[1][1]++;cov_hm7codict().s[50]++;return this.lngResourceService.GetString(this.validationKeyService.UploadNoFilesSelected);}}/**
69
+ */Filename(){cov_hm7codict().f[19]++;cov_hm7codict().s[53]++;if(this.uploads.length>0){cov_hm7codict().b[1][0]++;cov_hm7codict().s[54]++;return of(this.uploads[0].name);}else{cov_hm7codict().b[1][1]++;cov_hm7codict().s[55]++;return this.lngResourceService.GetString(this.validationKeyService.UploadNoFilesSelected);}}/**
63
70
  * Gibt an ob Queue Elemente beinhaltet
64
71
  * @returns Elemente in der Queue
65
- */HasQueueItem(){cov_hm7codict().f[18]++;cov_hm7codict().s[51]++;return this.uploads.length>0;}/**
72
+ */HasQueueItem(){cov_hm7codict().f[20]++;cov_hm7codict().s[56]++;return this.uploads.length>0;}/**
66
73
  * Gibt an ob ein Upload abgeschlossen ist
67
74
  * @returns Upload erfolgreich
68
- */HasSuccessUpload(){cov_hm7codict().f[19]++;cov_hm7codict().s[52]++;if(this.uploads.length>0){cov_hm7codict().b[2][0]++;cov_hm7codict().s[53]++;return this.uploads.filter(itm=>{cov_hm7codict().f[20]++;cov_hm7codict().s[54]++;return itm.status!=='complete';}).length===0;}else{cov_hm7codict().b[2][1]++;cov_hm7codict().s[55]++;return false;}}/**
75
+ */HasSuccessUpload(){cov_hm7codict().f[21]++;cov_hm7codict().s[57]++;if(this.uploads.length>0){cov_hm7codict().b[2][0]++;cov_hm7codict().s[58]++;return this.uploads.filter(itm=>{cov_hm7codict().f[22]++;cov_hm7codict().s[59]++;return itm.status!=='complete';}).length===0;}else{cov_hm7codict().b[2][1]++;cov_hm7codict().s[60]++;return false;}}/**
69
76
  * Prüft ob ein Upload pausiert
70
77
  * @returns Pausierter Upload ist vorhanden
71
- */IsPaused(){cov_hm7codict().f[21]++;cov_hm7codict().s[56]++;return this.uploads.filter(itm=>{cov_hm7codict().f[22]++;cov_hm7codict().s[57]++;return itm.status==='paused';}).length>0;}/**
78
+ */IsPaused(){cov_hm7codict().f[23]++;cov_hm7codict().s[61]++;return this.uploads.filter(itm=>{cov_hm7codict().f[24]++;cov_hm7codict().s[62]++;return itm.status==='paused';}).length>0;}/**
72
79
  * Prüft ob in der Queue Elemente die zum Upload bereit sind vorhanden sind.
73
80
  * @returns Elemente für Upload vorhanden
74
- */IsStateToUpload(){cov_hm7codict().f[23]++;cov_hm7codict().s[58]++;return this.uploads.filter(itm=>{cov_hm7codict().f[24]++;cov_hm7codict().s[59]++;return(cov_hm7codict().b[3][0]++,itm.status==='added')||(cov_hm7codict().b[3][1]++,itm.status==='paused');}).length>0;}/**
81
+ */IsStateToUpload(){cov_hm7codict().f[25]++;cov_hm7codict().s[63]++;return this.uploads.filter(itm=>{cov_hm7codict().f[26]++;cov_hm7codict().s[64]++;return(cov_hm7codict().b[3][0]++,itm.status==='added')||(cov_hm7codict().b[3][1]++,itm.status==='paused');}).length>0;}/**
75
82
  * Prüft ob ein Upload eines Files am laufen ist
76
83
  * @returns Upload ist am laufen
77
- */IsUploading(){cov_hm7codict().f[25]++;cov_hm7codict().s[60]++;return this.uploads.filter(itm=>{cov_hm7codict().f[26]++;cov_hm7codict().s[61]++;return itm.status==='uploading';}).length>0;}/**
84
+ */IsUploading(){cov_hm7codict().f[27]++;cov_hm7codict().s[65]++;return this.uploads.filter(itm=>{cov_hm7codict().f[28]++;cov_hm7codict().s[66]++;return itm.status==='uploading';}).length>0;}/**
78
85
  * Gibt den Uploadfortschritt zurück
79
86
  * @returns Upload Fortschritt. Wert von 0-100
80
- */Progress(){cov_hm7codict().f[27]++;cov_hm7codict().s[62]++;if(this.uploads.length>0){cov_hm7codict().b[4][0]++;cov_hm7codict().s[63]++;return this.uploads[0].progress;}else{cov_hm7codict().b[4][1]++;cov_hm7codict().s[64]++;return 0;}}/**
87
+ */Progress(){cov_hm7codict().f[29]++;cov_hm7codict().s[67]++;if(this.uploads.length>0){cov_hm7codict().b[4][0]++;cov_hm7codict().s[68]++;return this.uploads[0].progress;}else{cov_hm7codict().b[4][1]++;cov_hm7codict().s[69]++;return 0;}}/**
81
88
  * Cancel single upload
82
89
  * @param uploadId ID of File to cancel
83
- */cancel(uploadId){cov_hm7codict().f[28]++;cov_hm7codict().s[65]++;this.uploadService.control({action:'cancel',uploadId:uploadId});}/**
90
+ */cancel(uploadId){cov_hm7codict().f[30]++;cov_hm7codict().s[70]++;this.uploadService.control({action:'cancel',uploadId:uploadId});}/**
84
91
  * Cancel all Uploaded files
85
- */cancelAll(){cov_hm7codict().f[29]++;cov_hm7codict().s[66]++;if(this.HasQueueItem()===true){cov_hm7codict().b[5][0]++;cov_hm7codict().s[67]++;this.uploadService.control({action:'cancel'});}else{cov_hm7codict().b[5][1]++;}}/**
92
+ */cancelAll(){cov_hm7codict().f[31]++;cov_hm7codict().s[71]++;if(this.HasQueueItem()===true){cov_hm7codict().b[5][0]++;cov_hm7codict().s[72]++;this.uploadService.control({action:'cancel'});}else{cov_hm7codict().b[5][1]++;}}/**
86
93
  * Destroy des Controls
87
- */ngOnDestroy(){cov_hm7codict().f[30]++;cov_hm7codict().s[68]++;if(this.listenerFn){cov_hm7codict().b[6][0]++;cov_hm7codict().s[69]++;this.listenerFn();}else{cov_hm7codict().b[6][1]++;}}/**
94
+ */ngOnDestroy(){cov_hm7codict().f[32]++;cov_hm7codict().s[73]++;if(this.listenerFn){cov_hm7codict().b[6][0]++;cov_hm7codict().s[74]++;this.listenerFn();}else{cov_hm7codict().b[6][1]++;}}/**
88
95
  * Initialisiert das Control
89
- */ngOnInit(){cov_hm7codict().f[31]++;cov_hm7codict().s[70]++;super.ngOnInit();// Init Event Listener for Input File Control and Handling Files
90
- cov_hm7codict().s[71]++;this.listenerFn=this.renderer.listen(this.uploadInput.nativeElement,'change',this.fileListener);cov_hm7codict().s[72]++;this.setAllowedTypes(this._allowedtypes);cov_hm7codict().s[73]++;this.setEndpoint(this._endpoint);cov_hm7codict().s[74]++;if(this._endpoint===null){cov_hm7codict().b[7][0]++;cov_hm7codict().s[75]++;throw new Error('endpoint is not defined!');}else{cov_hm7codict().b[7][1]++;}cov_hm7codict().s[76]++;this.uploadService.connect(this.options);}/**
96
+ */ngOnInit(){cov_hm7codict().f[33]++;cov_hm7codict().s[75]++;super.ngOnInit();// Init Event Listener for Input File Control and Handling Files
97
+ cov_hm7codict().s[76]++;this.listenerFn=this.renderer.listen(this.uploadInput.nativeElement,'change',this.fileListener);cov_hm7codict().s[77]++;this.setAllowedTypes(this._allowedtypes);cov_hm7codict().s[78]++;this.setEndpoint(this._endpoint);cov_hm7codict().s[79]++;this.setToken(this._token);cov_hm7codict().s[80]++;if(this._endpoint===null){cov_hm7codict().b[7][0]++;cov_hm7codict().s[81]++;throw new Error('endpoint is not defined!');}else{cov_hm7codict().b[7][1]++;}cov_hm7codict().s[82]++;this.uploadService.connect(this.options);}/**
91
98
  * Upload Event
92
99
  *
93
100
  * @param uploadsOutStream Upload Item
94
- */onUpload(ufile){cov_hm7codict().f[32]++;const index=(cov_hm7codict().s[77]++,this.uploads.findIndex(f=>{cov_hm7codict().f[33]++;cov_hm7codict().s[78]++;return f.uploadId===ufile.uploadId;}));cov_hm7codict().s[79]++;if((cov_hm7codict().b[9][0]++,ufile.status==='added')||(cov_hm7codict().b[9][1]++,ufile.status==='queue')&&(cov_hm7codict().b[9][2]++,index<0)){cov_hm7codict().b[8][0]++;cov_hm7codict().s[80]++;if((cov_hm7codict().b[11][0]++,this.isExtensionValid(ufile.name))&&(cov_hm7codict().b[11][1]++,this.isFileSizeValid(ufile.size))&&(cov_hm7codict().b[11][2]++,this.CustomAddValidation(ufile))){cov_hm7codict().b[10][0]++;cov_hm7codict().s[81]++;this.uploads.push(new SacUploadFile(ufile));}else{cov_hm7codict().b[10][1]++;cov_hm7codict().s[82]++;this.cancel(ufile.uploadId);cov_hm7codict().s[83]++;if(!this.isExtensionValid(ufile.name)){cov_hm7codict().b[12][0]++;cov_hm7codict().s[84]++;this.onfileerror.emit('INVALID_EXTENSION');}else{cov_hm7codict().b[12][1]++;cov_hm7codict().s[85]++;if(!this.isFileSizeValid(ufile.size)){cov_hm7codict().b[13][0]++;cov_hm7codict().s[86]++;this.onfileerror.emit('INVALID_FILESIZE');}else{cov_hm7codict().b[13][1]++;}}}}else{cov_hm7codict().b[8][1]++;cov_hm7codict().s[87]++;if(ufile.status==='cancelled'){cov_hm7codict().b[14][0]++;cov_hm7codict().s[88]++;if(index>=0){cov_hm7codict().b[15][0]++;cov_hm7codict().s[89]++;this.uploads.splice(index,1);}else{cov_hm7codict().b[15][1]++;}cov_hm7codict().s[90]++;this.SetUploadValue(null);}else{cov_hm7codict().b[14][1]++;cov_hm7codict().s[91]++;if(ufile.status==='complete'){cov_hm7codict().b[16][0]++;cov_hm7codict().s[92]++;this.uploads[index].progress=ufile.progress;cov_hm7codict().s[93]++;this.uploads[index].status=ufile.status;cov_hm7codict().s[94]++;this.SetUploadValue(ufile);}else{cov_hm7codict().b[16][1]++;cov_hm7codict().s[95]++;if(index>=0){cov_hm7codict().b[17][0]++;cov_hm7codict().s[96]++;this.uploads[index].progress=ufile.progress;cov_hm7codict().s[97]++;this.uploads[index].status=ufile.status;}else{cov_hm7codict().b[17][1]++;}}}}cov_hm7codict().s[98]++;this.UpdateFileCount();}/**
101
+ */onUpload(ufile){cov_hm7codict().f[34]++;const index=(cov_hm7codict().s[83]++,this.uploads.findIndex(f=>{cov_hm7codict().f[35]++;cov_hm7codict().s[84]++;return f.uploadId===ufile.uploadId;}));cov_hm7codict().s[85]++;if((cov_hm7codict().b[9][0]++,ufile.status==='added')||(cov_hm7codict().b[9][1]++,ufile.status==='queue')&&(cov_hm7codict().b[9][2]++,index<0)){cov_hm7codict().b[8][0]++;cov_hm7codict().s[86]++;if((cov_hm7codict().b[11][0]++,this.isExtensionValid(ufile.name))&&(cov_hm7codict().b[11][1]++,this.isFileSizeValid(ufile.size))&&(cov_hm7codict().b[11][2]++,this.CustomAddValidation(ufile))){cov_hm7codict().b[10][0]++;cov_hm7codict().s[87]++;this.uploads.push(new SacUploadFile(ufile));}else{cov_hm7codict().b[10][1]++;cov_hm7codict().s[88]++;this.cancel(ufile.uploadId);cov_hm7codict().s[89]++;if(!this.isExtensionValid(ufile.name)){cov_hm7codict().b[12][0]++;cov_hm7codict().s[90]++;this.onfileerror.emit('INVALID_EXTENSION');}else{cov_hm7codict().b[12][1]++;cov_hm7codict().s[91]++;if(!this.isFileSizeValid(ufile.size)){cov_hm7codict().b[13][0]++;cov_hm7codict().s[92]++;this.onfileerror.emit('INVALID_FILESIZE');}else{cov_hm7codict().b[13][1]++;}}}}else{cov_hm7codict().b[8][1]++;cov_hm7codict().s[93]++;if(ufile.status==='cancelled'){cov_hm7codict().b[14][0]++;cov_hm7codict().s[94]++;if(index>=0){cov_hm7codict().b[15][0]++;cov_hm7codict().s[95]++;this.uploads.splice(index,1);}else{cov_hm7codict().b[15][1]++;}cov_hm7codict().s[96]++;this.SetUploadValue(null);}else{cov_hm7codict().b[14][1]++;cov_hm7codict().s[97]++;if(ufile.status==='complete'){cov_hm7codict().b[16][0]++;cov_hm7codict().s[98]++;this.uploads[index].progress=ufile.progress;cov_hm7codict().s[99]++;this.uploads[index].status=ufile.status;cov_hm7codict().s[100]++;this.SetUploadValue(ufile);const uploadState=(cov_hm7codict().s[101]++,{name:ufile.name,size:ufile.size,uploadid:this.uploads[index].uploadId});cov_hm7codict().s[102]++;this.onuploadcomplete.emit(uploadState);}else{cov_hm7codict().b[16][1]++;cov_hm7codict().s[103]++;if(index>=0){cov_hm7codict().b[17][0]++;cov_hm7codict().s[104]++;this.uploads[index].progress=ufile.progress;cov_hm7codict().s[105]++;this.uploads[index].status=ufile.status;}else{cov_hm7codict().b[17][1]++;}}}}cov_hm7codict().s[106]++;this.UpdateFileCount();}/**
95
102
  * Cancel Single File
96
103
  * @param uploadId ID of File to Cancel
97
- */pause(uploadId){cov_hm7codict().f[34]++;cov_hm7codict().s[99]++;this.uploadService.control({action:'pause',uploadId});}/**
104
+ */pause(uploadId){cov_hm7codict().f[36]++;cov_hm7codict().s[107]++;this.uploadService.control({action:'pause',uploadId});}/**
98
105
  * Pause all Uploads
99
- */pauseAll(){cov_hm7codict().f[35]++;cov_hm7codict().s[100]++;if(this.IsUploading()===true){cov_hm7codict().b[18][0]++;cov_hm7codict().s[101]++;this.uploadService.control({action:'pause'});}else{cov_hm7codict().b[18][1]++;}}/**
106
+ */pauseAll(){cov_hm7codict().f[37]++;cov_hm7codict().s[108]++;if(this.IsUploading()===true){cov_hm7codict().b[18][0]++;cov_hm7codict().s[109]++;this.uploadService.control({action:'pause'});}else{cov_hm7codict().b[18][1]++;}}/**
107
+ * Sets the bearer token in the upload service
108
+ */setToken(value){cov_hm7codict().f[38]++;cov_hm7codict().s[110]++;this.options.token=value;}/**
100
109
  * Upload Single File
101
110
  *
102
111
  * @param uploadId ID of File to Upload
103
- */upload(uploadId){cov_hm7codict().f[36]++;cov_hm7codict().s[102]++;this.uploadService.control({action:'upload',uploadId});}/**
112
+ */upload(uploadId){cov_hm7codict().f[39]++;cov_hm7codict().s[111]++;this.uploadService.control({action:'upload',uploadId});}/**
104
113
  * Upload all queued Files
105
- */uploadAll(){cov_hm7codict().f[37]++;cov_hm7codict().s[103]++;if(this.IsStateToUpload()===true){cov_hm7codict().b[19][0]++;cov_hm7codict().s[104]++;this.uploadService.control({action:'upload'});}else{cov_hm7codict().b[19][1]++;}}/**
114
+ */uploadAll(){cov_hm7codict().f[40]++;cov_hm7codict().s[112]++;if(this.IsStateToUpload()===true){cov_hm7codict().b[19][0]++;cov_hm7codict().s[113]++;this.uploadService.control({action:'upload'});}else{cov_hm7codict().b[19][1]++;}}/**
106
115
  * Validiert das Upload Control
107
116
  * @param c Control das validiert werden soll
108
- */validateData(c){cov_hm7codict().f[38]++;let error=(cov_hm7codict().s[105]++,null);cov_hm7codict().s[106]++;if(this.isrequired){cov_hm7codict().b[20][0]++;cov_hm7codict().s[107]++;error=Validation.required(this.validationmessagerequired,this.validationmessagesummaryrequired)(c);}else{cov_hm7codict().b[20][1]++;}cov_hm7codict().s[108]++;return error;}// #endregion Public Abstract Methods
117
+ */validateData(c){cov_hm7codict().f[41]++;let error=(cov_hm7codict().s[114]++,null);cov_hm7codict().s[115]++;if(this.isrequired){cov_hm7codict().b[20][0]++;cov_hm7codict().s[116]++;error=Validation.required(this.validationmessagerequired,this.validationmessagesummaryrequired)(c);}else{cov_hm7codict().b[20][1]++;}cov_hm7codict().s[117]++;return error;}// #endregion Public Methods
109
118
  // #region Private Methods
110
- UpdateFileCount(){cov_hm7codict().f[39]++;cov_hm7codict().s[109]++;// HACK: Add addition property to FormControl. Can be fixed if solution for ticket: https://github.com/angular/angular/issues/19686
111
- if(this.ngControl){cov_hm7codict().b[21][0]++;cov_hm7codict().s[110]++;this.ngControl.uploadedfilecount=this.UploadedFileCount();}else{cov_hm7codict().b[21][1]++;}}/**
119
+ UpdateFileCount(){cov_hm7codict().f[42]++;cov_hm7codict().s[118]++;// HACK: Add addition property to FormControl. Can be fixed if solution for ticket: https://github.com/angular/angular/issues/19686
120
+ if(this.ngControl){cov_hm7codict().b[21][0]++;cov_hm7codict().s[119]++;this.ngControl.uploadedfilecount=this.UploadedFileCount();}else{cov_hm7codict().b[21][1]++;}}/**
112
121
  * Returns the number of uploaded files
113
- */UploadedFileCount(){cov_hm7codict().f[40]++;cov_hm7codict().s[111]++;return this.uploads.filter(itm=>{cov_hm7codict().f[41]++;cov_hm7codict().s[112]++;return itm.status==='complete';}).length;}/**
122
+ */UploadedFileCount(){cov_hm7codict().f[43]++;cov_hm7codict().s[120]++;return this.uploads.filter(itm=>{cov_hm7codict().f[44]++;cov_hm7codict().s[121]++;return itm.status==='complete';}).length;}/**
114
123
  * Prüft ob die Dateierweiterung gültig ist
115
124
  *
116
125
  * @param filename Dateiname
117
- */isExtensionValid(filename){cov_hm7codict().f[42]++;cov_hm7codict().s[113]++;if(this._allowedtypes==='*'){cov_hm7codict().b[22][0]++;cov_hm7codict().s[114]++;return true;}else{cov_hm7codict().b[22][1]++;}let isValid=(cov_hm7codict().s[115]++,false);const extensions=(cov_hm7codict().s[116]++,this._allowedtypes.split(','));cov_hm7codict().s[117]++;extensions.forEach(itm=>{cov_hm7codict().f[43]++;cov_hm7codict().s[118]++;if(filename.toLowerCase().endsWith(itm.toLowerCase())){cov_hm7codict().b[23][0]++;cov_hm7codict().s[119]++;isValid=true;}else{cov_hm7codict().b[23][1]++;}});cov_hm7codict().s[120]++;return isValid;}/**
126
+ */isExtensionValid(filename){cov_hm7codict().f[45]++;cov_hm7codict().s[122]++;if(this._allowedtypes==='*'){cov_hm7codict().b[22][0]++;cov_hm7codict().s[123]++;return true;}else{cov_hm7codict().b[22][1]++;}let isValid=(cov_hm7codict().s[124]++,false);const extensions=(cov_hm7codict().s[125]++,this._allowedtypes.split(','));cov_hm7codict().s[126]++;extensions.forEach(itm=>{cov_hm7codict().f[46]++;cov_hm7codict().s[127]++;if(filename.toLowerCase().endsWith(itm.toLowerCase())){cov_hm7codict().b[23][0]++;cov_hm7codict().s[128]++;isValid=true;}else{cov_hm7codict().b[23][1]++;}});cov_hm7codict().s[129]++;return isValid;}/**
118
127
  * Prüft ob das File nicht zu gross ist.
119
128
  *
120
129
  * @param filesize Max File Size in Bytes
121
- */isFileSizeValid(filesize){cov_hm7codict().f[44]++;cov_hm7codict().s[121]++;if(this.maxfilesize===0){cov_hm7codict().b[24][0]++;cov_hm7codict().s[122]++;return true;}else{cov_hm7codict().b[24][1]++;}cov_hm7codict().s[123]++;return this.maxfilesize>=filesize;}/**
130
+ */isFileSizeValid(filesize){cov_hm7codict().f[47]++;cov_hm7codict().s[130]++;if(this.maxfilesize===0){cov_hm7codict().b[24][0]++;cov_hm7codict().s[131]++;return true;}else{cov_hm7codict().b[24][1]++;}cov_hm7codict().s[132]++;return this.maxfilesize>=filesize;}/**
122
131
  * Setzt die erlaubten Datentypen für den Upload
123
132
  *
124
133
  * @param types Erlaubte File Extensions
125
- */setAllowedTypes(types){cov_hm7codict().f[45]++;cov_hm7codict().s[124]++;// Prüfen UploadInput bereits geladen, ist NULL wenn Extension im Markup nach NgModel gesetzt wird.
126
- if((cov_hm7codict().b[26][0]++,this.uploadInput)&&(cov_hm7codict().b[26][1]++,this.uploadInput.nativeElement)){cov_hm7codict().b[25][0]++;cov_hm7codict().s[125]++;this.renderer.setAttribute(this.uploadInput.nativeElement,'accept',types);}else{cov_hm7codict().b[25][1]++;}cov_hm7codict().s[126]++;this.options.allowedTypes=types;}/**
134
+ */setAllowedTypes(types){cov_hm7codict().f[48]++;cov_hm7codict().s[133]++;// Prüfen UploadInput bereits geladen, ist NULL wenn Extension im Markup nach NgModel gesetzt wird.
135
+ if((cov_hm7codict().b[26][0]++,this.uploadInput)&&(cov_hm7codict().b[26][1]++,this.uploadInput.nativeElement)){cov_hm7codict().b[25][0]++;cov_hm7codict().s[134]++;this.renderer.setAttribute(this.uploadInput.nativeElement,'accept',types);}else{cov_hm7codict().b[25][1]++;}cov_hm7codict().s[135]++;this.options.allowedTypes=types;}/**
127
136
  * Setzt den Upload Endpoit
128
137
  * @param url Register URI
129
- */setEndpoint(url){cov_hm7codict().f[46]++;cov_hm7codict().s[127]++;this.options.endpoint=url;}}cov_hm7codict().s[128]++;SacUploadBase.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"13.2.7",ngImport:i0,type:SacUploadBase,deps:[{token:i1.SacFormLayoutCommon},{token:i0.Injector},{token:i0.Renderer2},{token:i0.NgZone}],target:i0.ɵɵFactoryTarget.Directive});cov_hm7codict().s[129]++;SacUploadBase.ɵdir=i0.ɵɵngDeclareDirective({minVersion:"12.0.0",version:"13.2.7",type:SacUploadBase,inputs:{isrequired:"isrequired",maxfilesize:"maxfilesize",validationmessagerequired:"validationmessagerequired",validationmessagesummaryrequired:"validationmessagesummaryrequired",allowedtypes:"allowedtypes",autoupload:"autoupload",enablepause:"enablepause",endpoint:"endpoint"},outputs:{onfileerror:"onfileerror"},viewQueries:[{propertyName:"uploadInput",first:true,predicate:["files"],descendants:true,static:true}],usesInheritance:true,ngImport:i0});cov_hm7codict().s[130]++;i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"13.2.7",ngImport:i0,type:SacUploadBase,decorators:[{type:Directive}],ctorParameters:function(){cov_hm7codict().f[47]++;cov_hm7codict().s[131]++;return[{type:i1.SacFormLayoutCommon},{type:i0.Injector},{type:i0.Renderer2},{type:i0.NgZone}];},propDecorators:{uploadInput:[{type:ViewChild,args:['files',{static:true}]}],isrequired:[{type:Input}],maxfilesize:[{type:Input}],validationmessagerequired:[{type:Input}],validationmessagesummaryrequired:[{type:Input}],onfileerror:[{type:Output}],allowedtypes:[{type:Input}],autoupload:[{type:Input}],enablepause:[{type:Input}],endpoint:[{type:Input}]}});/**
138
+ */setEndpoint(url){cov_hm7codict().f[49]++;cov_hm7codict().s[136]++;this.options.endpoint=url;}}cov_hm7codict().s[137]++;SacUploadBase.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"13.2.7",ngImport:i0,type:SacUploadBase,deps:[{token:i1.SacFormLayoutCommon},{token:i0.Injector},{token:i0.Renderer2},{token:i0.NgZone}],target:i0.ɵɵFactoryTarget.Directive});cov_hm7codict().s[138]++;SacUploadBase.ɵdir=i0.ɵɵngDeclareDirective({minVersion:"12.0.0",version:"13.2.7",type:SacUploadBase,inputs:{isrequired:"isrequired",maxfilesize:"maxfilesize",validationmessagerequired:"validationmessagerequired",validationmessagesummaryrequired:"validationmessagesummaryrequired",allowedtypes:"allowedtypes",autoupload:"autoupload",enablepause:"enablepause",endpoint:"endpoint",token:"token"},outputs:{onfileerror:"onfileerror",onuploadcomplete:"onuploadcomplete"},viewQueries:[{propertyName:"uploadInput",first:true,predicate:["files"],descendants:true,static:true}],usesInheritance:true,ngImport:i0});cov_hm7codict().s[139]++;i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"13.2.7",ngImport:i0,type:SacUploadBase,decorators:[{type:Directive}],ctorParameters:function(){cov_hm7codict().f[50]++;cov_hm7codict().s[140]++;return[{type:i1.SacFormLayoutCommon},{type:i0.Injector},{type:i0.Renderer2},{type:i0.NgZone}];},propDecorators:{uploadInput:[{type:ViewChild,args:['files',{static:true}]}],isrequired:[{type:Input}],maxfilesize:[{type:Input}],onfileerror:[{type:Output}],onuploadcomplete:[{type:Output}],validationmessagerequired:[{type:Input}],validationmessagesummaryrequired:[{type:Input}],allowedtypes:[{type:Input}],autoupload:[{type:Input}],enablepause:[{type:Input}],endpoint:[{type:Input}],token:[{type:Input}]}});/**
130
139
  * Klasse für den Upload einer Datei in der Upload Component
131
140
  */export class SacUploadFile{// #endregion Properties
132
141
  // #region Constructors
133
142
  /**
134
143
  * Konstruktor
135
144
  * @param ufile Upload Status
136
- */constructor(ufile){cov_hm7codict().f[48]++;cov_hm7codict().s[132]++;this.uploadId=ufile.uploadId;cov_hm7codict().s[133]++;this.name=ufile.name;cov_hm7codict().s[134]++;this.progress=ufile.progress;cov_hm7codict().s[135]++;this.status=ufile.status;cov_hm7codict().s[136]++;this.documentid=null;}}//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZXVwbG9hZGNvbnRyb2wuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9zYWMtY29tbW9uL3NyYy9jb21tb24vYmFzZXVwbG9hZGNvbnRyb2wudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFFVCxZQUFZLEVBRVosS0FBSyxFQUlMLE1BQU0sRUFFTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osdUJBQXVCLEVBQ3ZCLGVBQWUsRUFHZixjQUFjLEdBQ2YsTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUl0QyxPQUFPLEVBQ0wsd0JBQXdCLEVBQ3hCLDhCQUE4QixHQUMvQixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLDZCQUE2QixHQUM5QixNQUFNLHNDQUFzQyxDQUFDO0FBQzlDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7OztBQUV6RCxrQkFBa0I7QUFFbEI7O0dBRUc7QUFFSCxNQUFNLE9BQWdCLGFBQ3BCLFNBQVEsbUJBQTBCO0lBa0ZsQyx3QkFBd0I7SUFFeEIsdUJBQXVCO0lBRXZCOzs7Ozs7T0FNRztJQUNILFlBQ0UsVUFBK0IsRUFDL0IsUUFBa0IsRUFDVixRQUFtQixFQUNuQixNQUFjO1FBRXRCLEtBQUssQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFIcEIsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNuQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBdEZ4Qjs7V0FFRztRQUNLLGtCQUFhLEdBQVcsR0FBRyxDQUFDO1FBQ3BDOztXQUVHO1FBQ0ssZ0JBQVcsR0FBWSxLQUFLLENBQUM7UUFDckM7O1dB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QUM7UUFDM0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7SUFDekIsQ0FBQztDQUdGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBEaXJlY3RpdmUsXHJcbiAgRWxlbWVudFJlZixcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5qZWN0b3IsXHJcbiAgSW5wdXQsXHJcbiAgTmdab25lLFxyXG4gIE9uRGVzdHJveSxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFJlbmRlcmVyMixcclxuICBWaWV3Q2hpbGQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgVmFsaWRhdGlvbkVycm9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHtcclxuICBJZFNlcnZpY2UsXHJcbiAgVVBMT0FEWF9BSkFYLFxyXG4gIFVQTE9BRFhfRkFDVE9SWV9PUFRJT05TLFxyXG4gIFVQTE9BRFhfT1BUSU9OUyxcclxuICBVcGxvYWRTdGF0ZSxcclxuICBVcGxvYWR4T3B0aW9ucyxcclxuICBVcGxvYWR4U2VydmljZSxcclxufSBmcm9tICduZ3gtdXBsb2FkeCc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFNhY0Zvcm1MYXlvdXRDb21tb24gfSBmcm9tICcuLi9jb250cm9scy9sYXlvdXQvZm9ybWxheW91dCc7XHJcbmltcG9ydCB7IElTYWNMb2NhbGlzYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9JU2FjTG9jYWxpc2F0aW9uU2VydmljZSc7XHJcbmltcG9ydCB7IElVcGxvYWRDb250cm9sIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9pdXBsb2FkY29udHJvbCc7XHJcbmltcG9ydCB7XHJcbiAgU0FDVkFMSURBVElPTktFWV9TRVJWSUNFLFxyXG4gIFNhY0RlZmF1bHRWYWxpZGF0aW9uS2V5U2VydmljZSxcclxufSBmcm9tICcuLi9zZXJ2aWNlcyc7XHJcbmltcG9ydCB7XHJcbiAgU0FDTE9DQUxJU0FUSU9OX1NFUlZJQ0UsXHJcbiAgU2FjRGVmYXVsdExvY2FsaXNhdGlvblNlcnZpY2UsXHJcbn0gZnJvbSAnLi4vc2VydmljZXMvc2FjLWxvY2FsaXNhdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVmFsaWRhdGlvbiB9IGZyb20gJy4uL3ZhbGlkYXRpb24nO1xyXG5pbXBvcnQgeyBTYWNCYXNlTW9kZWxDb250cm9sIH0gZnJvbSAnLi9iYXNlbW9kZWxjb250cm9sJztcclxuXHJcbi8vICNyZWdpb24gQ2xhc3Nlc1xyXG5cclxuLyoqXHJcbiAqIEJhc2UgS2xhc3NlIGbDvHIgVXBsb2FkZXIgQ29udHJvbFxyXG4gKi9cclxuQERpcmVjdGl2ZSgpXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBTYWNVcGxvYWRCYXNlPFZBTFVFPlxyXG4gIGV4dGVuZHMgU2FjQmFzZU1vZGVsQ29udHJvbDxWQUxVRT5cclxuICBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95XHJcbntcclxuICAvLyAjcmVnaW9uIFByb3BlcnRpZXNcclxuXHJcbiAgLyoqXHJcbiAgICogRmlsZSBJbnB1dCBDb250cm9sXHJcbiAgICovXHJcbiAgQFZpZXdDaGlsZCgnZmlsZXMnLCB7IHN0YXRpYzogdHJ1ZSB9KVxyXG4gIHByaXZhdGUgdXBsb2FkSW5wdXQ6IEVsZW1lbnRSZWY7XHJcblxyXG4gIC8qKlxyXG4gICAqIEVybGF1YnRlIERhdGVpdHlwZW5cclxuICAgKi9cclxuICBwcml2YXRlIF9hbGxvd2VkdHlwZXM6IHN0cmluZyA9ICcqJztcclxuICAvKipcclxuICAgKiBGaWxlcyBhdXRvbWF0aXNjaCBob2NobGFkZW5cclxuICAgKi9cclxuICBwcml2YXRlIF9hdXRvdXBsb2FkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgLyoqXHJcbiAgICogUGF1c2llcmVuIHZvbiBVcGxvYWRzIGVybGF1YmVuXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBfZW5hYmxlcGF1c2U6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIC8qKlxyXG4gICAqIEFQSSBFbmRwb2ludFxyXG4gICAqL1xyXG4gIHByaXZhdGUgX2VuZHBvaW50OiBzdHJpbmcgPSBudWxsO1xyXG4gIC8qKlxyXG4gICAqIFVwbG9hZCBTZXR0aW5nc1xyXG4gICAqL1xyXG4gIHByaXZhdGUgb3B0aW9uczogVXBsb2FkeE9wdGlvbnMgPSB7fTtcclxuXHJcbiAgLyoqXHJcbiAgICogVXBsb2FkIFNlcnZpY2VcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgdXBsb2FkU2VydmljZTogVXBsb2FkeFNlcnZpY2U7XHJcblxyXG4gIC8qKlxyXG4gICAqIERlZmluaWVydCBkYXMgQ29udHJvbCBhbHMgUmVxdWlyZWRcclxuICAgKi9cclxuICBASW5wdXQoKSBwdWJsaWMgaXNyZXF1aXJlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIC8qKlxyXG4gICAqIE1heC4gRGF0ZWlncsO2c3NlIGbDvHIgRmlsZXMgZGllIGhvY2hnZWxhZGVuIHdlcmRlbiBrw7ZubmVuLiAwIGRlYWt0aXZpZXJ0IGRlbiBGaWx0ZXJcclxuICAgKi9cclxuICBASW5wdXQoKSBwdWJsaWMgbWF4ZmlsZXNpemU6IG51bWJlciA9IDA7XHJcbiAgLyoqXHJcbiAgICogUmVzb3VyY2UgS2V5IGbDvHIgVmFsaWRhdGlvbiBNZXNzYWdlIFJlcXVpcmVkIGJlaSBDb250cm9sXHJcbiAgICovXHJcbiAgQElucHV0KCkgcHVibGljIHZhbGlkYXRpb25tZXNzYWdlcmVxdWlyZWQ6IHN0cmluZyA9XHJcbiAgICB0aGlzLnZhbGlkYXRpb25LZXlTZXJ2aWNlLlZhbGlkYXRpb25FcnJvclJlcXVpcmVkO1xyXG4gIC8qKlxyXG4gICAqIFJlc291cmNlIEtleSBmw7xyIFZhbGlkYXRpb24gTWVzc2FnZSBSZXF1aXJlZCBpbiBWYWxpZGF0aW9uIFN1bW1hcnlcclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyB2YWxpZGF0aW9ubWVzc2FnZXN1bW1hcnlyZXF1aXJlZDogc3RyaW5nID1cclxuICAgIHRoaXMudmFsaWRhdGlvbktleVNlcnZpY2UuVmFsaWRhdGlvbkVycm9yU3VtbWFyeVJlcXVpcmVkO1xyXG4gIC8qKlxyXG4gICAqIEV2ZW50IHdlbm4gZWluIEVycm9yIGluIGRlciBLb21wb25lbnRlIGF1c2dlbMO2c3Qgd2lyZC5cclxuICAgKi9cclxuICBAT3V0cHV0KCkgcHVibGljIG9uZmlsZWVycm9yID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcblxyXG4gIC8qKlxyXG4gICAqIEhhbmRsaW5nIHZvbiBuZXVlbiBGaWxlcyBpbSBJbnB1dCBDb250cm9sXHJcbiAgICovXHJcbiAgcHVibGljIGZpbGVMaXN0ZW5lciA9ICgpID0+IHtcclxuICAgIGlmICh0aGlzLnVwbG9hZElucHV0Lm5hdGl2ZUVsZW1lbnQuZmlsZXMpIHtcclxuICAgICAgdGhpcy51cGxvYWRTZXJ2aWNlLmhhbmRsZUZpbGVzKHRoaXMudXBsb2FkSW5wdXQubmF0aXZlRWxlbWVudC5maWxlcyk7XHJcbiAgICB9XHJcbiAgfTtcclxuICAvKipcclxuICAgKiBMaXN0ZW5lciBmw7xyIEZpbGVzXHJcbiAgICovXHJcbiAgcHVibGljIGxpc3RlbmVyRm46ICgpID0+IHZvaWQ7XHJcbiAgLyoqXHJcbiAgICogU2VydmljZSBmw7xyIEVycm9yIExvY2FsaXNhdGlvblxyXG4gICAqL1xyXG4gIHB1YmxpYyBsbmdSZXNvdXJjZVNlcnZpY2U6IElTYWNMb2NhbGlzYXRpb25TZXJ2aWNlO1xyXG4gIC8qKlxyXG4gICAqIEFycmF5IHZvbiBVcGxvYWRzXHJcbiAgICovXHJcbiAgcHVibGljIHVwbG9hZHM6IFNhY1VwbG9hZEZpbGVbXTtcclxuXHJcbiAgLy8gI2VuZHJlZ2lvbiBQcm9wZXJ0aWVzXHJcblxyXG4gIC8vICNyZWdpb24gQ29uc3RydWN0b3JzXHJcblxyXG4gIC8qKlxyXG4gICAqIENvbnN0cnVjdG9yXHJcbiAgICogQHBhcmFtIGZvcm1sYXlvdXQgU2FjRm9ybUxheW91dENvbW1vbiB0byBkZWZpbmUgc2NvcGVkIGxheW91dCBzZXR0aW5nc1xyXG4gICAqIEBwYXJhbSBpbmplY3RvciBJbmplY3RvciBmb3IgaW5qZWN0aW5nIHNlcnZpY2VzXHJcbiAgICogQHBhcmFtIHJlbmRlcmVyIGFuZ3VsYXIgcmVuZGVyaW5nIGVuZ2luZVxyXG4gICAqIEBwYXJhbSBuZ1pvbmUgbmd6b25lIGZvciBoYW5kbGluZyBleHRlcm5hbCBzY3JpcHRzXHJcbiAgICovXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBmb3JtbGF5b3V0OiBTYWNGb3JtTGF5b3V0Q29tbW9uLFxyXG4gICAgaW5qZWN0b3I6IEluamVjdG9yLFxyXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxyXG4gICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZVxyXG4gICkge1xyXG4gICAgc3VwZXIoZm9ybWxheW91dCwgaW5qZWN0b3IpO1xyXG5cclxuICAgIHRoaXMudmFsaWRhdGlvbktleVNlcnZpY2UgPSBpbmplY3Rvci5nZXQoXHJcbiAgICAgIFNBQ1ZBTElEQVRJT05LRVlfU0VSVklDRSxcclxuICAgICAgbmV3IFNhY0RlZmF1bHRWYWxpZGF0aW9uS2V5U2VydmljZSgpXHJcbiAgICApO1xyXG5cclxuICAgIHRoaXMubG5nUmVzb3VyY2VTZXJ2aWNlID0gaW5qZWN0b3IuZ2V0KFxyXG4gICAgICBTQUNMT0NBTElTQVRJT05fU0VSVklDRSxcclxuICAgICAgbmV3IFNhY0RlZmF1bHRMb2NhbGlzYXRpb25TZXJ2aWNlKHRoaXMudmFsaWRhdGlvbktleVNlcnZpY2UpXHJcbiAgICApO1xyXG5cclxuICAgIHRoaXMudXBsb2FkcyA9IFtdO1xyXG5cclxuICAgIHRoaXMub3B0aW9ucy5hbGxvd2VkVHlwZXMgPSAnKic7XHJcbiAgICB0aGlzLm9wdGlvbnMuY29uY3VycmVuY3kgPSAxO1xyXG4gICAgdGhpcy5vcHRpb25zLnRva2VuID0gJ3NvbWV0b2tlbic7XHJcbiAgICB0aGlzLm9wdGlvbnMuYXV0b1VwbG9hZCA9IHRoaXMuX2F1dG91cGxvYWQ7XHJcbiAgICB0aGlzLm9wdGlvbnMud2l0aENyZWRlbnRpYWxzID0gdHJ1ZTtcclxuICAgIHRoaXMub3B0aW9ucy5jaHVua1NpemUgPSAxMDI0ICogMTYgKiA4O1xyXG4gICAgdGhpcy5vcHRpb25zLmhlYWRlcnMgPSAoZjogRmlsZSkgPT4gKHtcclxuICAgICAgJ0NvbnRlbnQtRGlzcG9zaXRpb24nOiBgZmlsZW5hbWU9JHtlbmNvZGVVUkkoZi5uYW1lKX1gLFxyXG4gICAgfSk7XHJcblxyXG4gICAgLy8gSW5pdCBuZXcgU2VydmljZSBJbnN0YW5jZVxyXG4gICAgdGhpcy51cGxvYWRTZXJ2aWNlID0gbmV3IFVwbG9hZHhTZXJ2aWNlKFxyXG4gICAgICBpbmplY3Rvci5nZXQoVVBMT0FEWF9PUFRJT05TLCBudWxsKSxcclxuICAgICAgaW5qZWN0b3IuZ2V0KFVQTE9BRFhfRkFDVE9SWV9PUFRJT05TKSxcclxuICAgICAgaW5qZWN0b3IuZ2V0KFVQTE9BRFhfQUpBWCksXHJcbiAgICAgIHRoaXMubmdab25lLFxyXG4gICAgICBpbmplY3Rvci5nZXQoSWRTZXJ2aWNlKVxyXG4gICAgKTtcclxuICAgIHRoaXMudXBsb2FkU2VydmljZS5pbml0KHRoaXMub3B0aW9ucyk7XHJcblxyXG4gICAgLy8gU3Vic2NyaXBlIEV2ZW50IGZvciBTdGF0ZSBjaGFuZ2VzXHJcbiAgICB0aGlzLnVwbG9hZFNlcnZpY2UuZXZlbnRzLnN1YnNjcmliZSgodWZpbGU6IFVwbG9hZFN0YXRlKSA9PlxyXG4gICAgICB0aGlzLm9uVXBsb2FkKHVmaWxlKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8vICNlbmRyZWdpb24gQ29uc3RydWN0b3JzXHJcblxyXG4gIC8vICNyZWdpb24gUHVibGljIEdldHRlcnMgQW5kIFNldHRlcnNcclxuXHJcbiAgLyoqXHJcbiAgICogRXJsYXVidGUgRGF0ZWl0eXBlbiBmw7xyIGRlbiBVcGxvYWQuIEZvcm1hdDogXCIueHh4LC55eXksLnp6elwiXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2V0IGFsbG93ZWR0eXBlcyh0eXBlczogc3RyaW5nKSB7XHJcbiAgICB0aGlzLl9hbGxvd2VkdHlwZXMgPSB0eXBlcztcclxuICAgIHRoaXMuc2V0QWxsb3dlZFR5cGVzKHR5cGVzKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZpbGVzIG5hY2ggZGVyIEF1c3dhaGwgYXV0b21hdGlzY2ggaG9jaGxhZGVuXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2V0IGF1dG91cGxvYWQodjogYm9vbGVhbikge1xyXG4gICAgdGhpcy5fYXV0b3VwbG9hZCA9IHY7XHJcbiAgICB0aGlzLm9wdGlvbnMuYXV0b1VwbG9hZCA9IHY7XHJcbiAgICB0aGlzLnVwbG9hZFNlcnZpY2UuY29ubmVjdCh0aGlzLm9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVXBsb2FkcyBrw7ZubmVuIHVudGVyYnJvY2hlbiB3ZXJkZW5cclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzZXQgZW5hYmxlcGF1c2UodjogYm9vbGVhbikge1xyXG4gICAgdGhpcy5fZW5hYmxlcGF1c2UgPSB2O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGVmaW5pZXJ0IGRlbiBSZWdpc3RyYXRpb24gRW5kcG9pbnQgZsO8ciBVcGxvYWRzLlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNldCBlbmRwb2ludCh2OiBzdHJpbmcpIHtcclxuICAgIHRoaXMuX2VuZHBvaW50ID0gdjtcclxuICAgIHRoaXMuc2V0RW5kcG9pbnQodik7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBJY29uIGZvciBicm93c2UgYnV0dG9uXHJcbiAgICovXHJcbiAgcHVibGljIGdldCBJY29uQnJvd3NlKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5pY29uU2VydmljZS5VcGxvYWRDb21wb25lbnRCcm93c2VJY29uO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogaWNvbiBmb3IgY29udGlub3VzIGJ1dHRvbnNcclxuICAgKi9cclxuICBwdWJsaWMgZ2V0IEljb25Db250aW51ZSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuaWNvblNlcnZpY2UuVXBsb2FkQ29tcG9uZW50Q29udGludWVJY29uO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogaWNvbiBmb3IgZGVsZXRlIGJ1dHRvbnNcclxuICAgKi9cclxuICBwdWJsaWMgZ2V0IEljb25EZWxldGUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmljb25TZXJ2aWNlLlVwbG9hZENvbXBvbmVudERlbGV0ZUljb247XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBpY29uIGZvciBwYXVzZSBidXR0b25zXHJcbiAgICovXHJcbiAgcHVibGljIGdldCBJY29uUGF1c2UoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmljb25TZXJ2aWNlLlVwbG9hZENvbXBvbmVudFBhdXNlSWNvbjtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIGljb24gZm9yIHVwbG9hZCBidXR0b25cclxuICAgKi9cclxuICBwdWJsaWMgZ2V0IEljb25VcGxvYWQoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmljb25TZXJ2aWNlLlVwbG9hZENvbXBvbmVudFVwbG9hZEljb247XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGFsbG93ZWR0eXBlcygpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX2FsbG93ZWR0eXBlcztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgYXV0b3VwbG9hZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9hdXRvdXBsb2FkO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBlbmFibGVwYXVzZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9lbmFibGVwYXVzZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgZW5kcG9pbnQoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9lbmRwb2ludDtcclxuICB9XHJcblxyXG4gIC8vICNlbmRyZWdpb24gUHVibGljIEdldHRlcnMgQW5kIFNldHRlcnNcclxuXHJcbiAgLy8gI3JlZ2lvbiBQdWJsaWMgTWV0aG9kc1xyXG5cclxuICAvKipcclxuICAgKiBOYW1lIGRlciBEYXRlaSBkaWUgSG9jaGdlbGFkZW4gd2lyZFxyXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGUgZGVzIERhdGVpbmFtZW5zLlxyXG4gICAqL1xyXG4gIHB1YmxpYyBGaWxlbmFtZSgpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xyXG4gICAgaWYgKHRoaXMudXBsb2Fkcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHJldHVybiBvZih0aGlzLnVwbG9hZHNbMF0ubmFtZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gdGhpcy5sbmdSZXNvdXJjZVNlcnZpY2UuR2V0U3RyaW5nKFxyXG4gICAgICAgIHRoaXMudmFsaWRhdGlvbktleVNlcnZpY2UuVXBsb2FkTm9GaWxlc1NlbGVjdGVkXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHaWJ0IGFuIG9iIFF1ZXVlIEVsZW1lbnRlIGJlaW5oYWx0ZXRcclxuICAgKiBAcmV0dXJucyBFbGVtZW50ZSBpbiBkZXIgUXVldWVcclxuICAgKi9cclxuICBwdWJsaWMgSGFzUXVldWVJdGVtKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMudXBsb2Fkcy5sZW5ndGggPiAwO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2lidCBhbiBvYiBlaW4gVXBsb2FkIGFiZ2VzY2hsb3NzZW4gaXN0XHJcbiAgICogQHJldHVybnMgVXBsb2FkIGVyZm9sZ3JlaWNoXHJcbiAgICovXHJcbiAgcHVibGljIEhhc1N1Y2Nlc3NVcGxvYWQoKTogYm9vbGVhbiB7XHJcbiAgICBpZiAodGhpcy51cGxvYWRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgcmV0dXJuIChcclxuICAgICAgICB0aGlzLnVwbG9hZHMuZmlsdGVyKChpdG0pID0+IGl0bS5zdGF0dXMgIT09ICdjb21wbGV0ZScpLmxlbmd0aCA9PT0gMFxyXG4gICAgICApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUHLDvGZ0IG9iIGVpbiBVcGxvYWQgcGF1c2llcnRcclxuICAgKiBAcmV0dXJucyBQYXVzaWVydGVyIFVwbG9hZCBpc3Qgdm9yaGFuZGVuXHJcbiAgICovXHJcbiAgcHVibGljIElzUGF1c2VkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMudXBsb2Fkcy5maWx0ZXIoKGl0bSkgPT4gaXRtLnN0YXR1cyA9PT0gJ3BhdXNlZCcpLmxlbmd0aCA+IDA7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBQcsO8ZnQgb2IgaW4gZGVyIFF1ZXVlIEVsZW1lbnRlIGRpZSB6dW0gVXBsb2FkIGJlcmVpdCBzaW5kIHZvcmhhbmRlbiBzaW5kLlxyXG4gICAqIEByZXR1cm5zIEVsZW1lbnRlIGbDvHIgVXBsb2FkIHZvcmhhbmRlblxyXG4gICAqL1xyXG4gIHB1YmxpYyBJc1N0YXRlVG9VcGxvYWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICB0aGlzLnVwbG9hZHMuZmlsdGVyKFxyXG4gICAgICAgIChpdG0pID0+IGl0bS5zdGF0dXMgPT09ICdhZGRlZCcgfHwgaXRtLnN0YXR1cyA9PT0gJ3BhdXNlZCdcclxuICAgICAgKS5sZW5ndGggPiAwXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUHLDvGZ0IG9iIGVpbiBVcGxvYWQgZWluZXMgRmlsZXMgYW0gbGF1ZmVuIGlzdFxyXG4gICAqIEByZXR1cm5zIFVwbG9hZCBpc3QgYW0gbGF1ZmVuXHJcbiAgICovXHJcbiAgcHVibGljIElzVXBsb2FkaW5nKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMudXBsb2Fkcy5maWx0ZXIoKGl0bSkgPT4gaXRtLnN0YXR1cyA9PT0gJ3VwbG9hZGluZycpLmxlbmd0aCA+IDA7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHaWJ0IGRlbiBVcGxvYWRmb3J0c2Nocml0dCB6dXLDvGNrXHJcbiAgICogQHJldHVybnMgVXBsb2FkIEZvcnRzY2hyaXR0LiBXZXJ0IHZvbiAwLTEwMFxyXG4gICAqL1xyXG4gIHB1YmxpYyBQcm9ncmVzcygpOiBudW1iZXIge1xyXG4gICAgaWYgKHRoaXMudXBsb2Fkcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnVwbG9hZHNbMF0ucHJvZ3Jlc3M7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gMDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENhbmNlbCBzaW5nbGUgdXBsb2FkXHJcbiAgICogQHBhcmFtIHVwbG9hZElkIElEIG9mIEZpbGUgdG8gY2FuY2VsXHJcbiAgICovXHJcbiAgcHVibGljIGNhbmNlbCh1cGxvYWRJZCkge1xyXG4gICAgdGhpcy51cGxvYWRTZXJ2aWNlLmNvbnRyb2woeyBhY3Rpb246ICdjYW5jZWwnLCB1cGxvYWRJZDogdXBsb2FkSWQgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDYW5jZWwgYWxsIFVwbG9hZGVkIGZpbGVzXHJcbiAgICovXHJcbiAgcHVibGljIGNhbmNlbEFsbCgpIHtcclxuICAgIGlmICh0aGlzLkhhc1F1ZXVlSXRlbSgpID09PSB0cnVlKSB7XHJcbiAgICAgIHRoaXMudXBsb2FkU2VydmljZS5jb250cm9sKHsgYWN0aW9uOiAnY2FuY2VsJyB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERlc3Ryb3kgZGVzIENvbnRyb2xzXHJcbiAgICovXHJcbiAgcHVibGljIG5nT25EZXN0cm95KCkge1xyXG4gICAgaWYgKHRoaXMubGlzdGVuZXJGbikge1xyXG4gICAgICB0aGlzLmxpc3RlbmVyRm4oKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEluaXRpYWxpc2llcnQgZGFzIENvbnRyb2xcclxuICAgKi9cclxuICBwdWJsaWMgbmdPbkluaXQoKSB7XHJcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xyXG4gICAgLy8gSW5pdCBFdmVudCBMaXN0ZW5lciBmb3IgSW5wdXQgRmlsZSBDb250cm9sIGFuZCBIYW5kbGluZyBGaWxlc1xyXG4gICAgdGhpcy5saXN0ZW5lckZuID0gdGhpcy5yZW5kZXJlci5saXN0ZW4oXHJcbiAgICAgIHRoaXMudXBsb2FkSW5wdXQubmF0aXZlRWxlbWVudCxcclxuICAgICAgJ2NoYW5nZScsXHJcbiAgICAgIHRoaXMuZmlsZUxpc3RlbmVyXHJcbiAgICApO1xyXG5cclxuICAgIHRoaXMuc2V0QWxsb3dlZFR5cGVzKHRoaXMuX2FsbG93ZWR0eXBlcyk7XHJcbiAgICB0aGlzLnNldEVuZHBvaW50KHRoaXMuX2VuZHBvaW50KTtcclxuXHJcbiAgICBpZiAodGhpcy5fZW5kcG9pbnQgPT09IG51bGwpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdlbmRwb2ludCBpcyBub3QgZGVmaW5lZCEnKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnVwbG9hZFNlcnZpY2UuY29ubmVjdCh0aGlzLm9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVXBsb2FkIEV2ZW50XHJcbiAgICpcclxuICAgKiBAcGFyYW0gdXBsb2Fkc091dFN0cmVhbSBVcGxvYWQgSXRlbVxyXG4gICAqL1xyXG4gIHB1YmxpYyBvblVwbG9hZCh1ZmlsZTogVXBsb2FkU3RhdGUpIHtcclxuICAgIGNvbnN0IGluZGV4ID0gdGhpcy51cGxvYWRzLmZpbmRJbmRleCgoZikgPT4gZi51cGxvYWRJZCA9PT0gdWZpbGUudXBsb2FkSWQpO1xyXG5cclxuICAgIGlmICh1ZmlsZS5zdGF0dXMgPT09ICdhZGRlZCcgfHwgKHVmaWxlLnN0YXR1cyA9PT0gJ3F1ZXVlJyAmJiBpbmRleCA8IDApKSB7XHJcbiAgICAgIGlmIChcclxuICAgICAgICB0aGlzLmlzRXh0ZW5zaW9uVmFsaWQodWZpbGUubmFtZSkgJiZcclxuICAgICAgICB0aGlzLmlzRmlsZVNpemVWYWxpZCh1ZmlsZS5zaXplKSAmJlxyXG4gICAgICAgIHRoaXMuQ3VzdG9tQWRkVmFsaWRhdGlvbih1ZmlsZSlcclxuICAgICAgKSB7XHJcbiAgICAgICAgdGhpcy51cGxvYWRzLnB1c2gobmV3IFNhY1VwbG9hZEZpbGUodWZpbGUpKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmNhbmNlbCh1ZmlsZS51cGxvYWRJZCk7XHJcblxyXG4gICAgICAgIGlmICghdGhpcy5pc0V4dGVuc2lvblZhbGlkKHVmaWxlLm5hbWUpKSB7XHJcbiAgICAgICAgICB0aGlzLm9uZmlsZWVycm9yLmVtaXQoJ0lOVkFMSURfRVhURU5TSU9OJyk7XHJcbiAgICAgICAgfSBlbHNlIGlmICghdGhpcy5pc0ZpbGVTaXplVmFsaWQodWZpbGUuc2l6ZSkpIHtcclxuICAgICAgICAgIHRoaXMub25maWxlZXJyb3IuZW1pdCgnSU5WQUxJRF9GSUxFU0laRScpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmICh1ZmlsZS5zdGF0dXMgPT09ICdjYW5jZWxsZWQnKSB7XHJcbiAgICAgIGlmIChpbmRleCA+PSAwKSB7XHJcbiAgICAgICAgdGhpcy51cGxvYWRzLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuU2V0VXBsb2FkVmFsdWUobnVsbCk7XHJcbiAgICB9IGVsc2UgaWYgKHVmaWxlLnN0YXR1cyA9PT0gJ2NvbXBsZXRlJykge1xyXG4gICAgICB0aGlzLnVwbG9hZHNbaW5kZXhdLnByb2dyZXNzID0gdWZpbGUucHJvZ3Jlc3M7XHJcbiAgICAgIHRoaXMudXBsb2Fkc1tpbmRleF0uc3RhdHVzID0gdWZpbGUuc3RhdHVzO1xyXG4gICAgICB0aGlzLlNldFVwbG9hZFZhbHVlKHVmaWxlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmIChpbmRleCA+PSAwKSB7XHJcbiAgICAgICAgdGhpcy51cGxvYWRzW2luZGV4XS5wcm9ncmVzcyA9IHVmaWxlLnByb2dyZXNzO1xyXG4gICAgICAgIHRoaXMudXBsb2Fkc1tpbmRleF0uc3RhdHVzID0gdWZpbGUuc3RhdHVzO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5VcGRhdGVGaWxlQ291bnQoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENhbmNlbCBTaW5nbGUgRmlsZVxyXG4gICAqIEBwYXJhbSB1cGxvYWRJZCBJRCBvZiBGaWxlIHRvIENhbmNlbFxyXG4gICAqL1xyXG4gIHB1YmxpYyBwYXVzZSh1cGxvYWRJZCkge1xyXG4gICAgdGhpcy51cGxvYWRTZXJ2aWNlLmNvbnRyb2woeyBhY3Rpb246ICdwYXVzZScsIHVwbG9hZElkIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUGF1c2UgYWxsIFVwbG9hZHNcclxuICAgKi9cclxuICBwdWJsaWMgcGF1c2VBbGwoKSB7XHJcbiAgICBpZiAodGhpcy5Jc1VwbG9hZGluZygpID09PSB0cnVlKSB7XHJcbiAgICAgIHRoaXMudXBsb2FkU2VydmljZS5jb250cm9sKHsgYWN0aW9uOiAncGF1c2UnIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVXBsb2FkIFNpbmdsZSBGaWxlXHJcbiAgICpcclxuICAgKiBAcGFyYW0gdXBsb2FkSWQgSUQgb2YgRmlsZSB0byBVcGxvYWRcclxuICAgKi9cclxuICBwdWJsaWMgdXBsb2FkKHVwbG9hZElkKSB7XHJcbiAgICB0aGlzLnVwbG9hZFNlcnZpY2UuY29udHJvbCh7IGFjdGlvbjogJ3VwbG9hZCcsIHVwbG9hZElkIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVXBsb2FkIGFsbCBxdWV1ZWQgRmlsZXNcclxuICAgKi9cclxuICBwdWJsaWMgdXBsb2FkQWxsKCkge1xyXG4gICAgaWYgKHRoaXMuSXNTdGF0ZVRvVXBsb2FkKCkgPT09IHRydWUpIHtcclxuICAgICAgdGhpcy51cGxvYWRTZXJ2aWNlLmNvbnRyb2woeyBhY3Rpb246ICd1cGxvYWQnIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVmFsaWRpZXJ0IGRhcyBVcGxvYWQgQ29udHJvbFxyXG4gICAqIEBwYXJhbSBjIENvbnRyb2wgZGFzIHZhbGlkaWVydCB3ZXJkZW4gc29sbFxyXG4gICAqL1xyXG4gIHB1YmxpYyB2YWxpZGF0ZURhdGEoYzogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xyXG4gICAgbGV0IGVycm9yOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gICAgaWYgKHRoaXMuaXNyZXF1aXJlZCkge1xyXG4gICAgICBlcnJvciA9IFZhbGlkYXRpb24ucmVxdWlyZWQoXHJcbiAgICAgICAgdGhpcy52YWxpZGF0aW9ubWVzc2FnZXJlcXVpcmVkLFxyXG4gICAgICAgIHRoaXMudmFsaWRhdGlvbm1lc3NhZ2VzdW1tYXJ5cmVxdWlyZWRcclxuICAgICAgKShjKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZXJyb3I7XHJcbiAgfVxyXG5cclxuICAvLyAjZW5kcmVnaW9uIFB1YmxpYyBNZXRob2RzXHJcblxyXG4gIC8vICNyZWdpb24gUHVibGljIEFic3RyYWN0IE1ldGhvZHNcclxuXHJcbiAgLyoqXHJcbiAgICogTWV0aG9kZSBrYW5uIGbDvHIgQ29udHJvbHMgdmVyd2VuZGV0IHdlcmRlbiwgenVzw6R0emxpY2hlIFZhbGlkaWVydW5nZW4gYmVpIGhpbnp1ZsO8Z2VuIGRlciBGaWxlcyB6dSBtYWNoZW5cclxuICAgKlxyXG4gICAqIEBwYXJhbSBmaWxlIEZpbGUgZGFzIGhpbnp1Z2Vmw7xndCB3dXJkZS5cclxuICAgKiBAcmV0dXJucyBWYWxkaWVydW5nIGlzdCBlcmZvbGdyZWljaFxyXG4gICAqL1xyXG4gIHB1YmxpYyBhYnN0cmFjdCBDdXN0b21BZGRWYWxpZGF0aW9uKGZpbGU6IFVwbG9hZFN0YXRlKTogYm9vbGVhbjtcclxuICAvKipcclxuICAgKiBNZXRob2RlIHdlbGNoZSBkaWUgVXBsb2FkIElEJ3MgaW4gZGFzIE1vZGVsIHNldHp0IG9kZXIgbMO2c2NodFxyXG4gICAqXHJcbiAgICogQHBhcmFtIGZpbGUgVHlwZSB2b24gRmlsZSBJRCdzXHJcbiAgICovXHJcbiAgcHVibGljIGFic3RyYWN0IFNldFVwbG9hZFZhbHVlKGZpbGU6IFVwbG9hZFN0YXRlKTogdm9pZDtcclxuXHJcbiAgLy8gI2VuZHJlZ2lvbiBQdWJsaWMgQWJzdHJhY3QgTWV0aG9kc1xyXG5cclxuICAvLyAjcmVnaW9uIFByaXZhdGUgTWV0aG9kc1xyXG5cclxuICBwcml2YXRlIFVwZGF0ZUZpbGVDb3VudCgpOiB2b2lkIHtcclxuICAgIC8vIEhBQ0s6IEFkZCBhZGRpdGlvbiBwcm9wZXJ0eSB0byBGb3JtQ29udHJvbC4gQ2FuIGJlIGZpeGVkIGlmIHNvbHV0aW9uIGZvciB0aWNrZXQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvaXNzdWVzLzE5Njg2XHJcbiAgICBpZiAodGhpcy5uZ0NvbnRyb2wpIHtcclxuICAgICAgKHRoaXMubmdDb250cm9sIGFzIHVua25vd24gYXMgSVVwbG9hZENvbnRyb2wpLnVwbG9hZGVkZmlsZWNvdW50ID1cclxuICAgICAgICB0aGlzLlVwbG9hZGVkRmlsZUNvdW50KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgdXBsb2FkZWQgZmlsZXNcclxuICAgKi9cclxuICBwcml2YXRlIFVwbG9hZGVkRmlsZUNvdW50KCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy51cGxvYWRzLmZpbHRlcigoaXRtKSA9PiBpdG0uc3RhdHVzID09PSAnY29tcGxldGUnKS5sZW5ndGg7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBQcsO8ZnQgb2IgZGllIERhdGVpZXJ3ZWl0ZXJ1bmcgZ8O8bHRpZyBpc3RcclxuICAgKlxyXG4gICAqIEBwYXJhbSBmaWxlbmFtZSBEYXRlaW5hbWVcclxuICAgKi9cclxuICBwcml2YXRlIGlzRXh0ZW5zaW9uVmFsaWQoZmlsZW5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHRoaXMuX2FsbG93ZWR0eXBlcyA9PT0gJyonKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBpc1ZhbGlkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBjb25zdCBleHRlbnNpb25zOiBzdHJpbmdbXSA9IHRoaXMuX2FsbG93ZWR0eXBlcy5zcGxpdCgnLCcpO1xyXG5cclxuICAgIGV4dGVuc2lvbnMuZm9yRWFjaCgoaXRtKSA9PiB7XHJcbiAgICAgIGlmIChmaWxlbmFtZS50b0xvd2VyQ2FzZSgpLmVuZHNXaXRoKGl0bS50b0xvd2VyQ2FzZSgpKSkge1xyXG4gICAgICAgIGlzVmFsaWQgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gaXNWYWxpZDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFByw7xmdCBvYiBkYXMgRmlsZSBuaWNodCB6dSBncm9zcyBpc3QuXHJcbiAgICpcclxuICAgKiBAcGFyYW0gZmlsZXNpemUgTWF4IEZpbGUgU2l6ZSBpbiBCeXRlc1xyXG4gICAqL1xyXG4gIHByaXZhdGUgaXNGaWxlU2l6ZVZhbGlkKGZpbGVzaXplOiBudW1iZXIpOiBib29sZWFuIHtcclxuICAgIGlmICh0aGlzLm1heGZpbGVzaXplID09PSAwKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0aGlzLm1heGZpbGVzaXplID49IGZpbGVzaXplO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0enQgZGllIGVybGF1YnRlbiBEYXRlbnR5cGVuIGbDvHIgZGVuIFVwbG9hZFxyXG4gICAqXHJcbiAgICogQHBhcmFtIHR5cGVzIEVybGF1YnRlIEZpbGUgRXh0ZW5zaW9uc1xyXG4gICAqL1xyXG4gIHByaXZhdGUgc2V0QWxsb3dlZFR5cGVzKHR5cGVzOiBzdHJpbmcpIHtcclxuICAgIC8vIFByw7xmZW4gVXBsb2FkSW5wdXQgYmVyZWl0cyBnZWxhZGVuLCBpc3QgTlVMTCB3ZW5uIEV4dGVuc2lvbiBpbSBNYXJrdXAgbmFjaCBOZ01vZGVsIGdlc2V0enQgd2lyZC5cclxuICAgIGlmICh0aGlzLnVwbG9hZElucHV0ICYmIHRoaXMudXBsb2FkSW5wdXQubmF0aXZlRWxlbWVudCkge1xyXG4gICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZShcclxuICAgICAgICB0aGlzLnVwbG9hZElucHV0Lm5hdGl2ZUVsZW1lbnQsXHJcbiAgICAgICAgJ2FjY2VwdCcsXHJcbiAgICAgICAgdHlwZXNcclxuICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLm9wdGlvbnMuYWxsb3dlZFR5cGVzID0gdHlwZXM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZXR6dCBkZW4gVXBsb2FkIEVuZHBvaXRcclxuICAgKiBAcGFyYW0gdXJsIFJlZ2lzdGVyIFVSSVxyXG4gICAqL1xyXG4gIHByaXZhdGUgc2V0RW5kcG9pbnQodXJsOiBzdHJpbmcpIHtcclxuICAgIHRoaXMub3B0aW9ucy5lbmRwb2ludCA9IHVybDtcclxuICB9XHJcblxyXG4gIC8vICNlbmRyZWdpb24gUHJpdmF0ZSBNZXRob2RzXHJcbn1cclxuXHJcbi8qKlxyXG4gKiBLbGFzc2UgZsO8ciBkZW4gVXBsb2FkIGVpbmVyIERhdGVpIGluIGRlciBVcGxvYWQgQ29tcG9uZW50XHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgU2FjVXBsb2FkRmlsZSB7XHJcbiAgLy8gI3JlZ2lvbiBQcm9wZXJ0aWVzXHJcblxyXG4gIC8qKlxyXG4gICAqIERvY3VtZW50IElEXHJcbiAgICovXHJcbiAgcHVibGljIGRvY3VtZW50aWQ6IHN0cmluZztcclxuICAvKipcclxuICAgKiBEYXRlaW5hbWVcclxuICAgKi9cclxuICBwdWJsaWMgbmFtZTogc3RyaW5nO1xyXG4gIC8qKlxyXG4gICAqIFVwbG9hZCBGb3J0c2Nocml0dFxyXG4gICAqL1xyXG4gIHB1YmxpYyBwcm9ncmVzczogbnVtYmVyO1xyXG4gIC8qKlxyXG4gICAqIFVwbG9hZCBTdGF0dXNcclxuICAgKi9cclxuICBwdWJsaWMgc3RhdHVzOiBzdHJpbmc7XHJcbiAgLyoqXHJcbiAgICogVXBsb2FkIElEXHJcbiAgICovXHJcbiAgcHVibGljIHVwbG9hZElkOiBzdHJpbmc7XHJcblxyXG4gIC8vICNlbmRyZWdpb24gUHJvcGVydGllc1xyXG5cclxuICAvLyAjcmVnaW9uIENvbnN0cnVjdG9yc1xyXG5cclxuICAvKipcclxuICAgKiBLb25zdHJ1a3RvclxyXG4gICAqIEBwYXJhbSB1ZmlsZSBVcGxvYWQgU3RhdHVzXHJcbiAgICovXHJcbiAgY29uc3RydWN0b3IodWZpbGU6IFVwbG9hZFN0YXRlKSB7XHJcbiAgICB0aGlzLnVwbG9hZElkID0gdWZpbGUudXBsb2FkSWQ7XHJcbiAgICB0aGlzLm5hbWUgPSB1ZmlsZS5uYW1lO1xyXG4gICAgdGhpcy5wcm9ncmVzcyA9IHVmaWxlLnByb2dyZXNzO1xyXG4gICAgdGhpcy5zdGF0dXMgPSB1ZmlsZS5zdGF0dXM7XHJcbiAgICB0aGlzLmRvY3VtZW50aWQgPSBudWxsO1xyXG4gIH1cclxuXHJcbiAgLy8gI2VuZHJlZ2lvbiBDb25zdHJ1Y3RvcnNcclxufVxyXG5cclxuLy8gI2VuZHJlZ2lvbiBDbGFzc2VzXHJcbiJdfQ==
137
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb3ZfaG03Y29kaWN0IiwiYWN0dWFsQ292ZXJhZ2UiLCJEaXJlY3RpdmUiLCJFdmVudEVtaXR0ZXIiLCJJbnB1dCIsIk91dHB1dCIsIlZpZXdDaGlsZCIsIklkU2VydmljZSIsIlVQTE9BRFhfQUpBWCIsIlVQTE9BRFhfRkFDVE9SWV9PUFRJT05TIiwiVVBMT0FEWF9PUFRJT05TIiwiVXBsb2FkeFNlcnZpY2UiLCJvZiIsIlNBQ1ZBTElEQVRJT05LRVlfU0VSVklDRSIsIlNhY0RlZmF1bHRWYWxpZGF0aW9uS2V5U2VydmljZSIsIlNBQ0xPQ0FMSVNBVElPTl9TRVJWSUNFIiwiU2FjRGVmYXVsdExvY2FsaXNhdGlvblNlcnZpY2UiLCJWYWxpZGF0aW9uIiwiU2FjQmFzZU1vZGVsQ29udHJvbCIsIlNhY1VwbG9hZEJhc2UiLCJjb25zdHJ1Y3RvciIsImZvcm1sYXlvdXQiLCJpbmplY3RvciIsInJlbmRlcmVyIiwibmdab25lIiwiZiIsInMiLCJfYWxsb3dlZHR5cGVzIiwiX2F1dG91cGxvYWQiLCJfZW5hYmxlcGF1c2UiLCJfZW5kcG9pbnQiLCJvcHRpb25zIiwiaXNyZXF1aXJlZCIsIm1heGZpbGVzaXplIiwidmFsaWRhdGlvbm1lc3NhZ2VyZXF1aXJlZCIsInZhbGlkYXRpb25LZXlTZXJ2aWNlIiwiVmFsaWRhdGlvbkVycm9yUmVxdWlyZWQiLCJ2YWxpZGF0aW9ubWVzc2FnZXN1bW1hcnlyZXF1aXJlZCIsIlZhbGlkYXRpb25FcnJvclN1bW1hcnlSZXF1aXJlZCIsIm9uZmlsZWVycm9yIiwiZmlsZUxpc3RlbmVyIiwidXBsb2FkSW5wdXQiLCJuYXRpdmVFbGVtZW50IiwiZmlsZXMiLCJiIiwidXBsb2FkU2VydmljZSIsImhhbmRsZUZpbGVzIiwiZ2V0IiwibG5nUmVzb3VyY2VTZXJ2aWNlIiwidXBsb2FkcyIsImFsbG93ZWRUeXBlcyIsImNvbmN1cnJlbmN5IiwidG9rZW4iLCJhdXRvVXBsb2FkIiwid2l0aENyZWRlbnRpYWxzIiwiY2h1bmtTaXplIiwiaGVhZGVycyIsImVuY29kZVVSSSIsIm5hbWUiLCJpbml0IiwiZXZlbnRzIiwic3Vic2NyaWJlIiwidWZpbGUiLCJvblVwbG9hZCIsImFsbG93ZWR0eXBlcyIsInR5cGVzIiwic2V0QWxsb3dlZFR5cGVzIiwiYXV0b3VwbG9hZCIsInYiLCJjb25uZWN0IiwiZW5hYmxlcGF1c2UiLCJlbmRwb2ludCIsInNldEVuZHBvaW50IiwiSWNvbkJyb3dzZSIsImljb25TZXJ2aWNlIiwiVXBsb2FkQ29tcG9uZW50QnJvd3NlSWNvbiIsIkljb25Db250aW51ZSIsIlVwbG9hZENvbXBvbmVudENvbnRpbnVlSWNvbiIsIkljb25EZWxldGUiLCJVcGxvYWRDb21wb25lbnREZWxldGVJY29uIiwiSWNvblBhdXNlIiwiVXBsb2FkQ29tcG9uZW50UGF1c2VJY29uIiwiSWNvblVwbG9hZCIsIlVwbG9hZENvbXBvbmVudFVwbG9hZEljb24iLCJGaWxlbmFtZSIsImxlbmd0aCIsIkdldFN0cmluZyIsIlVwbG9hZE5vRmlsZXNTZWxlY3RlZCIsIkhhc1F1ZXVlSXRlbSIsIkhhc1N1Y2Nlc3NVcGxvYWQiLCJmaWx0ZXIiLCJpdG0iLCJzdGF0dXMiLCJJc1BhdXNlZCIsIklzU3RhdGVUb1VwbG9hZCIsIklzVXBsb2FkaW5nIiwiUHJvZ3Jlc3MiLCJwcm9ncmVzcyIsImNhbmNlbCIsInVwbG9hZElkIiwiY29udHJvbCIsImFjdGlvbiIsImNhbmNlbEFsbCIsIm5nT25EZXN0cm95IiwibGlzdGVuZXJGbiIsIm5nT25Jbml0IiwibGlzdGVuIiwiRXJyb3IiLCJpbmRleCIsImZpbmRJbmRleCIsImlzRXh0ZW5zaW9uVmFsaWQiLCJpc0ZpbGVTaXplVmFsaWQiLCJzaXplIiwiQ3VzdG9tQWRkVmFsaWRhdGlvbiIsInB1c2giLCJTYWNVcGxvYWRGaWxlIiwiZW1pdCIsInNwbGljZSIsIlNldFVwbG9hZFZhbHVlIiwiVXBkYXRlRmlsZUNvdW50IiwicGF1c2UiLCJwYXVzZUFsbCIsInVwbG9hZCIsInVwbG9hZEFsbCIsInZhbGlkYXRlRGF0YSIsImMiLCJlcnJvciIsInJlcXVpcmVkIiwibmdDb250cm9sIiwidXBsb2FkZWRmaWxlY291bnQiLCJVcGxvYWRlZEZpbGVDb3VudCIsImZpbGVuYW1lIiwiaXNWYWxpZCIsImV4dGVuc2lvbnMiLCJzcGxpdCIsImZvckVhY2giLCJ0b0xvd2VyQ2FzZSIsImVuZHNXaXRoIiwiZmlsZXNpemUiLCJzZXRBdHRyaWJ1dGUiLCJ1cmwiLCJkZXBzIiwiaTEiLCJTYWNGb3JtTGF5b3V0Q29tbW9uIiwiaTAiLCJJbmplY3RvciIsIlJlbmRlcmVyMiIsIk5nWm9uZSIsInRhcmdldCIsIsm1ybVGYWN0b3J5VGFyZ2V0IiwiaW5wdXRzIiwib3V0cHV0cyIsInZpZXdRdWVyaWVzIiwicHJvcGVydHlOYW1lIiwiZmlyc3QiLCJwcmVkaWNhdGUiLCJkZXNjZW5kYW50cyIsInN0YXRpYyIsInVzZXNJbmhlcml0YW5jZSIsIm5nSW1wb3J0IiwiZGVjb3JhdG9ycyIsImRvY3VtZW50aWQiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9zYWMtY29tbW9uL3NyYy9jb21tb24vYmFzZXVwbG9hZGNvbnRyb2wudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBEaXJlY3RpdmUsXHJcbiAgRWxlbWVudFJlZixcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5qZWN0b3IsXHJcbiAgSW5wdXQsXHJcbiAgTmdab25lLFxyXG4gIE9uRGVzdHJveSxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFJlbmRlcmVyMixcclxuICBWaWV3Q2hpbGQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgVmFsaWRhdGlvbkVycm9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHtcclxuICBJZFNlcnZpY2UsXHJcbiAgVVBMT0FEWF9BSkFYLFxyXG4gIFVQTE9BRFhfRkFDVE9SWV9PUFRJT05TLFxyXG4gIFVQTE9BRFhfT1BUSU9OUyxcclxuICBVcGxvYWRTdGF0ZSxcclxuICBVcGxvYWR4T3B0aW9ucyxcclxuICBVcGxvYWR4U2VydmljZSxcclxufSBmcm9tICduZ3gtdXBsb2FkeCc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFNhY0Zvcm1MYXlvdXRDb21tb24gfSBmcm9tICcuLi9jb250cm9scy9sYXlvdXQvZm9ybWxheW91dCc7XHJcbmltcG9ydCB7IElTYWNMb2NhbGlzYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9JU2FjTG9jYWxpc2F0aW9uU2VydmljZSc7XHJcbmltcG9ydCB7IElVcGxvYWRDb250cm9sIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9pdXBsb2FkY29udHJvbCc7XHJcbmltcG9ydCB7XHJcbiAgU0FDVkFMSURBVElPTktFWV9TRVJWSUNFLFxyXG4gIFNhY0RlZmF1bHRWYWxpZGF0aW9uS2V5U2VydmljZSxcclxufSBmcm9tICcuLi9zZXJ2aWNlcyc7XHJcbmltcG9ydCB7XHJcbiAgU0FDTE9DQUxJU0FUSU9OX1NFUlZJQ0UsXHJcbiAgU2FjRGVmYXVsdExvY2FsaXNhdGlvblNlcnZpY2UsXHJcbn0gZnJvbSAnLi4vc2VydmljZXMvc2FjLWxvY2FsaXNhdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVmFsaWRhdGlvbiB9IGZyb20gJy4uL3ZhbGlkYXRpb24nO1xyXG5pbXBvcnQgeyBTYWNCYXNlTW9kZWxDb250cm9sIH0gZnJvbSAnLi9iYXNlbW9kZWxjb250cm9sJztcclxuXHJcbi8vICNyZWdpb24gQ2xhc3Nlc1xyXG5cclxuLyoqXHJcbiAqIEJhc2UgS2xhc3NlIGbDvHIgVXBsb2FkZXIgQ29udHJvbFxyXG4gKi9cclxuQERpcmVjdGl2ZSgpXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBTYWNVcGxvYWRCYXNlPFZBTFVFPlxyXG4gIGV4dGVuZHMgU2FjQmFzZU1vZGVsQ29udHJvbDxWQUxVRT5cclxuICBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95XHJcbntcclxuICAvLyAjcmVnaW9uIFByb3BlcnRpZXNcclxuXHJcbiAgLyoqXHJcbiAgICogRmlsZSBJbnB1dCBDb250cm9sXHJcbiAgICovXHJcbiAgQFZpZXdDaGlsZCgnZmlsZXMnLCB7IHN0YXRpYzogdHJ1ZSB9KVxyXG4gIHByaXZhdGUgdXBsb2FkSW5wdXQ6IEVsZW1lbnRSZWY7XHJcblxyXG4gIC8qKlxyXG4gICAqIEVybGF1YnRlIERhdGVpdHlwZW5cclxuICAgKi9cclxuICBwcml2YXRlIF9hbGxvd2VkdHlwZXM6IHN0cmluZyA9ICcqJztcclxuICAvKipcclxuICAgKiBGaWxlcyBhdXRvbWF0aXNjaCBob2NobGFkZW5cclxuICAgKi9cclxuICBwcml2YXRlIF9hdXRvdXBsb2FkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgLyoqXHJcbiAgICogUGF1c2llcmVuIHZvbiBVcGxvYWRzIGVybGF1YmVuXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBfZW5hYmxlcGF1c2U6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIC8qKlxyXG4gICAqIEFQSSBFbmRwb2ludFxyXG4gICAqL1xyXG4gIHByaXZhdGUgX2VuZHBvaW50OiBzdHJpbmcgPSBudWxsO1xyXG4gIC8qKlxyXG4gICAqIFVwbG9hZCBTZXR0aW5nc1xyXG4gICAqL1xyXG4gIHByaXZhdGUgb3B0aW9uczogVXBsb2FkeE9wdGlvbnMgPSB7fTtcclxuXHJcbiAgLyoqXHJcbiAgICogVXBsb2FkIFNlcnZpY2VcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgdXBsb2FkU2VydmljZTogVXBsb2FkeFNlcnZpY2U7XHJcblxyXG4gIC8qKlxyXG4gICAqIERlZmluaWVydCBkYXMgQ29udHJvbCBhbHMgUmVxdWlyZWRcclxuICAgKi9cclxuICBASW5wdXQoKSBwdWJsaWMgaXNyZXF1aXJlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIC8qKlxyXG4gICAqIE1heC4gRGF0ZWlncsO2c3NlIGbDvHIgRmlsZXMgZGllIGhvY2hnZWxhZGVuIHdlcmRlbiBrw7ZubmVuLiAwIGRlYWt0aXZpZXJ0IGRlbiBGaWx0ZXJcclxuICAgKi9cclxuICBASW5wdXQoKSBwdWJsaWMgbWF4ZmlsZXNpemU6IG51bWJlciA9IDA7XHJcbiAgLyoqXHJcbiAgICogUmVzb3VyY2UgS2V5IGbDvHIgVmFsaWRhdGlvbiBNZXNzYWdlIFJlcXVpcmVkIGJlaSBDb250cm9sXHJcbiAgICovXHJcbiAgQElucHV0KCkgcHVibGljIHZhbGlkYXRpb25tZXNzYWdlcmVxdWlyZWQ6IHN0cmluZyA9XHJcbiAgICB0aGlzLnZhbGlkYXRpb25LZXlTZXJ2aWNlLlZhbGlkYXRpb25FcnJvclJlcXVpcmVkO1xyXG4gIC8qKlxyXG4gICAqIFJlc291cmNlIEtleSBmw7xyIFZhbGlkYXRpb24gTWVzc2FnZSBSZXF1aXJlZCBpbiBWYWxpZGF0aW9uIFN1bW1hcnlcclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyB2YWxpZGF0aW9ubWVzc2FnZXN1bW1hcnlyZXF1aXJlZDogc3RyaW5nID1cclxuICAgIHRoaXMudmFsaWRhdGlvbktleVNlcnZpY2UuVmFsaWRhdGlvbkVycm9yU3VtbWFyeVJlcXVpcmVkO1xyXG4gIC8qKlxyXG4gICAqIEV2ZW50IHdlbm4gZWluIEVycm9yIGluIGRlciBLb21wb25lbnRlIGF1c2dlbMO2c3Qgd2lyZC5cclxuICAgKi9cclxuICBAT3V0cHV0KCkgcHVibGljIG9uZmlsZWVycm9yID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcblxyXG4gIC8qKlxyXG4gICAqIEhhbmRsaW5nIHZvbiBuZXVlbiBGaWxlcyBpbSBJbnB1dCBDb250cm9sXHJcbiAgICovXHJcbiAgcHVibGljIGZpbGVMaXN0ZW5lciA9ICgpID0+IHtcclxuICAgIGlmICh0aGlzLnVwbG9hZElucHV0Lm5hdGl2ZUVsZW1lbnQuZmlsZXMpIHtcclxuICAgICAgdGhpcy51cGxvYWRTZXJ2aWNlLmhhbmRsZUZpbGVzKHRoaXMudXBsb2FkSW5wdXQubmF0aXZlRWxlbWVudC5maWxlcyk7XHJcbiAgICB9XHJcbiAgfTtcclxuICAvKipcclxuICAgKiBMaXN0ZW5lciBmw7xyIEZpbGVzXHJcbiAgICovXHJcbiAgcHVibGljIGxpc3RlbmVyRm46ICgpID0+IHZvaWQ7XHJcbiAgLyoqXHJcbiAgICogU2VydmljZSBmw7xyIEVycm9yIExvY2FsaXNhdGlvblxyXG4gICAqL1xyXG4gIHB1YmxpYyBsbmdSZXNvdXJjZVNlcnZpY2U6IElTYWNMb2NhbGlzYXRpb25TZXJ2aWNlO1xyXG4gIC8qKlxyXG4gICAqIEFycmF5IHZvbiBVcGxvYWRzXHJcbiAgICovXHJcbiAgcHVibGljIHVwbG9hZHM6IFNhY1VwbG9hZEZpbGVbXTtcclxuXHJcbiAgLy8gI2VuZHJlZ2lvbiBQcm9wZXJ0aWVzXHJcblxyXG4gIC8vICNyZWdpb24gQ29uc3RydWN0b3JzXHJcblxyXG4gIC8qKlxyXG4gICAqIENvbnN0cnVjdG9yXHJcbiAgICogQHBhcmFtIGZvcm1sYXlvdXQgU2FjRm9ybUxheW91dENvbW1vbiB0byBkZWZpbmUgc2NvcGVkIGxheW91dCBzZXR0aW5nc1xyXG4gICAqIEBwYXJhbSBpbmplY3RvciBJbmplY3RvciBmb3IgaW5qZWN0aW5nIHNlcnZpY2VzXHJcbiAgICogQHBhcmFtIHJlbmRlcmVyIGFuZ3VsYXIgcmVuZGVyaW5nIGVuZ2luZVxyXG4gICAqIEBwYXJhbSBuZ1pvbmUgbmd6b25lIGZvciBoYW5kbGluZyBleHRlcm5hbCBzY3JpcHRzXHJcbiAgICovXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBmb3JtbGF5b3V0OiBTYWNGb3JtTGF5b3V0Q29tbW9uLFxyXG4gICAgaW5qZWN0b3I6IEluamVjdG9yLFxyXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxyXG4gICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZVxyXG4gICkge1xyXG4gICAgc3VwZXIoZm9ybWxheW91dCwgaW5qZWN0b3IpO1xyXG5cclxuICAgIHRoaXMudmFsaWRhdGlvbktleVNlcnZpY2UgPSBpbmplY3Rvci5nZXQoXHJcbiAgICAgIFNBQ1ZBTElEQVRJT05LRVlfU0VSVklDRSxcclxuICAgICAgbmV3IFNhY0RlZmF1bHRWYWxpZGF0aW9uS2V5U2VydmljZSgpXHJcbiAgICApO1xyXG5cclxuICAgIHRoaXMubG5nUmVzb3VyY2VTZXJ2aWNlID0gaW5qZWN0b3IuZ2V0KFxyXG4gICAgICBTQUNMT0NBTElTQVRJT05fU0VSVklDRSxcclxuICAgICAgbmV3IFNhY0RlZmF1bHRMb2NhbGlzYXRpb25TZXJ2aWNlKHRoaXMudmFsaWRhdGlvbktleVNlcnZpY2UpXHJcbiAgICApO1xyXG5cclxuICAgIHRoaXMudXBsb2FkcyA9IFtdO1xyXG5cclxuICAgIHRoaXMub3B0aW9ucy5hbGxvd2VkVHlwZXMgPSAnKic7XHJcbiAgICB0aGlzLm9wdGlvbnMuY29uY3VycmVuY3kgPSAxO1xyXG4gICAgdGhpcy5vcHRpb25zLnRva2VuID0gJ3NvbWV0b2tlbic7XHJcbiAgICB0aGlzLm9wdGlvbnMuYXV0b1VwbG9hZCA9IHRoaXMuX2F1dG91cGxvYWQ7XHJcbiAgICB0aGlzLm9wdGlvbnMud2l0aENyZWRlbnRpYWxzID0gdHJ1ZTtcclxuICAgIHRoaXMub3B0aW9ucy5jaHVua1NpemUgPSAxMDI0ICogMTYgKiA4O1xyXG4gICAgdGhpcy5vcHRpb25zLmhlYWRlcnMgPSAoZjogRmlsZSkgPT4gKHtcclxuICAgICAgJ0NvbnRlbnQtRGlzcG9zaXRpb24nOiBgZmlsZW5hbWU9JHtlbmNvZGVVUkkoZi5uYW1lKX1gLFxyXG4gICAgfSk7XHJcblxyXG4gICAgLy8gSW5pdCBuZXcgU2VydmljZSBJbnN0YW5jZVxyXG4gICAgdGhpcy51cGxvYWRTZXJ2aWNlID0gbmV3IFVwbG9hZHhTZXJ2aWNlKFxyXG4gICAgICBpbmplY3Rvci5nZXQoVVBMT0FEWF9PUFRJT05TLCBudWxsKSxcclxuICAgICAgaW5qZWN0b3IuZ2V0KFVQTE9BRFhfRkFDVE9SWV9PUFRJT05TKSxcclxuICAgICAgaW5qZWN0b3IuZ2V0KFVQTE9BRFhfQUpBWCksXHJcbiAgICAgIHRoaXMubmdab25lLFxyXG4gICAgICBpbmplY3Rvci5nZXQoSWRTZXJ2aWNlKVxyXG4gICAgKTtcclxuICAgIHRoaXMudXBsb2FkU2VydmljZS5pbml0KHRoaXMub3B0aW9ucyk7XHJcblxyXG4gICAgLy8gU3Vic2NyaXBlIEV2ZW50IGZvciBTdGF0ZSBjaGFuZ2VzXHJcbiAgICB0aGlzLnVwbG9hZFNlcnZpY2UuZXZlbnRzLnN1YnNjcmliZSgodWZpbGU6IFVwbG9hZFN0YXRlKSA9PlxyXG4gICAgICB0aGlzLm9uVXBsb2FkKHVmaWxlKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8vICNlbmRyZWdpb24gQ29uc3RydWN0b3JzXHJcblxyXG4gIC8vICNyZWdpb24gUHVibGljIEdldHRlcnMgQW5kIFNldHRlcnNcclxuXHJcbiAgLyoqXHJcbiAgICogRXJsYXVidGUgRGF0ZWl0eXBlbiBmw7xyIGRlbiBVcGxvYWQuIEZvcm1hdDogXCIueHh4LC55eXksLnp6elwiXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2V0IGFsbG93ZWR0eXBlcyh0eXBlczogc3RyaW5nKSB7XHJcbiAgICB0aGlzLl9hbGxvd2VkdHlwZXMgPSB0eXBlcztcclxuICAgIHRoaXMuc2V0QWxsb3dlZFR5cGVzKHR5cGVzKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZpbGVzIG5hY2ggZGVyIEF1c3dhaGwgYXV0b21hdGlzY2ggaG9jaGxhZGVuXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2V0IGF1dG91cGxvYWQodjogYm9vbGVhbikge1xyXG4gICAgdGhpcy5fYXV0b3VwbG9hZCA9IHY7XHJcbiAgICB0aGlzLm9wdGlvbnMuYXV0b1VwbG9hZCA9IHY7XHJcbiAgICB0aGlzLnVwbG9hZFNlcnZpY2UuY29ubmVjdCh0aGlzLm9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVXBsb2FkcyBrw7ZubmVuIHVudGVyYnJvY2hlbiB3ZXJkZW5cclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzZXQgZW5hYmxlcGF1c2UodjogYm9vbGVhbikge1xyXG4gICAgdGhpcy5fZW5hYmxlcGF1c2UgPSB2O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGVmaW5pZXJ0IGRlbiBSZWdpc3RyYXRpb24gRW5kcG9pbnQgZsO8ciBVcGxvYWRzLlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNldCBlbmRwb2ludCh2OiBzdHJpbmcpIHtcclxuICAgIHRoaXMuX2VuZHBvaW50ID0gdjtcclxuICAgIHRoaXMuc2V0RW5kcG9pbnQodik7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBJY29uIGZvciBicm93c2UgYnV0dG9uXHJcbiAgICovXHJcbiAgcHVibGljIGdldCBJY29uQnJvd3NlKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5pY29uU2VydmljZS5VcGxvYWRDb21wb25lbnRCcm93c2VJY29uO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogaWNvbiBmb3IgY29udGlub3VzIGJ1dHRvbnNcclxuICAgKi9cclxuICBwdWJsaWMgZ2V0IEljb25Db250aW51ZSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuaWNvblNlcnZpY2UuVXBsb2FkQ29tcG9uZW50Q29udGludWVJY29uO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogaWNvbiBmb3IgZGVsZXRlIGJ1dHRvbnNcclxuICAgKi9cclxuICBwdWJsaWMgZ2V0IEljb25EZWxldGUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmljb25TZXJ2aWNlLlVwbG9hZENvbXBvbmVudERlbGV0ZUljb247XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBpY29uIGZvciBwYXVzZSBidXR0b25zXHJcbiAgICovXHJcbiAgcHVibGljIGdldCBJY29uUGF1c2UoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmljb25TZXJ2aWNlLlVwbG9hZENvbXBvbmVudFBhdXNlSWNvbjtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIGljb24gZm9yIHVwbG9hZCBidXR0b25cclxuICAgKi9cclxuICBwdWJsaWMgZ2V0IEljb25VcGxvYWQoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmljb25TZXJ2aWNlLlVwbG9hZENvbXBvbmVudFVwbG9hZEljb247XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGFsbG93ZWR0eXBlcygpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX2FsbG93ZWR0eXBlcztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgYXV0b3VwbG9hZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9hdXRvdXBsb2FkO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBlbmFibGVwYXVzZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9lbmFibGVwYXVzZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgZW5kcG9pbnQoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9lbmRwb2ludDtcclxuICB9XHJcblxyXG4gIC8vICNlbmRyZWdpb24gUHVibGljIEdldHRlcnMgQW5kIFNldHRlcnNcclxuXHJcbiAgLy8gI3JlZ2lvbiBQdWJsaWMgTWV0aG9kc1xyXG5cclxuICAvKipcclxuICAgKiBOYW1lIGRlciBEYXRlaSBkaWUgSG9jaGdlbGFkZW4gd2lyZFxyXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGUgZGVzIERhdGVpbmFtZW5zLlxyXG4gICAqL1xyXG4gIHB1YmxpYyBGaWxlbmFtZSgpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xyXG4gICAgaWYgKHRoaXMudXBsb2Fkcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHJldHVybiBvZih0aGlzLnVwbG9hZHNbMF0ubmFtZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gdGhpcy5sbmdSZXNvdXJjZVNlcnZpY2UuR2V0U3RyaW5nKFxyXG4gICAgICAgIHRoaXMudmFsaWRhdGlvbktleVNlcnZpY2UuVXBsb2FkTm9GaWxlc1NlbGVjdGVkXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHaWJ0IGFuIG9iIFF1ZXVlIEVsZW1lbnRlIGJlaW5oYWx0ZXRcclxuICAgKiBAcmV0dXJucyBFbGVtZW50ZSBpbiBkZXIgUXVldWVcclxuICAgKi9cclxuICBwdWJsaWMgSGFzUXVldWVJdGVtKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMudXBsb2Fkcy5sZW5ndGggPiAwO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2lidCBhbiBvYiBlaW4gVXBsb2FkIGFiZ2VzY2hsb3NzZW4gaXN0XHJcbiAgICogQHJldHVybnMgVXBsb2FkIGVyZm9sZ3JlaWNoXHJcbiAgICovXHJcbiAgcHVibGljIEhhc1N1Y2Nlc3NVcGxvYWQoKTogYm9vbGVhbiB7XHJcbiAgICBpZiAodGhpcy51cGxvYWRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgcmV0dXJuIChcclxuICAgICAgICB0aGlzLnVwbG9hZHMuZmlsdGVyKChpdG0pID0+IGl0bS5zdGF0dXMgIT09ICdjb21wbGV0ZScpLmxlbmd0aCA9PT0gMFxyXG4gICAgICApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUHLDvGZ0IG9iIGVpbiBVcGxvYWQgcGF1c2llcnRcclxuICAgKiBAcmV0dXJucyBQYXVzaWVydGVyIFVwbG9hZCBpc3Qgdm9yaGFuZGVuXHJcbiAgICovXHJcbiAgcHVibGljIElzUGF1c2VkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMudXBsb2Fkcy5maWx0ZXIoKGl0bSkgPT4gaXRtLnN0YXR1cyA9PT0gJ3BhdXNlZCcpLmxlbmd0aCA+IDA7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBQcsO8ZnQgb2IgaW4gZGVyIFF1ZXVlIEVsZW1lbnRlIGRpZSB6dW0gVXBsb2FkIGJlcmVpdCBzaW5kIHZvcmhhbmRlbiBzaW5kLlxyXG4gICAqIEByZXR1cm5zIEVsZW1lbnRlIGbDvHIgVXBsb2FkIHZvcmhhbmRlblxyXG4gICAqL1xyXG4gIHB1YmxpYyBJc1N0YXRlVG9VcGxvYWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICB0aGlzLnVwbG9hZHMuZmlsdGVyKFxyXG4gICAgICAgIChpdG0pID0+IGl0bS5zdGF0dXMgPT09ICdhZGRlZCcgfHwgaXRtLnN0YXR1cyA9PT0gJ3BhdXNlZCdcclxuICAgICAgKS5sZW5ndGggPiAwXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUHLDvGZ0IG9iIGVpbiBVcGxvYWQgZWluZXMgRmlsZXMgYW0gbGF1ZmVuIGlzdFxyXG4gICAqIEByZXR1cm5zIFVwbG9hZCBpc3QgYW0gbGF1ZmVuXHJcbiAgICovXHJcbiAgcHVibGljIElzVXBsb2FkaW5nKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMudXBsb2Fkcy5maWx0ZXIoKGl0bSkgPT4gaXRtLnN0YXR1cyA9PT0gJ3VwbG9hZGluZycpLmxlbmd0aCA+IDA7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHaWJ0IGRlbiBVcGxvYWRmb3J0c2Nocml0dCB6dXLDvGNrXHJcbiAgICogQHJldHVybnMgVXBsb2FkIEZvcnRzY2hyaXR0LiBXZXJ0IHZvbiAwLTEwMFxyXG4gICAqL1xyXG4gIHB1YmxpYyBQcm9ncmVzcygpOiBudW1iZXIge1xyXG4gICAgaWYgKHRoaXMudXBsb2Fkcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnVwbG9hZHNbMF0ucHJvZ3Jlc3M7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gMDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENhbmNlbCBzaW5nbGUgdXBsb2FkXHJcbiAgICogQHBhcmFtIHVwbG9hZElkIElEIG9mIEZpbGUgdG8gY2FuY2VsXHJcbiAgICovXHJcbiAgcHVibGljIGNhbmNlbCh1cGxvYWRJZCkge1xyXG4gICAgdGhpcy51cGxvYWRTZXJ2aWNlLmNvbnRyb2woeyBhY3Rpb246ICdjYW5jZWwnLCB1cGxvYWRJZDogdXBsb2FkSWQgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDYW5jZWwgYWxsIFVwbG9hZGVkIGZpbGVzXHJcbiAgICovXHJcbiAgcHVibGljIGNhbmNlbEFsbCgpIHtcclxuICAgIGlmICh0aGlzLkhhc1F1ZXVlSXRlbSgpID09PSB0cnVlKSB7XHJcbiAgICAgIHRoaXMudXBsb2FkU2VydmljZS5jb250cm9sKHsgYWN0aW9uOiAnY2FuY2VsJyB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERlc3Ryb3kgZGVzIENvbnRyb2xzXHJcbiAgICovXHJcbiAgcHVibGljIG5nT25EZXN0cm95KCkge1xyXG4gICAgaWYgKHRoaXMubGlzdGVuZXJGbikge1xyXG4gICAgICB0aGlzLmxpc3RlbmVyRm4oKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEluaXRpYWxpc2llcnQgZGFzIENvbnRyb2xcclxuICAgKi9cclxuICBwdWJsaWMgbmdPbkluaXQoKSB7XHJcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xyXG4gICAgLy8gSW5pdCBFdmVudCBMaXN0ZW5lciBmb3IgSW5wdXQgRmlsZSBDb250cm9sIGFuZCBIYW5kbGluZyBGaWxlc1xyXG4gICAgdGhpcy5saXN0ZW5lckZuID0gdGhpcy5yZW5kZXJlci5saXN0ZW4oXHJcbiAgICAgIHRoaXMudXBsb2FkSW5wdXQubmF0aXZlRWxlbWVudCxcclxuICAgICAgJ2NoYW5nZScsXHJcbiAgICAgIHRoaXMuZmlsZUxpc3RlbmVyXHJcbiAgICApO1xyXG5cclxuICAgIHRoaXMuc2V0QWxsb3dlZFR5cGVzKHRoaXMuX2FsbG93ZWR0eXBlcyk7XHJcbiAgICB0aGlzLnNldEVuZHBvaW50KHRoaXMuX2VuZHBvaW50KTtcclxuXHJcbiAgICBpZiAodGhpcy5fZW5kcG9pbnQgPT09IG51bGwpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdlbmRwb2ludCBpcyBub3QgZGVmaW5lZCEnKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnVwbG9hZFNlcnZpY2UuY29ubmVjdCh0aGlzLm9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVXBsb2FkIEV2ZW50XHJcbiAgICpcclxuICAgKiBAcGFyYW0gdXBsb2Fkc091dFN0cmVhbSBVcGxvYWQgSXRlbVxyXG4gICAqL1xyXG4gIHB1YmxpYyBvblVwbG9hZCh1ZmlsZTogVXBsb2FkU3RhdGUpIHtcclxuICAgIGNvbnN0IGluZGV4ID0gdGhpcy51cGxvYWRzLmZpbmRJbmRleCgoZikgPT4gZi51cGxvYWRJZCA9PT0gdWZpbGUudXBsb2FkSWQpO1xyXG5cclxuICAgIGlmICh1ZmlsZS5zdGF0dXMgPT09ICdhZGRlZCcgfHwgKHVmaWxlLnN0YXR1cyA9PT0gJ3F1ZXVlJyAmJiBpbmRleCA8IDApKSB7XHJcbiAgICAgIGlmIChcclxuICAgICAgICB0aGlzLmlzRXh0ZW5zaW9uVmFsaWQodWZpbGUubmFtZSkgJiZcclxuICAgICAgICB0aGlzLmlzRmlsZVNpemVWYWxpZCh1ZmlsZS5zaXplKSAmJlxyXG4gICAgICAgIHRoaXMuQ3VzdG9tQWRkVmFsaWRhdGlvbih1ZmlsZSlcclxuICAgICAgKSB7XHJcbiAgICAgICAgdGhpcy51cGxvYWRzLnB1c2gobmV3IFNhY1VwbG9hZEZpbGUodWZpbGUpKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmNhbmNlbCh1ZmlsZS51cGxvYWRJZCk7XHJcblxyXG4gICAgICAgIGlmICghdGhpcy5pc0V4dGVuc2lvblZhbGlkKHVmaWxlLm5hbWUpKSB7XHJcbiAgICAgICAgICB0aGlzLm9uZmlsZWVycm9yLmVtaXQoJ0lOVkFMSURfRVhURU5TSU9OJyk7XHJcbiAgICAgICAgfSBlbHNlIGlmICghdGhpcy5pc0ZpbGVTaXplVmFsaWQodWZpbGUuc2l6ZSkpIHtcclxuICAgICAgICAgIHRoaXMub25maWxlZXJyb3IuZW1pdCgnSU5WQUxJRF9GSUxFU0laRScpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmICh1ZmlsZS5zdGF0dXMgPT09ICdjYW5jZWxsZWQnKSB7XHJcbiAgICAgIGlmIChpbmRleCA+PSAwKSB7XHJcbiAgICAgICAgdGhpcy51cGxvYWRzLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuU2V0VXBsb2FkVmFsdWUobnVsbCk7XHJcbiAgICB9IGVsc2UgaWYgKHVmaWxlLnN0YXR1cyA9PT0gJ2NvbXBsZXRlJykge1xyXG4gICAgICB0aGlzLnVwbG9hZHNbaW5kZXhdLnByb2dyZXNzID0gdWZpbGUucHJvZ3Jlc3M7XHJcbiAgICAgIHRoaXMudXBsb2Fkc1tpbmRleF0uc3RhdHVzID0gdWZpbGUuc3RhdHVzO1xyXG4gICAgICB0aGlzLlNldFVwbG9hZFZhbHVlKHVmaWxlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmIChpbmRleCA+PSAwKSB7XHJcbiAgICAgICAgdGhpcy51cGxvYWRzW2luZGV4XS5wcm9ncmVzcyA9IHVmaWxlLnByb2dyZXNzO1xyXG4gICAgICAgIHRoaXMudXBsb2Fkc1tpbmRleF0uc3RhdHVzID0gdWZpbGUuc3RhdHVzO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5VcGRhdGVGaWxlQ291bnQoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENhbmNlbCBTaW5nbGUgRmlsZVxyXG4gICAqIEBwYXJhbSB1cGxvYWRJZCBJRCBvZiBGaWxlIHRvIENhbmNlbFxyXG4gICAqL1xyXG4gIHB1YmxpYyBwYXVzZSh1cGxvYWRJZCkge1xyXG4gICAgdGhpcy51cGxvYWRTZXJ2aWNlLmNvbnRyb2woeyBhY3Rpb246ICdwYXVzZScsIHVwbG9hZElkIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUGF1c2UgYWxsIFVwbG9hZHNcclxuICAgKi9cclxuICBwdWJsaWMgcGF1c2VBbGwoKSB7XHJcbiAgICBpZiAodGhpcy5Jc1VwbG9hZGluZygpID09PSB0cnVlKSB7XHJcbiAgICAgIHRoaXMudXBsb2FkU2VydmljZS5jb250cm9sKHsgYWN0aW9uOiAncGF1c2UnIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVXBsb2FkIFNpbmdsZSBGaWxlXHJcbiAgICpcclxuICAgKiBAcGFyYW0gdXBsb2FkSWQgSUQgb2YgRmlsZSB0byBVcGxvYWRcclxuICAgKi9cclxuICBwdWJsaWMgdXBsb2FkKHVwbG9hZElkKSB7XHJcbiAgICB0aGlzLnVwbG9hZFNlcnZpY2UuY29udHJvbCh7IGFjdGlvbjogJ3VwbG9hZCcsIHVwbG9hZElkIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVXBsb2FkIGFsbCBxdWV1ZWQgRmlsZXNcclxuICAgKi9cclxuICBwdWJsaWMgdXBsb2FkQWxsKCkge1xyXG4gICAgaWYgKHRoaXMuSXNTdGF0ZVRvVXBsb2FkKCkgPT09IHRydWUpIHtcclxuICAgICAgdGhpcy51cGxvYWRTZXJ2aWNlLmNvbnRyb2woeyBhY3Rpb246ICd1cGxvYWQnIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVmFsaWRpZXJ0IGRhcyBVcGxvYWQgQ29udHJvbFxyXG4gICAqIEBwYXJhbSBjIENvbnRyb2wgZGFzIHZhbGlkaWVydCB3ZXJkZW4gc29sbFxyXG4gICAqL1xyXG4gIHB1YmxpYyB2YWxpZGF0ZURhdGEoYzogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xyXG4gICAgbGV0IGVycm9yOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gICAgaWYgKHRoaXMuaXNyZXF1aXJlZCkge1xyXG4gICAgICBlcnJvciA9IFZhbGlkYXRpb24ucmVxdWlyZWQoXHJcbiAgICAgICAgdGhpcy52YWxpZGF0aW9ubWVzc2FnZXJlcXVpcmVkLFxyXG4gICAgICAgIHRoaXMudmFsaWRhdGlvbm1lc3NhZ2VzdW1tYXJ5cmVxdWlyZWRcclxuICAgICAgKShjKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZXJyb3I7XHJcbiAgfVxyXG5cclxuICAvLyAjZW5kcmVnaW9uIFB1YmxpYyBNZXRob2RzXHJcblxyXG4gIC8vICNyZWdpb24gUHVibGljIEFic3RyYWN0IE1ldGhvZHNcclxuXHJcbiAgLyoqXHJcbiAgICogTWV0aG9kZSBrYW5uIGbDvHIgQ29udHJvbHMgdmVyd2VuZGV0IHdlcmRlbiwgenVzw6R0emxpY2hlIFZhbGlkaWVydW5nZW4gYmVpIGhpbnp1ZsO8Z2VuIGRlciBGaWxlcyB6dSBtYWNoZW5cclxuICAgKlxyXG4gICAqIEBwYXJhbSBmaWxlIEZpbGUgZGFzIGhpbnp1Z2Vmw7xndCB3dXJkZS5cclxuICAgKiBAcmV0dXJucyBWYWxkaWVydW5nIGlzdCBlcmZvbGdyZWljaFxyXG4gICAqL1xyXG4gIHB1YmxpYyBhYnN0cmFjdCBDdXN0b21BZGRWYWxpZGF0aW9uKGZpbGU6IFVwbG9hZFN0YXRlKTogYm9vbGVhbjtcclxuICAvKipcclxuICAgKiBNZXRob2RlIHdlbGNoZSBkaWUgVXBsb2FkIElEJ3MgaW4gZGFzIE1vZGVsIHNldHp0IG9kZXIgbMO2c2NodFxyXG4gICAqXHJcbiAgICogQHBhcmFtIGZpbGUgVHlwZSB2b24gRmlsZSBJRCdzXHJcbiAgICovXHJcbiAgcHVibGljIGFic3RyYWN0IFNldFVwbG9hZFZhbHVlKGZpbGU6IFVwbG9hZFN0YXRlKTogdm9pZDtcclxuXHJcbiAgLy8gI2VuZHJlZ2lvbiBQdWJsaWMgQWJzdHJhY3QgTWV0aG9kc1xyXG5cclxuICAvLyAjcmVnaW9uIFByaXZhdGUgTWV0aG9kc1xyXG5cclxuICBwcml2YXRlIFVwZGF0ZUZpbGVDb3VudCgpOiB2b2lkIHtcclxuICAgIC8vIEhBQ0s6IEFkZCBhZGRpdGlvbiBwcm9wZXJ0eSB0byBGb3JtQ29udHJvbC4gQ2FuIGJlIGZpeGVkIGlmIHNvbHV0aW9uIGZvciB0aWNrZXQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvaXNzdWVzLzE5Njg2XHJcbiAgICBpZiAodGhpcy5uZ0NvbnRyb2wpIHtcclxuICAgICAgKHRoaXMubmdDb250cm9sIGFzIHVua25vd24gYXMgSVVwbG9hZENvbnRyb2wpLnVwbG9hZGVkZmlsZWNvdW50ID1cclxuICAgICAgICB0aGlzLlVwbG9hZGVkRmlsZUNvdW50KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgdXBsb2FkZWQgZmlsZXNcclxuICAgKi9cclxuICBwcml2YXRlIFVwbG9hZGVkRmlsZUNvdW50KCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy51cGxvYWRzLmZpbHRlcigoaXRtKSA9PiBpdG0uc3RhdHVzID09PSAnY29tcGxldGUnKS5sZW5ndGg7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBQcsO8ZnQgb2IgZGllIERhdGVpZXJ3ZWl0ZXJ1bmcgZ8O8bHRpZyBpc3RcclxuICAgKlxyXG4gICAqIEBwYXJhbSBmaWxlbmFtZSBEYXRlaW5hbWVcclxuICAgKi9cclxuICBwcml2YXRlIGlzRXh0ZW5zaW9uVmFsaWQoZmlsZW5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHRoaXMuX2FsbG93ZWR0eXBlcyA9PT0gJyonKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBpc1ZhbGlkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBjb25zdCBleHRlbnNpb25zOiBzdHJpbmdbXSA9IHRoaXMuX2FsbG93ZWR0eXBlcy5zcGxpdCgnLCcpO1xyXG5cclxuICAgIGV4dGVuc2lvbnMuZm9yRWFjaCgoaXRtKSA9PiB7XHJcbiAgICAgIGlmIChmaWxlbmFtZS50b0xvd2VyQ2FzZSgpLmVuZHNXaXRoKGl0bS50b0xvd2VyQ2FzZSgpKSkge1xyXG4gICAgICAgIGlzVmFsaWQgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gaXNWYWxpZDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFByw7xmdCBvYiBkYXMgRmlsZSBuaWNodCB6dSBncm9zcyBpc3QuXHJcbiAgICpcclxuICAgKiBAcGFyYW0gZmlsZXNpemUgTWF4IEZpbGUgU2l6ZSBpbiBCeXRlc1xyXG4gICAqL1xyXG4gIHByaXZhdGUgaXNGaWxlU2l6ZVZhbGlkKGZpbGVzaXplOiBudW1iZXIpOiBib29sZWFuIHtcclxuICAgIGlmICh0aGlzLm1heGZpbGVzaXplID09PSAwKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0aGlzLm1heGZpbGVzaXplID49IGZpbGVzaXplO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0enQgZGllIGVybGF1YnRlbiBEYXRlbnR5cGVuIGbDvHIgZGVuIFVwbG9hZFxyXG4gICAqXHJcbiAgICogQHBhcmFtIHR5cGVzIEVybGF1YnRlIEZpbGUgRXh0ZW5zaW9uc1xyXG4gICAqL1xyXG4gIHByaXZhdGUgc2V0QWxsb3dlZFR5cGVzKHR5cGVzOiBzdHJpbmcpIHtcclxuICAgIC8vIFByw7xmZW4gVXBsb2FkSW5wdXQgYmVyZWl0cyBnZWxhZGVuLCBpc3QgTlVMTCB3ZW5uIEV4dGVuc2lvbiBpbSBNYXJrdXAgbmFjaCBOZ01vZGVsIGdlc2V0enQgd2lyZC5cclxuICAgIGlmICh0aGlzLnVwbG9hZElucHV0ICYmIHRoaXMudXBsb2FkSW5wdXQubmF0aXZlRWxlbWVudCkge1xyXG4gICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZShcclxuICAgICAgICB0aGlzLnVwbG9hZElucHV0Lm5hdGl2ZUVsZW1lbnQsXHJcbiAgICAgICAgJ2FjY2VwdCcsXHJcbiAgICAgICAgdHlwZXNcclxuICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLm9wdGlvbnMuYWxsb3dlZFR5cGVzID0gdHlwZXM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZXR6dCBkZW4gVXBsb2FkIEVuZHBvaXRcclxuICAgKiBAcGFyYW0gdXJsIFJlZ2lzdGVyIFVSSVxyXG4gICAqL1xyXG4gIHByaXZhdGUgc2V0RW5kcG9pbnQodXJsOiBzdHJpbmcpIHtcclxuICAgIHRoaXMub3B0aW9ucy5lbmRwb2ludCA9IHVybDtcclxuICB9XHJcblxyXG4gIC8vICNlbmRyZWdpb24gUHJpdmF0ZSBNZXRob2RzXHJcbn1cclxuXHJcbi8qKlxyXG4gKiBLbGFzc2UgZsO8ciBkZW4gVXBsb2FkIGVpbmVyIERhdGVpIGluIGRlciBVcGxvYWQgQ29tcG9uZW50XHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgU2FjVXBsb2FkRmlsZSB7XHJcbiAgLy8gI3JlZ2lvbiBQcm9wZXJ0aWVzXHJcblxyXG4gIC8qKlxyXG4gICAqIERvY3VtZW50IElEXHJcbiAgICovXHJcbiAgcHVibGljIGRvY3VtZW50aWQ6IHN0cmluZztcclxuICAvKipcclxuICAgKiBEYXRlaW5hbWVcclxuICAgKi9cclxuICBwdWJsaWMgbmFtZTogc3RyaW5nO1xyXG4gIC8qKlxyXG4gICAqIFVwbG9hZCBGb3J0c2Nocml0dFxyXG4gICAqL1xyXG4gIHB1YmxpYyBwcm9ncmVzczogbnVtYmVyO1xyXG4gIC8qKlxyXG4gICAqIFVwbG9hZCBTdGF0dXNcclxuICAgKi9cclxuICBwdWJsaWMgc3RhdHVzOiBzdHJpbmc7XHJcbiAgLyoqXHJcbiAgICogVXBsb2FkIElEXHJcbiAgICovXHJcbiAgcHVibGljIHVwbG9hZElkOiBzdHJpbmc7XHJcblxyXG4gIC8vICNlbmRyZWdpb24gUHJvcGVydGllc1xyXG5cclxuICAvLyAjcmVnaW9uIENvbnN0cnVjdG9yc1xyXG5cclxuICAvKipcclxuICAgKiBLb25zdHJ1a3RvclxyXG4gICAqIEBwYXJhbSB1ZmlsZSBVcGxvYWQgU3RhdHVzXHJcbiAgICovXHJcbiAgY29uc3RydWN0b3IodWZpbGU6IFVwbG9hZFN0YXRlKSB7XHJcbiAgICB0aGlzLnVwbG9hZElkID0gdWZpbGUudXBsb2FkSWQ7XHJcbiAgICB0aGlzLm5hbWUgPSB1ZmlsZS5uYW1lO1xyXG4gICAgdGhpcy5wcm9ncmVzcyA9IHVmaWxlLnByb2dyZXNzO1xyXG4gICAgdGhpcy5zdGF0dXMgPSB1ZmlsZS5zdGF0dXM7XHJcbiAgICB0aGlzLmRvY3VtZW50aWQgPSBudWxsO1xyXG4gIH1cclxuXHJcbiAgLy8gI2VuZHJlZ2lvbiBDb25zdHJ1Y3RvcnNcclxufVxyXG5cclxuLy8gI2VuZHJlZ2lvbiBDbGFzc2VzXHJcbiJdLCJtYXBwaW5ncyI6IisraERBaUlFO0FBQUFBLGFBQUEsU0FBQUEsQ0FBQSxTQUFBQyxjQUFBLFdBQUFBLGNBQUEsRUFBQUQsYUFBQSxHQWpJRixPQUNFRSxTQUFTLENBRVRDLFlBQVksQ0FFWkMsS0FBSyxDQUlMQyxNQUFNLENBRU5DLFNBQVMsS0FDSixlQUFlLENBRXRCLE9BQ0VDLFNBQVMsQ0FDVEMsWUFBWSxDQUNaQyx1QkFBdUIsQ0FDdkJDLGVBQWUsQ0FHZkMsY0FBYyxLQUNULGFBQWEsQ0FDcEIsT0FBcUJDLEVBQUUsS0FBUSxNQUFNLENBSXJDLE9BQ0VDLHdCQUF3QixDQUN4QkMsOEJBQThCLEtBQ3pCLGFBQWEsQ0FDcEIsT0FDRUMsdUJBQXVCLENBQ3ZCQyw2QkFBNkIsS0FDeEIsc0NBQXNDLENBQzdDLE9BQVNDLFVBQVUsS0FBUSxlQUFlLENBQzFDLE9BQVNDLG1CQUFtQixLQUFRLG9CQUFvQixDLGtGQUV4RDtBQUVBOztHQUlBLE1BQU0sTUFBZ0IsQ0FBQUMsYUFDcEIsUUFBUSxDQUFBRCxtQkFBMEIsQ0FrRmxDO0FBRUE7QUFFQTs7Ozs7O09BT0FFLFlBQ0VDLFVBQStCLENBQy9CQyxRQUFrQixDQUNWQyxRQUFtQixDQUNuQkMsTUFBYyxFQUFBeEIsYUFBQSxHQUFBeUIsQ0FBQSxNQUFBekIsYUFBQSxHQUFBMEIsQ0FBQSxNQUV0QixLQUFLLENBQUNMLFVBQVUsQ0FBRUMsUUFBUSxDQUFDLENBQUN0Qixh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
145
+ */constructor(ufile){cov_hm7codict().f[51]++;cov_hm7codict().s[141]++;this.uploadId=ufile.uploadId;cov_hm7codict().s[142]++;this.name=ufile.name;cov_hm7codict().s[143]++;this.progress=ufile.progress;cov_hm7codict().s[144]++;this.status=ufile.status;cov_hm7codict().s[145]++;this.documentid=null;}}//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZXVwbG9hZGNvbnRyb2wuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9zYWMtY29tbW9uL3NyYy9jb21tb24vYmFzZXVwbG9hZGNvbnRyb2wudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsT0FBTyxFQUFFLHdCQUF3QixFQUFFLDhCQUE4QixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSw2QkFBNkIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzlHLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDekQsT0FBTyxFQUNILFNBQVMsRUFFVCxZQUFZLEVBRVosS0FBSyxFQUlMLE1BQU0sRUFFTixTQUFTLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUNILFNBQVMsRUFDVCxZQUFZLEVBQ1osdUJBQXVCLEVBQ3ZCLGVBQWUsRUFHZixjQUFjLEdBQ2pCLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7OztBQUV0QywyQkFBMkI7QUFFM0I7O0dBRUc7QUFFSCxNQUFNLE9BQWdCLGFBQXFCLFNBQVEsbUJBQTBCO0lBb0d6RSx3QkFBd0I7SUFFeEIsdUJBQXVCO0lBRXZCOzs7Ozs7T0FNRztJQUNILFlBQ0ksVUFBK0IsRUFDL0IsUUFBa0IsRUFDVixRQUFtQixFQUNuQixNQUFjO1FBRXRCLEtBQUssQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFIcEIsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNuQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBbEgxQixxQkFBcUI7UUFFckI7O1dBRUc7UUFDSyxrQkFBYSxHQUFXLEdBQUcsQ0FBQztRQUVwQzs7V0FFRztRQUNLLGdCQUFXLEdBQVksS0FBSyxDQUFD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MkZBQWIsYUFBYTtrQkFEbEMsU0FBUzs4S0FzQ0UsV0FBVztzQkFEbEIsU0FBUzt1QkFBQyxPQUFPLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQW9CcEIsVUFBVTtzQkFBekIsS0FBSztnQkFlVSxXQUFXO3NCQUExQixLQUFLO2dCQUtXLFdBQVc7c0JBQTNCLE1BQU07Z0JBTUEsZ0JBQWdCO3NCQUR0QixNQUFNO2dCQVdTLHlCQUF5QjtzQkFBeEMsS0FBSztnQkFNQyxnQ0FBZ0M7c0JBRHRDLEtBQUs7Z0JBc0dLLFlBQVk7c0JBRHRCLEtBQUs7Z0JBY0ssVUFBVTtzQkFEcEIsS0FBSztnQkFlSyxXQUFXO3NCQURyQixLQUFLO2dCQWFLLFFBQVE7c0JBRGxCLEtBQUs7Z0JBaUJLLEtBQUs7c0JBRGYsS0FBSzs7QUFvVVY7O0dBRUc7QUFDSCxNQUFNLE9BQU8sYUFBYTtJQTRCdEIsd0JBQXdCO0lBRXhCLHVCQUF1QjtJQUV2Qjs7O09BR0c7SUFDSCxZQUFZLEtBQWtCO1FBQzFCLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQztRQUMvQixJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUM7UUFDdkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDO1FBQy9CLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztRQUMzQixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztJQUMzQixDQUFDO0NBR0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTYWNGb3JtTGF5b3V0Q29tbW9uIH0gZnJvbSAnLi4vY29udHJvbHMvbGF5b3V0L2Zvcm1sYXlvdXQnO1xyXG5pbXBvcnQgeyBJU2FjTG9jYWxpc2F0aW9uU2VydmljZSB9IGZyb20gJy4uL2ludGVyZmFjZXMvSVNhY0xvY2FsaXNhdGlvblNlcnZpY2UnO1xyXG5pbXBvcnQgeyBJU2FjVXBsb2FkRXZlbnRDb21wbGV0ZVN0YXRlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9JU2FjVXBsb2FkRXZlbnRDb21wbGV0ZVN0YXRlJztcclxuaW1wb3J0IHsgSVVwbG9hZENvbnRyb2wgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2l1cGxvYWRjb250cm9sJztcclxuaW1wb3J0IHsgU0FDVkFMSURBVElPTktFWV9TRVJWSUNFLCBTYWNEZWZhdWx0VmFsaWRhdGlvbktleVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcyc7XHJcbmltcG9ydCB7IFNBQ0xPQ0FMSVNBVElPTl9TRVJWSUNFLCBTYWNEZWZhdWx0TG9jYWxpc2F0aW9uU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3NhYy1sb2NhbGlzYXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IFZhbGlkYXRpb24gfSBmcm9tICcuLi92YWxpZGF0aW9uJztcclxuaW1wb3J0IHsgU2FjQmFzZU1vZGVsQ29udHJvbCB9IGZyb20gJy4vYmFzZW1vZGVsY29udHJvbCc7XHJcbmltcG9ydCB7XHJcbiAgICBEaXJlY3RpdmUsXHJcbiAgICBFbGVtZW50UmVmLFxyXG4gICAgRXZlbnRFbWl0dGVyLFxyXG4gICAgSW5qZWN0b3IsXHJcbiAgICBJbnB1dCxcclxuICAgIE5nWm9uZSxcclxuICAgIE9uRGVzdHJveSxcclxuICAgIE9uSW5pdCxcclxuICAgIE91dHB1dCxcclxuICAgIFJlbmRlcmVyMixcclxuICAgIFZpZXdDaGlsZCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBWYWxpZGF0aW9uRXJyb3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQge1xyXG4gICAgSWRTZXJ2aWNlLFxyXG4gICAgVVBMT0FEWF9BSkFYLFxyXG4gICAgVVBMT0FEWF9GQUNUT1JZX09QVElPTlMsXHJcbiAgICBVUExPQURYX09QVElPTlMsXHJcbiAgICBVcGxvYWRTdGF0ZSxcclxuICAgIFVwbG9hZHhPcHRpb25zLFxyXG4gICAgVXBsb2FkeFNlcnZpY2UsXHJcbn0gZnJvbSAnbmd4LXVwbG9hZHgnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xyXG5cclxuLy8gI3JlZ2lvbiBFeHBvcnRlZCBDbGFzc2VzXHJcblxyXG4vKipcclxuICogQmFzZSBLbGFzc2UgZsO8ciBVcGxvYWRlciBDb250cm9sXHJcbiAqL1xyXG5ARGlyZWN0aXZlKClcclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFNhY1VwbG9hZEJhc2U8VkFMVUU+IGV4dGVuZHMgU2FjQmFzZU1vZGVsQ29udHJvbDxWQUxVRT4gaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgICAvLyAjcmVnaW9uIFByb3BlcnRpZXNcclxuXHJcbiAgICAvKipcclxuICAgICAqIEVybGF1YnRlIERhdGVpdHlwZW5cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfYWxsb3dlZHR5cGVzOiBzdHJpbmcgPSAnKic7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBGaWxlcyBhdXRvbWF0aXNjaCBob2NobGFkZW5cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfYXV0b3VwbG9hZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogUGF1c2llcmVuIHZvbiBVcGxvYWRzIGVybGF1YmVuXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX2VuYWJsZXBhdXNlOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEFQSSBFbmRwb2ludFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9lbmRwb2ludDogc3RyaW5nID0gbnVsbDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRva2VuIGZvciBCZWFyZXIgQXV0aGVudGljYXRpb25cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfdG9rZW46IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVXBsb2FkIFNldHRpbmdzXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgb3B0aW9uczogVXBsb2FkeE9wdGlvbnMgPSB7fTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEZpbGUgSW5wdXQgQ29udHJvbFxyXG4gICAgICovXHJcbiAgICBAVmlld0NoaWxkKCdmaWxlcycsIHsgc3RhdGljOiB0cnVlIH0pXHJcbiAgICBwcml2YXRlIHVwbG9hZElucHV0OiBFbGVtZW50UmVmO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVXBsb2FkIFNlcnZpY2VcclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIHVwbG9hZFNlcnZpY2U6IFVwbG9hZHhTZXJ2aWNlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSGFuZGxpbmcgdm9uIG5ldWVuIEZpbGVzIGltIElucHV0IENvbnRyb2xcclxuICAgICAqL1xyXG4gICAgcHVibGljIGZpbGVMaXN0ZW5lciA9ICgpID0+IHtcclxuICAgICAgICBpZiAodGhpcy51cGxvYWRJbnB1dC5uYXRpdmVFbGVtZW50LmZpbGVzKSB7XHJcbiAgICAgICAgICAgIHRoaXMudXBsb2FkU2VydmljZS5oYW5kbGVGaWxlcyh0aGlzLnVwbG9hZElucHV0Lm5hdGl2ZUVsZW1lbnQuZmlsZXMpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBEZWZpbmllcnQgZGFzIENvbnRyb2wgYWxzIFJlcXVpcmVkXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIHB1YmxpYyBpc3JlcXVpcmVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBMaXN0ZW5lciBmw7xyIEZpbGVzXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBsaXN0ZW5lckZuOiAoKSA9PiB2b2lkO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2VydmljZSBmw7xyIEVycm9yIExvY2FsaXNhdGlvblxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgbG5nUmVzb3VyY2VTZXJ2aWNlOiBJU2FjTG9jYWxpc2F0aW9uU2VydmljZTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIE1heC4gRGF0ZWlncsO2c3NlIGbDvHIgRmlsZXMgZGllIGhvY2hnZWxhZGVuIHdlcmRlbiBrw7ZubmVuLiAwIGRlYWt0aXZpZXJ0IGRlbiBGaWx0ZXJcclxuICAgICAqL1xyXG4gICAgQElucHV0KCkgcHVibGljIG1heGZpbGVzaXplOiBudW1iZXIgPSAwO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogRXZlbnQgd2hlbiBhbiBlcnJvciBpcyB0cmlnZ2VyZWQgaW4gdGhlIGNvbXBvbmVudC5cclxuICAgICAqL1xyXG4gICAgQE91dHB1dCgpIHB1YmxpYyBvbmZpbGVlcnJvciA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogRXZlbnQgd2hlbiBhIGZpbGUgaGFzIGJlZW4gdXBsb2FkZWQuIFRoZSBldmVudCBpcyB0cmlnZ2VyZWQgZm9yIG11bHRpcGxlIHVwbG9hZHMgcGVyIGZpbGUuXHJcbiAgICAgKi9cclxuICAgIEBPdXRwdXQoKVxyXG4gICAgcHVibGljIG9udXBsb2FkY29tcGxldGUgPSBuZXcgRXZlbnRFbWl0dGVyPElTYWNVcGxvYWRFdmVudENvbXBsZXRlU3RhdGU+KCk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBcnJheSB2b24gVXBsb2Fkc1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgdXBsb2FkczogU2FjVXBsb2FkRmlsZVtdO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmVzb3VyY2UgS2V5IGbDvHIgVmFsaWRhdGlvbiBNZXNzYWdlIFJlcXVpcmVkIGJlaSBDb250cm9sXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIHB1YmxpYyB2YWxpZGF0aW9ubWVzc2FnZXJlcXVpcmVkOiBzdHJpbmcgPSB0aGlzLnZhbGlkYXRpb25LZXlTZXJ2aWNlLlZhbGlkYXRpb25FcnJvclJlcXVpcmVkO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmVzb3VyY2UgS2V5IGbDvHIgVmFsaWRhdGlvbiBNZXNzYWdlIFJlcXVpcmVkIGluIFZhbGlkYXRpb24gU3VtbWFyeVxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIHZhbGlkYXRpb25tZXNzYWdlc3VtbWFyeXJlcXVpcmVkOiBzdHJpbmcgPSB0aGlzLnZhbGlkYXRpb25LZXlTZXJ2aWNlLlZhbGlkYXRpb25FcnJvclN1bW1hcnlSZXF1aXJlZDtcclxuXHJcbiAgICAvLyAjZW5kcmVnaW9uIFByb3BlcnRpZXNcclxuXHJcbiAgICAvLyAjcmVnaW9uIENvbnN0cnVjdG9yc1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ29uc3RydWN0b3JcclxuICAgICAqIEBwYXJhbSBmb3JtbGF5b3V0IFNhY0Zvcm1MYXlvdXRDb21tb24gdG8gZGVmaW5lIHNjb3BlZCBsYXlvdXQgc2V0dGluZ3NcclxuICAgICAqIEBwYXJhbSBpbmplY3RvciBJbmplY3RvciBmb3IgaW5qZWN0aW5nIHNlcnZpY2VzXHJcbiAgICAgKiBAcGFyYW0gcmVuZGVyZXIgYW5ndWxhciByZW5kZXJpbmcgZW5naW5lXHJcbiAgICAgKiBAcGFyYW0gbmdab25lIG5nem9uZSBmb3IgaGFuZGxpbmcgZXh0ZXJuYWwgc2NyaXB0c1xyXG4gICAgICovXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBmb3JtbGF5b3V0OiBTYWNGb3JtTGF5b3V0Q29tbW9uLFxyXG4gICAgICAgIGluamVjdG9yOiBJbmplY3RvcixcclxuICAgICAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXHJcbiAgICAgICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZVxyXG4gICAgKSB7XHJcbiAgICAgICAgc3VwZXIoZm9ybWxheW91dCwgaW5qZWN0b3IpO1xyXG5cclxuICAgICAgICB0aGlzLnZhbGlkYXRpb25LZXlTZXJ2aWNlID0gaW5qZWN0b3IuZ2V0KFNBQ1ZBTElEQVRJT05LRVlfU0VSVklDRSwgbmV3IFNhY0RlZmF1bHRWYWxpZGF0aW9uS2V5U2VydmljZSgpKTtcclxuXHJcbiAgICAgICAgdGhpcy5sbmdSZXNvdXJjZVNlcnZpY2UgPSBpbmplY3Rvci5nZXQoXHJcbiAgICAgICAgICAgIFNBQ0xPQ0FMSVNBVElPTl9TRVJWSUNFLFxyXG4gICAgICAgICAgICBuZXcgU2FjRGVmYXVsdExvY2FsaXNhdGlvblNlcnZpY2UodGhpcy52YWxpZGF0aW9uS2V5U2VydmljZSlcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICB0aGlzLnVwbG9hZHMgPSBbXTtcclxuXHJcbiAgICAgICAgdGhpcy5vcHRpb25zLmFsbG93ZWRUeXBlcyA9ICcqJztcclxuICAgICAgICB0aGlzLm9wdGlvbnMuY29uY3VycmVuY3kgPSAxO1xyXG4gICAgICAgIHRoaXMub3B0aW9ucy50b2tlbiA9ICdzb21ldG9rZW4nO1xyXG4gICAgICAgIHRoaXMub3B0aW9ucy5hdXRvVXBsb2FkID0gdGhpcy5fYXV0b3VwbG9hZDtcclxuICAgICAgICB0aGlzLm9wdGlvbnMud2l0aENyZWRlbnRpYWxzID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLm9wdGlvbnMuY2h1bmtTaXplID0gMTAyNCAqIDE2ICogODtcclxuICAgICAgICB0aGlzLm9wdGlvbnMuaGVhZGVycyA9IChmOiBGaWxlKSA9PiAoe1xyXG4gICAgICAgICAgICAnQ29udGVudC1EaXNwb3NpdGlvbic6IGBmaWxlbmFtZT0ke2VuY29kZVVSSShmLm5hbWUpfWAsXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIC8vIEluaXQgbmV3IFNlcnZpY2UgSW5zdGFuY2VcclxuICAgICAgICB0aGlzLnVwbG9hZFNlcnZpY2UgPSBuZXcgVXBsb2FkeFNlcnZpY2UoXHJcbiAgICAgICAgICAgIGluamVjdG9yLmdldChVUExPQURYX09QVElPTlMsIG51bGwpLFxyXG4gICAgICAgICAgICBpbmplY3Rvci5nZXQoVVBMT0FEWF9GQUNUT1JZX09QVElPTlMpLFxyXG4gICAgICAgICAgICBpbmplY3Rvci5nZXQoVVBMT0FEWF9BSkFYKSxcclxuICAgICAgICAgICAgdGhpcy5uZ1pvbmUsXHJcbiAgICAgICAgICAgIGluamVjdG9yLmdldChJZFNlcnZpY2UpXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLnVwbG9hZFNlcnZpY2UuaW5pdCh0aGlzLm9wdGlvbnMpO1xyXG5cclxuICAgICAgICAvLyBTdWJzY3JpcGUgRXZlbnQgZm9yIFN0YXRlIGNoYW5nZXNcclxuICAgICAgICB0aGlzLnVwbG9hZFNlcnZpY2UuZXZlbnRzLnN1YnNjcmliZSgodWZpbGU6IFVwbG9hZFN0YXRlKSA9PiB0aGlzLm9uVXBsb2FkKHVmaWxlKSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gI2VuZHJlZ2lvbiBDb25zdHJ1Y3RvcnNcclxuXHJcbiAgICAvLyAjcmVnaW9uIFB1YmxpYyBHZXR0ZXJzIEFuZCBTZXR0ZXJzXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJY29uIGZvciBicm93c2UgYnV0dG9uXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXQgSWNvbkJyb3dzZSgpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmljb25TZXJ2aWNlLlVwbG9hZENvbXBvbmVudEJyb3dzZUljb247XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBpY29uIGZvciBjb250aW5vdXMgYnV0dG9uc1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0IEljb25Db250aW51ZSgpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmljb25TZXJ2aWNlLlVwbG9hZENvbXBvbmVudENvbnRpbnVlSWNvbjtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIGljb24gZm9yIGRlbGV0ZSBidXR0b25zXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXQgSWNvbkRlbGV0ZSgpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmljb25TZXJ2aWNlLlVwbG9hZENvbXBvbmVudERlbGV0ZUljb247XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBpY29uIGZvciBwYXVzZSBidXR0b25zXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXQgSWNvblBhdXNlKCk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaWNvblNlcnZpY2UuVXBsb2FkQ29tcG9uZW50UGF1c2VJY29uO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogaWNvbiBmb3IgdXBsb2FkIGJ1dHRvblxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0IEljb25VcGxvYWQoKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5pY29uU2VydmljZS5VcGxvYWRDb21wb25lbnRVcGxvYWRJY29uO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXQgYWxsb3dlZHR5cGVzKCk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FsbG93ZWR0eXBlcztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEVybGF1YnRlIERhdGVpdHlwZW4gZsO8ciBkZW4gVXBsb2FkLiBGb3JtYXQ6IFwiLnh4eCwueXl5LC56enpcIlxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIHNldCBhbGxvd2VkdHlwZXModHlwZXM6IHN0cmluZykge1xyXG4gICAgICAgIHRoaXMuX2FsbG93ZWR0eXBlcyA9IHR5cGVzO1xyXG4gICAgICAgIHRoaXMuc2V0QWxsb3dlZFR5cGVzKHR5cGVzKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0IGF1dG91cGxvYWQoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2F1dG91cGxvYWQ7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBGaWxlcyBuYWNoIGRlciBBdXN3YWhsIGF1dG9tYXRpc2NoIGhvY2hsYWRlblxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIHNldCBhdXRvdXBsb2FkKHY6IGJvb2xlYW4pIHtcclxuICAgICAgICB0aGlzLl9hdXRvdXBsb2FkID0gdjtcclxuICAgICAgICB0aGlzLm9wdGlvbnMuYXV0b1VwbG9hZCA9IHY7XHJcbiAgICAgICAgdGhpcy51cGxvYWRTZXJ2aWNlLmNvbm5lY3QodGhpcy5vcHRpb25zKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0IGVuYWJsZXBhdXNlKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9lbmFibGVwYXVzZTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFVwbG9hZHMga8O2bm5lbiB1bnRlcmJyb2NoZW4gd2VyZGVuXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgc2V0IGVuYWJsZXBhdXNlKHY6IGJvb2xlYW4pIHtcclxuICAgICAgICB0aGlzLl9lbmFibGVwYXVzZSA9IHY7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldCBlbmRwb2ludCgpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9lbmRwb2ludDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIERlZmluaWVydCBkZW4gUmVnaXN0cmF0aW9uIEVuZHBvaW50IGbDvHIgVXBsb2Fkcy5cclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBzZXQgZW5kcG9pbnQodjogc3RyaW5nKSB7XHJcbiAgICAgICAgdGhpcy5fZW5kcG9pbnQgPSB2O1xyXG4gICAgICAgIHRoaXMuc2V0RW5kcG9pbnQodik7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUb2tlbiBmb3IgQmVhcmVyIEF1dGhlbnRpY2F0aW9uXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXQgdG9rZW4oKTogc3RyaW5nIHwgbnVsbCB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Rva2VuO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVG9rZW4gZm9yIEJlYXJlciBBdXRoZW50aWNhdGlvblxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIHNldCB0b2tlbih2OiBzdHJpbmcgfCBudWxsKSB7XHJcbiAgICAgICAgdGhpcy5fdG9rZW4gPSB2O1xyXG4gICAgICAgIHRoaXMuc2V0VG9rZW4odik7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gI2VuZHJlZ2lvbiBQdWJsaWMgR2V0dGVycyBBbmQgU2V0dGVyc1xyXG5cclxuICAgIC8vICNyZWdpb24gUHVibGljIE1ldGhvZHNcclxuXHJcbiAgICAvKipcclxuICAgICAqIE1ldGhvZGUga2FubiBmw7xyIENvbnRyb2xzIHZlcndlbmRldCB3ZXJkZW4sIHp1c8OkdHpsaWNoZSBWYWxpZGllcnVuZ2VuIGJlaSBoaW56dWbDvGdlbiBkZXIgRmlsZXMgenUgbWFjaGVuXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIGZpbGUgRmlsZSBkYXMgaGluenVnZWbDvGd0IHd1cmRlLlxyXG4gICAgICogQHJldHVybnMgVmFsZGllcnVuZyBpc3QgZXJmb2xncmVpY2hcclxuICAgICAqL1xyXG4gICAgcHVibGljIGFic3RyYWN0IEN1c3RvbUFkZFZhbGlkYXRpb24oZmlsZTogVXBsb2FkU3RhdGUpOiBib29sZWFuO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogTmFtZSBkZXIgRGF0ZWkgZGllIEhvY2hnZWxhZGVuIHdpcmRcclxuICAgICAqIEByZXR1cm5zIE9ic2VydmFibGUgZGVzIERhdGVpbmFtZW5zLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgRmlsZW5hbWUoKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcclxuICAgICAgICBpZiAodGhpcy51cGxvYWRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgcmV0dXJuIG9mKHRoaXMudXBsb2Fkc1swXS5uYW1lKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5sbmdSZXNvdXJjZVNlcnZpY2UuR2V0U3RyaW5nKHRoaXMudmFsaWRhdGlvbktleVNlcnZpY2UuVXBsb2FkTm9GaWxlc1NlbGVjdGVkKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHaWJ0IGFuIG9iIFF1ZXVlIEVsZW1lbnRlIGJlaW5oYWx0ZXRcclxuICAgICAqIEByZXR1cm5zIEVsZW1lbnRlIGluIGRlciBRdWV1ZVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgSGFzUXVldWVJdGVtKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnVwbG9hZHMubGVuZ3RoID4gMDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdpYnQgYW4gb2IgZWluIFVwbG9hZCBhYmdlc2NobG9zc2VuIGlzdFxyXG4gICAgICogQHJldHVybnMgVXBsb2FkIGVyZm9sZ3JlaWNoXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBIYXNTdWNjZXNzVXBsb2FkKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGlmICh0aGlzLnVwbG9hZHMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy51cGxvYWRzLmZpbHRlcigoaXRtKSA9PiBpdG0uc3RhdHVzICE9PSAnY29tcGxldGUnKS5sZW5ndGggPT09IDA7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFByw7xmdCBvYiBlaW4gVXBsb2FkIHBhdXNpZXJ0XHJcbiAgICAgKiBAcmV0dXJucyBQYXVzaWVydGVyIFVwbG9hZCBpc3Qgdm9yaGFuZGVuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBJc1BhdXNlZCgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy51cGxvYWRzLmZpbHRlcigoaXRtKSA9PiBpdG0uc3RhdHVzID09PSAncGF1c2VkJykubGVuZ3RoID4gMDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFByw7xmdCBvYiBpbiBkZXIgUXVldWUgRWxlbWVudGUgZGllIHp1bSBVcGxvYWQgYmVyZWl0IHNpbmQgdm9yaGFuZGVuIHNpbmQuXHJcbiAgICAgKiBAcmV0dXJucyBFbGVtZW50ZSBmw7xyIFVwbG9hZCB2b3JoYW5kZW5cclxuICAgICAqL1xyXG4gICAgcHVibGljIElzU3RhdGVUb1VwbG9hZCgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy51cGxvYWRzLmZpbHRlcigoaXRtKSA9PiBpdG0uc3RhdHVzID09PSAnYWRkZWQnIHx8IGl0bS5zdGF0dXMgPT09ICdwYXVzZWQnKS5sZW5ndGggPiAwO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUHLDvGZ0IG9iIGVpbiBVcGxvYWQgZWluZXMgRmlsZXMgYW0gbGF1ZmVuIGlzdFxyXG4gICAgICogQHJldHVybnMgVXBsb2FkIGlzdCBhbSBsYXVmZW5cclxuICAgICAqL1xyXG4gICAgcHVibGljIElzVXBsb2FkaW5nKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnVwbG9hZHMuZmlsdGVyKChpdG0pID0+IGl0bS5zdGF0dXMgPT09ICd1cGxvYWRpbmcnKS5sZW5ndGggPiAwO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2lidCBkZW4gVXBsb2FkZm9ydHNjaHJpdHQgenVyw7xja1xyXG4gICAgICogQHJldHVybnMgVXBsb2FkIEZvcnRzY2hyaXR0LiBXZXJ0IHZvbiAwLTEwMFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgUHJvZ3Jlc3MoKTogbnVtYmVyIHtcclxuICAgICAgICBpZiAodGhpcy51cGxvYWRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMudXBsb2Fkc1swXS5wcm9ncmVzcztcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gMDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBNZXRob2RlIHdlbGNoZSBkaWUgVXBsb2FkIElEJ3MgaW4gZGFzIE1vZGVsIHNldHp0IG9kZXIgbMO2c2NodFxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBmaWxlIFR5cGUgdm9uIEZpbGUgSUQnc1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgYWJzdHJhY3QgU2V0VXBsb2FkVmFsdWUoZmlsZTogVXBsb2FkU3RhdGUpOiB2b2lkO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2FuY2VsIHNpbmdsZSB1cGxvYWRcclxuICAgICAqIEBwYXJhbSB1cGxvYWRJZCBJRCBvZiBGaWxlIHRvIGNhbmNlbFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgY2FuY2VsKHVwbG9hZElkKSB7XHJcbiAgICAgICAgdGhpcy51cGxvYWRTZXJ2aWNlLmNvbnRyb2woeyBhY3Rpb246ICdjYW5jZWwnLCB1cGxvYWRJZDogdXBsb2FkSWQgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDYW5jZWwgYWxsIFVwbG9hZGVkIGZpbGVzXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBjYW5jZWxBbGwoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuSGFzUXVldWVJdGVtKCkgPT09IHRydWUpIHtcclxuICAgICAgICAgICAgdGhpcy51cGxvYWRTZXJ2aWNlLmNvbnRyb2woeyBhY3Rpb246ICdjYW5jZWwnIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIERlc3Ryb3kgZGVzIENvbnRyb2xzXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcclxuICAgICAgICBpZiAodGhpcy5saXN0ZW5lckZuKSB7XHJcbiAgICAgICAgICAgIHRoaXMubGlzdGVuZXJGbigpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEluaXRpYWxpc2llcnQgZGFzIENvbnRyb2xcclxuICAgICAqL1xyXG4gICAgcHVibGljIG5nT25Jbml0KCkge1xyXG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XHJcbiAgICAgICAgLy8gSW5pdCBFdmVudCBMaXN0ZW5lciBmb3IgSW5wdXQgRmlsZSBDb250cm9sIGFuZCBIYW5kbGluZyBGaWxlc1xyXG4gICAgICAgIHRoaXMubGlzdGVuZXJGbiA9IHRoaXMucmVuZGVyZXIubGlzdGVuKHRoaXMudXBsb2FkSW5wdXQubmF0aXZlRWxlbWVudCwgJ2NoYW5nZScsIHRoaXMuZmlsZUxpc3RlbmVyKTtcclxuXHJcbiAgICAgICAgdGhpcy5zZXRBbGxvd2VkVHlwZXModGhpcy5fYWxsb3dlZHR5cGVzKTtcclxuICAgICAgICB0aGlzLnNldEVuZHBvaW50KHRoaXMuX2VuZHBvaW50KTtcclxuICAgICAgICB0aGlzLnNldFRva2VuKHRoaXMuX3Rva2VuKTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuX2VuZHBvaW50ID09PSBudWxsKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignZW5kcG9pbnQgaXMgbm90IGRlZmluZWQhJyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLnVwbG9hZFNlcnZpY2UuY29ubmVjdCh0aGlzLm9wdGlvbnMpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVXBsb2FkIEV2ZW50XHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIHVwbG9hZHNPdXRTdHJlYW0gVXBsb2FkIEl0ZW1cclxuICAgICAqL1xyXG4gICAgcHVibGljIG9uVXBsb2FkKHVmaWxlOiBVcGxvYWRTdGF0ZSkge1xyXG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy51cGxvYWRzLmZpbmRJbmRleCgoZikgPT4gZi51cGxvYWRJZCA9PT0gdWZpbGUudXBsb2FkSWQpO1xyXG5cclxuICAgICAgICBpZiAodWZpbGUuc3RhdHVzID09PSAnYWRkZWQnIHx8ICh1ZmlsZS5zdGF0dXMgPT09ICdxdWV1ZScgJiYgaW5kZXggPCAwKSkge1xyXG4gICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICB0aGlzLmlzRXh0ZW5zaW9uVmFsaWQodWZpbGUubmFtZSkgJiZcclxuICAgICAgICAgICAgICAgIHRoaXMuaXNGaWxlU2l6ZVZhbGlkKHVmaWxlLnNpemUpICYmXHJcbiAgICAgICAgICAgICAgICB0aGlzLkN1c3RvbUFkZFZhbGlkYXRpb24odWZpbGUpXHJcbiAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy51cGxvYWRzLnB1c2gobmV3IFNhY1VwbG9hZEZpbGUodWZpbGUpKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY2FuY2VsKHVmaWxlLnVwbG9hZElkKTtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuaXNFeHRlbnNpb25WYWxpZCh1ZmlsZS5uYW1lKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25maWxlZXJyb3IuZW1pdCgnSU5WQUxJRF9FWFRFTlNJT04nKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIXRoaXMuaXNGaWxlU2l6ZVZhbGlkKHVmaWxlLnNpemUpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vbmZpbGVlcnJvci5lbWl0KCdJTlZBTElEX0ZJTEVTSVpFJyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2UgaWYgKHVmaWxlLnN0YXR1cyA9PT0gJ2NhbmNlbGxlZCcpIHtcclxuICAgICAgICAgICAgaWYgKGluZGV4ID49IDApIHtcclxuICAgICAgICAgICAgICAgIHRoaXMudXBsb2Fkcy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB0aGlzLlNldFVwbG9hZFZhbHVlKG51bGwpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAodWZpbGUuc3RhdHVzID09PSAnY29tcGxldGUnKSB7XHJcbiAgICAgICAgICAgIHRoaXMudXBsb2Fkc1tpbmRleF0ucHJvZ3Jlc3MgPSB1ZmlsZS5wcm9ncmVzcztcclxuICAgICAgICAgICAgdGhpcy51cGxvYWRzW2luZGV4XS5zdGF0dXMgPSB1ZmlsZS5zdGF0dXM7XHJcbiAgICAgICAgICAgIHRoaXMuU2V0VXBsb2FkVmFsdWUodWZpbGUpO1xyXG5cclxuICAgICAgICAgICAgY29uc3QgdXBsb2FkU3RhdGU6IElTYWNVcGxvYWRFdmVudENvbXBsZXRlU3RhdGUgPSB7XHJcbiAgICAgICAgICAgICAgICBuYW1lOiB1ZmlsZS5uYW1lLFxyXG4gICAgICAgICAgICAgICAgc2l6ZTogdWZpbGUuc2l6ZSxcclxuICAgICAgICAgICAgICAgIHVwbG9hZGlkOiB0aGlzLnVwbG9hZHNbaW5kZXhdLnVwbG9hZElkLFxyXG4gICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgdGhpcy5vbnVwbG9hZGNvbXBsZXRlLmVtaXQodXBsb2FkU3RhdGUpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGlmIChpbmRleCA+PSAwKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnVwbG9hZHNbaW5kZXhdLnByb2dyZXNzID0gdWZpbGUucHJvZ3Jlc3M7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnVwbG9hZHNbaW5kZXhdLnN0YXR1cyA9IHVmaWxlLnN0YXR1cztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5VcGRhdGVGaWxlQ291bnQoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENhbmNlbCBTaW5nbGUgRmlsZVxyXG4gICAgICogQHBhcmFtIHVwbG9hZElkIElEIG9mIEZpbGUgdG8gQ2FuY2VsXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBwYXVzZSh1cGxvYWRJZCkge1xyXG4gICAgICAgIHRoaXMudXBsb2FkU2VydmljZS5jb250cm9sKHsgYWN0aW9uOiAncGF1c2UnLCB1cGxvYWRJZCB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFBhdXNlIGFsbCBVcGxvYWRzXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBwYXVzZUFsbCgpIHtcclxuICAgICAgICBpZiAodGhpcy5Jc1VwbG9hZGluZygpID09PSB0cnVlKSB7XHJcbiAgICAgICAgICAgIHRoaXMudXBsb2FkU2VydmljZS5jb250cm9sKHsgYWN0aW9uOiAncGF1c2UnIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNldHMgdGhlIGJlYXJlciB0b2tlbiBpbiB0aGUgdXBsb2FkIHNlcnZpY2VcclxuICAgICAqL1xyXG4gICAgcHVibGljIHNldFRva2VuKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgICAgICB0aGlzLm9wdGlvbnMudG9rZW4gPSB2YWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFVwbG9hZCBTaW5nbGUgRmlsZVxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSB1cGxvYWRJZCBJRCBvZiBGaWxlIHRvIFVwbG9hZFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgdXBsb2FkKHVwbG9hZElkKSB7XHJcbiAgICAgICAgdGhpcy51cGxvYWRTZXJ2aWNlLmNvbnRyb2woeyBhY3Rpb246ICd1cGxvYWQnLCB1cGxvYWRJZCB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFVwbG9hZCBhbGwgcXVldWVkIEZpbGVzXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyB1cGxvYWRBbGwoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuSXNTdGF0ZVRvVXBsb2FkKCkgPT09IHRydWUpIHtcclxuICAgICAgICAgICAgdGhpcy51cGxvYWRTZXJ2aWNlLmNvbnRyb2woeyBhY3Rpb246ICd1cGxvYWQnIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFZhbGlkaWVydCBkYXMgVXBsb2FkIENvbnRyb2xcclxuICAgICAqIEBwYXJhbSBjIENvbnRyb2wgZGFzIHZhbGlkaWVydCB3ZXJkZW4gc29sbFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgdmFsaWRhdGVEYXRhKGM6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcclxuICAgICAgICBsZXQgZXJyb3I6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuaXNyZXF1aXJlZCkge1xyXG4gICAgICAgICAgICBlcnJvciA9IFZhbGlkYXRpb24ucmVxdWlyZWQodGhpcy52YWxpZGF0aW9ubWVzc2FnZXJlcXVpcmVkLCB0aGlzLnZhbGlkYXRpb25tZXNzYWdlc3VtbWFyeXJlcXVpcmVkKShjKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBlcnJvcjtcclxuICAgIH1cclxuXHJcbiAgICAvLyAjZW5kcmVnaW9uIFB1YmxpYyBNZXRob2RzXHJcblxyXG4gICAgLy8gI3JlZ2lvbiBQcml2YXRlIE1ldGhvZHNcclxuXHJcbiAgICBwcml2YXRlIFVwZGF0ZUZpbGVDb3VudCgpOiB2b2lkIHtcclxuICAgICAgICAvLyBIQUNLOiBBZGQgYWRkaXRpb24gcHJvcGVydHkgdG8gRm9ybUNvbnRyb2wuIENhbiBiZSBmaXhlZCBpZiBzb2x1dGlvbiBmb3IgdGlja2V0OiBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL2lzc3Vlcy8xOTY4NlxyXG4gICAgICAgIGlmICh0aGlzLm5nQ29udHJvbCkge1xyXG4gICAgICAgICAgICAodGhpcy5uZ0NvbnRyb2wgYXMgdW5rbm93biBhcyBJVXBsb2FkQ29udHJvbCkudXBsb2FkZWRmaWxlY291bnQgPSB0aGlzLlVwbG9hZGVkRmlsZUNvdW50KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0dXJucyB0aGUgbnVtYmVyIG9mIHVwbG9hZGVkIGZpbGVzXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgVXBsb2FkZWRGaWxlQ291bnQoKTogbnVtYmVyIHtcclxuICAgICAgICByZXR1cm4gdGhpcy51cGxvYWRzLmZpbHRlcigoaXRtKSA9PiBpdG0uc3RhdHVzID09PSAnY29tcGxldGUnKS5sZW5ndGg7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQcsO8ZnQgb2IgZGllIERhdGVpZXJ3ZWl0ZXJ1bmcgZ8O8bHRpZyBpc3RcclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gZmlsZW5hbWUgRGF0ZWluYW1lXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgaXNFeHRlbnNpb25WYWxpZChmaWxlbmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICAgICAgaWYgKHRoaXMuX2FsbG93ZWR0eXBlcyA9PT0gJyonKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IGlzVmFsaWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgICAgICBjb25zdCBleHRlbnNpb25zOiBzdHJpbmdbXSA9IHRoaXMuX2FsbG93ZWR0eXBlcy5zcGxpdCgnLCcpO1xyXG5cclxuICAgICAgICBleHRlbnNpb25zLmZvckVhY2goKGl0bSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoZmlsZW5hbWUudG9Mb3dlckNhc2UoKS5lbmRzV2l0aChpdG0udG9Mb3dlckNhc2UoKSkpIHtcclxuICAgICAgICAgICAgICAgIGlzVmFsaWQgPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHJldHVybiBpc1ZhbGlkO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUHLDvGZ0IG9iIGRhcyBGaWxlIG5pY2h0IHp1IGdyb3NzIGlzdC5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gZmlsZXNpemUgTWF4IEZpbGUgU2l6ZSBpbiBCeXRlc1xyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGlzRmlsZVNpemVWYWxpZChmaWxlc2l6ZTogbnVtYmVyKTogYm9vbGVhbiB7XHJcbiAgICAgICAgaWYgKHRoaXMubWF4ZmlsZXNpemUgPT09IDApIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5tYXhmaWxlc2l6ZSA+PSBmaWxlc2l6ZTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNldHp0IGRpZSBlcmxhdWJ0ZW4gRGF0ZW50eXBlbiBmw7xyIGRlbiBVcGxvYWRcclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gdHlwZXMgRXJsYXVidGUgRmlsZSBFeHRlbnNpb25zXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgc2V0QWxsb3dlZFR5cGVzKHR5cGVzOiBzdHJpbmcpIHtcclxuICAgICAgICAvLyBQcsO8ZmVuIFVwbG9hZElucHV0IGJlcmVpdHMgZ2VsYWRlbiwgaXN0IE5VTEwgd2VubiBFeHRlbnNpb24gaW0gTWFya3VwIG5hY2ggTmdNb2RlbCBnZXNldHp0IHdpcmQuXHJcbiAgICAgICAgaWYgKHRoaXMudXBsb2FkSW5wdXQgJiYgdGhpcy51cGxvYWRJbnB1dC5uYXRpdmVFbGVtZW50KSB7XHJcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHRoaXMudXBsb2FkSW5wdXQubmF0aXZlRWxlbWVudCwgJ2FjY2VwdCcsIHR5cGVzKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMub3B0aW9ucy5hbGxvd2VkVHlwZXMgPSB0eXBlcztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNldHp0IGRlbiBVcGxvYWQgRW5kcG9pdFxyXG4gICAgICogQHBhcmFtIHVybCBSZWdpc3RlciBVUklcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBzZXRFbmRwb2ludCh1cmw6IHN0cmluZykge1xyXG4gICAgICAgIHRoaXMub3B0aW9ucy5lbmRwb2ludCA9IHVybDtcclxuICAgIH1cclxuXHJcbiAgICAvLyAjZW5kcmVnaW9uIFByaXZhdGUgTWV0aG9kc1xyXG59XHJcblxyXG4vKipcclxuICogS2xhc3NlIGbDvHIgZGVuIFVwbG9hZCBlaW5lciBEYXRlaSBpbiBkZXIgVXBsb2FkIENvbXBvbmVudFxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIFNhY1VwbG9hZEZpbGUge1xyXG4gICAgLy8gI3JlZ2lvbiBQcm9wZXJ0aWVzXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBEb2N1bWVudCBJRFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZG9jdW1lbnRpZDogc3RyaW5nO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogRGF0ZWluYW1lXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBuYW1lOiBzdHJpbmc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBVcGxvYWQgRm9ydHNjaHJpdHRcclxuICAgICAqL1xyXG4gICAgcHVibGljIHByb2dyZXNzOiBudW1iZXI7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBVcGxvYWQgU3RhdHVzXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdGF0dXM6IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICAqIFVwbG9hZCBJRFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgdXBsb2FkSWQ6IHN0cmluZztcclxuXHJcbiAgICAvLyAjZW5kcmVnaW9uIFByb3BlcnRpZXNcclxuXHJcbiAgICAvLyAjcmVnaW9uIENvbnN0cnVjdG9yc1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogS29uc3RydWt0b3JcclxuICAgICAqIEBwYXJhbSB1ZmlsZSBVcGxvYWQgU3RhdHVzXHJcbiAgICAgKi9cclxuICAgIGNvbnN0cnVjdG9yKHVmaWxlOiBVcGxvYWRTdGF0ZSkge1xyXG4gICAgICAgIHRoaXMudXBsb2FkSWQgPSB1ZmlsZS51cGxvYWRJZDtcclxuICAgICAgICB0aGlzLm5hbWUgPSB1ZmlsZS5uYW1lO1xyXG4gICAgICAgIHRoaXMucHJvZ3Jlc3MgPSB1ZmlsZS5wcm9ncmVzcztcclxuICAgICAgICB0aGlzLnN0YXR1cyA9IHVmaWxlLnN0YXR1cztcclxuICAgICAgICB0aGlzLmRvY3VtZW50aWQgPSBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIC8vICNlbmRyZWdpb24gQ29uc3RydWN0b3JzXHJcbn1cclxuXHJcbi8vICNlbmRyZWdpb24gRXhwb3J0ZWQgQ2xhc3Nlc1xyXG4iXX0=
146
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb3ZfaG03Y29kaWN0IiwiYWN0dWFsQ292ZXJhZ2UiLCJTQUNWQUxJREFUSU9OS0VZX1NFUlZJQ0UiLCJTYWNEZWZhdWx0VmFsaWRhdGlvbktleVNlcnZpY2UiLCJTQUNMT0NBTElTQVRJT05fU0VSVklDRSIsIlNhY0RlZmF1bHRMb2NhbGlzYXRpb25TZXJ2aWNlIiwiVmFsaWRhdGlvbiIsIlNhY0Jhc2VNb2RlbENvbnRyb2wiLCJEaXJlY3RpdmUiLCJFdmVudEVtaXR0ZXIiLCJJbnB1dCIsIk91dHB1dCIsIlZpZXdDaGlsZCIsIklkU2VydmljZSIsIlVQTE9BRFhfQUpBWCIsIlVQTE9BRFhfRkFDVE9SWV9PUFRJT05TIiwiVVBMT0FEWF9PUFRJT05TIiwiVXBsb2FkeFNlcnZpY2UiLCJvZiIsIlNhY1VwbG9hZEJhc2UiLCJjb25zdHJ1Y3RvciIsImZvcm1sYXlvdXQiLCJpbmplY3RvciIsInJlbmRlcmVyIiwibmdab25lIiwiZiIsInMiLCJfYWxsb3dlZHR5cGVzIiwiX2F1dG91cGxvYWQiLCJfZW5hYmxlcGF1c2UiLCJfZW5kcG9pbnQiLCJfdG9rZW4iLCJvcHRpb25zIiwiZmlsZUxpc3RlbmVyIiwidXBsb2FkSW5wdXQiLCJuYXRpdmVFbGVtZW50IiwiZmlsZXMiLCJiIiwidXBsb2FkU2VydmljZSIsImhhbmRsZUZpbGVzIiwiaXNyZXF1aXJlZCIsIm1heGZpbGVzaXplIiwib25maWxlZXJyb3IiLCJvbnVwbG9hZGNvbXBsZXRlIiwidmFsaWRhdGlvbm1lc3NhZ2VyZXF1aXJlZCIsInZhbGlkYXRpb25LZXlTZXJ2aWNlIiwiVmFsaWRhdGlvbkVycm9yUmVxdWlyZWQiLCJ2YWxpZGF0aW9ubWVzc2FnZXN1bW1hcnlyZXF1aXJlZCIsIlZhbGlkYXRpb25FcnJvclN1bW1hcnlSZXF1aXJlZCIsImdldCIsImxuZ1Jlc291cmNlU2VydmljZSIsInVwbG9hZHMiLCJhbGxvd2VkVHlwZXMiLCJjb25jdXJyZW5jeSIsInRva2VuIiwiYXV0b1VwbG9hZCIsIndpdGhDcmVkZW50aWFscyIsImNodW5rU2l6ZSIsImhlYWRlcnMiLCJlbmNvZGVVUkkiLCJuYW1lIiwiaW5pdCIsImV2ZW50cyIsInN1YnNjcmliZSIsInVmaWxlIiwib25VcGxvYWQiLCJJY29uQnJvd3NlIiwiaWNvblNlcnZpY2UiLCJVcGxvYWRDb21wb25lbnRCcm93c2VJY29uIiwiSWNvbkNvbnRpbnVlIiwiVXBsb2FkQ29tcG9uZW50Q29udGludWVJY29uIiwiSWNvbkRlbGV0ZSIsIlVwbG9hZENvbXBvbmVudERlbGV0ZUljb24iLCJJY29uUGF1c2UiLCJVcGxvYWRDb21wb25lbnRQYXVzZUljb24iLCJJY29uVXBsb2FkIiwiVXBsb2FkQ29tcG9uZW50VXBsb2FkSWNvbiIsImFsbG93ZWR0eXBlcyIsInR5cGVzIiwic2V0QWxsb3dlZFR5cGVzIiwiYXV0b3VwbG9hZCIsInYiLCJjb25uZWN0IiwiZW5hYmxlcGF1c2UiLCJlbmRwb2ludCIsInNldEVuZHBvaW50Iiwic2V0VG9rZW4iLCJGaWxlbmFtZSIsImxlbmd0aCIsIkdldFN0cmluZyIsIlVwbG9hZE5vRmlsZXNTZWxlY3RlZCIsIkhhc1F1ZXVlSXRlbSIsIkhhc1N1Y2Nlc3NVcGxvYWQiLCJmaWx0ZXIiLCJpdG0iLCJzdGF0dXMiLCJJc1BhdXNlZCIsIklzU3RhdGVUb1VwbG9hZCIsIklzVXBsb2FkaW5nIiwiUHJvZ3Jlc3MiLCJwcm9ncmVzcyIsImNhbmNlbCIsInVwbG9hZElkIiwiY29udHJvbCIsImFjdGlvbiIsImNhbmNlbEFsbCIsIm5nT25EZXN0cm95IiwibGlzdGVuZXJGbiIsIm5nT25Jbml0IiwibGlzdGVuIiwiRXJyb3IiLCJpbmRleCIsImZpbmRJbmRleCIsImlzRXh0ZW5zaW9uVmFsaWQiLCJpc0ZpbGVTaXplVmFsaWQiLCJzaXplIiwiQ3VzdG9tQWRkVmFsaWRhdGlvbiIsInB1c2giLCJTYWNVcGxvYWRGaWxlIiwiZW1pdCIsInNwbGljZSIsIlNldFVwbG9hZFZhbHVlIiwidXBsb2FkU3RhdGUiLCJ1cGxvYWRpZCIsIlVwZGF0ZUZpbGVDb3VudCIsInBhdXNlIiwicGF1c2VBbGwiLCJ2YWx1ZSIsInVwbG9hZCIsInVwbG9hZEFsbCIsInZhbGlkYXRlRGF0YSIsImMiLCJlcnJvciIsInJlcXVpcmVkIiwibmdDb250cm9sIiwidXBsb2FkZWRmaWxlY291bnQiLCJVcGxvYWRlZEZpbGVDb3VudCIsImZpbGVuYW1lIiwiaXNWYWxpZCIsImV4dGVuc2lvbnMiLCJzcGxpdCIsImZvckVhY2giLCJ0b0xvd2VyQ2FzZSIsImVuZHNXaXRoIiwiZmlsZXNpemUiLCJzZXRBdHRyaWJ1dGUiLCJ1cmwiLCJkZXBzIiwiaTEiLCJTYWNGb3JtTGF5b3V0Q29tbW9uIiwiaTAiLCJJbmplY3RvciIsIlJlbmRlcmVyMiIsIk5nWm9uZSIsInRhcmdldCIsIsm1ybVGYWN0b3J5VGFyZ2V0IiwiaW5wdXRzIiwib3V0cHV0cyIsInZpZXdRdWVyaWVzIiwicHJvcGVydHlOYW1lIiwiZmlyc3QiLCJwcmVkaWNhdGUiLCJkZXNjZW5kYW50cyIsInN0YXRpYyIsInVzZXNJbmhlcml0YW5jZSIsIm5nSW1wb3J0IiwiZGVjb3JhdG9ycyIsImRvY3VtZW50aWQiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9zYWMtY29tbW9uL3NyYy9jb21tb24vYmFzZXVwbG9hZGNvbnRyb2wudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2FjRm9ybUxheW91dENvbW1vbiB9IGZyb20gJy4uL2NvbnRyb2xzL2xheW91dC9mb3JtbGF5b3V0JztcclxuaW1wb3J0IHsgSVNhY0xvY2FsaXNhdGlvblNlcnZpY2UgfSBmcm9tICcuLi9pbnRlcmZhY2VzL0lTYWNMb2NhbGlzYXRpb25TZXJ2aWNlJztcclxuaW1wb3J0IHsgSVNhY1VwbG9hZEV2ZW50Q29tcGxldGVTdGF0ZSB9IGZyb20gJy4uL2ludGVyZmFjZXMvSVNhY1VwbG9hZEV2ZW50Q29tcGxldGVTdGF0ZSc7XHJcbmltcG9ydCB7IElVcGxvYWRDb250cm9sIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9pdXBsb2FkY29udHJvbCc7XHJcbmltcG9ydCB7IFNBQ1ZBTElEQVRJT05LRVlfU0VSVklDRSwgU2FjRGVmYXVsdFZhbGlkYXRpb25LZXlTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMnO1xyXG5pbXBvcnQgeyBTQUNMT0NBTElTQVRJT05fU0VSVklDRSwgU2FjRGVmYXVsdExvY2FsaXNhdGlvblNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9zYWMtbG9jYWxpc2F0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBWYWxpZGF0aW9uIH0gZnJvbSAnLi4vdmFsaWRhdGlvbic7XHJcbmltcG9ydCB7IFNhY0Jhc2VNb2RlbENvbnRyb2wgfSBmcm9tICcuL2Jhc2Vtb2RlbGNvbnRyb2wnO1xyXG5pbXBvcnQge1xyXG4gICAgRGlyZWN0aXZlLFxyXG4gICAgRWxlbWVudFJlZixcclxuICAgIEV2ZW50RW1pdHRlcixcclxuICAgIEluamVjdG9yLFxyXG4gICAgSW5wdXQsXHJcbiAgICBOZ1pvbmUsXHJcbiAgICBPbkRlc3Ryb3ksXHJcbiAgICBPbkluaXQsXHJcbiAgICBPdXRwdXQsXHJcbiAgICBSZW5kZXJlcjIsXHJcbiAgICBWaWV3Q2hpbGQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgVmFsaWRhdGlvbkVycm9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHtcclxuICAgIElkU2VydmljZSxcclxuICAgIFVQTE9BRFhfQUpBWCxcclxuICAgIFVQTE9BRFhfRkFDVE9SWV9PUFRJT05TLFxyXG4gICAgVVBMT0FEWF9PUFRJT05TLFxyXG4gICAgVXBsb2FkU3RhdGUsXHJcbiAgICBVcGxvYWR4T3B0aW9ucyxcclxuICAgIFVwbG9hZHhTZXJ2aWNlLFxyXG59IGZyb20gJ25neC11cGxvYWR4JztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcclxuXHJcbi8vICNyZWdpb24gRXhwb3J0ZWQgQ2xhc3Nlc1xyXG5cclxuLyoqXHJcbiAqIEJhc2UgS2xhc3NlIGbDvHIgVXBsb2FkZXIgQ29udHJvbFxyXG4gKi9cclxuQERpcmVjdGl2ZSgpXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBTYWNVcGxvYWRCYXNlPFZBTFVFPiBleHRlbmRzIFNhY0Jhc2VNb2RlbENvbnRyb2w8VkFMVUU+IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gICAgLy8gI3JlZ2lvbiBQcm9wZXJ0aWVzXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBFcmxhdWJ0ZSBEYXRlaXR5cGVuXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX2FsbG93ZWR0eXBlczogc3RyaW5nID0gJyonO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogRmlsZXMgYXV0b21hdGlzY2ggaG9jaGxhZGVuXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX2F1dG91cGxvYWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFBhdXNpZXJlbiB2b24gVXBsb2FkcyBlcmxhdWJlblxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9lbmFibGVwYXVzZTogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBUEkgRW5kcG9pbnRcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfZW5kcG9pbnQ6IHN0cmluZyA9IG51bGw7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUb2tlbiBmb3IgQmVhcmVyIEF1dGhlbnRpY2F0aW9uXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX3Rva2VuOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFVwbG9hZCBTZXR0aW5nc1xyXG4gICAgICovXHJcbiAgICBwcml2YXRlIG9wdGlvbnM6IFVwbG9hZHhPcHRpb25zID0ge307XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBGaWxlIElucHV0IENvbnRyb2xcclxuICAgICAqL1xyXG4gICAgQFZpZXdDaGlsZCgnZmlsZXMnLCB7IHN0YXRpYzogdHJ1ZSB9KVxyXG4gICAgcHJpdmF0ZSB1cGxvYWRJbnB1dDogRWxlbWVudFJlZjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFVwbG9hZCBTZXJ2aWNlXHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCB1cGxvYWRTZXJ2aWNlOiBVcGxvYWR4U2VydmljZTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEhhbmRsaW5nIHZvbiBuZXVlbiBGaWxlcyBpbSBJbnB1dCBDb250cm9sXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBmaWxlTGlzdGVuZXIgPSAoKSA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMudXBsb2FkSW5wdXQubmF0aXZlRWxlbWVudC5maWxlcykge1xyXG4gICAgICAgICAgICB0aGlzLnVwbG9hZFNlcnZpY2UuaGFuZGxlRmlsZXModGhpcy51cGxvYWRJbnB1dC5uYXRpdmVFbGVtZW50LmZpbGVzKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogRGVmaW5pZXJ0IGRhcyBDb250cm9sIGFscyBSZXF1aXJlZFxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSBwdWJsaWMgaXNyZXF1aXJlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogTGlzdGVuZXIgZsO8ciBGaWxlc1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgbGlzdGVuZXJGbjogKCkgPT4gdm9pZDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFNlcnZpY2UgZsO8ciBFcnJvciBMb2NhbGlzYXRpb25cclxuICAgICAqL1xyXG4gICAgcHVibGljIGxuZ1Jlc291cmNlU2VydmljZTogSVNhY0xvY2FsaXNhdGlvblNlcnZpY2U7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBNYXguIERhdGVpZ3LDtnNzZSBmw7xyIEZpbGVzIGRpZSBob2NoZ2VsYWRlbiB3ZXJkZW4ga8O2bm5lbi4gMCBkZWFrdGl2aWVydCBkZW4gRmlsdGVyXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIHB1YmxpYyBtYXhmaWxlc2l6ZTogbnVtYmVyID0gMDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEV2ZW50IHdoZW4gYW4gZXJyb3IgaXMgdHJpZ2dlcmVkIGluIHRoZSBjb21wb25lbnQuXHJcbiAgICAgKi9cclxuICAgIEBPdXRwdXQoKSBwdWJsaWMgb25maWxlZXJyb3IgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEV2ZW50IHdoZW4gYSBmaWxlIGhhcyBiZWVuIHVwbG9hZGVkLiBUaGUgZXZlbnQgaXMgdHJpZ2dlcmVkIGZvciBtdWx0aXBsZSB1cGxvYWRzIHBlciBmaWxlLlxyXG4gICAgICovXHJcbiAgICBAT3V0cHV0KClcclxuICAgIHB1YmxpYyBvbnVwbG9hZGNvbXBsZXRlID0gbmV3IEV2ZW50RW1pdHRlcjxJU2FjVXBsb2FkRXZlbnRDb21wbGV0ZVN0YXRlPigpO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQXJyYXkgdm9uIFVwbG9hZHNcclxuICAgICAqL1xyXG4gICAgcHVibGljIHVwbG9hZHM6IFNhY1VwbG9hZEZpbGVbXTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFJlc291cmNlIEtleSBmw7xyIFZhbGlkYXRpb24gTWVzc2FnZSBSZXF1aXJlZCBiZWkgQ29udHJvbFxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSBwdWJsaWMgdmFsaWRhdGlvbm1lc3NhZ2VyZXF1aXJlZDogc3RyaW5nID0gdGhpcy52YWxpZGF0aW9uS2V5U2VydmljZS5WYWxpZGF0aW9uRXJyb3JSZXF1aXJlZDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFJlc291cmNlIEtleSBmw7xyIFZhbGlkYXRpb24gTWVzc2FnZSBSZXF1aXJlZCBpbiBWYWxpZGF0aW9uIFN1bW1hcnlcclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyB2YWxpZGF0aW9ubWVzc2FnZXN1bW1hcnlyZXF1aXJlZDogc3RyaW5nID0gdGhpcy52YWxpZGF0aW9uS2V5U2VydmljZS5WYWxpZGF0aW9uRXJyb3JTdW1tYXJ5UmVxdWlyZWQ7XHJcblxyXG4gICAgLy8gI2VuZHJlZ2lvbiBQcm9wZXJ0aWVzXHJcblxyXG4gICAgLy8gI3JlZ2lvbiBDb25zdHJ1Y3RvcnNcclxuXHJcbiAgICAvKipcclxuICAgICAqIENvbnN0cnVjdG9yXHJcbiAgICAgKiBAcGFyYW0gZm9ybWxheW91dCBTYWNGb3JtTGF5b3V0Q29tbW9uIHRvIGRlZmluZSBzY29wZWQgbGF5b3V0IHNldHRpbmdzXHJcbiAgICAgKiBAcGFyYW0gaW5qZWN0b3IgSW5qZWN0b3IgZm9yIGluamVjdGluZyBzZXJ2aWNlc1xyXG4gICAgICogQHBhcmFtIHJlbmRlcmVyIGFuZ3VsYXIgcmVuZGVyaW5nIGVuZ2luZVxyXG4gICAgICogQHBhcmFtIG5nWm9uZSBuZ3pvbmUgZm9yIGhhbmRsaW5nIGV4dGVybmFsIHNjcmlwdHNcclxuICAgICAqL1xyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgZm9ybWxheW91dDogU2FjRm9ybUxheW91dENvbW1vbixcclxuICAgICAgICBpbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICAgICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxyXG4gICAgICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmVcclxuICAgICkge1xyXG4gICAgICAgIHN1cGVyKGZvcm1sYXlvdXQsIGluamVjdG9yKTtcclxuXHJcbiAgICAgICAgdGhpcy52YWxpZGF0aW9uS2V5U2VydmljZSA9IGluamVjdG9yLmdldChTQUNWQUxJREFUSU9OS0VZX1NFUlZJQ0UsIG5ldyBTYWNEZWZhdWx0VmFsaWRhdGlvbktleVNlcnZpY2UoKSk7XHJcblxyXG4gICAgICAgIHRoaXMubG5nUmVzb3VyY2VTZXJ2aWNlID0gaW5qZWN0b3IuZ2V0KFxyXG4gICAgICAgICAgICBTQUNMT0NBTElTQVRJT05fU0VSVklDRSxcclxuICAgICAgICAgICAgbmV3IFNhY0RlZmF1bHRMb2NhbGlzYXRpb25TZXJ2aWNlKHRoaXMudmFsaWRhdGlvbktleVNlcnZpY2UpXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgdGhpcy51cGxvYWRzID0gW107XHJcblxyXG4gICAgICAgIHRoaXMub3B0aW9ucy5hbGxvd2VkVHlwZXMgPSAnKic7XHJcbiAgICAgICAgdGhpcy5vcHRpb25zLmNvbmN1cnJlbmN5ID0gMTtcclxuICAgICAgICB0aGlzLm9wdGlvbnMudG9rZW4gPSAnc29tZXRva2VuJztcclxuICAgICAgICB0aGlzLm9wdGlvbnMuYXV0b1VwbG9hZCA9IHRoaXMuX2F1dG91cGxvYWQ7XHJcbiAgICAgICAgdGhpcy5vcHRpb25zLndpdGhDcmVkZW50aWFscyA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5vcHRpb25zLmNodW5rU2l6ZSA9IDEwMjQgKiAxNiAqIDg7XHJcbiAgICAgICAgdGhpcy5vcHRpb25zLmhlYWRlcnMgPSAoZjogRmlsZSkgPT4gKHtcclxuICAgICAgICAgICAgJ0NvbnRlbnQtRGlzcG9zaXRpb24nOiBgZmlsZW5hbWU9JHtlbmNvZGVVUkkoZi5uYW1lKX1gLFxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICAvLyBJbml0IG5ldyBTZXJ2aWNlIEluc3RhbmNlXHJcbiAgICAgICAgdGhpcy51cGxvYWRTZXJ2aWNlID0gbmV3IFVwbG9hZHhTZXJ2aWNlKFxyXG4gICAgICAgICAgICBpbmplY3Rvci5nZXQoVVBMT0FEWF9PUFRJT05TLCBudWxsKSxcclxuICAgICAgICAgICAgaW5qZWN0b3IuZ2V0KFVQTE9BRFhfRkFDVE9SWV9PUFRJT05TKSxcclxuICAgICAgICAgICAgaW5qZWN0b3IuZ2V0KFVQTE9BRFhfQUpBWCksXHJcbiAgICAgICAgICAgIHRoaXMubmdab25lLFxyXG4gICAgICAgICAgICBpbmplY3Rvci5nZXQoSWRTZXJ2aWNlKVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy51cGxvYWRTZXJ2aWNlLmluaXQodGhpcy5vcHRpb25zKTtcclxuXHJcbiAgICAgICAgLy8gU3Vic2NyaXBlIEV2ZW50IGZvciBTdGF0ZSBjaGFuZ2VzXHJcbiAgICAgICAgdGhpcy51cGxvYWRTZXJ2aWNlLmV2ZW50cy5zdWJzY3JpYmUoKHVmaWxlOiBVcGxvYWRTdGF0ZSkgPT4gdGhpcy5vblVwbG9hZCh1ZmlsZSkpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vICNlbmRyZWdpb24gQ29uc3RydWN0b3JzXHJcblxyXG4gICAgLy8gI3JlZ2lvbiBQdWJsaWMgR2V0dGVycyBBbmQgU2V0dGVyc1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSWNvbiBmb3IgYnJvd3NlIGJ1dHRvblxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0IEljb25Ccm93c2UoKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5pY29uU2VydmljZS5VcGxvYWRDb21wb25lbnRCcm93c2VJY29uO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogaWNvbiBmb3IgY29udGlub3VzIGJ1dHRvbnNcclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldCBJY29uQ29udGludWUoKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5pY29uU2VydmljZS5VcGxvYWRDb21wb25lbnRDb250aW51ZUljb247XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBpY29uIGZvciBkZWxldGUgYnV0dG9uc1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0IEljb25EZWxldGUoKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5pY29uU2VydmljZS5VcGxvYWRDb21wb25lbnREZWxldGVJY29uO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogaWNvbiBmb3IgcGF1c2UgYnV0dG9uc1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0IEljb25QYXVzZSgpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmljb25TZXJ2aWNlLlVwbG9hZENvbXBvbmVudFBhdXNlSWNvbjtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIGljb24gZm9yIHVwbG9hZCBidXR0b25cclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldCBJY29uVXBsb2FkKCk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaWNvblNlcnZpY2UuVXBsb2FkQ29tcG9uZW50VXBsb2FkSWNvbjtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0IGFsbG93ZWR0eXBlcygpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9hbGxvd2VkdHlwZXM7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBFcmxhdWJ0ZSBEYXRlaXR5cGVuIGbDvHIgZGVuIFVwbG9hZC4gRm9ybWF0OiBcIi54eHgsLnl5eSwuenp6XCJcclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBzZXQgYWxsb3dlZHR5cGVzKHR5cGVzOiBzdHJpbmcpIHtcclxuICAgICAgICB0aGlzLl9hbGxvd2VkdHlwZXMgPSB0eXBlcztcclxuICAgICAgICB0aGlzLnNldEFsbG93ZWRUeXBlcyh0eXBlcyk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldCBhdXRvdXBsb2FkKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9hdXRvdXBsb2FkO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRmlsZXMgbmFjaCBkZXIgQXVzd2FobCBhdXRvbWF0aXNjaCBob2NobGFkZW5cclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBzZXQgYXV0b3VwbG9hZCh2OiBib29sZWFuKSB7XHJcbiAgICAgICAgdGhpcy5fYXV0b3VwbG9hZCA9IHY7XHJcbiAgICAgICAgdGhpcy5vcHRpb25zLmF1dG9VcGxvYWQgPSB2O1xyXG4gICAgICAgIHRoaXMudXBsb2FkU2VydmljZS5jb25uZWN0KHRoaXMub3B0aW9ucyk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldCBlbmFibGVwYXVzZSgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fZW5hYmxlcGF1c2U7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBVcGxvYWRzIGvDtm5uZW4gdW50ZXJicm9jaGVuIHdlcmRlblxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIHNldCBlbmFibGVwYXVzZSh2OiBib29sZWFuKSB7XHJcbiAgICAgICAgdGhpcy5fZW5hYmxlcGF1c2UgPSB2O1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXQgZW5kcG9pbnQoKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fZW5kcG9pbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBEZWZpbmllcnQgZGVuIFJlZ2lzdHJhdGlvbiBFbmRwb2ludCBmw7xyIFVwbG9hZHMuXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgc2V0IGVuZHBvaW50KHY6IHN0cmluZykge1xyXG4gICAgICAgIHRoaXMuX2VuZHBvaW50ID0gdjtcclxuICAgICAgICB0aGlzLnNldEVuZHBvaW50KHYpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVG9rZW4gZm9yIEJlYXJlciBBdXRoZW50aWNhdGlvblxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0IHRva2VuKCk6IHN0cmluZyB8IG51bGwge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl90b2tlbjtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFRva2VuIGZvciBCZWFyZXIgQXV0aGVudGljYXRpb25cclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBzZXQgdG9rZW4odjogc3RyaW5nIHwgbnVsbCkge1xyXG4gICAgICAgIHRoaXMuX3Rva2VuID0gdjtcclxuICAgICAgICB0aGlzLnNldFRva2VuKHYpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vICNlbmRyZWdpb24gUHVibGljIEdldHRlcnMgQW5kIFNldHRlcnNcclxuXHJcbiAgICAvLyAjcmVnaW9uIFB1YmxpYyBNZXRob2RzXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBNZXRob2RlIGthbm4gZsO8ciBDb250cm9scyB2ZXJ3ZW5kZXQgd2VyZGVuLCB6dXPDpHR6bGljaGUgVmFsaWRpZXJ1bmdlbiBiZWkgaGluenVmw7xnZW4gZGVyIEZpbGVzIHp1IG1hY2hlblxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBmaWxlIEZpbGUgZGFzIGhpbnp1Z2Vmw7xndCB3dXJkZS5cclxuICAgICAqIEByZXR1cm5zIFZhbGRpZXJ1bmcgaXN0IGVyZm9sZ3JlaWNoXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBhYnN0cmFjdCBDdXN0b21BZGRWYWxpZGF0aW9uKGZpbGU6IFVwbG9hZFN0YXRlKTogYm9vbGVhbjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIE5hbWUgZGVyIERhdGVpIGRpZSBIb2NoZ2VsYWRlbiB3aXJkXHJcbiAgICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlIGRlcyBEYXRlaW5hbWVucy5cclxuICAgICAqL1xyXG4gICAgcHVibGljIEZpbGVuYW1lKCk6IE9ic2VydmFibGU8c3RyaW5nPiB7XHJcbiAgICAgICAgaWYgKHRoaXMudXBsb2Fkcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBvZih0aGlzLnVwbG9hZHNbMF0ubmFtZSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMubG5nUmVzb3VyY2VTZXJ2aWNlLkdldFN0cmluZyh0aGlzLnZhbGlkYXRpb25LZXlTZXJ2aWNlLlVwbG9hZE5vRmlsZXNTZWxlY3RlZCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2lidCBhbiBvYiBRdWV1ZSBFbGVtZW50ZSBiZWluaGFsdGV0XHJcbiAgICAgKiBAcmV0dXJucyBFbGVtZW50ZSBpbiBkZXIgUXVldWVcclxuICAgICAqL1xyXG4gICAgcHVibGljIEhhc1F1ZXVlSXRlbSgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy51cGxvYWRzLmxlbmd0aCA+IDA7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHaWJ0IGFuIG9iIGVpbiBVcGxvYWQgYWJnZXNjaGxvc3NlbiBpc3RcclxuICAgICAqIEByZXR1cm5zIFVwbG9hZCBlcmZvbGdyZWljaFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgSGFzU3VjY2Vzc1VwbG9hZCgpOiBib29sZWFuIHtcclxuICAgICAgICBpZiAodGhpcy51cGxvYWRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMudXBsb2Fkcy5maWx0ZXIoKGl0bSkgPT4gaXRtLnN0YXR1cyAhPT0gJ2NvbXBsZXRlJykubGVuZ3RoID09PSAwO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQcsO8ZnQgb2IgZWluIFVwbG9hZCBwYXVzaWVydFxyXG4gICAgICogQHJldHVybnMgUGF1c2llcnRlciBVcGxvYWQgaXN0IHZvcmhhbmRlblxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgSXNQYXVzZWQoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudXBsb2Fkcy5maWx0ZXIoKGl0bSkgPT4gaXRtLnN0YXR1cyA9PT0gJ3BhdXNlZCcpLmxlbmd0aCA+IDA7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQcsO8ZnQgb2IgaW4gZGVyIFF1ZXVlIEVsZW1lbnRlIGRpZSB6dW0gVXBsb2FkIGJlcmVpdCBzaW5kIHZvcmhhbmRlbiBzaW5kLlxyXG4gICAgICogQHJldHVybnMgRWxlbWVudGUgZsO8ciBVcGxvYWQgdm9yaGFuZGVuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBJc1N0YXRlVG9VcGxvYWQoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudXBsb2Fkcy5maWx0ZXIoKGl0bSkgPT4gaXRtLnN0YXR1cyA9PT0gJ2FkZGVkJyB8fCBpdG0uc3RhdHVzID09PSAncGF1c2VkJykubGVuZ3RoID4gMDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFByw7xmdCBvYiBlaW4gVXBsb2FkIGVpbmVzIEZpbGVzIGFtIGxhdWZlbiBpc3RcclxuICAgICAqIEByZXR1cm5zIFVwbG9hZCBpc3QgYW0gbGF1ZmVuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBJc1VwbG9hZGluZygpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy51cGxvYWRzLmZpbHRlcigoaXRtKSA9PiBpdG0uc3RhdHVzID09PSAndXBsb2FkaW5nJykubGVuZ3RoID4gMDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdpYnQgZGVuIFVwbG9hZGZvcnRzY2hyaXR0IHp1csO8Y2tcclxuICAgICAqIEByZXR1cm5zIFVwbG9hZCBGb3J0c2Nocml0dC4gV2VydCB2b24gMC0xMDBcclxuICAgICAqL1xyXG4gICAgcHVibGljIFByb2dyZXNzKCk6IG51bWJlciB7XHJcbiAgICAgICAgaWYgKHRoaXMudXBsb2Fkcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnVwbG9hZHNbMF0ucHJvZ3Jlc3M7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIDA7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTWV0aG9kZSB3ZWxjaGUgZGllIFVwbG9hZCBJRCdzIGluIGRhcyBNb2RlbCBzZXR6dCBvZGVyIGzDtnNjaHRcclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gZmlsZSBUeXBlIHZvbiBGaWxlIElEJ3NcclxuICAgICAqL1xyXG4gICAgcHVibGljIGFic3RyYWN0IFNldFVwbG9hZFZhbHVlKGZpbGU6IFVwbG9hZFN0YXRlKTogdm9pZDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIENhbmNlbCBzaW5nbGUgdXBsb2FkXHJcbiAgICAgKiBAcGFyYW0gdXBsb2FkSWQgSUQgb2YgRmlsZSB0byBjYW5jZWxcclxuICAgICAqL1xyXG4gICAgcHVibGljIGNhbmNlbCh1cGxvYWRJZCkge1xyXG4gICAgICAgIHRoaXMudXBsb2FkU2VydmljZS5jb250cm9sKHsgYWN0aW9uOiAnY2FuY2VsJywgdXBsb2FkSWQ6IHVwbG9hZElkIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2FuY2VsIGFsbCBVcGxvYWRlZCBmaWxlc1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgY2FuY2VsQWxsKCkge1xyXG4gICAgICAgIGlmICh0aGlzLkhhc1F1ZXVlSXRlbSgpID09PSB0cnVlKSB7XHJcbiAgICAgICAgICAgIHRoaXMudXBsb2FkU2VydmljZS5jb250cm9sKHsgYWN0aW9uOiAnY2FuY2VsJyB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBEZXN0cm95IGRlcyBDb250cm9sc1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICAgICAgaWYgKHRoaXMubGlzdGVuZXJGbikge1xyXG4gICAgICAgICAgICB0aGlzLmxpc3RlbmVyRm4oKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbml0aWFsaXNpZXJ0IGRhcyBDb250cm9sXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBuZ09uSW5pdCgpIHtcclxuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xyXG4gICAgICAgIC8vIEluaXQgRXZlbnQgTGlzdGVuZXIgZm9yIElucHV0IEZpbGUgQ29udHJvbCBhbmQgSGFuZGxpbmcgRmlsZXNcclxuICAgICAgICB0aGlzLmxpc3RlbmVyRm4gPSB0aGlzLnJlbmRlcmVyLmxpc3Rlbih0aGlzLnVwbG9hZElucHV0Lm5hdGl2ZUVsZW1lbnQsICdjaGFuZ2UnLCB0aGlzLmZpbGVMaXN0ZW5lcik7XHJcblxyXG4gICAgICAgIHRoaXMuc2V0QWxsb3dlZFR5cGVzKHRoaXMuX2FsbG93ZWR0eXBlcyk7XHJcbiAgICAgICAgdGhpcy5zZXRFbmRwb2ludCh0aGlzLl9lbmRwb2ludCk7XHJcbiAgICAgICAgdGhpcy5zZXRUb2tlbih0aGlzLl90b2tlbik7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLl9lbmRwb2ludCA9PT0gbnVsbCkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2VuZHBvaW50IGlzIG5vdCBkZWZpbmVkIScpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy51cGxvYWRTZXJ2aWNlLmNvbm5lY3QodGhpcy5vcHRpb25zKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFVwbG9hZCBFdmVudFxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSB1cGxvYWRzT3V0U3RyZWFtIFVwbG9hZCBJdGVtXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBvblVwbG9hZCh1ZmlsZTogVXBsb2FkU3RhdGUpIHtcclxuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMudXBsb2Fkcy5maW5kSW5kZXgoKGYpID0+IGYudXBsb2FkSWQgPT09IHVmaWxlLnVwbG9hZElkKTtcclxuXHJcbiAgICAgICAgaWYgKHVmaWxlLnN0YXR1cyA9PT0gJ2FkZGVkJyB8fCAodWZpbGUuc3RhdHVzID09PSAncXVldWUnICYmIGluZGV4IDwgMCkpIHtcclxuICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgICAgdGhpcy5pc0V4dGVuc2lvblZhbGlkKHVmaWxlLm5hbWUpICYmXHJcbiAgICAgICAgICAgICAgICB0aGlzLmlzRmlsZVNpemVWYWxpZCh1ZmlsZS5zaXplKSAmJlxyXG4gICAgICAgICAgICAgICAgdGhpcy5DdXN0b21BZGRWYWxpZGF0aW9uKHVmaWxlKVxyXG4gICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgIHRoaXMudXBsb2Fkcy5wdXNoKG5ldyBTYWNVcGxvYWRGaWxlKHVmaWxlKSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNhbmNlbCh1ZmlsZS51cGxvYWRJZCk7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmlzRXh0ZW5zaW9uVmFsaWQodWZpbGUubmFtZSkpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uZmlsZWVycm9yLmVtaXQoJ0lOVkFMSURfRVhURU5TSU9OJyk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCF0aGlzLmlzRmlsZVNpemVWYWxpZCh1ZmlsZS5zaXplKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25maWxlZXJyb3IuZW1pdCgnSU5WQUxJRF9GSUxFU0laRScpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIGlmICh1ZmlsZS5zdGF0dXMgPT09ICdjYW5jZWxsZWQnKSB7XHJcbiAgICAgICAgICAgIGlmIChpbmRleCA+PSAwKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnVwbG9hZHMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdGhpcy5TZXRVcGxvYWRWYWx1ZShudWxsKTtcclxuICAgICAgICB9IGVsc2UgaWYgKHVmaWxlLnN0YXR1cyA9PT0gJ2NvbXBsZXRlJykge1xyXG4gICAgICAgICAgICB0aGlzLnVwbG9hZHNbaW5kZXhdLnByb2dyZXNzID0gdWZpbGUucHJvZ3Jlc3M7XHJcbiAgICAgICAgICAgIHRoaXMudXBsb2Fkc1tpbmRleF0uc3RhdHVzID0gdWZpbGUuc3RhdHVzO1xyXG4gICAgICAgICAgICB0aGlzLlNldFVwbG9hZFZhbHVlKHVmaWxlKTtcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IHVwbG9hZFN0YXRlOiBJU2FjVXBsb2FkRXZlbnRDb21wbGV0ZVN0YXRlID0ge1xyXG4gICAgICAgICAgICAgICAgbmFtZTogdWZpbGUubmFtZSxcclxuICAgICAgICAgICAgICAgIHNpemU6IHVmaWxlLnNpemUsXHJcbiAgICAgICAgICAgICAgICB1cGxvYWRpZDogdGhpcy51cGxvYWRzW2luZGV4XS51cGxvYWRJZCxcclxuICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMub251cGxvYWRjb21wbGV0ZS5lbWl0KHVwbG9hZFN0YXRlKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAoaW5kZXggPj0gMCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy51cGxvYWRzW2luZGV4XS5wcm9ncmVzcyA9IHVmaWxlLnByb2dyZXNzO1xyXG4gICAgICAgICAgICAgICAgdGhpcy51cGxvYWRzW2luZGV4XS5zdGF0dXMgPSB1ZmlsZS5zdGF0dXM7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuVXBkYXRlRmlsZUNvdW50KCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDYW5jZWwgU2luZ2xlIEZpbGVcclxuICAgICAqIEBwYXJhbSB1cGxvYWRJZCBJRCBvZiBGaWxlIHRvIENhbmNlbFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgcGF1c2UodXBsb2FkSWQpIHtcclxuICAgICAgICB0aGlzLnVwbG9hZFNlcnZpY2UuY29udHJvbCh7IGFjdGlvbjogJ3BhdXNlJywgdXBsb2FkSWQgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQYXVzZSBhbGwgVXBsb2Fkc1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgcGF1c2VBbGwoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuSXNVcGxvYWRpbmcoKSA9PT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICB0aGlzLnVwbG9hZFNlcnZpY2UuY29udHJvbCh7IGFjdGlvbjogJ3BhdXNlJyB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTZXRzIHRoZSBiZWFyZXIgdG9rZW4gaW4gdGhlIHVwbG9hZCBzZXJ2aWNlXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzZXRUb2tlbih2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICAgICAgdGhpcy5vcHRpb25zLnRva2VuID0gdmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBVcGxvYWQgU2luZ2xlIEZpbGVcclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gdXBsb2FkSWQgSUQgb2YgRmlsZSB0byBVcGxvYWRcclxuICAgICAqL1xyXG4gICAgcHVibGljIHVwbG9hZCh1cGxvYWRJZCkge1xyXG4gICAgICAgIHRoaXMudXBsb2FkU2VydmljZS5jb250cm9sKHsgYWN0aW9uOiAndXBsb2FkJywgdXBsb2FkSWQgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBVcGxvYWQgYWxsIHF1ZXVlZCBGaWxlc1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgdXBsb2FkQWxsKCkge1xyXG4gICAgICAgIGlmICh0aGlzLklzU3RhdGVUb1VwbG9hZCgpID09PSB0cnVlKSB7XHJcbiAgICAgICAgICAgIHRoaXMudXBsb2FkU2VydmljZS5jb250cm9sKHsgYWN0aW9uOiAndXBsb2FkJyB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBWYWxpZGllcnQgZGFzIFVwbG9hZCBDb250cm9sXHJcbiAgICAgKiBAcGFyYW0gYyBDb250cm9sIGRhcyB2YWxpZGllcnQgd2VyZGVuIHNvbGxcclxuICAgICAqL1xyXG4gICAgcHVibGljIHZhbGlkYXRlRGF0YShjOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XHJcbiAgICAgICAgbGV0IGVycm9yOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmlzcmVxdWlyZWQpIHtcclxuICAgICAgICAgICAgZXJyb3IgPSBWYWxpZGF0aW9uLnJlcXVpcmVkKHRoaXMudmFsaWRhdGlvbm1lc3NhZ2VyZXF1aXJlZCwgdGhpcy52YWxpZGF0aW9ubWVzc2FnZXN1bW1hcnlyZXF1aXJlZCkoYyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gZXJyb3I7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gI2VuZHJlZ2lvbiBQdWJsaWMgTWV0aG9kc1xyXG5cclxuICAgIC8vICNyZWdpb24gUHJpdmF0ZSBNZXRob2RzXHJcblxyXG4gICAgcHJpdmF0ZSBVcGRhdGVGaWxlQ291bnQoKTogdm9pZCB7XHJcbiAgICAgICAgLy8gSEFDSzogQWRkIGFkZGl0aW9uIHByb3BlcnR5IHRvIEZvcm1Db250cm9sLiBDYW4gYmUgZml4ZWQgaWYgc29sdXRpb24gZm9yIHRpY2tldDogaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9pc3N1ZXMvMTk2ODZcclxuICAgICAgICBpZiAodGhpcy5uZ0NvbnRyb2wpIHtcclxuICAgICAgICAgICAgKHRoaXMubmdDb250cm9sIGFzIHVua25vd24gYXMgSVVwbG9hZENvbnRyb2wpLnVwbG9hZGVkZmlsZWNvdW50ID0gdGhpcy5VcGxvYWRlZEZpbGVDb3VudCgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJldHVybnMgdGhlIG51bWJlciBvZiB1cGxvYWRlZCBmaWxlc1xyXG4gICAgICovXHJcbiAgICBwcml2YXRlIFVwbG9hZGVkRmlsZUNvdW50KCk6IG51bWJlciB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudXBsb2Fkcy5maWx0ZXIoKGl0bSkgPT4gaXRtLnN0YXR1cyA9PT0gJ2NvbXBsZXRlJykubGVuZ3RoO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUHLDvGZ0IG9iIGRpZSBEYXRlaWVyd2VpdGVydW5nIGfDvGx0aWcgaXN0XHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIGZpbGVuYW1lIERhdGVpbmFtZVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGlzRXh0ZW5zaW9uVmFsaWQoZmlsZW5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGlmICh0aGlzLl9hbGxvd2VkdHlwZXMgPT09ICcqJykge1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCBpc1ZhbGlkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICAgICAgY29uc3QgZXh0ZW5zaW9uczogc3RyaW5nW10gPSB0aGlzLl9hbGxvd2VkdHlwZXMuc3BsaXQoJywnKTtcclxuXHJcbiAgICAgICAgZXh0ZW5zaW9ucy5mb3JFYWNoKChpdG0pID0+IHtcclxuICAgICAgICAgICAgaWYgKGZpbGVuYW1lLnRvTG93ZXJDYXNlKCkuZW5kc1dpdGgoaXRtLnRvTG93ZXJDYXNlKCkpKSB7XHJcbiAgICAgICAgICAgICAgICBpc1ZhbGlkID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICByZXR1cm4gaXNWYWxpZDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFByw7xmdCBvYiBkYXMgRmlsZSBuaWNodCB6dSBncm9zcyBpc3QuXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIGZpbGVzaXplIE1heCBGaWxlIFNpemUgaW4gQnl0ZXNcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBpc0ZpbGVTaXplVmFsaWQoZmlsZXNpemU6IG51bWJlcik6IGJvb2xlYW4ge1xyXG4gICAgICAgIGlmICh0aGlzLm1heGZpbGVzaXplID09PSAwKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMubWF4ZmlsZXNpemUgPj0gZmlsZXNpemU7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTZXR6dCBkaWUgZXJsYXVidGVuIERhdGVudHlwZW4gZsO8ciBkZW4gVXBsb2FkXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIHR5cGVzIEVybGF1YnRlIEZpbGUgRXh0ZW5zaW9uc1xyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHNldEFsbG93ZWRUeXBlcyh0eXBlczogc3RyaW5nKSB7XHJcbiAgICAgICAgLy8gUHLDvGZlbiBVcGxvYWRJbnB1dCBiZXJlaXRzIGdlbGFkZW4sIGlzdCBOVUxMIHdlbm4gRXh0ZW5zaW9uIGltIE1hcmt1cCBuYWNoIE5nTW9kZWwgZ2VzZXR6dCB3aXJkLlxyXG4gICAgICAgIGlmICh0aGlzLnVwbG9hZElucHV0ICYmIHRoaXMudXBsb2FkSW5wdXQubmF0aXZlRWxlbWVudCkge1xyXG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSh0aGlzLnVwbG9hZElucHV0Lm5hdGl2ZUVsZW1lbnQsICdhY2NlcHQnLCB0eXBlcyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLm9wdGlvbnMuYWxsb3dlZFR5cGVzID0gdHlwZXM7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTZXR6dCBkZW4gVXBsb2FkIEVuZHBvaXRcclxuICAgICAqIEBwYXJhbSB1cmwgUmVnaXN0ZXIgVVJJXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgc2V0RW5kcG9pbnQodXJsOiBzdHJpbmcpIHtcclxuICAgICAgICB0aGlzLm9wdGlvbnMuZW5kcG9pbnQgPSB1cmw7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gI2VuZHJlZ2lvbiBQcml2YXRlIE1ldGhvZHNcclxufVxyXG5cclxuLyoqXHJcbiAqIEtsYXNzZSBmw7xyIGRlbiBVcGxvYWQgZWluZXIgRGF0ZWkgaW4gZGVyIFVwbG9hZCBDb21wb25lbnRcclxuICovXHJcbmV4cG9ydCBjbGFzcyBTYWNVcGxvYWRGaWxlIHtcclxuICAgIC8vICNyZWdpb24gUHJvcGVydGllc1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogRG9jdW1lbnQgSURcclxuICAgICAqL1xyXG4gICAgcHVibGljIGRvY3VtZW50aWQ6IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICAqIERhdGVpbmFtZVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgbmFtZTogc3RyaW5nO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVXBsb2FkIEZvcnRzY2hyaXR0XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBwcm9ncmVzczogbnVtYmVyO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVXBsb2FkIFN0YXR1c1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc3RhdHVzOiBzdHJpbmc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBVcGxvYWQgSURcclxuICAgICAqL1xyXG4gICAgcHVibGljIHVwbG9hZElkOiBzdHJpbmc7XHJcblxyXG4gICAgLy8gI2VuZHJlZ2lvbiBQcm9wZXJ0aWVzXHJcblxyXG4gICAgLy8gI3JlZ2lvbiBDb25zdHJ1Y3RvcnNcclxuXHJcbiAgICAvKipcclxuICAgICAqIEtvbnN0cnVrdG9yXHJcbiAgICAgKiBAcGFyYW0gdWZpbGUgVXBsb2FkIFN0YXR1c1xyXG4gICAgICovXHJcbiAgICBjb25zdHJ1Y3Rvcih1ZmlsZTogVXBsb2FkU3RhdGUpIHtcclxuICAgICAgICB0aGlzLnVwbG9hZElkID0gdWZpbGUudXBsb2FkSWQ7XHJcbiAgICAgICAgdGhpcy5uYW1lID0gdWZpbGUubmFtZTtcclxuICAgICAgICB0aGlzLnByb2dyZXNzID0gdWZpbGUucHJvZ3Jlc3M7XHJcbiAgICAgICAgdGhpcy5zdGF0dXMgPSB1ZmlsZS5zdGF0dXM7XHJcbiAgICAgICAgdGhpcy5kb2N1bWVudGlkID0gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICAvLyAjZW5kcmVnaW9uIENvbnN0cnVjdG9yc1xy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