@simpleangularcontrols/sac-common 16.0.0-rc.4 → 16.0.0-rc.5

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 (198) hide show
  1. package/common/basedatetimecontrol.d.ts.map +1 -1
  2. package/common/basemodelcontrol.d.ts +19 -1
  3. package/common/basemodelcontrol.d.ts.map +1 -1
  4. package/common/baseuploadcontrol.d.ts.map +1 -1
  5. package/components/browser/browser.d.ts +11 -6
  6. package/components/browser/browser.d.ts.map +1 -1
  7. package/controls/buttons/button.d.ts +23 -22
  8. package/controls/buttons/button.d.ts.map +1 -1
  9. package/controls/checkbox/radiobutton.d.ts +9 -0
  10. package/controls/checkbox/radiobutton.d.ts.map +1 -1
  11. package/controls/checkbox/radiobuttons.d.ts +20 -20
  12. package/controls/checkbox/radiobuttons.d.ts.map +1 -1
  13. package/controls/confirm/confirm.button.d.ts +14 -8
  14. package/controls/confirm/confirm.button.d.ts.map +1 -1
  15. package/controls/confirm/confirm.service.d.ts +24 -19
  16. package/controls/confirm/confirm.service.d.ts.map +1 -1
  17. package/controls/datetime/date.d.ts +33 -33
  18. package/controls/datetime/date.d.ts.map +1 -1
  19. package/controls/datetime/datetime.d.ts +31 -31
  20. package/controls/datetime/datetime.d.ts.map +1 -1
  21. package/controls/datetime/time.d.ts +29 -29
  22. package/controls/datetime/time.d.ts.map +1 -1
  23. package/controls/grid/grid.d.ts +57 -54
  24. package/controls/grid/grid.d.ts.map +1 -1
  25. package/controls/grid/paging.d.ts +70 -67
  26. package/controls/grid/paging.d.ts.map +1 -1
  27. package/controls/input/input.d.ts +11 -11
  28. package/controls/input/input.d.ts.map +1 -1
  29. package/controls/input/inputdecimal.d.ts.map +1 -1
  30. package/controls/input/inputemail.d.ts.map +1 -1
  31. package/controls/input/inputinteger.d.ts +21 -21
  32. package/controls/input/inputinteger.d.ts.map +1 -1
  33. package/controls/input/inputpassword.d.ts +5 -5
  34. package/controls/input/inputpassword.d.ts.map +1 -1
  35. package/controls/layout/formlayout.d.ts +14 -9
  36. package/controls/layout/formlayout.d.ts.map +1 -1
  37. package/controls/list/dropdown.d.ts.map +1 -1
  38. package/controls/list/listbox.d.ts +20 -20
  39. package/controls/list/listbox.d.ts.map +1 -1
  40. package/controls/multilanguage/multilanguageinput.d.ts +31 -31
  41. package/controls/multilanguage/multilanguageinput.d.ts.map +1 -1
  42. package/controls/multilanguage/multilanguageinputarea.d.ts +34 -34
  43. package/controls/multilanguage/multilanguageinputarea.d.ts.map +1 -1
  44. package/controls/tinymce/tinymce.d.ts.map +1 -1
  45. package/controls/upload/dropzonemultiple.d.ts +24 -24
  46. package/controls/upload/dropzonemultiple.d.ts.map +1 -1
  47. package/controls/upload/uploadmultiple.d.ts +9 -9
  48. package/controls/upload/uploadmultiple.d.ts.map +1 -1
  49. package/controls/validation/validationsummary.d.ts +18 -13
  50. package/controls/validation/validationsummary.d.ts.map +1 -1
  51. package/enums/ButtonRoleType.d.ts +2 -0
  52. package/enums/ButtonRoleType.d.ts.map +1 -0
  53. package/enums/ControlHeight.d.ts +18 -0
  54. package/enums/ControlHeight.d.ts.map +1 -0
  55. package/esm2022/common/basedatetimecontrol.mjs +32 -148
  56. package/esm2022/common/baseinputcontrol.mjs +20 -77
  57. package/esm2022/common/baselistcontrol.mjs +11 -56
  58. package/esm2022/common/basemodelcontrol.mjs +81 -408
  59. package/esm2022/common/baseselectcontrol.mjs +6 -27
  60. package/esm2022/common/baseuploadcontrol.mjs +64 -389
  61. package/esm2022/components/browser/browser.mjs +66 -474
  62. package/esm2022/components/browser/models/browserfile.mjs +3 -2
  63. package/esm2022/components/browser/models/browserfiledeleterequest.mjs +5 -10
  64. package/esm2022/components/browser/models/browserfilerenamerequest.mjs +5 -10
  65. package/esm2022/components/browser/models/browserfileresponse.mjs +3 -2
  66. package/esm2022/components/browser/models/browserfilesaverequest.mjs +5 -10
  67. package/esm2022/components/browser/models/browsernode.mjs +3 -2
  68. package/esm2022/components/browser/models/browsernodedeleterequest.mjs +5 -10
  69. package/esm2022/components/browser/models/browsernodenewrequest.mjs +5 -10
  70. package/esm2022/components/browser/models/browsernoderenamerequest.mjs +5 -10
  71. package/esm2022/components/browser/models/browsernoderequest.mjs +5 -10
  72. package/esm2022/components/browser/models/browsernoderesponse.mjs +3 -2
  73. package/esm2022/controls/buttons/button.mjs +32 -131
  74. package/esm2022/controls/checkbox/checkbox.mjs +7 -34
  75. package/esm2022/controls/checkbox/radiobutton.mjs +24 -98
  76. package/esm2022/controls/checkbox/radiobuttons.mjs +26 -104
  77. package/esm2022/controls/confirm/confirm.button.mjs +17 -21
  78. package/esm2022/controls/confirm/confirm.mjs +19 -69
  79. package/esm2022/controls/confirm/confirm.service.mjs +29 -74
  80. package/esm2022/controls/contextmenu/contextmenu.mjs +31 -169
  81. package/esm2022/controls/contextmenu/contextmenuanchor.mjs +7 -20
  82. package/esm2022/controls/contextmenu/contextmenucontainer.mjs +7 -20
  83. package/esm2022/controls/contextmenu/contextmenuitem.mjs +4 -13
  84. package/esm2022/controls/contextmenu/contextmenuitembutton.mjs +15 -91
  85. package/esm2022/controls/datetime/date.mjs +39 -203
  86. package/esm2022/controls/datetime/dateselector.mjs +65 -409
  87. package/esm2022/controls/datetime/datetime.mjs +41 -220
  88. package/esm2022/controls/datetime/time.mjs +38 -201
  89. package/esm2022/controls/dialog/dialog.mjs +33 -194
  90. package/esm2022/controls/form/form.mjs +24 -96
  91. package/esm2022/controls/grid/grid.mjs +39 -146
  92. package/esm2022/controls/grid/gridbutton.mjs +9 -52
  93. package/esm2022/controls/grid/gridcolumn.mjs +9 -41
  94. package/esm2022/controls/grid/gridcolumnaction.mjs +5 -20
  95. package/esm2022/controls/grid/gridcolumnbase.mjs +20 -114
  96. package/esm2022/controls/grid/gridimage.mjs +4 -15
  97. package/esm2022/controls/grid/model.mjs +16 -59
  98. package/esm2022/controls/grid/paging.mjs +65 -232
  99. package/esm2022/controls/input/input.mjs +17 -65
  100. package/esm2022/controls/input/inputarea.mjs +10 -53
  101. package/esm2022/controls/input/inputcurrency.mjs +4 -14
  102. package/esm2022/controls/input/inputdecimal.mjs +25 -140
  103. package/esm2022/controls/input/inputemail.mjs +10 -37
  104. package/esm2022/controls/input/inputinteger.mjs +32 -127
  105. package/esm2022/controls/input/inputpassword.mjs +12 -43
  106. package/esm2022/controls/input/inputsearch.mjs +8 -37
  107. package/esm2022/controls/layout/formlayout.mjs +20 -65
  108. package/esm2022/controls/list/dropdown.mjs +54 -219
  109. package/esm2022/controls/list/listbox.mjs +40 -159
  110. package/esm2022/controls/multilanguage/multilanguageinput.mjs +45 -213
  111. package/esm2022/controls/multilanguage/multilanguageinputarea.mjs +48 -215
  112. package/esm2022/controls/static/formcontainer.mjs +10 -44
  113. package/esm2022/controls/static/staticlabel.mjs +7 -28
  114. package/esm2022/controls/tabs/tab.mjs +14 -68
  115. package/esm2022/controls/tabs/tabitem.mjs +7 -37
  116. package/esm2022/controls/tinymce/tinymce.mjs +41 -218
  117. package/esm2022/controls/tinymce/tinymcedialogsettings.mjs +5 -10
  118. package/esm2022/controls/tinymce/tinymcedialogsettingsmeta.mjs +4 -4
  119. package/esm2022/controls/tinymce/tinymceinstance.mjs +3 -2
  120. package/esm2022/controls/tooltip/tooltip.mjs +46 -327
  121. package/esm2022/controls/treeview/ngtreeitemaction.mjs +9 -56
  122. package/esm2022/controls/treeview/treeview.mjs +53 -299
  123. package/esm2022/controls/treeview/treeviewchild.mjs +5 -19
  124. package/esm2022/controls/upload/dropzonemultiple.mjs +32 -152
  125. package/esm2022/controls/upload/dropzonesingle.mjs +12 -91
  126. package/esm2022/controls/upload/uploadmultiple.mjs +21 -111
  127. package/esm2022/controls/upload/uploadsingle.mjs +8 -50
  128. package/esm2022/controls/validation/validationsummary.mjs +23 -120
  129. package/esm2022/controls/wizard/wizard.mjs +20 -128
  130. package/esm2022/controls/wizard/wizarditem.mjs +6 -31
  131. package/esm2022/enums/ButtonRoleType.mjs +3 -0
  132. package/esm2022/enums/ControlHeight.mjs +11 -0
  133. package/esm2022/enums/IconType.mjs +4 -8
  134. package/esm2022/interfaces/ISacConfigurationService.mjs +3 -2
  135. package/esm2022/interfaces/ISacFileBrowserService.mjs +3 -2
  136. package/esm2022/interfaces/ISacIconService.mjs +3 -2
  137. package/esm2022/interfaces/ISacLabelSizes.mjs +3 -2
  138. package/esm2022/interfaces/ISacLanguageService.mjs +3 -2
  139. package/esm2022/interfaces/ISacLocalisationService.mjs +3 -2
  140. package/esm2022/interfaces/ISacValidationKeyService.mjs +3 -0
  141. package/esm2022/interfaces/iabstractcontrollabel.mjs +3 -2
  142. package/esm2022/interfaces/iconfirmcomponent.mjs +3 -2
  143. package/esm2022/interfaces/idatetimecontrol.mjs +3 -2
  144. package/esm2022/interfaces/iuploadcontrol.mjs +3 -2
  145. package/esm2022/models/languagemodel.mjs +5 -11
  146. package/esm2022/public_api.mjs +23 -95
  147. package/esm2022/services/index.mjs +3 -6
  148. package/esm2022/services/sac-configuration.service.mjs +13 -59
  149. package/esm2022/services/sac-filebrowser.service.mjs +15 -167
  150. package/esm2022/services/sac-icon.service.mjs +49 -155
  151. package/esm2022/services/sac-language.service.mjs +7 -45
  152. package/esm2022/services/sac-localisation.service.mjs +33 -428
  153. package/esm2022/services/sac-validationkey.service.mjs +7 -0
  154. package/esm2022/simpleangularcontrols-sac-common.mjs +4 -4
  155. package/esm2022/utilities/convertion.mjs +6 -26
  156. package/esm2022/utilities/datatypes.mjs +4 -6
  157. package/esm2022/utilities/enums.mjs +8 -15
  158. package/esm2022/utilities/guid.mjs +5 -15
  159. package/esm2022/utilities/interpolation.mjs +7 -42
  160. package/esm2022/utilities/positioning.mjs +23 -266
  161. package/esm2022/validation/email.validator.mjs +3 -13
  162. package/esm2022/validation/index.mjs +3 -3
  163. package/esm2022/validation/invaliddate.validator.mjs +3 -14
  164. package/esm2022/validation/isDateValid.mjs +5 -14
  165. package/esm2022/validation/maxdate.validator.mjs +4 -21
  166. package/esm2022/validation/maxtime.validator.mjs +4 -21
  167. package/esm2022/validation/maxvalue.validator.mjs +3 -16
  168. package/esm2022/validation/mindate.validator.mjs +4 -21
  169. package/esm2022/validation/minfiles.validator.mjs +4 -19
  170. package/esm2022/validation/minlength.validator.mjs +3 -21
  171. package/esm2022/validation/mintime.validator.mjs +4 -21
  172. package/esm2022/validation/minvalue.validator.mjs +3 -16
  173. package/esm2022/validation/multilanguagerequired.validator.mjs +3 -22
  174. package/esm2022/validation/multilanguagerequiredany.validator.mjs +3 -22
  175. package/esm2022/validation/pattern.validator.mjs +3 -16
  176. package/esm2022/validation/required.validator.mjs +3 -13
  177. package/esm2022/validation/validation.mjs +20 -99
  178. package/esm2022/validation/validationerrorcreator.mjs +3 -11
  179. package/esm2022/validation/validationerroritem.mjs +7 -19
  180. package/fesm2022/simpleangularcontrols-sac-common.mjs +1625 -9018
  181. package/fesm2022/simpleangularcontrols-sac-common.mjs.map +1 -1
  182. package/interfaces/ISacConfigurationService.d.ts +5 -0
  183. package/interfaces/ISacConfigurationService.d.ts.map +1 -1
  184. package/interfaces/ISacValidationKeyService.d.ts +53 -0
  185. package/interfaces/ISacValidationKeyService.d.ts.map +1 -0
  186. package/package.json +1 -1
  187. package/public_api.d.ts +4 -1
  188. package/public_api.d.ts.map +1 -1
  189. package/services/index.d.ts +1 -0
  190. package/services/index.d.ts.map +1 -1
  191. package/services/sac-configuration.service.d.ts +6 -0
  192. package/services/sac-configuration.service.d.ts.map +1 -1
  193. package/services/sac-localisation.service.d.ts +103 -97
  194. package/services/sac-localisation.service.d.ts.map +1 -1
  195. package/services/sac-validationkey.service.d.ts +59 -0
  196. package/services/sac-validationkey.service.d.ts.map +1 -0
  197. package/simpleangularcontrols-sac-common-16.0.0-rc.5.tgz +0 -0
  198. package/simpleangularcontrols-sac-common-16.0.0-rc.4.tgz +0 -0
@@ -1,8 +1,5 @@
1
- import { Directive, Input, ViewChild } from '@angular/core';
2
- import { convertToBoolean } from '../../utilities/convertion';
3
- import { TooltipPosition } from '../../utilities/enums';
4
- import * as i0 from "@angular/core";
5
- /**
1
+ function cov_vnuuxsm2m(){var path="C:\\Projekte\\simpleangularcontrols-ng16\\ch.jnetwork.sac-controls\\dist\\sac-common\\esm2022\\controls\\tooltip\\tooltip.mjs";var hash="92292e91dadb22bbd847cc1840fe026bc9fe2429";var global=new Function("return this")();var gcv="__coverage__";var coverageData={path:"C:\\Projekte\\simpleangularcontrols-ng16\\ch.jnetwork.sac-controls\\dist\\sac-common\\esm2022\\controls\\tooltip\\tooltip.mjs",statementMap:{"0":{start:{line:21,column:8},end:{line:21,column:51}},"1":{start:{line:27,column:8},end:{line:27,column:32}},"2":{start:{line:33,column:8},end:{line:35,column:9}},"3":{start:{line:34,column:12},end:{line:34,column:61}},"4":{start:{line:36,column:8},end:{line:36,column:40}},"5":{start:{line:37,column:8},end:{line:37,column:31}},"6":{start:{line:38,column:8},end:{line:38,column:35}},"7":{start:{line:45,column:8},end:{line:45,column:27}},"8":{start:{line:46,column:8},end:{line:46,column:23}},"9":{start:{line:50,column:8},end:{line:50,column:47}},"10":{start:{line:54,column:8},end:{line:54,column:39}},"11":{start:{line:58,column:8},end:{line:58,column:24}},"12":{start:{line:62,column:8},end:{line:62,column:25}},"13":{start:{line:68,column:8},end:{line:68,column:37}},"14":{start:{line:72,column:8},end:{line:72,column:45}},"15":{start:{line:76,column:8},end:{line:81,column:10}},"16":{start:{line:77,column:12},end:{line:80,column:15}},"17":{start:{line:78,column:16},end:{line:78,column:39}},"18":{start:{line:79,column:16},end:{line:79,column:38}},"19":{start:{line:88,column:8},end:{line:88,column:70}},"20":{start:{line:89,column:8},end:{line:89,column:70}},"21":{start:{line:90,column:8},end:{line:92,column:9}},"22":{start:{line:91,column:12},end:{line:91,column:75}},"23":{start:{line:99,column:8},end:{line:99,column:73}},"24":{start:{line:100,column:8},end:{line:100,column:73}},"25":{start:{line:101,column:8},end:{line:103,column:9}},"26":{start:{line:102,column:12},end:{line:102,column:75}},"27":{start:{line:109,column:8},end:{line:136,column:9}},"28":{start:{line:110,column:25},end:{line:110,column:51}},"29":{start:{line:111,column:12},end:{line:132,column:13}},"30":{start:{line:112,column:34},end:{line:112,column:56}},"31":{start:{line:113,column:40},end:{line:113,column:73}},"32":{start:{line:114,column:16},end:{line:127,column:17}},"33":{start:{line:116,column:24},end:{line:116,column:84}},"34":{start:{line:117,column:24},end:{line:117,column:77}},"35":{start:{line:119,column:24},end:{line:119,column:121}},"36":{start:{line:120,column:24},end:{line:120,column:114}},"37":{start:{line:122,column:24},end:{line:122,column:83}},"38":{start:{line:123,column:24},end:{line:123,column:76}},"39":{start:{line:125,column:24},end:{line:125,column:121}},"40":{start:{line:126,column:24},end:{line:126,column:114}},"41":{start:{line:128,column:16},end:{line:128,column:130}},"42":{start:{line:131,column:16},end:{line:131,column:60}},"43":{start:{line:135,column:12},end:{line:135,column:52}},"44":{start:{line:142,column:8},end:{line:169,column:9}},"45":{start:{line:143,column:25},end:{line:143,column:51}},"46":{start:{line:144,column:12},end:{line:165,column:13}},"47":{start:{line:145,column:34},end:{line:145,column:56}},"48":{start:{line:146,column:40},end:{line:146,column:73}},"49":{start:{line:147,column:16},end:{line:160,column:17}},"50":{start:{line:149,column:24},end:{line:149,column:121}},"51":{start:{line:150,column:24},end:{line:150,column:113}},"52":{start:{line:152,column:24},end:{line:152,column:84}},"53":{start:{line:153,column:24},end:{line:153,column:76}},"54":{start:{line:155,column:24},end:{line:155,column:121}},"55":{start:{line:156,column:24},end:{line:156,column:113}},"56":{start:{line:158,column:24},end:{line:158,column:85}},"57":{start:{line:159,column:24},end:{line:159,column:77}},"58":{start:{line:161,column:16},end:{line:161,column:60}},"59":{start:{line:164,column:16},end:{line:164,column:60}},"60":{start:{line:168,column:12},end:{line:168,column:53}},"61":{start:{line:175,column:8},end:{line:180,column:9}},"62":{start:{line:176,column:12},end:{line:176,column:68}},"63":{start:{line:179,column:12},end:{line:179,column:21}},"64":{start:{line:186,column:8},end:{line:191,column:9}},"65":{start:{line:187,column:12},end:{line:187,column:67}},"66":{start:{line:190,column:12},end:{line:190,column:21}},"67":{start:{line:197,column:8},end:{line:197,column:38}},"68":{start:{line:203,column:8},end:{line:203,column:38}},"69":{start:{line:204,column:8},end:{line:208,column:11}},"70":{start:{line:205,column:12},end:{line:205,column:35}},"71":{start:{line:206,column:12},end:{line:206,column:34}},"72":{start:{line:207,column:12},end:{line:207,column:48}},"73":{start:{line:214,column:8},end:{line:214,column:39}},"74":{start:{line:215,column:8},end:{line:215,column:45}},"75":{start:{line:221,column:31},end:{line:221,column:55}},"76":{start:{line:223,column:8},end:{line:225,column:9}},"77":{start:{line:224,column:12},end:{line:224,column:41}},"78":{start:{line:227,column:8},end:{line:229,column:9}},"79":{start:{line:228,column:12},end:{line:228,column:39}},"80":{start:{line:231,column:8},end:{line:233,column:9}},"81":{start:{line:232,column:12},end:{line:232,column:40}},"82":{start:{line:235,column:8},end:{line:237,column:9}},"83":{start:{line:236,column:12},end:{line:236,column:42}},"84":{start:{line:239,column:8},end:{line:260,column:9}},"85":{start:{line:241,column:12},end:{line:243,column:13}},"86":{start:{line:242,column:16},end:{line:242,column:45}},"87":{start:{line:245,column:12},end:{line:247,column:13}},"88":{start:{line:246,column:16},end:{line:246,column:43}},"89":{start:{line:249,column:12},end:{line:251,column:13}},"90":{start:{line:250,column:16},end:{line:250,column:44}},"91":{start:{line:253,column:12},end:{line:255,column:13}},"92":{start:{line:254,column:16},end:{line:254,column:46}},"93":{start:{line:256,column:12},end:{line:256,column:41}},"94":{start:{line:259,column:12},end:{line:259,column:38}},"95":{start:{line:266,column:26},end:{line:266,column:50}},"96":{start:{line:267,column:8},end:{line:267,column:46}},"97":{start:{line:273,column:26},end:{line:273,column:50}},"98":{start:{line:274,column:8},end:{line:276,column:9}},"99":{start:{line:275,column:12},end:{line:275,column:40}},"100":{start:{line:277,column:8},end:{line:279,column:9}},"101":{start:{line:278,column:12},end:{line:278,column:39}},"102":{start:{line:280,column:8},end:{line:282,column:9}},"103":{start:{line:281,column:12},end:{line:281,column:41}},"104":{start:{line:283,column:8},end:{line:285,column:9}},"105":{start:{line:284,column:12},end:{line:284,column:42}},"106":{start:{line:287,column:8},end:{line:287,column:37}},"107":{start:{line:295,column:26},end:{line:295,column:50}},"108":{start:{line:296,column:8},end:{line:298,column:9}},"109":{start:{line:297,column:12},end:{line:297,column:24}},"110":{start:{line:299,column:8},end:{line:301,column:9}},"111":{start:{line:300,column:12},end:{line:300,column:24}},"112":{start:{line:302,column:8},end:{line:304,column:9}},"113":{start:{line:303,column:12},end:{line:303,column:24}},"114":{start:{line:305,column:8},end:{line:307,column:9}},"115":{start:{line:306,column:12},end:{line:306,column:24}},"116":{start:{line:308,column:8},end:{line:308,column:21}},"117":{start:{line:315,column:8},end:{line:317,column:9}},"118":{start:{line:316,column:12},end:{line:316,column:41}},"119":{start:{line:318,column:31},end:{line:318,column:51}},"120":{start:{line:319,column:29},end:{line:319,column:97}},"121":{start:{line:320,column:28},end:{line:320,column:87}},"122":{start:{line:321,column:26},end:{line:321,column:67}},"123":{start:{line:322,column:27},end:{line:322,column:85}},"124":{start:{line:323,column:25},end:{line:323,column:66}},"125":{start:{line:324,column:28},end:{line:324,column:89}},"126":{start:{line:325,column:30},end:{line:325,column:77}},"127":{start:{line:326,column:31},end:{line:326,column:95}},"128":{start:{line:327,column:29},end:{line:327,column:76}},"129":{start:{line:328,column:32},end:{line:328,column:99}},"130":{start:{line:329,column:8},end:{line:332,column:9}},"131":{start:{line:331,column:12},end:{line:331,column:71}},"132":{start:{line:333,column:8},end:{line:336,column:9}},"133":{start:{line:335,column:12},end:{line:335,column:72}},"134":{start:{line:337,column:8},end:{line:340,column:9}},"135":{start:{line:339,column:12},end:{line:339,column:70}},"136":{start:{line:341,column:8},end:{line:344,column:9}},"137":{start:{line:343,column:12},end:{line:343,column:73}},"138":{start:{line:345,column:8},end:{line:345,column:32}},"139":{start:{line:347,column:13},end:{line:347,column:236}},"140":{start:{line:348,column:13},end:{line:348,column:436}},"141":{start:{line:351,column:0},end:{line:365,column:20}},"142":{start:{line:353,column:42},end:{line:353,column:107}}},fnMap:{"0":{name:"(anonymous_0)",decl:{start:{line:20,column:4},end:{line:20,column:5}},loc:{start:{line:20,column:26},end:{line:22,column:5}},line:20},"1":{name:"(anonymous_1)",decl:{start:{line:26,column:4},end:{line:26,column:5}},loc:{start:{line:26,column:21},end:{line:28,column:5}},line:26},"2":{name:"(anonymous_2)",decl:{start:{line:32,column:4},end:{line:32,column:5}},loc:{start:{line:32,column:25},end:{line:39,column:5}},line:32},"3":{name:"(anonymous_3)",decl:{start:{line:44,column:4},end:{line:44,column:5}},loc:{start:{line:44,column:28},end:{line:82,column:5}},line:44},"4":{name:"(anonymous_4)",decl:{start:{line:76,column:31},end:{line:76,column:32}},loc:{start:{line:76,column:37},end:{line:81,column:9}},line:76},"5":{name:"(anonymous_5)",decl:{start:{line:77,column:23},end:{line:77,column:24}},loc:{start:{line:77,column:29},end:{line:80,column:13}},line:77},"6":{name:"(anonymous_6)",decl:{start:{line:86,column:4},end:{line:86,column:5}},loc:{start:{line:86,column:15},end:{line:93,column:5}},line:86},"7":{name:"(anonymous_7)",decl:{start:{line:97,column:4},end:{line:97,column:5}},loc:{start:{line:97,column:18},end:{line:104,column:5}},line:97},"8":{name:"(anonymous_8)",decl:{start:{line:108,column:4},end:{line:108,column:5}},loc:{start:{line:108,column:21},end:{line:137,column:5}},line:108},"9":{name:"(anonymous_9)",decl:{start:{line:141,column:4},end:{line:141,column:5}},loc:{start:{line:141,column:22},end:{line:170,column:5}},line:141},"10":{name:"(anonymous_10)",decl:{start:{line:174,column:4},end:{line:174,column:5}},loc:{start:{line:174,column:23},end:{line:181,column:5}},line:174},"11":{name:"(anonymous_11)",decl:{start:{line:185,column:4},end:{line:185,column:5}},loc:{start:{line:185,column:22},end:{line:192,column:5}},line:185},"12":{name:"(anonymous_12)",decl:{start:{line:196,column:4},end:{line:196,column:5}},loc:{start:{line:196,column:23},end:{line:198,column:5}},line:196},"13":{name:"(anonymous_13)",decl:{start:{line:202,column:4},end:{line:202,column:5}},loc:{start:{line:202,column:18},end:{line:209,column:5}},line:202},"14":{name:"(anonymous_14)",decl:{start:{line:204,column:19},end:{line:204,column:20}},loc:{start:{line:204,column:25},end:{line:208,column:9}},line:204},"15":{name:"(anonymous_15)",decl:{start:{line:213,column:4},end:{line:213,column:5}},loc:{start:{line:213,column:18},end:{line:216,column:5}},line:213},"16":{name:"(anonymous_16)",decl:{start:{line:220,column:4},end:{line:220,column:5}},loc:{start:{line:220,column:25},end:{line:261,column:5}},line:220},"17":{name:"(anonymous_17)",decl:{start:{line:265,column:4},end:{line:265,column:5}},loc:{start:{line:265,column:21},end:{line:268,column:5}},line:265},"18":{name:"(anonymous_18)",decl:{start:{line:272,column:4},end:{line:272,column:5}},loc:{start:{line:272,column:18},end:{line:288,column:5}},line:272},"19":{name:"(anonymous_19)",decl:{start:{line:294,column:4},end:{line:294,column:5}},loc:{start:{line:294,column:26},end:{line:309,column:5}},line:294},"20":{name:"(anonymous_20)",decl:{start:{line:313,column:4},end:{line:313,column:5}},loc:{start:{line:313,column:24},end:{line:346,column:5}},line:313},"21":{name:"(anonymous_21)",decl:{start:{line:353,column:28},end:{line:353,column:29}},loc:{start:{line:353,column:40},end:{line:353,column:109}},line:353}},branchMap:{"0":{loc:{start:{line:33,column:8},end:{line:35,column:9}},type:"if",locations:[{start:{line:33,column:8},end:{line:35,column:9}},{start:{line:33,column:8},end:{line:35,column:9}}],line:33},"1":{loc:{start:{line:90,column:8},end:{line:92,column:9}},type:"if",locations:[{start:{line:90,column:8},end:{line:92,column:9}},{start:{line:90,column:8},end:{line:92,column:9}}],line:90},"2":{loc:{start:{line:101,column:8},end:{line:103,column:9}},type:"if",locations:[{start:{line:101,column:8},end:{line:103,column:9}},{start:{line:101,column:8},end:{line:103,column:9}}],line:101},"3":{loc:{start:{line:109,column:8},end:{line:136,column:9}},type:"if",locations:[{start:{line:109,column:8},end:{line:136,column:9}},{start:{line:109,column:8},end:{line:136,column:9}}],line:109},"4":{loc:{start:{line:109,column:12},end:{line:109,column:63}},type:"binary-expr",locations:[{start:{line:109,column:12},end:{line:109,column:33}},{start:{line:109,column:37},end:{line:109,column:63}}],line:109},"5":{loc:{start:{line:111,column:12},end:{line:132,column:13}},type:"if",locations:[{start:{line:111,column:12},end:{line:132,column:13}},{start:{line:111,column:12},end:{line:132,column:13}}],line:111},"6":{loc:{start:{line:114,column:16},end:{line:127,column:17}},type:"switch",locations:[{start:{line:115,column:20},end:{line:117,column:77}},{start:{line:118,column:20},end:{line:120,column:114}},{start:{line:121,column:20},end:{line:123,column:76}},{start:{line:124,column:20},end:{line:126,column:114}}],line:114},"7":{loc:{start:{line:142,column:8},end:{line:169,column:9}},type:"if",locations:[{start:{line:142,column:8},end:{line:169,column:9}},{start:{line:142,column:8},end:{line:169,column:9}}],line:142},"8":{loc:{start:{line:142,column:12},end:{line:142,column:63}},type:"binary-expr",locations:[{start:{line:142,column:12},end:{line:142,column:33}},{start:{line:142,column:37},end:{line:142,column:63}}],line:142},"9":{loc:{start:{line:144,column:12},end:{line:165,column:13}},type:"if",locations:[{start:{line:144,column:12},end:{line:165,column:13}},{start:{line:144,column:12},end:{line:165,column:13}}],line:144},"10":{loc:{start:{line:147,column:16},end:{line:160,column:17}},type:"switch",locations:[{start:{line:148,column:20},end:{line:150,column:113}},{start:{line:151,column:20},end:{line:153,column:76}},{start:{line:154,column:20},end:{line:156,column:113}},{start:{line:157,column:20},end:{line:159,column:77}}],line:147},"11":{loc:{start:{line:175,column:8},end:{line:180,column:9}},type:"if",locations:[{start:{line:175,column:8},end:{line:180,column:9}},{start:{line:175,column:8},end:{line:180,column:9}}],line:175},"12":{loc:{start:{line:186,column:8},end:{line:191,column:9}},type:"if",locations:[{start:{line:186,column:8},end:{line:191,column:9}},{start:{line:186,column:8},end:{line:191,column:9}}],line:186},"13":{loc:{start:{line:223,column:8},end:{line:225,column:9}},type:"if",locations:[{start:{line:223,column:8},end:{line:225,column:9}},{start:{line:223,column:8},end:{line:225,column:9}}],line:223},"14":{loc:{start:{line:223,column:12},end:{line:223,column:95}},type:"binary-expr",locations:[{start:{line:223,column:12},end:{line:223,column:51}},{start:{line:223,column:56},end:{line:223,column:94}}],line:223},"15":{loc:{start:{line:227,column:8},end:{line:229,column:9}},type:"if",locations:[{start:{line:227,column:8},end:{line:229,column:9}},{start:{line:227,column:8},end:{line:229,column:9}}],line:227},"16":{loc:{start:{line:227,column:12},end:{line:227,column:91}},type:"binary-expr",locations:[{start:{line:227,column:12},end:{line:227,column:49}},{start:{line:227,column:54},end:{line:227,column:90}}],line:227},"17":{loc:{start:{line:231,column:8},end:{line:233,column:9}},type:"if",locations:[{start:{line:231,column:8},end:{line:233,column:9}},{start:{line:231,column:8},end:{line:233,column:9}}],line:231},"18":{loc:{start:{line:231,column:12},end:{line:231,column:93}},type:"binary-expr",locations:[{start:{line:231,column:12},end:{line:231,column:50}},{start:{line:231,column:55},end:{line:231,column:92}}],line:231},"19":{loc:{start:{line:235,column:8},end:{line:237,column:9}},type:"if",locations:[{start:{line:235,column:8},end:{line:237,column:9}},{start:{line:235,column:8},end:{line:237,column:9}}],line:235},"20":{loc:{start:{line:235,column:12},end:{line:235,column:97}},type:"binary-expr",locations:[{start:{line:235,column:12},end:{line:235,column:52}},{start:{line:235,column:57},end:{line:235,column:96}}],line:235},"21":{loc:{start:{line:239,column:8},end:{line:260,column:9}},type:"if",locations:[{start:{line:239,column:8},end:{line:260,column:9}},{start:{line:239,column:8},end:{line:260,column:9}}],line:239},"22":{loc:{start:{line:241,column:12},end:{line:243,column:13}},type:"if",locations:[{start:{line:241,column:12},end:{line:243,column:13}},{start:{line:241,column:12},end:{line:243,column:13}}],line:241},"23":{loc:{start:{line:245,column:12},end:{line:247,column:13}},type:"if",locations:[{start:{line:245,column:12},end:{line:247,column:13}},{start:{line:245,column:12},end:{line:247,column:13}}],line:245},"24":{loc:{start:{line:249,column:12},end:{line:251,column:13}},type:"if",locations:[{start:{line:249,column:12},end:{line:251,column:13}},{start:{line:249,column:12},end:{line:251,column:13}}],line:249},"25":{loc:{start:{line:253,column:12},end:{line:255,column:13}},type:"if",locations:[{start:{line:253,column:12},end:{line:255,column:13}},{start:{line:253,column:12},end:{line:255,column:13}}],line:253},"26":{loc:{start:{line:274,column:8},end:{line:276,column:9}},type:"if",locations:[{start:{line:274,column:8},end:{line:276,column:9}},{start:{line:274,column:8},end:{line:276,column:9}}],line:274},"27":{loc:{start:{line:277,column:8},end:{line:279,column:9}},type:"if",locations:[{start:{line:277,column:8},end:{line:279,column:9}},{start:{line:277,column:8},end:{line:279,column:9}}],line:277},"28":{loc:{start:{line:280,column:8},end:{line:282,column:9}},type:"if",locations:[{start:{line:280,column:8},end:{line:282,column:9}},{start:{line:280,column:8},end:{line:282,column:9}}],line:280},"29":{loc:{start:{line:283,column:8},end:{line:285,column:9}},type:"if",locations:[{start:{line:283,column:8},end:{line:285,column:9}},{start:{line:283,column:8},end:{line:285,column:9}}],line:283},"30":{loc:{start:{line:296,column:8},end:{line:298,column:9}},type:"if",locations:[{start:{line:296,column:8},end:{line:298,column:9}},{start:{line:296,column:8},end:{line:298,column:9}}],line:296},"31":{loc:{start:{line:296,column:12},end:{line:296,column:81}},type:"binary-expr",locations:[{start:{line:296,column:12},end:{line:296,column:46}},{start:{line:296,column:50},end:{line:296,column:81}}],line:296},"32":{loc:{start:{line:299,column:8},end:{line:301,column:9}},type:"if",locations:[{start:{line:299,column:8},end:{line:301,column:9}},{start:{line:299,column:8},end:{line:301,column:9}}],line:299},"33":{loc:{start:{line:299,column:12},end:{line:299,column:77}},type:"binary-expr",locations:[{start:{line:299,column:12},end:{line:299,column:44}},{start:{line:299,column:48},end:{line:299,column:77}}],line:299},"34":{loc:{start:{line:302,column:8},end:{line:304,column:9}},type:"if",locations:[{start:{line:302,column:8},end:{line:304,column:9}},{start:{line:302,column:8},end:{line:304,column:9}}],line:302},"35":{loc:{start:{line:302,column:12},end:{line:302,column:79}},type:"binary-expr",locations:[{start:{line:302,column:12},end:{line:302,column:45}},{start:{line:302,column:49},end:{line:302,column:79}}],line:302},"36":{loc:{start:{line:305,column:8},end:{line:307,column:9}},type:"if",locations:[{start:{line:305,column:8},end:{line:307,column:9}},{start:{line:305,column:8},end:{line:307,column:9}}],line:305},"37":{loc:{start:{line:305,column:12},end:{line:305,column:83}},type:"binary-expr",locations:[{start:{line:305,column:12},end:{line:305,column:47}},{start:{line:305,column:51},end:{line:305,column:83}}],line:305},"38":{loc:{start:{line:315,column:8},end:{line:317,column:9}},type:"if",locations:[{start:{line:315,column:8},end:{line:317,column:9}},{start:{line:315,column:8},end:{line:317,column:9}}],line:315},"39":{loc:{start:{line:329,column:8},end:{line:332,column:9}},type:"if",locations:[{start:{line:329,column:8},end:{line:332,column:9}},{start:{line:329,column:8},end:{line:332,column:9}}],line:329},"40":{loc:{start:{line:329,column:12},end:{line:329,column:56}},type:"binary-expr",locations:[{start:{line:329,column:12},end:{line:329,column:21}},{start:{line:329,column:25},end:{line:329,column:37}},{start:{line:329,column:41},end:{line:329,column:56}}],line:329},"41":{loc:{start:{line:333,column:8},end:{line:336,column:9}},type:"if",locations:[{start:{line:333,column:8},end:{line:336,column:9}},{start:{line:333,column:8},end:{line:336,column:9}}],line:333},"42":{loc:{start:{line:333,column:12},end:{line:333,column:57}},type:"binary-expr",locations:[{start:{line:333,column:12},end:{line:333,column:22}},{start:{line:333,column:26},end:{line:333,column:38}},{start:{line:333,column:42},end:{line:333,column:57}}],line:333},"43":{loc:{start:{line:337,column:8},end:{line:340,column:9}},type:"if",locations:[{start:{line:337,column:8},end:{line:340,column:9}},{start:{line:337,column:8},end:{line:340,column:9}}],line:337},"44":{loc:{start:{line:337,column:12},end:{line:337,column:55}},type:"binary-expr",locations:[{start:{line:337,column:12},end:{line:337,column:20}},{start:{line:337,column:24},end:{line:337,column:37}},{start:{line:337,column:41},end:{line:337,column:55}}],line:337},"45":{loc:{start:{line:341,column:8},end:{line:344,column:9}},type:"if",locations:[{start:{line:341,column:8},end:{line:344,column:9}},{start:{line:341,column:8},end:{line:344,column:9}}],line:341},"46":{loc:{start:{line:341,column:12},end:{line:341,column:58}},type:"binary-expr",locations:[{start:{line:341,column:12},end:{line:341,column:23}},{start:{line:341,column:27},end:{line:341,column:40}},{start:{line:341,column:44},end:{line:341,column:58}}],line:341}},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},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},b:{"0":[0,0],"1":[0,0],"2":[0,0],"3":[0,0],"4":[0,0],"5":[0,0],"6":[0,0,0,0],"7":[0,0],"8":[0,0],"9":[0,0],"10":[0,0,0,0],"11":[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],"27":[0,0],"28":[0,0],"29":[0,0],"30":[0,0],"31":[0,0],"32":[0,0],"33":[0,0],"34":[0,0],"35":[0,0],"36":[0,0],"37":[0,0],"38":[0,0],"39":[0,0],"40":[0,0,0],"41":[0,0],"42":[0,0,0],"43":[0,0],"44":[0,0,0],"45":[0,0],"46":[0,0,0]},inputSourceMap:{version:3,file:"tooltip.js",sourceRoot:"",sources:["../../../../../projects/sac-common/src/controls/tooltip/tooltip.ts"],names:[],mappings:"AAAA,OAAO,EAAqB,SAAS,EAAc,KAAK,EAAqB,SAAS,EAAE,MAAM,eAAe,CAAC;AAC9G,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;;AAExD;;;;;;;;;;GAUG;AACH,MACa,gBAAgB;IA6C3B;;OAEG;IACH,IACI,UAAU,CAAC,KAAc;QAC3B,IAAI,CAAC,WAAW,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAC7C,CAAC;IACD;;OAEG;IACH,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAYD;;OAEG;IACH,IACI,OAAO,CAAC,OAAmB;QAC7B,IAAI,OAAO,KAAK,SAAS,EAAE;YACzB,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;SAClD;QAED,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC;QAChC,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;IAC7B,CAAC;IAED;;;OAGG;IACH,YAAoB,KAAwB,EAAU,GAAe;QAAjD,UAAK,GAAL,KAAK,CAAmB;QAAU,QAAG,GAAH,GAAG,CAAY;QAtFrE;;WAEG;QACH,oBAAe,GAAG,eAAe,CAAC;QAElC;;WAEG;QACK,sBAAiB,GAAY,KAAK,CAAC;QAE3C;;WAEG;QACH,WAAM,GAAW,CAAC,CAAC;QAEnB;;WAEG;QACH,YAAO,GAAW,CAAC,CAAC;QAEpB;;;;WAIG;QAEH,aAAQ,GAAW,YAAY,CAAC;QAahC;;WAEG;QACH,4BAAuB,GAAY,KAAK,CAAC;QAmMzC;;WAEG;QACK,oBAAe,GAAG,GAAS,EAAE;YACnC,UAAU,CAAC,GAAG,EAAE;gBACd,IAAI,CAAC,eAAe,EAAE,CAAC;gBACvB,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,CAAC,CAAC,CAAC;QACL,CAAC,CAAA;IA/JwE,CAAC;IAE1E;;OAEG;IACH,QAAQ;QACN,0BAA0B;QAC1B,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;QAC9D,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;QAE9D,IAAI,IAAI,CAAC,gBAAgB,KAAK,SAAS,EAAE;YACvC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;SAChE;IACH,CAAC;IAED;;OAEG;IACH,WAAW;QACT,4BAA4B;QAC5B,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;QACjE,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;QAEjE,IAAI,IAAI,CAAC,gBAAgB,KAAK,SAAS,EAAE;YACvC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;SAChE;IACH,CAAC;IAED;;OAEG;IACK,cAAc;QACpB,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE;YACvD,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;YAExC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,EAAE;gBAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAgC,CAAC;gBACxD,MAAM,eAAe,GAAe,SAAS,CAAC,qBAAqB,EAAE,CAAC;gBAEtE,QAAQ,IAAI,CAAC,kBAAkB,EAAE,EAAE;oBACjC,KAAK,eAAe,CAAC,GAAG;wBACtB,IAAI,CAAC,MAAM,GAAG,eAAe,CAAC,GAAG,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;wBAC5D,OAAO,eAAe,CAAC,GAAG,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;oBACvD,KAAK,eAAe,CAAC,KAAK;wBACxB,IAAI,CAAC,MAAM,GAAG,eAAe,CAAC,GAAG,GAAG,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC,CAAC;wBACjG,OAAO,eAAe,CAAC,GAAG,GAAG,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC,CAAC;oBAC5F,KAAK,eAAe,CAAC,MAAM;wBACzB,IAAI,CAAC,MAAM,GAAG,eAAe,CAAC,GAAG,GAAG,eAAe,CAAC,MAAM,CAAC;wBAC3D,OAAO,eAAe,CAAC,GAAG,GAAG,eAAe,CAAC,MAAM,CAAC;oBACtD,KAAK,eAAe,CAAC,IAAI;wBACvB,IAAI,CAAC,MAAM,GAAG,eAAe,CAAC,GAAG,GAAG,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC,CAAC;wBACjG,OAAO,eAAe,CAAC,GAAG,GAAG,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC,CAAC;iBAC7F;gBAED,OAAO,SAAS,CAAC,SAAS,GAAG,SAAS,CAAC,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC;aACnH;iBAAM;gBACL,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC;aAC7C;SACF;aAAM;YACL,OAAO,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,SAAS,CAAC;SACzC;IAEH,CAAC;IAED;;OAEG;IACK,eAAe;QAErB,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE;YACvD,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;YAExC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,EAAE;gBAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAgC,CAAC;gBACxD,MAAM,eAAe,GAAe,SAAS,CAAC,qBAAqB,EAAE,CAAC;gBAEtE,QAAQ,IAAI,CAAC,kBAAkB,EAAE,EAAE;oBACjC,KAAK,eAAe,CAAC,GAAG;wBACtB,IAAI,CAAC,OAAO,GAAG,eAAe,CAAC,IAAI,GAAG,CAAC,eAAe,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC,CAAC;wBACjG,OAAO,eAAe,CAAC,IAAI,GAAG,CAAC,eAAe,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC,CAAC;oBAC3F,KAAK,eAAe,CAAC,KAAK;wBACxB,IAAI,CAAC,OAAO,GAAG,eAAe,CAAC,IAAI,GAAG,eAAe,CAAC,KAAK,CAAC;wBAC5D,OAAO,eAAe,CAAC,IAAI,GAAG,eAAe,CAAC,KAAK,CAAC;oBACtD,KAAK,eAAe,CAAC,MAAM;wBACzB,IAAI,CAAC,OAAO,GAAG,eAAe,CAAC,IAAI,GAAG,CAAC,SAAS,CAAC,WAAW,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC,CAAC;wBACjG,OAAO,eAAe,CAAC,IAAI,GAAG,CAAC,SAAS,CAAC,WAAW,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC,CAAC;oBAC3F,KAAK,eAAe,CAAC,IAAI;wBACvB,IAAI,CAAC,OAAO,GAAG,eAAe,CAAC,IAAI,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;wBAC7D,OAAO,eAAe,CAAC,IAAI,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;iBACxD;gBAED,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC;aAC7C;iBAAM;gBACL,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC;aAC7C;SACF;aAAM;YACL,OAAO,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,UAAU,CAAC;SAC1C;IACH,CAAC;IAGD;;OAEG;IACK,gBAAgB;QACtB,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACzB,OAAO,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,YAAY,CAAC;SACzD;aAAM;YACL,OAAO,CAAC,CAAC;SACV;IACH,CAAC;IAED;;OAEG;IACK,eAAe;QACrB,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACzB,OAAO,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,WAAW,CAAC;SACxD;aAAM;YACL,OAAO,CAAC,CAAC;SACV;IACH,CAAC;IAGD;;OAEG;IACH,gBAAgB;QACd,OAAO,IAAI,CAAC,iBAAiB,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,WAAW;QACT,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAC9B,UAAU,CAAC,GAAG,EAAE;YACd,IAAI,CAAC,eAAe,EAAE,CAAC;YACvB,IAAI,CAAC,cAAc,EAAE,CAAC;YACtB,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;QACtC,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,WAAW;QACT,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;QAC/B,IAAI,CAAC,uBAAuB,GAAG,KAAK,CAAC;IACvC,CAAC;IAYD;;OAEG;IACI,kBAAkB;QACvB,MAAM,cAAc,GAAoB,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAEjE,sCAAsC;QACtC,IAAI,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,GAAG,eAAe,CAAC,KAAK,CAAC,EAAE;YACvF,OAAO,eAAe,CAAC,KAAK,CAAC;SAC9B;QAED,sCAAsC;QACtC,IAAI,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,GAAG,eAAe,CAAC,GAAG,CAAC,EAAE;YACnF,OAAO,eAAe,CAAC,GAAG,CAAC;SAC5B;QAED,sCAAsC;QACtC,IAAI,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,GAAG,eAAe,CAAC,IAAI,CAAC,EAAE;YACrF,OAAO,eAAe,CAAC,IAAI,CAAC;SAC7B;QAED,sCAAsC;QACtC,IAAI,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,GAAG,eAAe,CAAC,MAAM,CAAC,EAAE;YACzF,OAAO,eAAe,CAAC,MAAM,CAAC;SAC/B;QAED,+BAA+B;QAC/B,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE;YAEzB,sCAAsC;YACtC,IAAI,cAAc,GAAG,eAAe,CAAC,KAAK,EAAE;gBAC1C,OAAO,eAAe,CAAC,KAAK,CAAC;aAC9B;YAED,sCAAsC;YACtC,IAAI,cAAc,GAAG,eAAe,CAAC,GAAG,EAAE;gBACxC,OAAO,eAAe,CAAC,GAAG,CAAC;aAC5B;YAED,sCAAsC;YACtC,IAAI,cAAc,GAAG,eAAe,CAAC,IAAI,EAAE;gBACzC,OAAO,eAAe,CAAC,IAAI,CAAC;aAC7B;YAED,sCAAsC;YACtC,IAAI,cAAc,GAAG,eAAe,CAAC,MAAM,EAAE;gBAC3C,OAAO,eAAe,CAAC,MAAM,CAAC;aAC/B;YAED,OAAO,eAAe,CAAC,KAAK,CAAC;SAC9B;aAAM;YACL,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;SAC3B;IACH,CAAC;IAED;;OAEG;IACK,cAAc;QACpB,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC3C,OAAO,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC;IAED;;OAEG;IACK,WAAW;QACjB,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAE3C,IAAI,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE;YAC1C,OAAO,eAAe,CAAC,IAAI,CAAC;SAC7B;QAED,IAAI,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE;YACzC,OAAO,eAAe,CAAC,GAAG,CAAC;SAC5B;QAED,IAAI,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE;YAC3C,OAAO,eAAe,CAAC,KAAK,CAAC;SAC9B;QAED,IAAI,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE;YAC5C,OAAO,eAAe,CAAC,MAAM,CAAC;SAC/B;QAED,4BAA4B;QAC5B,OAAO,eAAe,CAAC,KAAK,CAAC;IAC/B,CAAC;IAED;;;;OAIG;IACK,WAAW,CAAC,QAAyB;QAC3C,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAE3C,IAAI,QAAQ,KAAK,eAAe,CAAC,KAAK,IAAI,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACzE,OAAO,IAAI,CAAC;SACb;QAED,IAAI,QAAQ,KAAK,eAAe,CAAC,GAAG,IAAI,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;YACrE,OAAO,IAAI,CAAC;SACb;QAED,IAAI,QAAQ,KAAK,eAAe,CAAC,IAAI,IAAI,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;YACvE,OAAO,IAAI,CAAC;SACb;QAED,IAAI,QAAQ,KAAK,eAAe,CAAC,MAAM,IAAI,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;YAC3E,OAAO,IAAI,CAAC;SACb;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACK,iBAAiB;QACvB,8BAA8B;QAC9B,IAAI,IAAI,CAAC,gBAAgB,KAAK,SAAS,EAAE;YACvC,OAAO,eAAe,CAAC,KAAK,CAAC;SAC9B;QAED,IAAI,gBAAgB,GAAoB,eAAe,CAAC,IAAI,CAAC;QAC7D,MAAM,YAAY,GAAe,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,CAAC;QACtG,MAAM,WAAW,GAAe,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC;QAE5F,MAAM,SAAS,GAAY,YAAY,CAAC,IAAI,GAAG,WAAW,CAAC,KAAK,GAAG,CAAC,CAAC;QACrE,MAAM,UAAU,GAAY,YAAY,CAAC,KAAK,GAAG,WAAW,CAAC,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC;QACvF,MAAM,QAAQ,GAAY,YAAY,CAAC,GAAG,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;QACpE,MAAM,WAAW,GAAY,YAAY,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC;QAE3F,MAAM,aAAa,GAAY,YAAY,CAAC,IAAI,GAAG,CAAC,WAAW,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QAC/E,MAAM,cAAc,GAAY,YAAY,CAAC,KAAK,GAAG,CAAC,WAAW,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC;QACjG,MAAM,YAAY,GAAY,YAAY,CAAC,GAAG,GAAG,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QAC9E,MAAM,eAAe,GAAY,YAAY,CAAC,MAAM,GAAG,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC;QAErG,IAAI,SAAS,IAAI,YAAY,IAAI,eAAe,EAAE;YAChD,sCAAsC;YACtC,gBAAgB,GAAG,gBAAgB,GAAG,eAAe,CAAC,IAAI,CAAC;SAC5D;QAED,IAAI,UAAU,IAAI,YAAY,IAAI,eAAe,EAAE;YACjD,sCAAsC;YACtC,gBAAgB,GAAG,gBAAgB,GAAG,eAAe,CAAC,KAAK,CAAC;SAC7D;QAED,IAAI,QAAQ,IAAI,aAAa,IAAI,cAAc,EAAE;YAC/C,sCAAsC;YACtC,gBAAgB,GAAG,gBAAgB,GAAG,eAAe,CAAC,GAAG,CAAC;SAC3D;QAED,IAAI,WAAW,IAAI,aAAa,IAAI,cAAc,EAAE;YAClD,sCAAsC;YACtC,gBAAgB,GAAG,gBAAgB,GAAG,eAAe,CAAC,MAAM,CAAC;SAC9D;QAED,OAAO,gBAAgB,CAAC;IAC1B,CAAC;+GAxZU,gBAAgB;mGAAhB,gBAAgB;;SAAhB,gBAAgB;4FAAhB,gBAAgB;kBAD5B,SAAS;iIA4BR,QAAQ;sBADP,KAAK;gBAON,WAAW;sBADV,KAAK;gBAiBF,UAAU;sBADb,KAAK;gBAcoC,OAAO;sBAAhD,SAAS;uBAAC,WAAW,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;gBAWpC,OAAO;sBADV,SAAS;uBAAC,SAAS,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE",sourcesContent:["import { ChangeDetectorRef, Directive, ElementRef, Input, OnDestroy, OnInit, ViewChild } from '@angular/core';\r\nimport { convertToBoolean } from '../../utilities/convertion';\r\nimport { TooltipPosition } from '../../utilities/enums';\r\n\r\n/**\r\n * Tooltip Component\r\n *\r\n * Ben\xF6tigt im HTML Markup folgende Identifier\r\n * - container: Container f\xFCr ng-content in welchem das Element angezeigt wird, wo der Tooltip angeh\xE4ngt wird.\r\n * - tooltip: Container f\xFCr Tooltip\r\n *\r\n * Tooltip muss in 2 Schritten angezeigt werden. In einem ersten Schritt wird der Tooltip Markup erzeugt mit (ngIf). In einem 2. Schritt\r\n * kann der Tooltip dann \xFCber die CSS visibility angezeigt werden. Wird dies nicht so gemacht, kann es bei gewissen Browsern zu einem Flacker Effekt f\xFChren.\r\n *\r\n */\r\n@Directive()\r\nexport class SacTooltipCommon implements OnInit, OnDestroy {\r\n /**\r\n * Property f\xFCr Enum in Angular HTML Template\r\n */\r\n TooltipPosition = TooltipPosition;\r\n\r\n /**\r\n * Definiert ob der Tooltip sichtbar ist\r\n */\r\n private _isTooltipVisible: boolean = false;\r\n\r\n /**\r\n * Position des Tooltips oben\r\n */\r\n TopPos: number = 0;\r\n\r\n /**\r\n * Position des Tooltips links\r\n */\r\n LeftPos: number = 0;\r\n\r\n /**\r\n * Position des Tooltips. Werte: left|top|right|bottom|auto\r\n *\r\n * Wert 'auto' kann mit einem anderen Wert kombiniert werden.\r\n */\r\n @Input()\r\n position: string = 'right|auto';\r\n\r\n /**\r\n * Text f\xFCr ToolTip\r\n */\r\n @Input()\r\n tooltiptext: string;\r\n\r\n /**\r\n * Inline Mode f\xFCr Tooltip\r\n */\r\n private _inlinemode: boolean;\r\n\r\n /**\r\n * Definiert ob der Tooltip sichtbar sein soll\r\n */\r\n IsTooltipContentVisible: boolean = false;\r\n\r\n /**\r\n * Setter f\xFCr Inline Mode f\xFCr Tooltip\r\n */\r\n @Input()\r\n set inlinemode(value: boolean) {\r\n this._inlinemode = convertToBoolean(value);\r\n }\r\n /**\r\n * Getter f\xFCr Inline Mode f\xFCr Tooltip\r\n */\r\n get inlinemode(): boolean {\r\n return this._inlinemode;\r\n }\r\n\r\n /**\r\n * Name des Containers f\xFCr Content (z.B. Icon) auf welchem der Tooltip angezeigt wird.\r\n */\r\n @ViewChild('container', { static: true }) content: ElementRef<HTMLElement>;\r\n\r\n /**\r\n * Name des Containers f\xFCr den Tooltip\r\n */\r\n private tooltipcontainer: ElementRef<HTMLElement>;\r\n\r\n /**\r\n * Setter f\xFCr Name des Containers f\xFCr den Tooltip. Wird ben\xF6tigt, da Tooltip via NGIF ausgeblendet werden kann.\r\n */\r\n @ViewChild('tooltip', { static: true })\r\n set tooltip(content: ElementRef) {\r\n if (content !== undefined) {\r\n document.body.appendChild(content.nativeElement);\r\n }\r\n\r\n this.tooltipcontainer = content;\r\n this.onContentChange();\r\n this.cdRef.detectChanges();\r\n }\r\n\r\n /**\r\n * Konstruktor\r\n * @param ref Element Referenz\r\n */\r\n constructor(private cdRef: ChangeDetectorRef, private ref: ElementRef) { }\r\n\r\n /**\r\n * Ervent wenn das Control initialisert wird\r\n */\r\n ngOnInit() {\r\n // Register Event Listener\r\n window.addEventListener('scroll', this.onContentChange, true);\r\n window.addEventListener('resize', this.onContentChange, true);\r\n\r\n if (this.tooltipcontainer !== undefined) {\r\n document.body.appendChild(this.tooltipcontainer.nativeElement);\r\n }\r\n }\r\n\r\n /**\r\n * Event wenn das Control zerst\xF6rt wird.\r\n */\r\n ngOnDestroy() {\r\n // Unregister Event Listener\r\n window.removeEventListener('scroll', this.onContentChange, true);\r\n window.removeEventListener('resize', this.onContentChange, true);\r\n\r\n if (this.tooltipcontainer !== undefined) {\r\n document.body.removeChild(this.tooltipcontainer.nativeElement);\r\n }\r\n }\r\n\r\n /**\r\n * Berechnet die Position des Tooltips von Oben\r\n */\r\n private getTopPosition(): number {\r\n if (this.content !== null && this.content !== undefined) {\r\n const item = this.content.nativeElement;\r\n\r\n if (item.children.length >= 1) {\r\n const childItem = item.firstElementChild as HTMLElement;\r\n const contentPosition: ClientRect = childItem.getBoundingClientRect();\r\n\r\n switch (this.GetTooltipPosition()) {\r\n case TooltipPosition.top:\r\n this.TopPos = contentPosition.top - this.getToolTipHeight();\r\n return contentPosition.top - this.getToolTipHeight();\r\n case TooltipPosition.right:\r\n this.TopPos = contentPosition.top + (contentPosition.height / 2) - (this.getToolTipHeight() / 2);\r\n return contentPosition.top + (contentPosition.height / 2) - (this.getToolTipHeight() / 2);\r\n case TooltipPosition.bottom:\r\n this.TopPos = contentPosition.top + contentPosition.height;\r\n return contentPosition.top + contentPosition.height;\r\n case TooltipPosition.left:\r\n this.TopPos = contentPosition.top + (contentPosition.height / 2) - (this.getToolTipHeight() / 2);\r\n return contentPosition.top + (contentPosition.height / 2) - (this.getToolTipHeight() / 2);\r\n }\r\n\r\n return childItem.clientTop + childItem.offsetTop - ((this.getToolTipHeight() / 2) - (childItem.clientHeight / 2));\r\n } else {\r\n return this.content.nativeElement.offsetTop;\r\n }\r\n } else {\r\n return this.ref.nativeElement.offsetTop;\r\n }\r\n\r\n }\r\n\r\n /**\r\n * Berechnet die Position des Tooltips von Links\r\n */\r\n private getLeftPosition(): number {\r\n\r\n if (this.content !== null && this.content !== undefined) {\r\n const item = this.content.nativeElement;\r\n\r\n if (item.children.length >= 1) {\r\n const childItem = item.firstElementChild as HTMLElement;\r\n const contentPosition: ClientRect = childItem.getBoundingClientRect();\r\n\r\n switch (this.GetTooltipPosition()) {\r\n case TooltipPosition.top:\r\n this.LeftPos = contentPosition.left + (contentPosition.width / 2) - (this.getToolTipWidth() / 2);\r\n return contentPosition.left + (contentPosition.width / 2) - (this.getToolTipWidth() / 2);\r\n case TooltipPosition.right:\r\n this.LeftPos = contentPosition.left + contentPosition.width;\r\n return contentPosition.left + contentPosition.width;\r\n case TooltipPosition.bottom:\r\n this.LeftPos = contentPosition.left + (childItem.clientWidth / 2) - (this.getToolTipWidth() / 2);\r\n return contentPosition.left + (childItem.clientWidth / 2) - (this.getToolTipWidth() / 2);\r\n case TooltipPosition.left:\r\n this.LeftPos = contentPosition.left - this.getToolTipWidth();\r\n return contentPosition.left - this.getToolTipWidth();\r\n }\r\n\r\n return this.content.nativeElement.offsetTop;\r\n } else {\r\n return this.content.nativeElement.offsetTop;\r\n }\r\n } else {\r\n return this.ref.nativeElement.offsetLeft;\r\n }\r\n }\r\n\r\n\r\n /**\r\n * Berechnet die H\xF6he des Tooltips\r\n */\r\n private getToolTipHeight(): number {\r\n if (this.tooltipcontainer) {\r\n return this.tooltipcontainer.nativeElement.clientHeight;\r\n } else {\r\n return 0;\r\n }\r\n }\r\n\r\n /**\r\n * Berechnet die Breite die Tooltips\r\n */\r\n private getToolTipWidth(): number {\r\n if (this.tooltipcontainer) {\r\n return this.tooltipcontainer.nativeElement.clientWidth;\r\n } else {\r\n return 0;\r\n }\r\n }\r\n\r\n\r\n /**\r\n * Definiert ob der Tooltip im Markup vorhanden ist\r\n */\r\n IsTooltipVisible(): boolean {\r\n return this._isTooltipVisible;\r\n }\r\n\r\n /**\r\n * Tooltip anzeigen\r\n */\r\n ShowTooltip(): void {\r\n this._isTooltipVisible = true;\r\n setTimeout(() => {\r\n this.getLeftPosition();\r\n this.getTopPosition();\r\n this.IsTooltipContentVisible = true;\r\n });\r\n }\r\n\r\n /**\r\n * Tooltip ausblenden\r\n */\r\n HideTooltip(): void {\r\n this._isTooltipVisible = false;\r\n this.IsTooltipContentVisible = false;\r\n }\r\n\r\n /**\r\n * Methode wenn Content ge\xE4ndert hat und Proporties im UI neu gesetzt werden m\xFCssen.\r\n */\r\n private onContentChange = (): void => {\r\n setTimeout(() => {\r\n this.getLeftPosition();\r\n this.getTopPosition();\r\n });\r\n }\r\n\r\n /**\r\n * Gibt die Position des Tooltips zur\xFCck\r\n */\r\n public GetTooltipPosition(): TooltipPosition {\r\n const validPositions: TooltipPosition = this.ValidatePositions();\r\n\r\n // tslint:disable-next-line:no-bitwise\r\n if (this.HasPosition(TooltipPosition.right) && (validPositions & TooltipPosition.right)) {\r\n return TooltipPosition.right;\r\n }\r\n\r\n // tslint:disable-next-line:no-bitwise\r\n if (this.HasPosition(TooltipPosition.top) && (validPositions & TooltipPosition.top)) {\r\n return TooltipPosition.top;\r\n }\r\n\r\n // tslint:disable-next-line:no-bitwise\r\n if (this.HasPosition(TooltipPosition.left) && (validPositions & TooltipPosition.left)) {\r\n return TooltipPosition.left;\r\n }\r\n\r\n // tslint:disable-next-line:no-bitwise\r\n if (this.HasPosition(TooltipPosition.bottom) && (validPositions & TooltipPosition.bottom)) {\r\n return TooltipPosition.bottom;\r\n }\r\n\r\n // Get Auto Position or Default\r\n if (this.IsAutoPosition()) {\r\n\r\n // tslint:disable-next-line:no-bitwise\r\n if (validPositions & TooltipPosition.right) {\r\n return TooltipPosition.right;\r\n }\r\n\r\n // tslint:disable-next-line:no-bitwise\r\n if (validPositions & TooltipPosition.top) {\r\n return TooltipPosition.top;\r\n }\r\n\r\n // tslint:disable-next-line:no-bitwise\r\n if (validPositions & TooltipPosition.left) {\r\n return TooltipPosition.left;\r\n }\r\n\r\n // tslint:disable-next-line:no-bitwise\r\n if (validPositions & TooltipPosition.bottom) {\r\n return TooltipPosition.bottom;\r\n }\r\n\r\n return TooltipPosition.right;\r\n } else {\r\n return this.GetPosition();\r\n }\r\n }\r\n\r\n /**\r\n * Definiert ob AutoPosition aktiv ist\r\n */\r\n private IsAutoPosition(): boolean {\r\n const positions = this.position.split('|');\r\n return positions.indexOf('auto') >= 0;\r\n }\r\n\r\n /**\r\n * Gibt die definierte Position f\xFCr den Tooltip zur\xFCck\r\n */\r\n private GetPosition(): TooltipPosition {\r\n const positions = this.position.split('|');\r\n\r\n if (this.HasPosition(TooltipPosition.left)) {\r\n return TooltipPosition.left;\r\n }\r\n\r\n if (this.HasPosition(TooltipPosition.top)) {\r\n return TooltipPosition.top;\r\n }\r\n\r\n if (this.HasPosition(TooltipPosition.right)) {\r\n return TooltipPosition.right;\r\n }\r\n\r\n if (this.HasPosition(TooltipPosition.bottom)) {\r\n return TooltipPosition.bottom;\r\n }\r\n\r\n // Default Position if empty\r\n return TooltipPosition.right;\r\n }\r\n\r\n /**\r\n * Gibt zur\xFCck, ob die Position konfiguriert wurde\r\n *\r\n * @param position Position auf welche gepr\xFCft wird\r\n */\r\n private HasPosition(position: TooltipPosition): boolean {\r\n const positions = this.position.split('|');\r\n\r\n if (position === TooltipPosition.right && positions.indexOf('right') >= 0) {\r\n return true;\r\n }\r\n\r\n if (position === TooltipPosition.top && positions.indexOf('top') >= 0) {\r\n return true;\r\n }\r\n\r\n if (position === TooltipPosition.left && positions.indexOf('left') >= 0) {\r\n return true;\r\n }\r\n\r\n if (position === TooltipPosition.bottom && positions.indexOf('bottom') >= 0) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n /**\r\n * Pr\xFCft ob die Position g\xFCltig ist, resp. der Tooltip auf die Position platz hat\r\n */\r\n private ValidatePositions(): TooltipPosition {\r\n // Check if Container is false\r\n if (this.tooltipcontainer === undefined) {\r\n return TooltipPosition.right;\r\n }\r\n\r\n let allowedPositions: TooltipPosition = TooltipPosition.none;\r\n const basePosition: ClientRect = this.content.nativeElement.firstElementChild.getBoundingClientRect();\r\n const tooltipRect: ClientRect = this.tooltipcontainer.nativeElement.getBoundingClientRect();\r\n\r\n const leftPosOk: boolean = basePosition.left - tooltipRect.width > 0;\r\n const rightPosOk: boolean = basePosition.right + tooltipRect.width < window.innerWidth;\r\n const topPosOk: boolean = basePosition.top - tooltipRect.height > 0;\r\n const bottomPosOk: boolean = basePosition.bottom + tooltipRect.height < window.innerHeight;\r\n\r\n const leftHalfPosOk: boolean = basePosition.left - (tooltipRect.width / 2) > 0;\r\n const rightHalfPosOk: boolean = basePosition.right + (tooltipRect.width / 2) < window.innerWidth;\r\n const topHalfPosOk: boolean = basePosition.top - (tooltipRect.height / 2) > 0;\r\n const bottomHalfPosOk: boolean = basePosition.bottom + (tooltipRect.height / 2) < window.innerHeight;\r\n\r\n if (leftPosOk && topHalfPosOk && bottomHalfPosOk) {\r\n // tslint:disable-next-line:no-bitwise\r\n allowedPositions = allowedPositions | TooltipPosition.left;\r\n }\r\n\r\n if (rightPosOk && topHalfPosOk && bottomHalfPosOk) {\r\n // tslint:disable-next-line:no-bitwise\r\n allowedPositions = allowedPositions | TooltipPosition.right;\r\n }\r\n\r\n if (topPosOk && leftHalfPosOk && rightHalfPosOk) {\r\n // tslint:disable-next-line:no-bitwise\r\n allowedPositions = allowedPositions | TooltipPosition.top;\r\n }\r\n\r\n if (bottomPosOk && leftHalfPosOk && rightHalfPosOk) {\r\n // tslint:disable-next-line:no-bitwise\r\n allowedPositions = allowedPositions | TooltipPosition.bottom;\r\n }\r\n\r\n return allowedPositions;\r\n }\r\n}\r\n"]},_coverageSchema:"1a1c01bbd47fc00a2c39e90264f33305004495a9",hash:"92292e91dadb22bbd847cc1840fe026bc9fe2429"};var coverage=global[gcv]||(global[gcv]={});if(!coverage[path]||coverage[path].hash!==hash){coverage[path]=coverageData;}var actualCoverage=coverage[path];{// @ts-ignore
2
+ cov_vnuuxsm2m=function(){return actualCoverage;};}return actualCoverage;}cov_vnuuxsm2m();import{Directive,Input,ViewChild}from'@angular/core';import{convertToBoolean}from'../../utilities/convertion';import{TooltipPosition}from'../../utilities/enums';import*as i0 from"@angular/core";/**
6
3
  * Tooltip Component
7
4
  *
8
5
  * Benötigt im HTML Markup folgende Identifier
@@ -12,355 +9,77 @@ import * as i0 from "@angular/core";
12
9
  * Tooltip muss in 2 Schritten angezeigt werden. In einem ersten Schritt wird der Tooltip Markup erzeugt mit (ngIf). In einem 2. Schritt
13
10
  * kann der Tooltip dann über die CSS visibility angezeigt werden. Wird dies nicht so gemacht, kann es bei gewissen Browsern zu einem Flacker Effekt führen.
14
11
  *
15
- */
16
- class SacTooltipCommon {
17
- /**
12
+ */class SacTooltipCommon{/**
18
13
  * Setter für Inline Mode für Tooltip
19
- */
20
- set inlinemode(value) {
21
- this._inlinemode = convertToBoolean(value);
22
- }
23
- /**
14
+ */set inlinemode(value){cov_vnuuxsm2m().f[0]++;cov_vnuuxsm2m().s[0]++;this._inlinemode=convertToBoolean(value);}/**
24
15
  * Getter für Inline Mode für Tooltip
25
- */
26
- get inlinemode() {
27
- return this._inlinemode;
28
- }
29
- /**
16
+ */get inlinemode(){cov_vnuuxsm2m().f[1]++;cov_vnuuxsm2m().s[1]++;return this._inlinemode;}/**
30
17
  * Setter für Name des Containers für den Tooltip. Wird benötigt, da Tooltip via NGIF ausgeblendet werden kann.
31
- */
32
- set tooltip(content) {
33
- if (content !== undefined) {
34
- document.body.appendChild(content.nativeElement);
35
- }
36
- this.tooltipcontainer = content;
37
- this.onContentChange();
38
- this.cdRef.detectChanges();
39
- }
40
- /**
18
+ */set tooltip(content){cov_vnuuxsm2m().f[2]++;cov_vnuuxsm2m().s[2]++;if(content!==undefined){cov_vnuuxsm2m().b[0][0]++;cov_vnuuxsm2m().s[3]++;document.body.appendChild(content.nativeElement);}else{cov_vnuuxsm2m().b[0][1]++;}cov_vnuuxsm2m().s[4]++;this.tooltipcontainer=content;cov_vnuuxsm2m().s[5]++;this.onContentChange();cov_vnuuxsm2m().s[6]++;this.cdRef.detectChanges();}/**
41
19
  * Konstruktor
42
20
  * @param ref Element Referenz
43
- */
44
- constructor(cdRef, ref) {
45
- this.cdRef = cdRef;
46
- this.ref = ref;
47
- /**
21
+ */constructor(cdRef,ref){cov_vnuuxsm2m().f[3]++;cov_vnuuxsm2m().s[7]++;this.cdRef=cdRef;cov_vnuuxsm2m().s[8]++;this.ref=ref;/**
48
22
  * Property für Enum in Angular HTML Template
49
- */
50
- this.TooltipPosition = TooltipPosition;
51
- /**
23
+ */cov_vnuuxsm2m().s[9]++;this.TooltipPosition=TooltipPosition;/**
52
24
  * Definiert ob der Tooltip sichtbar ist
53
- */
54
- this._isTooltipVisible = false;
55
- /**
25
+ */cov_vnuuxsm2m().s[10]++;this._isTooltipVisible=false;/**
56
26
  * Position des Tooltips oben
57
- */
58
- this.TopPos = 0;
59
- /**
27
+ */cov_vnuuxsm2m().s[11]++;this.TopPos=0;/**
60
28
  * Position des Tooltips links
61
- */
62
- this.LeftPos = 0;
63
- /**
29
+ */cov_vnuuxsm2m().s[12]++;this.LeftPos=0;/**
64
30
  * Position des Tooltips. Werte: left|top|right|bottom|auto
65
31
  *
66
32
  * Wert 'auto' kann mit einem anderen Wert kombiniert werden.
67
- */
68
- this.position = 'right|auto';
69
- /**
33
+ */cov_vnuuxsm2m().s[13]++;this.position='right|auto';/**
70
34
  * Definiert ob der Tooltip sichtbar sein soll
71
- */
72
- this.IsTooltipContentVisible = false;
73
- /**
35
+ */cov_vnuuxsm2m().s[14]++;this.IsTooltipContentVisible=false;/**
74
36
  * Methode wenn Content geändert hat und Proporties im UI neu gesetzt werden müssen.
75
- */
76
- this.onContentChange = () => {
77
- setTimeout(() => {
78
- this.getLeftPosition();
79
- this.getTopPosition();
80
- });
81
- };
82
- }
83
- /**
37
+ */cov_vnuuxsm2m().s[15]++;this.onContentChange=()=>{cov_vnuuxsm2m().f[4]++;cov_vnuuxsm2m().s[16]++;setTimeout(()=>{cov_vnuuxsm2m().f[5]++;cov_vnuuxsm2m().s[17]++;this.getLeftPosition();cov_vnuuxsm2m().s[18]++;this.getTopPosition();});};}/**
84
38
  * Ervent wenn das Control initialisert wird
85
- */
86
- ngOnInit() {
87
- // Register Event Listener
88
- window.addEventListener('scroll', this.onContentChange, true);
89
- window.addEventListener('resize', this.onContentChange, true);
90
- if (this.tooltipcontainer !== undefined) {
91
- document.body.appendChild(this.tooltipcontainer.nativeElement);
92
- }
93
- }
94
- /**
39
+ */ngOnInit(){cov_vnuuxsm2m().f[6]++;cov_vnuuxsm2m().s[19]++;// Register Event Listener
40
+ window.addEventListener('scroll',this.onContentChange,true);cov_vnuuxsm2m().s[20]++;window.addEventListener('resize',this.onContentChange,true);cov_vnuuxsm2m().s[21]++;if(this.tooltipcontainer!==undefined){cov_vnuuxsm2m().b[1][0]++;cov_vnuuxsm2m().s[22]++;document.body.appendChild(this.tooltipcontainer.nativeElement);}else{cov_vnuuxsm2m().b[1][1]++;}}/**
95
41
  * Event wenn das Control zerstört wird.
96
- */
97
- ngOnDestroy() {
98
- // Unregister Event Listener
99
- window.removeEventListener('scroll', this.onContentChange, true);
100
- window.removeEventListener('resize', this.onContentChange, true);
101
- if (this.tooltipcontainer !== undefined) {
102
- document.body.removeChild(this.tooltipcontainer.nativeElement);
103
- }
104
- }
105
- /**
42
+ */ngOnDestroy(){cov_vnuuxsm2m().f[7]++;cov_vnuuxsm2m().s[23]++;// Unregister Event Listener
43
+ window.removeEventListener('scroll',this.onContentChange,true);cov_vnuuxsm2m().s[24]++;window.removeEventListener('resize',this.onContentChange,true);cov_vnuuxsm2m().s[25]++;if(this.tooltipcontainer!==undefined){cov_vnuuxsm2m().b[2][0]++;cov_vnuuxsm2m().s[26]++;document.body.removeChild(this.tooltipcontainer.nativeElement);}else{cov_vnuuxsm2m().b[2][1]++;}}/**
106
44
  * Berechnet die Position des Tooltips von Oben
107
- */
108
- getTopPosition() {
109
- if (this.content !== null && this.content !== undefined) {
110
- const item = this.content.nativeElement;
111
- if (item.children.length >= 1) {
112
- const childItem = item.firstElementChild;
113
- const contentPosition = childItem.getBoundingClientRect();
114
- switch (this.GetTooltipPosition()) {
115
- case TooltipPosition.top:
116
- this.TopPos = contentPosition.top - this.getToolTipHeight();
117
- return contentPosition.top - this.getToolTipHeight();
118
- case TooltipPosition.right:
119
- this.TopPos = contentPosition.top + (contentPosition.height / 2) - (this.getToolTipHeight() / 2);
120
- return contentPosition.top + (contentPosition.height / 2) - (this.getToolTipHeight() / 2);
121
- case TooltipPosition.bottom:
122
- this.TopPos = contentPosition.top + contentPosition.height;
123
- return contentPosition.top + contentPosition.height;
124
- case TooltipPosition.left:
125
- this.TopPos = contentPosition.top + (contentPosition.height / 2) - (this.getToolTipHeight() / 2);
126
- return contentPosition.top + (contentPosition.height / 2) - (this.getToolTipHeight() / 2);
127
- }
128
- return childItem.clientTop + childItem.offsetTop - ((this.getToolTipHeight() / 2) - (childItem.clientHeight / 2));
129
- }
130
- else {
131
- return this.content.nativeElement.offsetTop;
132
- }
133
- }
134
- else {
135
- return this.ref.nativeElement.offsetTop;
136
- }
137
- }
138
- /**
45
+ */getTopPosition(){cov_vnuuxsm2m().f[8]++;cov_vnuuxsm2m().s[27]++;if((cov_vnuuxsm2m().b[4][0]++,this.content!==null)&&(cov_vnuuxsm2m().b[4][1]++,this.content!==undefined)){cov_vnuuxsm2m().b[3][0]++;const item=(cov_vnuuxsm2m().s[28]++,this.content.nativeElement);cov_vnuuxsm2m().s[29]++;if(item.children.length>=1){cov_vnuuxsm2m().b[5][0]++;const childItem=(cov_vnuuxsm2m().s[30]++,item.firstElementChild);const contentPosition=(cov_vnuuxsm2m().s[31]++,childItem.getBoundingClientRect());cov_vnuuxsm2m().s[32]++;switch(this.GetTooltipPosition()){case TooltipPosition.top:cov_vnuuxsm2m().b[6][0]++;cov_vnuuxsm2m().s[33]++;this.TopPos=contentPosition.top-this.getToolTipHeight();cov_vnuuxsm2m().s[34]++;return contentPosition.top-this.getToolTipHeight();case TooltipPosition.right:cov_vnuuxsm2m().b[6][1]++;cov_vnuuxsm2m().s[35]++;this.TopPos=contentPosition.top+contentPosition.height/2-this.getToolTipHeight()/2;cov_vnuuxsm2m().s[36]++;return contentPosition.top+contentPosition.height/2-this.getToolTipHeight()/2;case TooltipPosition.bottom:cov_vnuuxsm2m().b[6][2]++;cov_vnuuxsm2m().s[37]++;this.TopPos=contentPosition.top+contentPosition.height;cov_vnuuxsm2m().s[38]++;return contentPosition.top+contentPosition.height;case TooltipPosition.left:cov_vnuuxsm2m().b[6][3]++;cov_vnuuxsm2m().s[39]++;this.TopPos=contentPosition.top+contentPosition.height/2-this.getToolTipHeight()/2;cov_vnuuxsm2m().s[40]++;return contentPosition.top+contentPosition.height/2-this.getToolTipHeight()/2;}cov_vnuuxsm2m().s[41]++;return childItem.clientTop+childItem.offsetTop-(this.getToolTipHeight()/2-childItem.clientHeight/2);}else{cov_vnuuxsm2m().b[5][1]++;cov_vnuuxsm2m().s[42]++;return this.content.nativeElement.offsetTop;}}else{cov_vnuuxsm2m().b[3][1]++;cov_vnuuxsm2m().s[43]++;return this.ref.nativeElement.offsetTop;}}/**
139
46
  * Berechnet die Position des Tooltips von Links
140
- */
141
- getLeftPosition() {
142
- if (this.content !== null && this.content !== undefined) {
143
- const item = this.content.nativeElement;
144
- if (item.children.length >= 1) {
145
- const childItem = item.firstElementChild;
146
- const contentPosition = childItem.getBoundingClientRect();
147
- switch (this.GetTooltipPosition()) {
148
- case TooltipPosition.top:
149
- this.LeftPos = contentPosition.left + (contentPosition.width / 2) - (this.getToolTipWidth() / 2);
150
- return contentPosition.left + (contentPosition.width / 2) - (this.getToolTipWidth() / 2);
151
- case TooltipPosition.right:
152
- this.LeftPos = contentPosition.left + contentPosition.width;
153
- return contentPosition.left + contentPosition.width;
154
- case TooltipPosition.bottom:
155
- this.LeftPos = contentPosition.left + (childItem.clientWidth / 2) - (this.getToolTipWidth() / 2);
156
- return contentPosition.left + (childItem.clientWidth / 2) - (this.getToolTipWidth() / 2);
157
- case TooltipPosition.left:
158
- this.LeftPos = contentPosition.left - this.getToolTipWidth();
159
- return contentPosition.left - this.getToolTipWidth();
160
- }
161
- return this.content.nativeElement.offsetTop;
162
- }
163
- else {
164
- return this.content.nativeElement.offsetTop;
165
- }
166
- }
167
- else {
168
- return this.ref.nativeElement.offsetLeft;
169
- }
170
- }
171
- /**
47
+ */getLeftPosition(){cov_vnuuxsm2m().f[9]++;cov_vnuuxsm2m().s[44]++;if((cov_vnuuxsm2m().b[8][0]++,this.content!==null)&&(cov_vnuuxsm2m().b[8][1]++,this.content!==undefined)){cov_vnuuxsm2m().b[7][0]++;const item=(cov_vnuuxsm2m().s[45]++,this.content.nativeElement);cov_vnuuxsm2m().s[46]++;if(item.children.length>=1){cov_vnuuxsm2m().b[9][0]++;const childItem=(cov_vnuuxsm2m().s[47]++,item.firstElementChild);const contentPosition=(cov_vnuuxsm2m().s[48]++,childItem.getBoundingClientRect());cov_vnuuxsm2m().s[49]++;switch(this.GetTooltipPosition()){case TooltipPosition.top:cov_vnuuxsm2m().b[10][0]++;cov_vnuuxsm2m().s[50]++;this.LeftPos=contentPosition.left+contentPosition.width/2-this.getToolTipWidth()/2;cov_vnuuxsm2m().s[51]++;return contentPosition.left+contentPosition.width/2-this.getToolTipWidth()/2;case TooltipPosition.right:cov_vnuuxsm2m().b[10][1]++;cov_vnuuxsm2m().s[52]++;this.LeftPos=contentPosition.left+contentPosition.width;cov_vnuuxsm2m().s[53]++;return contentPosition.left+contentPosition.width;case TooltipPosition.bottom:cov_vnuuxsm2m().b[10][2]++;cov_vnuuxsm2m().s[54]++;this.LeftPos=contentPosition.left+childItem.clientWidth/2-this.getToolTipWidth()/2;cov_vnuuxsm2m().s[55]++;return contentPosition.left+childItem.clientWidth/2-this.getToolTipWidth()/2;case TooltipPosition.left:cov_vnuuxsm2m().b[10][3]++;cov_vnuuxsm2m().s[56]++;this.LeftPos=contentPosition.left-this.getToolTipWidth();cov_vnuuxsm2m().s[57]++;return contentPosition.left-this.getToolTipWidth();}cov_vnuuxsm2m().s[58]++;return this.content.nativeElement.offsetTop;}else{cov_vnuuxsm2m().b[9][1]++;cov_vnuuxsm2m().s[59]++;return this.content.nativeElement.offsetTop;}}else{cov_vnuuxsm2m().b[7][1]++;cov_vnuuxsm2m().s[60]++;return this.ref.nativeElement.offsetLeft;}}/**
172
48
  * Berechnet die Höhe des Tooltips
173
- */
174
- getToolTipHeight() {
175
- if (this.tooltipcontainer) {
176
- return this.tooltipcontainer.nativeElement.clientHeight;
177
- }
178
- else {
179
- return 0;
180
- }
181
- }
182
- /**
49
+ */getToolTipHeight(){cov_vnuuxsm2m().f[10]++;cov_vnuuxsm2m().s[61]++;if(this.tooltipcontainer){cov_vnuuxsm2m().b[11][0]++;cov_vnuuxsm2m().s[62]++;return this.tooltipcontainer.nativeElement.clientHeight;}else{cov_vnuuxsm2m().b[11][1]++;cov_vnuuxsm2m().s[63]++;return 0;}}/**
183
50
  * Berechnet die Breite die Tooltips
184
- */
185
- getToolTipWidth() {
186
- if (this.tooltipcontainer) {
187
- return this.tooltipcontainer.nativeElement.clientWidth;
188
- }
189
- else {
190
- return 0;
191
- }
192
- }
193
- /**
51
+ */getToolTipWidth(){cov_vnuuxsm2m().f[11]++;cov_vnuuxsm2m().s[64]++;if(this.tooltipcontainer){cov_vnuuxsm2m().b[12][0]++;cov_vnuuxsm2m().s[65]++;return this.tooltipcontainer.nativeElement.clientWidth;}else{cov_vnuuxsm2m().b[12][1]++;cov_vnuuxsm2m().s[66]++;return 0;}}/**
194
52
  * Definiert ob der Tooltip im Markup vorhanden ist
195
- */
196
- IsTooltipVisible() {
197
- return this._isTooltipVisible;
198
- }
199
- /**
53
+ */IsTooltipVisible(){cov_vnuuxsm2m().f[12]++;cov_vnuuxsm2m().s[67]++;return this._isTooltipVisible;}/**
200
54
  * Tooltip anzeigen
201
- */
202
- ShowTooltip() {
203
- this._isTooltipVisible = true;
204
- setTimeout(() => {
205
- this.getLeftPosition();
206
- this.getTopPosition();
207
- this.IsTooltipContentVisible = true;
208
- });
209
- }
210
- /**
55
+ */ShowTooltip(){cov_vnuuxsm2m().f[13]++;cov_vnuuxsm2m().s[68]++;this._isTooltipVisible=true;cov_vnuuxsm2m().s[69]++;setTimeout(()=>{cov_vnuuxsm2m().f[14]++;cov_vnuuxsm2m().s[70]++;this.getLeftPosition();cov_vnuuxsm2m().s[71]++;this.getTopPosition();cov_vnuuxsm2m().s[72]++;this.IsTooltipContentVisible=true;});}/**
211
56
  * Tooltip ausblenden
212
- */
213
- HideTooltip() {
214
- this._isTooltipVisible = false;
215
- this.IsTooltipContentVisible = false;
216
- }
217
- /**
57
+ */HideTooltip(){cov_vnuuxsm2m().f[15]++;cov_vnuuxsm2m().s[73]++;this._isTooltipVisible=false;cov_vnuuxsm2m().s[74]++;this.IsTooltipContentVisible=false;}/**
218
58
  * Gibt die Position des Tooltips zurück
219
- */
220
- GetTooltipPosition() {
221
- const validPositions = this.ValidatePositions();
222
- // tslint:disable-next-line:no-bitwise
223
- if (this.HasPosition(TooltipPosition.right) && (validPositions & TooltipPosition.right)) {
224
- return TooltipPosition.right;
225
- }
226
- // tslint:disable-next-line:no-bitwise
227
- if (this.HasPosition(TooltipPosition.top) && (validPositions & TooltipPosition.top)) {
228
- return TooltipPosition.top;
229
- }
230
- // tslint:disable-next-line:no-bitwise
231
- if (this.HasPosition(TooltipPosition.left) && (validPositions & TooltipPosition.left)) {
232
- return TooltipPosition.left;
233
- }
234
- // tslint:disable-next-line:no-bitwise
235
- if (this.HasPosition(TooltipPosition.bottom) && (validPositions & TooltipPosition.bottom)) {
236
- return TooltipPosition.bottom;
237
- }
238
- // Get Auto Position or Default
239
- if (this.IsAutoPosition()) {
240
- // tslint:disable-next-line:no-bitwise
241
- if (validPositions & TooltipPosition.right) {
242
- return TooltipPosition.right;
243
- }
244
- // tslint:disable-next-line:no-bitwise
245
- if (validPositions & TooltipPosition.top) {
246
- return TooltipPosition.top;
247
- }
248
- // tslint:disable-next-line:no-bitwise
249
- if (validPositions & TooltipPosition.left) {
250
- return TooltipPosition.left;
251
- }
252
- // tslint:disable-next-line:no-bitwise
253
- if (validPositions & TooltipPosition.bottom) {
254
- return TooltipPosition.bottom;
255
- }
256
- return TooltipPosition.right;
257
- }
258
- else {
259
- return this.GetPosition();
260
- }
261
- }
262
- /**
59
+ */GetTooltipPosition(){cov_vnuuxsm2m().f[16]++;const validPositions=(cov_vnuuxsm2m().s[75]++,this.ValidatePositions());// tslint:disable-next-line:no-bitwise
60
+ cov_vnuuxsm2m().s[76]++;if((cov_vnuuxsm2m().b[14][0]++,this.HasPosition(TooltipPosition.right))&&(cov_vnuuxsm2m().b[14][1]++,validPositions&TooltipPosition.right)){cov_vnuuxsm2m().b[13][0]++;cov_vnuuxsm2m().s[77]++;return TooltipPosition.right;}else{cov_vnuuxsm2m().b[13][1]++;}// tslint:disable-next-line:no-bitwise
61
+ cov_vnuuxsm2m().s[78]++;if((cov_vnuuxsm2m().b[16][0]++,this.HasPosition(TooltipPosition.top))&&(cov_vnuuxsm2m().b[16][1]++,validPositions&TooltipPosition.top)){cov_vnuuxsm2m().b[15][0]++;cov_vnuuxsm2m().s[79]++;return TooltipPosition.top;}else{cov_vnuuxsm2m().b[15][1]++;}// tslint:disable-next-line:no-bitwise
62
+ cov_vnuuxsm2m().s[80]++;if((cov_vnuuxsm2m().b[18][0]++,this.HasPosition(TooltipPosition.left))&&(cov_vnuuxsm2m().b[18][1]++,validPositions&TooltipPosition.left)){cov_vnuuxsm2m().b[17][0]++;cov_vnuuxsm2m().s[81]++;return TooltipPosition.left;}else{cov_vnuuxsm2m().b[17][1]++;}// tslint:disable-next-line:no-bitwise
63
+ cov_vnuuxsm2m().s[82]++;if((cov_vnuuxsm2m().b[20][0]++,this.HasPosition(TooltipPosition.bottom))&&(cov_vnuuxsm2m().b[20][1]++,validPositions&TooltipPosition.bottom)){cov_vnuuxsm2m().b[19][0]++;cov_vnuuxsm2m().s[83]++;return TooltipPosition.bottom;}else{cov_vnuuxsm2m().b[19][1]++;}// Get Auto Position or Default
64
+ cov_vnuuxsm2m().s[84]++;if(this.IsAutoPosition()){cov_vnuuxsm2m().b[21][0]++;cov_vnuuxsm2m().s[85]++;// tslint:disable-next-line:no-bitwise
65
+ if(validPositions&TooltipPosition.right){cov_vnuuxsm2m().b[22][0]++;cov_vnuuxsm2m().s[86]++;return TooltipPosition.right;}else{cov_vnuuxsm2m().b[22][1]++;}// tslint:disable-next-line:no-bitwise
66
+ cov_vnuuxsm2m().s[87]++;if(validPositions&TooltipPosition.top){cov_vnuuxsm2m().b[23][0]++;cov_vnuuxsm2m().s[88]++;return TooltipPosition.top;}else{cov_vnuuxsm2m().b[23][1]++;}// tslint:disable-next-line:no-bitwise
67
+ cov_vnuuxsm2m().s[89]++;if(validPositions&TooltipPosition.left){cov_vnuuxsm2m().b[24][0]++;cov_vnuuxsm2m().s[90]++;return TooltipPosition.left;}else{cov_vnuuxsm2m().b[24][1]++;}// tslint:disable-next-line:no-bitwise
68
+ cov_vnuuxsm2m().s[91]++;if(validPositions&TooltipPosition.bottom){cov_vnuuxsm2m().b[25][0]++;cov_vnuuxsm2m().s[92]++;return TooltipPosition.bottom;}else{cov_vnuuxsm2m().b[25][1]++;}cov_vnuuxsm2m().s[93]++;return TooltipPosition.right;}else{cov_vnuuxsm2m().b[21][1]++;cov_vnuuxsm2m().s[94]++;return this.GetPosition();}}/**
263
69
  * Definiert ob AutoPosition aktiv ist
264
- */
265
- IsAutoPosition() {
266
- const positions = this.position.split('|');
267
- return positions.indexOf('auto') >= 0;
268
- }
269
- /**
70
+ */IsAutoPosition(){cov_vnuuxsm2m().f[17]++;const positions=(cov_vnuuxsm2m().s[95]++,this.position.split('|'));cov_vnuuxsm2m().s[96]++;return positions.indexOf('auto')>=0;}/**
270
71
  * Gibt die definierte Position für den Tooltip zurück
271
- */
272
- GetPosition() {
273
- const positions = this.position.split('|');
274
- if (this.HasPosition(TooltipPosition.left)) {
275
- return TooltipPosition.left;
276
- }
277
- if (this.HasPosition(TooltipPosition.top)) {
278
- return TooltipPosition.top;
279
- }
280
- if (this.HasPosition(TooltipPosition.right)) {
281
- return TooltipPosition.right;
282
- }
283
- if (this.HasPosition(TooltipPosition.bottom)) {
284
- return TooltipPosition.bottom;
285
- }
286
- // Default Position if empty
287
- return TooltipPosition.right;
288
- }
289
- /**
72
+ */GetPosition(){cov_vnuuxsm2m().f[18]++;const positions=(cov_vnuuxsm2m().s[97]++,this.position.split('|'));cov_vnuuxsm2m().s[98]++;if(this.HasPosition(TooltipPosition.left)){cov_vnuuxsm2m().b[26][0]++;cov_vnuuxsm2m().s[99]++;return TooltipPosition.left;}else{cov_vnuuxsm2m().b[26][1]++;}cov_vnuuxsm2m().s[100]++;if(this.HasPosition(TooltipPosition.top)){cov_vnuuxsm2m().b[27][0]++;cov_vnuuxsm2m().s[101]++;return TooltipPosition.top;}else{cov_vnuuxsm2m().b[27][1]++;}cov_vnuuxsm2m().s[102]++;if(this.HasPosition(TooltipPosition.right)){cov_vnuuxsm2m().b[28][0]++;cov_vnuuxsm2m().s[103]++;return TooltipPosition.right;}else{cov_vnuuxsm2m().b[28][1]++;}cov_vnuuxsm2m().s[104]++;if(this.HasPosition(TooltipPosition.bottom)){cov_vnuuxsm2m().b[29][0]++;cov_vnuuxsm2m().s[105]++;return TooltipPosition.bottom;}else{cov_vnuuxsm2m().b[29][1]++;}// Default Position if empty
73
+ cov_vnuuxsm2m().s[106]++;return TooltipPosition.right;}/**
290
74
  * Gibt zurück, ob die Position konfiguriert wurde
291
75
  *
292
76
  * @param position Position auf welche geprüft wird
293
- */
294
- HasPosition(position) {
295
- const positions = this.position.split('|');
296
- if (position === TooltipPosition.right && positions.indexOf('right') >= 0) {
297
- return true;
298
- }
299
- if (position === TooltipPosition.top && positions.indexOf('top') >= 0) {
300
- return true;
301
- }
302
- if (position === TooltipPosition.left && positions.indexOf('left') >= 0) {
303
- return true;
304
- }
305
- if (position === TooltipPosition.bottom && positions.indexOf('bottom') >= 0) {
306
- return true;
307
- }
308
- return false;
309
- }
310
- /**
77
+ */HasPosition(position){cov_vnuuxsm2m().f[19]++;const positions=(cov_vnuuxsm2m().s[107]++,this.position.split('|'));cov_vnuuxsm2m().s[108]++;if((cov_vnuuxsm2m().b[31][0]++,position===TooltipPosition.right)&&(cov_vnuuxsm2m().b[31][1]++,positions.indexOf('right')>=0)){cov_vnuuxsm2m().b[30][0]++;cov_vnuuxsm2m().s[109]++;return true;}else{cov_vnuuxsm2m().b[30][1]++;}cov_vnuuxsm2m().s[110]++;if((cov_vnuuxsm2m().b[33][0]++,position===TooltipPosition.top)&&(cov_vnuuxsm2m().b[33][1]++,positions.indexOf('top')>=0)){cov_vnuuxsm2m().b[32][0]++;cov_vnuuxsm2m().s[111]++;return true;}else{cov_vnuuxsm2m().b[32][1]++;}cov_vnuuxsm2m().s[112]++;if((cov_vnuuxsm2m().b[35][0]++,position===TooltipPosition.left)&&(cov_vnuuxsm2m().b[35][1]++,positions.indexOf('left')>=0)){cov_vnuuxsm2m().b[34][0]++;cov_vnuuxsm2m().s[113]++;return true;}else{cov_vnuuxsm2m().b[34][1]++;}cov_vnuuxsm2m().s[114]++;if((cov_vnuuxsm2m().b[37][0]++,position===TooltipPosition.bottom)&&(cov_vnuuxsm2m().b[37][1]++,positions.indexOf('bottom')>=0)){cov_vnuuxsm2m().b[36][0]++;cov_vnuuxsm2m().s[115]++;return true;}else{cov_vnuuxsm2m().b[36][1]++;}cov_vnuuxsm2m().s[116]++;return false;}/**
311
78
  * Prüft ob die Position gültig ist, resp. der Tooltip auf die Position platz hat
312
- */
313
- ValidatePositions() {
314
- // Check if Container is false
315
- if (this.tooltipcontainer === undefined) {
316
- return TooltipPosition.right;
317
- }
318
- let allowedPositions = TooltipPosition.none;
319
- const basePosition = this.content.nativeElement.firstElementChild.getBoundingClientRect();
320
- const tooltipRect = this.tooltipcontainer.nativeElement.getBoundingClientRect();
321
- const leftPosOk = basePosition.left - tooltipRect.width > 0;
322
- const rightPosOk = basePosition.right + tooltipRect.width < window.innerWidth;
323
- const topPosOk = basePosition.top - tooltipRect.height > 0;
324
- const bottomPosOk = basePosition.bottom + tooltipRect.height < window.innerHeight;
325
- const leftHalfPosOk = basePosition.left - (tooltipRect.width / 2) > 0;
326
- const rightHalfPosOk = basePosition.right + (tooltipRect.width / 2) < window.innerWidth;
327
- const topHalfPosOk = basePosition.top - (tooltipRect.height / 2) > 0;
328
- const bottomHalfPosOk = basePosition.bottom + (tooltipRect.height / 2) < window.innerHeight;
329
- if (leftPosOk && topHalfPosOk && bottomHalfPosOk) {
330
- // tslint:disable-next-line:no-bitwise
331
- allowedPositions = allowedPositions | TooltipPosition.left;
332
- }
333
- if (rightPosOk && topHalfPosOk && bottomHalfPosOk) {
334
- // tslint:disable-next-line:no-bitwise
335
- allowedPositions = allowedPositions | TooltipPosition.right;
336
- }
337
- if (topPosOk && leftHalfPosOk && rightHalfPosOk) {
338
- // tslint:disable-next-line:no-bitwise
339
- allowedPositions = allowedPositions | TooltipPosition.top;
340
- }
341
- if (bottomPosOk && leftHalfPosOk && rightHalfPosOk) {
342
- // tslint:disable-next-line:no-bitwise
343
- allowedPositions = allowedPositions | TooltipPosition.bottom;
344
- }
345
- return allowedPositions;
346
- }
347
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacTooltipCommon, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
348
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: SacTooltipCommon, inputs: { position: "position", tooltiptext: "tooltiptext", inlinemode: "inlinemode" }, viewQueries: [{ propertyName: "content", first: true, predicate: ["container"], descendants: true, static: true }, { propertyName: "tooltip", first: true, predicate: ["tooltip"], descendants: true, static: true }], ngImport: i0 }); }
349
- }
350
- export { SacTooltipCommon };
351
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacTooltipCommon, decorators: [{
352
- type: Directive
353
- }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }]; }, propDecorators: { position: [{
354
- type: Input
355
- }], tooltiptext: [{
356
- type: Input
357
- }], inlinemode: [{
358
- type: Input
359
- }], content: [{
360
- type: ViewChild,
361
- args: ['container', { static: true }]
362
- }], tooltip: [{
363
- type: ViewChild,
364
- args: ['tooltip', { static: true }]
365
- }] } });
366
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NhYy1jb21tb24vc3JjL2NvbnRyb2xzL3Rvb2x0aXAvdG9vbHRpcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFNBQVMsRUFBYyxLQUFLLEVBQXFCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7O0FBRXhEOzs7Ozs7Ozs7O0dBVUc7QUFDSCxNQUNhLGdCQUFnQjtJQTZDM0I7O09BRUc7SUFDSCxJQUNJLFVBQVUsQ0FBQyxLQUFjO1FBQzNCLElBQUksQ0FBQyxXQUFXLEdBQUcsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUNEOztPQUVHO0lBQ0gsSUFBSSxVQUFVO1FBQ1osT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzFCLENBQUM7SUFZRDs7T0FFRztJQUNILElBQ0ksT0FBTyxDQUFDLE9BQW1CO1FBQzdCLElBQUksT0FBTyxLQUFLLFNBQVMsRUFBRTtZQUN6QixRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUM7U0FDbEQ7UUFFRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsT0FBTyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxZQUFvQixLQUF3QixFQUFVLEdBQWU7UUFBakQsVUFBSyxHQUFMLEtBQUssQ0FBbUI7UUFBVSxRQUFHLEdBQUgsR0FBRyxDQUFZO1FBdEZyRTs7V0FFRztRQUNILG9CQUFlLEdBQUcsZUFBZSxDQUFDO1FBRWxD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QUNqRCxzQ0FBc0M7WUFDdEMsZ0JBQWdCLEdBQUcsZ0JBQWdCLEdBQUcsZUFBZSxDQUFDLEtBQUssQ0FBQztTQUM3RDtRQUVELElBQUksUUFBUSxJQUFJLGFBQWEsSUFBSSxjQUFjLEVBQUU7WUFDL0Msc0NBQXNDO1lBQ3RDLGdCQUFnQixHQUFHLGdCQUFnQixHQUFHLGVBQWUsQ0FBQyxHQUFHLENBQUM7U0FDM0Q7UUFFRCxJQUFJLFdBQVcsSUFBSSxhQUFhLElBQUksY0FBYyxFQUFFO1lBQ2xELHNDQUFzQztZQUN0QyxnQkFBZ0IsR0FBRyxnQkFBZ0IsR0FBRyxlQUFlLENBQUMsTUFBTSxDQUFDO1NBQzlEO1FBRUQsT0FBTyxnQkFBZ0IsQ0FBQztJQUMxQixDQUFDOytHQXhaVSxnQkFBZ0I7bUdBQWhCLGdCQUFnQjs7U0FBaEIsZ0JBQWdCOzRGQUFoQixnQkFBZ0I7a0JBRDVCLFNBQVM7aUlBNEJSLFFBQVE7c0JBRFAsS0FBSztnQkFPTixXQUFXO3NCQURWLEtBQUs7Z0JBaUJGLFVBQVU7c0JBRGIsS0FBSztnQkFjb0MsT0FBTztzQkFBaEQsU0FBUzt1QkFBQyxXQUFXLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQVdwQyxPQUFPO3NCQURWLFNBQVM7dUJBQUMsU0FBUyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGNvbnZlcnRUb0Jvb2xlYW4gfSBmcm9tICcuLi8uLi91dGlsaXRpZXMvY29udmVydGlvbic7XHJcbmltcG9ydCB7IFRvb2x0aXBQb3NpdGlvbiB9IGZyb20gJy4uLy4uL3V0aWxpdGllcy9lbnVtcyc7XHJcblxyXG4vKipcclxuICogVG9vbHRpcCBDb21wb25lbnRcclxuICpcclxuICogQmVuw7Z0aWd0IGltIEhUTUwgTWFya3VwIGZvbGdlbmRlIElkZW50aWZpZXJcclxuICogLSBjb250YWluZXI6IENvbnRhaW5lciBmw7xyIG5nLWNvbnRlbnQgaW4gd2VsY2hlbSBkYXMgRWxlbWVudCBhbmdlemVpZ3Qgd2lyZCwgd28gZGVyIFRvb2x0aXAgYW5nZWjDpG5ndCB3aXJkLlxyXG4gKiAtIHRvb2x0aXA6IENvbnRhaW5lciBmw7xyIFRvb2x0aXBcclxuICpcclxuICogVG9vbHRpcCBtdXNzIGluIDIgU2Nocml0dGVuIGFuZ2V6ZWlndCB3ZXJkZW4uIEluIGVpbmVtIGVyc3RlbiBTY2hyaXR0IHdpcmQgZGVyIFRvb2x0aXAgTWFya3VwIGVyemV1Z3QgbWl0IChuZ0lmKS4gSW4gZWluZW0gMi4gU2Nocml0dFxyXG4gKiBrYW5uIGRlciBUb29sdGlwIGRhbm4gw7xiZXIgZGllIENTUyB2aXNpYmlsaXR5IGFuZ2V6ZWlndCB3ZXJkZW4uIFdpcmQgZGllcyBuaWNodCBzbyBnZW1hY2h0LCBrYW5uIGVzIGJlaSBnZXdpc3NlbiBCcm93c2VybiB6dSBlaW5lbSBGbGFja2VyIEVmZmVrdCBmw7xocmVuLlxyXG4gKlxyXG4gKi9cclxuQERpcmVjdGl2ZSgpXHJcbmV4cG9ydCBjbGFzcyBTYWNUb29sdGlwQ29tbW9uIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIC8qKlxyXG4gICAqIFByb3BlcnR5IGbDvHIgRW51bSBpbiBBbmd1bGFyIEhUTUwgVGVtcGxhdGVcclxuICAgKi9cclxuICBUb29sdGlwUG9zaXRpb24gPSBUb29sdGlwUG9zaXRpb247XHJcblxyXG4gIC8qKlxyXG4gICAqIERlZmluaWVydCBvYiBkZXIgVG9vbHRpcCBzaWNodGJhciBpc3RcclxuICAgKi9cclxuICBwcml2YXRlIF9pc1Rvb2x0aXBWaXNpYmxlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8qKlxyXG4gICAqIFBvc2l0aW9uIGRlcyBUb29sdGlwcyBvYmVuXHJcbiAgICovXHJcbiAgVG9wUG9zOiBudW1iZXIgPSAwO1xyXG5cclxuICAvKipcclxuICAgKiBQb3NpdGlvbiBkZXMgVG9vbHRpcHMgbGlua3NcclxuICAgKi9cclxuICBMZWZ0UG9zOiBudW1iZXIgPSAwO1xyXG5cclxuICAvKipcclxuICAgKiBQb3NpdGlvbiBkZXMgVG9vbHRpcHMuIFdlcnRlOiBsZWZ0fHRvcHxyaWdodHxib3R0b218YXV0b1xyXG4gICAqXHJcbiAgICogV2VydCAnYXV0bycga2FubiBtaXQgZWluZW0gYW5kZXJlbiBXZXJ0IGtvbWJpbmllcnQgd2VyZGVuLlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgcG9zaXRpb246IHN0cmluZyA9ICdyaWdodHxhdXRvJztcclxuXHJcbiAgLyoqXHJcbiAgICogVGV4dCBmw7xyIFRvb2xUaXBcclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHRvb2x0aXB0ZXh0OiBzdHJpbmc7XHJcblxyXG4gIC8qKlxyXG4gICAqIElubGluZSBNb2RlIGbDvHIgVG9vbHRpcFxyXG4gICAqL1xyXG4gIHByaXZhdGUgX2lubGluZW1vZGU6IGJvb2xlYW47XHJcblxyXG4gIC8qKlxyXG4gICAqIERlZmluaWVydCBvYiBkZXIgVG9vbHRpcCBzaWNodGJhciBzZWluIHNvbGxcclxuICAgKi9cclxuICBJc1Rvb2x0aXBDb250ZW50VmlzaWJsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvKipcclxuICAgKiBTZXR0ZXIgZsO8ciBJbmxpbmUgTW9kZSBmw7xyIFRvb2x0aXBcclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHNldCBpbmxpbmVtb2RlKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLl9pbmxpbmVtb2RlID0gY29udmVydFRvQm9vbGVhbih2YWx1ZSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEdldHRlciBmw7xyIElubGluZSBNb2RlIGbDvHIgVG9vbHRpcFxyXG4gICAqL1xyXG4gIGdldCBpbmxpbmVtb2RlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2lubGluZW1vZGU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBOYW1lIGRlcyBDb250YWluZXJzIGbDvHIgQ29udGVudCAoei5CLiBJY29uKSBhdWYgd2VsY2hlbSBkZXIgVG9vbHRpcCBhbmdlemVpZ3Qgd2lyZC5cclxuICAgKi9cclxuICBAVmlld0NoaWxkKCdjb250YWluZXInLCB7IHN0YXRpYzogdHJ1ZSB9KSBjb250ZW50OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcclxuXHJcbiAgLyoqXHJcbiAgICogTmFtZSBkZXMgQ29udGFpbmVycyBmw7xyIGRlbiBUb29sdGlwXHJcbiAgICovXHJcbiAgcHJpdmF0ZSB0b29sdGlwY29udGFpbmVyOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcclxuXHJcbiAgLyoqXHJcbiAgICogU2V0dGVyIGbDvHIgTmFtZSBkZXMgQ29udGFpbmVycyBmw7xyIGRlbiBUb29sdGlwLiBXaXJkIGJlbsO2dGlndCwgZGEgVG9vbHRpcCB2aWEgTkdJRiBhdXNnZWJsZW5kZXQgd2VyZGVuIGthbm4uXHJcbiAgICovXHJcbiAgQFZpZXdDaGlsZCgndG9vbHRpcCcsIHsgc3RhdGljOiB0cnVlIH0pXHJcbiAgc2V0IHRvb2x0aXAoY29udGVudDogRWxlbWVudFJlZikge1xyXG4gICAgaWYgKGNvbnRlbnQgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGNvbnRlbnQubmF0aXZlRWxlbWVudCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy50b29sdGlwY29udGFpbmVyID0gY29udGVudDtcclxuICAgIHRoaXMub25Db250ZW50Q2hhbmdlKCk7XHJcbiAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEtvbnN0cnVrdG9yXHJcbiAgICogQHBhcmFtIHJlZiBFbGVtZW50IFJlZmVyZW56XHJcbiAgICovXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsIHByaXZhdGUgcmVmOiBFbGVtZW50UmVmKSB7IH1cclxuXHJcbiAgLyoqXHJcbiAgICogRXJ2ZW50IHdlbm4gZGFzIENvbnRyb2wgaW5pdGlhbGlzZXJ0IHdpcmRcclxuICAgKi9cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIC8vIFJlZ2lzdGVyIEV2ZW50IExpc3RlbmVyXHJcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdGhpcy5vbkNvbnRlbnRDaGFuZ2UsIHRydWUpO1xyXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMub25Db250ZW50Q2hhbmdlLCB0cnVlKTtcclxuXHJcbiAgICBpZiAodGhpcy50b29sdGlwY29udGFpbmVyICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0aGlzLnRvb2x0aXBjb250YWluZXIubmF0aXZlRWxlbWVudCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBFdmVudCB3ZW5uIGRhcyBDb250cm9sIHplcnN0w7ZydCB3aXJkLlxyXG4gICAqL1xyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgLy8gVW5yZWdpc3RlciBFdmVudCBMaXN0ZW5lclxyXG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHRoaXMub25Db250ZW50Q2hhbmdlLCB0cnVlKTtcclxuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLm9uQ29udGVudENoYW5nZSwgdHJ1ZSk7XHJcblxyXG4gICAgaWYgKHRoaXMudG9vbHRpcGNvbnRhaW5lciAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQodGhpcy50b29sdGlwY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQmVyZWNobmV0IGRpZSBQb3NpdGlvbiBkZXMgVG9vbHRpcHMgdm9uIE9iZW5cclxuICAgKi9cclxuICBwcml2YXRlIGdldFRvcFBvc2l0aW9uKCk6IG51bWJlciB7XHJcbiAgICBpZiAodGhpcy5jb250ZW50ICE9PSBudWxsICYmIHRoaXMuY29udGVudCAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLmNvbnRlbnQubmF0aXZlRWxlbWVudDtcclxuXHJcbiAgICAgIGlmIChpdGVtLmNoaWxkcmVuLmxlbmd0aCA+PSAxKSB7XHJcbiAgICAgICAgY29uc3QgY2hpbGRJdGVtID0gaXRlbS5maXJzdEVsZW1lbnRDaGlsZCBhcyBIVE1MRWxlbWVudDtcclxuICAgICAgICBjb25zdCBjb250ZW50UG9zaXRpb246IENsaWVudFJlY3QgPSBjaGlsZEl0ZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcblxyXG4gICAgICAgIHN3aXRjaCAodGhpcy5HZXRUb29sdGlwUG9zaXRpb24oKSkge1xyXG4gICAgICAgICAgY2FzZSBUb29sdGlwUG9zaXRpb24udG9wOlxyXG4gICAgICAgICAgICB0aGlzLlRvcFBvcyA9IGNvbnRlbnRQb3NpdGlvbi50b3AgLSB0aGlzLmdldFRvb2xUaXBIZWlnaHQoKTtcclxuICAgICAgICAgICAgcmV0dXJuIGNvbnRlbnRQb3NpdGlvbi50b3AgLSB0aGlzLmdldFRvb2xUaXBIZWlnaHQoKTtcclxuICAgICAgICAgIGNhc2UgVG9vbHRpcFBvc2l0aW9uLnJpZ2h0OlxyXG4gICAgICAgICAgICB0aGlzLlRvcFBvcyA9IGNvbnRlbnRQb3NpdGlvbi50b3AgKyAoY29udGVudFBvc2l0aW9uLmhlaWdodCAvIDIpIC0gKHRoaXMuZ2V0VG9vbFRpcEhlaWdodCgpIC8gMik7XHJcbiAgICAgICAgICAgIHJldHVybiBjb250ZW50UG9zaXRpb24udG9wICsgKGNvbnRlbnRQb3NpdGlvbi5oZWlnaHQgLyAyKSAtICh0aGlzLmdldFRvb2xUaXBIZWlnaHQoKSAvIDIpO1xyXG4gICAgICAgICAgY2FzZSBUb29sdGlwUG9zaXRpb24uYm90dG9tOlxyXG4gICAgICAgICAgICB0aGlzLlRvcFBvcyA9IGNvbnRlbnRQb3NpdGlvbi50b3AgKyBjb250ZW50UG9zaXRpb24uaGVpZ2h0O1xyXG4gICAgICAgICAgICByZXR1cm4gY29udGVudFBvc2l0aW9uLnRvcCArIGNvbnRlbnRQb3NpdGlvbi5oZWlnaHQ7XHJcbiAgICAgICAgICBjYXNlIFRvb2x0aXBQb3NpdGlvbi5sZWZ0OlxyXG4gICAgICAgICAgICB0aGlzLlRvcFBvcyA9IGNvbnRlbnRQb3NpdGlvbi50b3AgKyAoY29udGVudFBvc2l0aW9uLmhlaWdodCAvIDIpIC0gKHRoaXMuZ2V0VG9vbFRpcEhlaWdodCgpIC8gMik7XHJcbiAgICAgICAgICAgIHJldHVybiBjb250ZW50UG9zaXRpb24udG9wICsgKGNvbnRlbnRQb3NpdGlvbi5oZWlnaHQgLyAyKSAtICh0aGlzLmdldFRvb2xUaXBIZWlnaHQoKSAvIDIpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIGNoaWxkSXRlbS5jbGllbnRUb3AgKyBjaGlsZEl0ZW0ub2Zmc2V0VG9wIC0gKCh0aGlzLmdldFRvb2xUaXBIZWlnaHQoKSAvIDIpIC0gKGNoaWxkSXRlbS5jbGllbnRIZWlnaHQgLyAyKSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY29udGVudC5uYXRpdmVFbGVtZW50Lm9mZnNldFRvcDtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHRoaXMucmVmLm5hdGl2ZUVsZW1lbnQub2Zmc2V0VG9wO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEJlcmVjaG5ldCBkaWUgUG9zaXRpb24gZGVzIFRvb2x0aXBzIHZvbiBMaW5rc1xyXG4gICAqL1xyXG4gIHByaXZhdGUgZ2V0TGVmdFBvc2l0aW9uKCk6IG51bWJlciB7XHJcblxyXG4gICAgaWYgKHRoaXMuY29udGVudCAhPT0gbnVsbCAmJiB0aGlzLmNvbnRlbnQgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICBjb25zdCBpdGVtID0gdGhpcy5jb250ZW50Lm5hdGl2ZUVsZW1lbnQ7XHJcblxyXG4gICAgICBpZiAoaXRlbS5jaGlsZHJlbi5sZW5ndGggPj0gMSkge1xyXG4gICAgICAgIGNvbnN0IGNoaWxkSXRlbSA9IGl0ZW0uZmlyc3RFbGVtZW50Q2hpbGQgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICAgICAgY29uc3QgY29udGVudFBvc2l0aW9uOiBDbGllbnRSZWN0ID0gY2hpbGRJdGVtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG5cclxuICAgICAgICBzd2l0Y2ggKHRoaXMuR2V0VG9vbHRpcFBvc2l0aW9uKCkpIHtcclxuICAgICAgICAgIGNhc2UgVG9vbHRpcFBvc2l0aW9uLnRvcDpcclxuICAgICAgICAgICAgdGhpcy5MZWZ0UG9zID0gY29udGVudFBvc2l0aW9uLmxlZnQgKyAoY29udGVudFBvc2l0aW9uLndpZHRoIC8gMikgLSAodGhpcy5nZXRUb29sVGlwV2lkdGgoKSAvIDIpO1xyXG4gICAgICAgICAgICByZXR1cm4gY29udGVudFBvc2l0aW9uLmxlZnQgKyAoY29udGVudFBvc2l0aW9uLndpZHRoIC8gMikgLSAodGhpcy5nZXRUb29sVGlwV2lkdGgoKSAvIDIpO1xyXG4gICAgICAgICAgY2FzZSBUb29sdGlwUG9zaXRpb24ucmlnaHQ6XHJcbiAgICAgICAgICAgIHRoaXMuTGVmdFBvcyA9IGNvbnRlbnRQb3NpdGlvbi5sZWZ0ICsgY29udGVudFBvc2l0aW9uLndpZHRoO1xyXG4gICAgICAgICAgICByZXR1cm4gY29udGVudFBvc2l0aW9uLmxlZnQgKyBjb250ZW50UG9zaXRpb24ud2lkdGg7XHJcbiAgICAgICAgICBjYXNlIFRvb2x0aXBQb3NpdGlvbi5ib3R0b206XHJcbiAgICAgICAgICAgIHRoaXMuTGVmdFBvcyA9IGNvbnRlbnRQb3NpdGlvbi5sZWZ0ICsgKGNoaWxkSXRlbS5jbGllbnRXaWR0aCAvIDIpIC0gKHRoaXMuZ2V0VG9vbFRpcFdpZHRoKCkgLyAyKTtcclxuICAgICAgICAgICAgcmV0dXJuIGNvbnRlbnRQb3NpdGlvbi5sZWZ0ICsgKGNoaWxkSXRlbS5jbGllbnRXaWR0aCAvIDIpIC0gKHRoaXMuZ2V0VG9vbFRpcFdpZHRoKCkgLyAyKTtcclxuICAgICAgICAgIGNhc2UgVG9vbHRpcFBvc2l0aW9uLmxlZnQ6XHJcbiAgICAgICAgICAgIHRoaXMuTGVmdFBvcyA9IGNvbnRlbnRQb3NpdGlvbi5sZWZ0IC0gdGhpcy5nZXRUb29sVGlwV2lkdGgoKTtcclxuICAgICAgICAgICAgcmV0dXJuIGNvbnRlbnRQb3NpdGlvbi5sZWZ0IC0gdGhpcy5nZXRUb29sVGlwV2lkdGgoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLmNvbnRlbnQubmF0aXZlRWxlbWVudC5vZmZzZXRUb3A7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY29udGVudC5uYXRpdmVFbGVtZW50Lm9mZnNldFRvcDtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHRoaXMucmVmLm5hdGl2ZUVsZW1lbnQub2Zmc2V0TGVmdDtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICAvKipcclxuICAgKiBCZXJlY2huZXQgZGllIEjDtmhlIGRlcyBUb29sdGlwc1xyXG4gICAqL1xyXG4gIHByaXZhdGUgZ2V0VG9vbFRpcEhlaWdodCgpOiBudW1iZXIge1xyXG4gICAgaWYgKHRoaXMudG9vbHRpcGNvbnRhaW5lcikge1xyXG4gICAgICByZXR1cm4gdGhpcy50b29sdGlwY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuY2xpZW50SGVpZ2h0O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIDA7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBCZXJlY2huZXQgZGllIEJyZWl0ZSBkaWUgVG9vbHRpcHNcclxuICAgKi9cclxuICBwcml2YXRlIGdldFRvb2xUaXBXaWR0aCgpOiBudW1iZXIge1xyXG4gICAgaWYgKHRoaXMudG9vbHRpcGNvbnRhaW5lcikge1xyXG4gICAgICByZXR1cm4gdGhpcy50b29sdGlwY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuY2xpZW50V2lkdGg7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gMDtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICAvKipcclxuICAgKiBEZWZpbmllcnQgb2IgZGVyIFRvb2x0aXAgaW0gTWFya3VwIHZvcmhhbmRlbiBpc3RcclxuICAgKi9cclxuICBJc1Rvb2x0aXBWaXNpYmxlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2lzVG9vbHRpcFZpc2libGU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUb29sdGlwIGFuemVpZ2VuXHJcbiAgICovXHJcbiAgU2hvd1Rvb2x0aXAoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9pc1Rvb2x0aXBWaXNpYmxlID0gdHJ1ZTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLmdldExlZnRQb3NpdGlvbigpO1xyXG4gICAgICB0aGlzLmdldFRvcFBvc2l0aW9uKCk7XHJcbiAgICAgIHRoaXMuSXNUb29sdGlwQ29udGVudFZpc2libGUgPSB0cnVlO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUb29sdGlwIGF1c2JsZW5kZW5cclxuICAgKi9cclxuICBIaWRlVG9vbHRpcCgpOiB2b2lkIHtcclxuICAgIHRoaXMuX2lzVG9vbHRpcFZpc2libGUgPSBmYWxzZTtcclxuICAgIHRoaXMuSXNUb29sdGlwQ29udGVudFZpc2libGUgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldGhvZGUgd2VubiBDb250ZW50IGdlw6RuZGVydCBoYXQgdW5kIFByb3BvcnRpZXMgaW0gVUkgbmV1IGdlc2V0enQgd2VyZGVuIG3DvHNzZW4uXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBvbkNvbnRlbnRDaGFuZ2UgPSAoKTogdm9pZCA9PiB7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5nZXRMZWZ0UG9zaXRpb24oKTtcclxuICAgICAgdGhpcy5nZXRUb3BQb3NpdGlvbigpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHaWJ0IGRpZSBQb3NpdGlvbiBkZXMgVG9vbHRpcHMgenVyw7xja1xyXG4gICAqL1xyXG4gIHB1YmxpYyBHZXRUb29sdGlwUG9zaXRpb24oKTogVG9vbHRpcFBvc2l0aW9uIHtcclxuICAgIGNvbnN0IHZhbGlkUG9zaXRpb25zOiBUb29sdGlwUG9zaXRpb24gPSB0aGlzLlZhbGlkYXRlUG9zaXRpb25zKCk7XHJcblxyXG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWJpdHdpc2VcclxuICAgIGlmICh0aGlzLkhhc1Bvc2l0aW9uKFRvb2x0aXBQb3NpdGlvbi5yaWdodCkgJiYgKHZhbGlkUG9zaXRpb25zICYgVG9vbHRpcFBvc2l0aW9uLnJpZ2h0KSkge1xyXG4gICAgICByZXR1cm4gVG9vbHRpcFBvc2l0aW9uLnJpZ2h0O1xyXG4gICAgfVxyXG5cclxuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1iaXR3aXNlXHJcbiAgICBpZiAodGhpcy5IYXNQb3NpdGlvbihUb29sdGlwUG9zaXRpb24udG9wKSAmJiAodmFsaWRQb3NpdGlvbnMgJiBUb29sdGlwUG9zaXRpb24udG9wKSkge1xyXG4gICAgICByZXR1cm4gVG9vbHRpcFBvc2l0aW9uLnRvcDtcclxuICAgIH1cclxuXHJcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYml0d2lzZVxyXG4gICAgaWYgKHRoaXMuSGFzUG9zaXRpb24oVG9vbHRpcFBvc2l0aW9uLmxlZnQpICYmICh2YWxpZFBvc2l0aW9ucyAmIFRvb2x0aXBQb3NpdGlvbi5sZWZ0KSkge1xyXG4gICAgICByZXR1cm4gVG9vbHRpcFBvc2l0aW9uLmxlZnQ7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWJpdHdpc2VcclxuICAgIGlmICh0aGlzLkhhc1Bvc2l0aW9uKFRvb2x0aXBQb3NpdGlvbi5ib3R0b20pICYmICh2YWxpZFBvc2l0aW9ucyAmIFRvb2x0aXBQb3NpdGlvbi5ib3R0b20pKSB7XHJcbiAgICAgIHJldHVybiBUb29sdGlwUG9zaXRpb24uYm90dG9tO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEdldCBBdXRvIFBvc2l0aW9uIG9yIERlZmF1bHRcclxuICAgIGlmICh0aGlzLklzQXV0b1Bvc2l0aW9uKCkpIHtcclxuXHJcbiAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1iaXR3aXNlXHJcbiAgICAgIGlmICh2YWxpZFBvc2l0aW9ucyAmIFRvb2x0aXBQb3NpdGlvbi5yaWdodCkge1xyXG4gICAgICAgIHJldHVybiBUb29sdGlwUG9zaXRpb24ucmlnaHQ7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1iaXR3aXNlXHJcbiAgICAgIGlmICh2YWxpZFBvc2l0aW9ucyAmIFRvb2x0aXBQb3NpdGlvbi50b3ApIHtcclxuICAgICAgICByZXR1cm4gVG9vbHRpcFBvc2l0aW9uLnRvcDtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWJpdHdpc2VcclxuICAgICAgaWYgKHZhbGlkUG9zaXRpb25zICYgVG9vbHRpcFBvc2l0aW9uLmxlZnQpIHtcclxuICAgICAgICByZXR1cm4gVG9vbHRpcFBvc2l0aW9uLmxlZnQ7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1iaXR3aXNlXHJcbiAgICAgIGlmICh2YWxpZFBvc2l0aW9ucyAmIFRvb2x0aXBQb3NpdGlvbi5ib3R0b20pIHtcclxuICAgICAgICByZXR1cm4gVG9vbHRpcFBvc2l0aW9uLmJvdHRvbTtcclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIFRvb2x0aXBQb3NpdGlvbi5yaWdodDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB0aGlzLkdldFBvc2l0aW9uKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEZWZpbmllcnQgb2IgQXV0b1Bvc2l0aW9uIGFrdGl2IGlzdFxyXG4gICAqL1xyXG4gIHByaXZhdGUgSXNBdXRvUG9zaXRpb24oKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBwb3NpdGlvbnMgPSB0aGlzLnBvc2l0aW9uLnNwbGl0KCd8Jyk7XHJcbiAgICByZXR1cm4gcG9zaXRpb25zLmluZGV4T2YoJ2F1dG8nKSA+PSAwO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2lidCBkaWUgZGVmaW5pZXJ0ZSBQb3NpdGlvbiBmw7xyIGRlbiBUb29sdGlwIHp1csO8Y2tcclxuICAgKi9cclxuICBwcml2YXRlIEdldFBvc2l0aW9uKCk6IFRvb2x0aXBQb3NpdGlvbiB7XHJcbiAgICBjb25zdCBwb3NpdGlvbnMgPSB0aGlzLnBvc2l0aW9uLnNwbGl0KCd8Jyk7XHJcblxyXG4gICAgaWYgKHRoaXMuSGFzUG9zaXRpb24oVG9vbHRpcFBvc2l0aW9uLmxlZnQpKSB7XHJcbiAgICAgIHJldHVybiBUb29sdGlwUG9zaXRpb24ubGVmdDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5IYXNQb3NpdGlvbihUb29sdGlwUG9zaXRpb24udG9wKSkge1xyXG4gICAgICByZXR1cm4gVG9vbHRpcFBvc2l0aW9uLnRvcDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5IYXNQb3NpdGlvbihUb29sdGlwUG9zaXRpb24ucmlnaHQpKSB7XHJcbiAgICAgIHJldHVybiBUb29sdGlwUG9zaXRpb24ucmlnaHQ7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuSGFzUG9zaXRpb24oVG9vbHRpcFBvc2l0aW9uLmJvdHRvbSkpIHtcclxuICAgICAgcmV0dXJuIFRvb2x0aXBQb3NpdGlvbi5ib3R0b207XHJcbiAgICB9XHJcblxyXG4gICAgLy8gRGVmYXVsdCBQb3NpdGlvbiBpZiBlbXB0eVxyXG4gICAgcmV0dXJuIFRvb2x0aXBQb3NpdGlvbi5yaWdodDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdpYnQgenVyw7xjaywgb2IgZGllIFBvc2l0aW9uIGtvbmZpZ3VyaWVydCB3dXJkZVxyXG4gICAqXHJcbiAgICogQHBhcmFtIHBvc2l0aW9uIFBvc2l0aW9uIGF1ZiB3ZWxjaGUgZ2VwcsO8ZnQgd2lyZFxyXG4gICAqL1xyXG4gIHByaXZhdGUgSGFzUG9zaXRpb24ocG9zaXRpb246IFRvb2x0aXBQb3NpdGlvbik6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgcG9zaXRpb25zID0gdGhpcy5wb3NpdGlvbi5zcGxpdCgnfCcpO1xyXG5cclxuICAgIGlmIChwb3NpdGlvbiA9PT0gVG9vbHRpcFBvc2l0aW9uLnJpZ2h0ICYmIHBvc2l0aW9ucy5pbmRleE9mKCdyaWdodCcpID49IDApIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHBvc2l0aW9uID09PSBUb29sdGlwUG9zaXRpb24udG9wICYmIHBvc2l0aW9ucy5pbmRleE9mKCd0b3AnKSA+PSAwKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChwb3NpdGlvbiA9PT0gVG9vbHRpcFBvc2l0aW9uLmxlZnQgJiYgcG9zaXRpb25zLmluZGV4T2YoJ2xlZnQnKSA+PSAwKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChwb3NpdGlvbiA9PT0gVG9vbHRpcFBvc2l0aW9uLmJvdHRvbSAmJiBwb3NpdGlvbnMuaW5kZXhPZignYm90dG9tJykgPj0gMCkge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBQcsO8ZnQgb2IgZGllIFBvc2l0aW9uIGfDvGx0aWcgaXN0LCByZXNwLiBkZXIgVG9vbHRpcCBhdWYgZGllIFBvc2l0aW9uIHBsYXR6IGhhdFxyXG4gICAqL1xyXG4gIHByaXZhdGUgVmFsaWRhdGVQb3NpdGlvbnMoKTogVG9vbHRpcFBvc2l0aW9uIHtcclxuICAgIC8vIENoZWNrIGlmIENvbnRhaW5lciBpcyBmYWxzZVxyXG4gICAgaWYgKHRoaXMudG9vbHRpcGNvbnRhaW5lciA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHJldHVybiBUb29sdGlwUG9zaXRpb24ucmlnaHQ7XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IGFsbG93ZWRQb3NpdGlvbnM6IFRvb2x0aXBQb3NpdGlvbiA9IFRvb2x0aXBQb3NpdGlvbi5ub25lO1xyXG4gICAgY29uc3QgYmFzZVBvc2l0aW9uOiBDbGllbnRSZWN0ID0gdGhpcy5jb250ZW50Lm5hdGl2ZUVsZW1lbnQuZmlyc3RFbGVtZW50Q2hpbGQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcbiAgICBjb25zdCB0b29sdGlwUmVjdDogQ2xpZW50UmVjdCA9IHRoaXMudG9vbHRpcGNvbnRhaW5lci5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG5cclxuICAgIGNvbnN0IGxlZnRQb3NPazogYm9vbGVhbiA9IGJhc2VQb3NpdGlvbi5sZWZ0IC0gdG9vbHRpcFJlY3Qud2lkdGggPiAwO1xyXG4gICAgY29uc3QgcmlnaHRQb3NPazogYm9vbGVhbiA9IGJhc2VQb3NpdGlvbi5yaWdodCArIHRvb2x0aXBSZWN0LndpZHRoIDwgd2luZG93LmlubmVyV2lkdGg7XHJcbiAgICBjb25zdCB0b3BQb3NPazogYm9vbGVhbiA9IGJhc2VQb3NpdGlvbi50b3AgLSB0b29sdGlwUmVjdC5oZWlnaHQgPiAwO1xyXG4gICAgY29uc3QgYm90dG9tUG9zT2s6IGJvb2xlYW4gPSBiYXNlUG9zaXRpb24uYm90dG9tICsgdG9vbHRpcFJlY3QuaGVpZ2h0IDwgd2luZG93LmlubmVySGVpZ2h0O1xyXG5cclxuICAgIGNvbnN0IGxlZnRIYWxmUG9zT2s6IGJvb2xlYW4gPSBiYXNlUG9zaXRpb24ubGVmdCAtICh0b29sdGlwUmVjdC53aWR0aCAvIDIpID4gMDtcclxuICAgIGNvbnN0IHJpZ2h0SGFsZlBvc09rOiBib29sZWFuID0gYmFzZVBvc2l0aW9uLnJpZ2h0ICsgKHRvb2x0aXBSZWN0LndpZHRoIC8gMikgPCB3aW5kb3cuaW5uZXJXaWR0aDtcclxuICAgIGNvbnN0IHRvcEhhbGZQb3NPazogYm9vbGVhbiA9IGJhc2VQb3NpdGlvbi50b3AgLSAodG9vbHRpcFJlY3QuaGVpZ2h0IC8gMikgPiAwO1xyXG4gICAgY29uc3QgYm90dG9tSGFsZlBvc09rOiBib29sZWFuID0gYmFzZVBvc2l0aW9uLmJvdHRvbSArICh0b29sdGlwUmVjdC5oZWlnaHQgLyAyKSA8IHdpbmRvdy5pbm5lckhlaWdodDtcclxuXHJcbiAgICBpZiAobGVmdFBvc09rICYmIHRvcEhhbGZQb3NPayAmJiBib3R0b21IYWxmUG9zT2spIHtcclxuICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWJpdHdpc2VcclxuICAgICAgYWxsb3dlZFBvc2l0aW9ucyA9IGFsbG93ZWRQb3NpdGlvbnMgfCBUb29sdGlwUG9zaXRpb24ubGVmdDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAocmlnaHRQb3NPayAmJiB0b3BIYWxmUG9zT2sgJiYgYm90dG9tSGFsZlBvc09rKSB7XHJcbiAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1iaXR3aXNlXHJcbiAgICAgIGFsbG93ZWRQb3NpdGlvbnMgPSBhbGxvd2VkUG9zaXRpb25zIHwgVG9vbHRpcFBvc2l0aW9uLnJpZ2h0O1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0b3BQb3NPayAmJiBsZWZ0SGFsZlBvc09rICYmIHJpZ2h0SGFsZlBvc09rKSB7XHJcbiAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1iaXR3aXNlXHJcbiAgICAgIGFsbG93ZWRQb3NpdGlvbnMgPSBhbGxvd2VkUG9zaXRpb25zIHwgVG9vbHRpcFBvc2l0aW9uLnRvcDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoYm90dG9tUG9zT2sgJiYgbGVmdEhhbGZQb3NPayAmJiByaWdodEhhbGZQb3NPaykge1xyXG4gICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYml0d2lzZVxyXG4gICAgICBhbGxvd2VkUG9zaXRpb25zID0gYWxsb3dlZFBvc2l0aW9ucyB8IFRvb2x0aXBQb3NpdGlvbi5ib3R0b207XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGFsbG93ZWRQb3NpdGlvbnM7XHJcbiAgfVxyXG59XHJcbiJdfQ==
79
+ */ValidatePositions(){cov_vnuuxsm2m().f[20]++;cov_vnuuxsm2m().s[117]++;// Check if Container is false
80
+ if(this.tooltipcontainer===undefined){cov_vnuuxsm2m().b[38][0]++;cov_vnuuxsm2m().s[118]++;return TooltipPosition.right;}else{cov_vnuuxsm2m().b[38][1]++;}let allowedPositions=(cov_vnuuxsm2m().s[119]++,TooltipPosition.none);const basePosition=(cov_vnuuxsm2m().s[120]++,this.content.nativeElement.firstElementChild.getBoundingClientRect());const tooltipRect=(cov_vnuuxsm2m().s[121]++,this.tooltipcontainer.nativeElement.getBoundingClientRect());const leftPosOk=(cov_vnuuxsm2m().s[122]++,basePosition.left-tooltipRect.width>0);const rightPosOk=(cov_vnuuxsm2m().s[123]++,basePosition.right+tooltipRect.width<window.innerWidth);const topPosOk=(cov_vnuuxsm2m().s[124]++,basePosition.top-tooltipRect.height>0);const bottomPosOk=(cov_vnuuxsm2m().s[125]++,basePosition.bottom+tooltipRect.height<window.innerHeight);const leftHalfPosOk=(cov_vnuuxsm2m().s[126]++,basePosition.left-tooltipRect.width/2>0);const rightHalfPosOk=(cov_vnuuxsm2m().s[127]++,basePosition.right+tooltipRect.width/2<window.innerWidth);const topHalfPosOk=(cov_vnuuxsm2m().s[128]++,basePosition.top-tooltipRect.height/2>0);const bottomHalfPosOk=(cov_vnuuxsm2m().s[129]++,basePosition.bottom+tooltipRect.height/2<window.innerHeight);cov_vnuuxsm2m().s[130]++;if((cov_vnuuxsm2m().b[40][0]++,leftPosOk)&&(cov_vnuuxsm2m().b[40][1]++,topHalfPosOk)&&(cov_vnuuxsm2m().b[40][2]++,bottomHalfPosOk)){cov_vnuuxsm2m().b[39][0]++;cov_vnuuxsm2m().s[131]++;// tslint:disable-next-line:no-bitwise
81
+ allowedPositions=allowedPositions|TooltipPosition.left;}else{cov_vnuuxsm2m().b[39][1]++;}cov_vnuuxsm2m().s[132]++;if((cov_vnuuxsm2m().b[42][0]++,rightPosOk)&&(cov_vnuuxsm2m().b[42][1]++,topHalfPosOk)&&(cov_vnuuxsm2m().b[42][2]++,bottomHalfPosOk)){cov_vnuuxsm2m().b[41][0]++;cov_vnuuxsm2m().s[133]++;// tslint:disable-next-line:no-bitwise
82
+ allowedPositions=allowedPositions|TooltipPosition.right;}else{cov_vnuuxsm2m().b[41][1]++;}cov_vnuuxsm2m().s[134]++;if((cov_vnuuxsm2m().b[44][0]++,topPosOk)&&(cov_vnuuxsm2m().b[44][1]++,leftHalfPosOk)&&(cov_vnuuxsm2m().b[44][2]++,rightHalfPosOk)){cov_vnuuxsm2m().b[43][0]++;cov_vnuuxsm2m().s[135]++;// tslint:disable-next-line:no-bitwise
83
+ allowedPositions=allowedPositions|TooltipPosition.top;}else{cov_vnuuxsm2m().b[43][1]++;}cov_vnuuxsm2m().s[136]++;if((cov_vnuuxsm2m().b[46][0]++,bottomPosOk)&&(cov_vnuuxsm2m().b[46][1]++,leftHalfPosOk)&&(cov_vnuuxsm2m().b[46][2]++,rightHalfPosOk)){cov_vnuuxsm2m().b[45][0]++;cov_vnuuxsm2m().s[137]++;// tslint:disable-next-line:no-bitwise
84
+ allowedPositions=allowedPositions|TooltipPosition.bottom;}else{cov_vnuuxsm2m().b[45][1]++;}cov_vnuuxsm2m().s[138]++;return allowedPositions;}static{cov_vnuuxsm2m().s[139]++;this.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"16.2.12",ngImport:i0,type:SacTooltipCommon,deps:[{token:i0.ChangeDetectorRef},{token:i0.ElementRef}],target:i0.ɵɵFactoryTarget.Directive});}static{cov_vnuuxsm2m().s[140]++;this.ɵdir=i0.ɵɵngDeclareDirective({minVersion:"14.0.0",version:"16.2.12",type:SacTooltipCommon,inputs:{position:"position",tooltiptext:"tooltiptext",inlinemode:"inlinemode"},viewQueries:[{propertyName:"content",first:true,predicate:["container"],descendants:true,static:true},{propertyName:"tooltip",first:true,predicate:["tooltip"],descendants:true,static:true}],ngImport:i0});}}export{SacTooltipCommon};cov_vnuuxsm2m().s[141]++;i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"16.2.12",ngImport:i0,type:SacTooltipCommon,decorators:[{type:Directive}],ctorParameters:function(){cov_vnuuxsm2m().f[21]++;cov_vnuuxsm2m().s[142]++;return[{type:i0.ChangeDetectorRef},{type:i0.ElementRef}];},propDecorators:{position:[{type:Input}],tooltiptext:[{type:Input}],inlinemode:[{type:Input}],content:[{type:ViewChild,args:['container',{static:true}]}],tooltip:[{type:ViewChild,args:['tooltip',{static:true}]}]}});//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NhYy1jb21tb24vc3JjL2NvbnRyb2xzL3Rvb2x0aXAvdG9vbHRpcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFNBQVMsRUFBYyxLQUFLLEVBQXFCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7O0FBRXhEOzs7Ozs7Ozs7O0dBVUc7QUFDSCxNQUNhLGdCQUFnQjtJQTZDM0I7O09BRUc7SUFDSCxJQUNJLFVBQVUsQ0FBQyxLQUFjO1FBQzNCLElBQUksQ0FBQyxXQUFXLEdBQUcsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUNEOztPQUVHO0lBQ0gsSUFBSSxVQUFVO1FBQ1osT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzFCLENBQUM7SUFZRDs7T0FFRztJQUNILElBQ0ksT0FBTyxDQUFDLE9BQW1CO1FBQzdCLElBQUksT0FBTyxLQUFLLFNBQVMsRUFBRTtZQUN6QixRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUM7U0FDbEQ7UUFFRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsT0FBTyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxZQUFvQixLQUF3QixFQUFVLEdBQWU7UUFBakQsVUFBSyxHQUFMLEtBQUssQ0FBbUI7UUFBVSxRQUFHLEdBQUgsR0FBRyxDQUFZO1FBdEZyRTs7V0FFRztRQUNILG9CQUFlLEdBQUcsZUFBZSxDQUFDO1FBRWxDOztXQUVHO1FBQ0ssc0JBQWlCLEdBQVksS0FBSyxDQUFDO1FBRTNDOztXQUVHO1FBQ0gsV0FBTSxHQUFXLENBQUMsQ0FBQztRQUVuQjs7V0FFRztRQUNILFlBQU8sR0FBVyxDQUFDLENBQUM7UUFFcEI7Ozs7V0FJRztRQUVILGFBQVEsR0FBVyxZQUFZLENBQUM7UUFhaEM7O1dBRUc7UUFDSCw0QkFBdUIsR0FBWSxLQUFLLENBQUM7UUFtTXpDOztXQUVHO1FBQ0ssb0JBQWUsR0FBRyxHQUFTLEVBQUU7WUFDbkMsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDZCxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN4QixDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQTtJQS9Kd0UsQ0FBQztJQUUxRTs7T0FFRztJQUNILFFBQVE7UUFDTiwwQkFBMEI7UUFDMUIsTUFBTSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzlELE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUU5RCxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsS0FBSyxTQUFTLEVBQUU7WUFDdkMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxDQUFDO1NBQ2hFO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0gsV0FBVztRQUNULDRCQUE0QjtRQUM1QixNQUFNLENBQUMsbUJBQW1CLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDakUsTUFBTSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBRWpFLElBQUksSUFBSSxDQUFDLGdCQUFnQixLQUFLLFNBQVMsRUFBRTtZQUN2QyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLENBQUM7U0FDaEU7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSyxjQUFjO1FBQ3BCLElBQUksSUFBSSxDQUFDLE9BQU8sS0FBSyxJQUFJLElBQUksSUFBSSxDQUFDLE9BQU8sS0FBSyxTQUFTLEVBQUU7WUFDdkQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUM7WUFFeEMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUU7Z0JBQzdCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxpQkFBZ0MsQ0FBQztnQkFDeEQsTUFBTSxlQUFlLEdBQWUsU0FBUyxDQUFDLHFCQUFxQixFQUFFLENBQUM7Z0JBRXRFLFFBQVEsSUFBSSxDQUFDLGtCQUFrQixFQUFFLEVBQUU7b0JBQ2pDLEtBQUssZUFBZSxDQUFDLEdBQUc7d0JBQ3RCLElBQUksQ0FBQyxNQUFNLEdBQUcsZUFBZSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQzt3QkFDNUQsT0FBTyxlQUFlLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO29CQUN2RCxLQUFLLGVBQWUsQ0FBQyxLQUFLO3dCQUN4QixJQUFJLENBQUMsTUFBTSxHQUFHLGVBQWUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxlQUFlLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7d0JBQ2pHLE9BQU8sZUFBZSxDQUFDLEdBQUcsR0FBRyxDQUFDLGVBQWUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztvQkFDNUYsS0FBSyxlQUFlLENBQUMsTUFBTTt3QkFDekIsSUFBSSxDQUFDLE1BQU0sR0FBRyxlQUFlLENBQUMsR0FBRyxHQUFHLGVBQWUsQ0FBQyxNQUFNLENBQUM7d0JBQzNELE9BQU8sZUFBZSxDQUFDLEdBQUcsR0FBRyxlQUFlLENBQUMsTUFBTSxDQUFDO29CQUN0RCxLQUFLLGVBQWUsQ0FBQyxJQUFJO3dCQUN2QixJQUFJLENBQUMsTUFBTSxHQUFHLGVBQWUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxlQUFlLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7d0JBQ2pHLE9BQU8sZUFBZSxDQUFDLEdBQUcsR0FBRyxDQUFDLGVBQWUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztpQkFDN0Y7Z0JBRUQsT0FBTyxTQUFTLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ25IO2lCQUFNO2dCQUNMLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDO2FBQzdDO1NBQ0Y7YUFBTTtZQUNMLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDO1NBQ3pDO0lBRUgsQ0FBQztJQUVEOztPQUVHO0lBQ0ssZUFBZTtRQUVyQixJQUFJLElBQUksQ0FBQyxPQUFPLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxPQUFPLEtBQUssU0FBUyxFQUFFO1lBQ3ZELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDO1lBRXhDLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFO2dCQUM3QixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsaUJBQWdDLENBQUM7Z0JBQ3hELE1BQU0sZUFBZSxHQUFlLFNBQVMsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO2dCQUV0RSxRQUFRLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxFQUFFO29CQUNqQyxLQUFLLGVBQWUsQ0FBQyxHQUFHO3dCQUN0QixJQUFJLENBQUMsT0FBTyxHQUFHLGVBQWUsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxlQUFlLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO3dCQUNqRyxPQUFPLGVBQWUsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxlQUFlLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO29CQUMzRixLQUFLLGVBQWUsQ0FBQyxLQUFLO3dCQUN4QixJQUFJLENBQUMsT0FBTyxHQUFHLGVBQWUsQ0FBQyxJQUFJLEdBQUcsZUFBZSxDQUFDLEtBQUssQ0FBQzt3QkFDNUQsT0FBTyxlQUFlLENBQUMsSUFBSSxHQUFHLGVBQWUsQ0FBQyxLQUFLLENBQUM7b0JBQ3RELEtBQUssZUFBZSxDQUFDLE1BQU07d0JBQ3pCLElBQUksQ0FBQyxPQUFPLEdBQUcsZUFBZSxDQUFDLElBQUksR0FBRyxDQUFDLFNBQVMsQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7d0JBQ2pHLE9BQU8sZUFBZSxDQUFDLElBQUksR0FBRyxDQUFDLFNBQVMsQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7b0JBQzNGLEtBQUssZUFBZSxDQUFDLElBQUk7d0JBQ3ZCLElBQUksQ0FBQyxPQUFPLEdBQUcsZUFBZSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7d0JBQzdELE9BQU8sZUFBZSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7aUJBQ3hEO2dCQUVELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDO2FBQzdDO2lCQUFNO2dCQUNMLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDO2FBQzdDO1NBQ0Y7YUFBTTtZQUNMLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDO1NBQzFDO0lBQ0gsQ0FBQztJQUdEOztPQUVHO0lBQ0ssZ0JBQWdCO1FBQ3RCLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFO1lBQ3pCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUM7U0FDekQ7YUFBTTtZQUNMLE9BQU8sQ0FBQyxDQUFDO1NBQ1Y7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSyxlQUFlO1FBQ3JCLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFO1lBQ3pCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUM7U0FDeEQ7YUFBTTtZQUNMLE9BQU8sQ0FBQyxDQUFDO1NBQ1Y7SUFDSCxDQUFDO0lBR0Q7O09BRUc7SUFDSCxnQkFBZ0I7UUFDZCxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztJQUNoQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxXQUFXO1FBQ1QsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQztRQUM5QixVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN0QixJQUFJLENBQUMsdUJBQXVCLEdBQUcsSUFBSSxDQUFDO1FBQ3RDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0gsV0FBVztRQUNULElBQUksQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFDL0IsSUFBSSxDQUFDLHVCQUF1QixHQUFHLEtBQUssQ0FBQztJQUN2QyxDQUFDO0lBWUQ7O09BRUc7SUFDSSxrQkFBa0I7UUFDdkIsTUFBTSxjQUFjLEdBQW9CLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBRWpFLHNDQUFzQztRQUN0QyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsY0FBYyxHQUFHLGVBQWUsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUN2RixPQUFPLGVBQWUsQ0FBQyxLQUFLLENBQUM7U0FDOUI7UUFFRCxzQ0FBc0M7UUFDdEMsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGNBQWMsR0FBRyxlQUFlLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDbkYsT0FBTyxlQUFlLENBQUMsR0FBRyxDQUFDO1NBQzVCO1FBRUQsc0NBQXNDO1FBQ3RDLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEdBQUcsZUFBZSxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ3JGLE9BQU8sZUFBZSxDQUFDLElBQUksQ0FBQztTQUM3QjtRQUVELHNDQUFzQztRQUN0QyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsY0FBYyxHQUFHLGVBQWUsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUN6RixPQUFPLGVBQWUsQ0FBQyxNQUFNLENBQUM7U0FDL0I7UUFFRCwrQkFBK0I7UUFDL0IsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFLEVBQUU7WUFFekIsc0NBQXNDO1lBQ3RDLElBQUksY0FBYyxHQUFHLGVBQWUsQ0FBQyxLQUFLLEVBQUU7Z0JBQzFDLE9BQU8sZUFBZSxDQUFDLEtBQUssQ0FBQzthQUM5QjtZQUVELHNDQUFzQztZQUN0QyxJQUFJLGNBQWMsR0FBRyxlQUFlLENBQUMsR0FBRyxFQUFFO2dCQUN4QyxPQUFPLGVBQWUsQ0FBQyxHQUFHLENBQUM7YUFDNUI7WUFFRCxzQ0FBc0M7WUFDdEMsSUFBSSxjQUFjLEdBQUcsZUFBZSxDQUFDLElBQUksRUFBRTtnQkFDekMsT0FBTyxlQUFlLENBQUMsSUFBSSxDQUFDO2FBQzdCO1lBRUQsc0NBQXNDO1lBQ3RDLElBQUksY0FBYyxHQUFHLGVBQWUsQ0FBQyxNQUFNLEVBQUU7Z0JBQzNDLE9BQU8sZUFBZSxDQUFDLE1BQU0sQ0FBQzthQUMvQjtZQUVELE9BQU8sZUFBZSxDQUFDLEtBQUssQ0FBQztTQUM5QjthQUFNO1lBQ0wsT0FBTyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDM0I7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSyxjQUFjO1FBQ3BCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzNDLE9BQU8sU0FBUyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVEOztPQUVHO0lBQ0ssV0FBVztRQUNqQixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUUzQyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQzFDLE9BQU8sZUFBZSxDQUFDLElBQUksQ0FBQztTQUM3QjtRQUVELElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDekMsT0FBTyxlQUFlLENBQUMsR0FBRyxDQUFDO1NBQzVCO1FBRUQsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUMzQyxPQUFPLGVBQWUsQ0FBQyxLQUFLLENBQUM7U0FDOUI7UUFFRCxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQzVDLE9BQU8sZUFBZSxDQUFDLE1BQU0sQ0FBQztTQUMvQjtRQUVELDRCQUE0QjtRQUM1QixPQUFPLGVBQWUsQ0FBQyxLQUFLLENBQUM7SUFDL0IsQ0FBQztJQUVEOzs7O09BSUc7SUFDSyxXQUFXLENBQUMsUUFBeUI7UUFDM0MsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFM0MsSUFBSSxRQUFRLEtBQUssZUFBZSxDQUFDLEtBQUssSUFBSSxTQUFTLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUN6RSxPQUFPLElBQUksQ0FBQztTQUNiO1FBRUQsSUFBSSxRQUFRLEtBQUssZUFBZSxDQUFDLEdBQUcsSUFBSSxTQUFTLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNyRSxPQUFPLElBQUksQ0FBQztTQUNiO1FBRUQsSUFBSSxRQUFRLEtBQUssZUFBZSxDQUFDLElBQUksSUFBSSxTQUFTLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUN2RSxPQUFPLElBQUksQ0FBQztTQUNiO1FBRUQsSUFBSSxRQUFRLEtBQUssZUFBZSxDQUFDLE1BQU0sSUFBSSxTQUFTLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUMzRSxPQUFPLElBQUksQ0FBQztTQUNiO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQ7O09BRUc7SUFDSyxpQkFBaUI7UUFDdkIsOEJBQThCO1FBQzlCLElBQUksSUFBSSxDQUFDLGdCQUFnQixLQUFLLFNBQVMsRUFBRTtZQUN2QyxPQUFPLGVBQWUsQ0FBQyxLQUFLLENBQUM7U0FDOUI7UUFFRCxJQUFJLGdCQUFnQixHQUFvQixlQUFlLENBQUMsSUFBSSxDQUFDO1FBQzdELE1BQU0sWUFBWSxHQUFlLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLGlCQUFpQixDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDdEcsTUFBTSxXQUFXLEdBQWUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBRTVGLE1BQU0sU0FBUyxHQUFZLFlBQVksQ0FBQyxJQUFJLEdBQUcsV0FBVyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7UUFDckUsTUFBTSxVQUFVLEdBQVksWUFBWSxDQUFDLEtBQUssR0FBRyxXQUFXLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUM7UUFDdkYsTUFBTSxRQUFRLEdBQVksWUFBWSxDQUFDLEdBQUcsR0FBRyxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztRQUNwRSxNQUFNLFdBQVcsR0FBWSxZQUFZLENBQUMsTUFBTSxHQUFHLFdBQVcsQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQztRQUUzRixNQUFNLGFBQWEsR0FBWSxZQUFZLENBQUMsSUFBSSxHQUFHLENBQUMsV0FBVyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDL0UsTUFBTSxjQUFjLEdBQVksWUFBWSxDQUFDLEtBQUssR0FBRyxDQUFDLFdBQVcsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQztRQUNqRyxNQUFNLFlBQVksR0FBWSxZQUFZLENBQUMsR0FBRyxHQUFHLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDOUUsTUFBTSxlQUFlLEdBQVksWUFBWSxDQUFDLE1BQU0sR0FBRyxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQztRQUVyRyxJQUFJLFNBQVMsSUFBSSxZQUFZLElBQUksZUFBZSxFQUFFO1lBQ2hELHNDQUFzQztZQUN0QyxnQkFBZ0IsR0FBRyxnQkFBZ0IsR0FBRyxlQUFlLENBQUMsSUFBSSxDQUFDO1NBQzVEO1FBRUQsSUFBSSxVQUFVLElBQUksWUFBWSxJQUFJLGVBQWUsRUFBRTtZQUNqRCxzQ0FBc0M7WUFDdEMsZ0JBQWdCLEdBQUcsZ0JBQWdCLEdBQUcsZUFBZSxDQUFDLEtBQUssQ0FBQztTQUM3RDtRQUVELElBQUksUUFBUSxJQUFJLGFBQWEsSUFBSSxjQUFjLEVBQUU7WUFDL0Msc0NBQXNDO1lBQ3RDLGdCQUFnQixHQUFHLGdCQUFnQixHQUFHLGVBQWUsQ0FBQyxHQUFHLENBQUM7U0FDM0Q7UUFFRCxJQUFJLFdBQVcsSUFBSSxhQUFhLElBQUksY0FBYyxFQUFFO1lBQ2xELHNDQUFzQztZQUN0QyxnQkFBZ0IsR0FBRyxnQkFBZ0IsR0FBRyxlQUFlLENBQUMsTUFBTSxDQUFDO1NBQzlEO1FBRUQsT0FBTyxnQkFBZ0IsQ0FBQztJQUMxQixDQUFDOytHQXhaVSxnQkFBZ0I7bUdBQWhCLGdCQUFnQjs7U0FBaEIsZ0JBQWdCOzRGQUFoQixnQkFBZ0I7a0JBRDVCLFNBQVM7aUlBNEJSLFFBQVE7c0JBRFAsS0FBSztnQkFPTixXQUFXO3NCQURWLEtBQUs7Z0JBaUJGLFVBQVU7c0JBRGIsS0FBSztnQkFjb0MsT0FBTztzQkFBaEQsU0FBUzt1QkFBQyxXQUFXLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQVdwQyxPQUFPO3NCQURWLFNBQVM7dUJBQUMsU0FBUyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGNvbnZlcnRUb0Jvb2xlYW4gfSBmcm9tICcuLi8uLi91dGlsaXRpZXMvY29udmVydGlvbic7XHJcbmltcG9ydCB7IFRvb2x0aXBQb3NpdGlvbiB9IGZyb20gJy4uLy4uL3V0aWxpdGllcy9lbnVtcyc7XHJcblxyXG4vKipcclxuICogVG9vbHRpcCBDb21wb25lbnRcclxuICpcclxuICogQmVuw7Z0aWd0IGltIEhUTUwgTWFya3VwIGZvbGdlbmRlIElkZW50aWZpZXJcclxuICogLSBjb250YWluZXI6IENvbnRhaW5lciBmw7xyIG5nLWNvbnRlbnQgaW4gd2VsY2hlbSBkYXMgRWxlbWVudCBhbmdlemVpZ3Qgd2lyZCwgd28gZGVyIFRvb2x0aXAgYW5nZWjDpG5ndCB3aXJkLlxyXG4gKiAtIHRvb2x0aXA6IENvbnRhaW5lciBmw7xyIFRvb2x0aXBcclxuICpcclxuICogVG9vbHRpcCBtdXNzIGluIDIgU2Nocml0dGVuIGFuZ2V6ZWlndCB3ZXJkZW4uIEluIGVpbmVtIGVyc3RlbiBTY2hyaXR0IHdpcmQgZGVyIFRvb2x0aXAgTWFya3VwIGVyemV1Z3QgbWl0IChuZ0lmKS4gSW4gZWluZW0gMi4gU2Nocml0dFxyXG4gKiBrYW5uIGRlciBUb29sdGlwIGRhbm4gw7xiZXIgZGllIENTUyB2aXNpYmlsaXR5IGFuZ2V6ZWlndCB3ZXJkZW4uIFdpcmQgZGllcyBuaWNodCBzbyBnZW1hY2h0LCBrYW5uIGVzIGJlaSBnZXdpc3NlbiBCcm93c2VybiB6dSBlaW5lbSBGbGFja2VyIEVmZmVrdCBmw7xocmVuLlxyXG4gKlxyXG4gKi9cclxuQERpcmVjdGl2ZSgpXHJcbmV4cG9ydCBjbGFzcyBTYWNUb29sdGlwQ29tbW9uIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIC8qKlxyXG4gICAqIFByb3BlcnR5IGbDvHIgRW51bSBpbiBBbmd1bGFyIEhUTUwgVGVtcGxhdGVcclxuICAgKi9cclxuICBUb29sdGlwUG9zaXRpb24gPSBUb29sdGlwUG9zaXRpb247XHJcblxyXG4gIC8qKlxyXG4gICAqIERlZmluaWVydCBvYiBkZXIgVG9vbHRpcCBzaWNodGJhciBpc3RcclxuICAgKi9cclxuICBwcml2YXRlIF9pc1Rvb2x0aXBWaXNpYmxlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8qKlxyXG4gICAqIFBvc2l0aW9uIGRlcyBUb29sdGlwcyBvYmVuXHJcbiAgICovXHJcbiAgVG9wUG9zOiBudW1iZXIgPSAwO1xyXG5cclxuICAvKipcclxuICAgKiBQb3NpdGlvbiBkZXMgVG9vbHRpcHMgbGlua3NcclxuICAgKi9cclxuICBMZWZ0UG9zOiBudW1iZXIgPSAwO1xyXG5cclxuICAvKipcclxuICAgKiBQb3NpdGlvbiBkZXMgVG9vbHRpcHMuIFdlcnRlOiBsZWZ0fHRvcHxyaWdodHxib3R0b218YXV0b1xyXG4gICAqXHJcbiAgICogV2VydCAnYXV0bycga2FubiBtaXQgZWluZW0gYW5kZXJlbiBXZXJ0IGtvbWJpbmllcnQgd2VyZGVuLlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgcG9zaXRpb246IHN0cmluZyA9ICdyaWdodHxhdXRvJztcclxuXHJcbiAgLyoqXHJcbiAgICogVGV4dCBmw7xyIFRvb2xUaXBcclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHRvb2x0aXB0ZXh0OiBzdHJpbmc7XHJcblxyXG4gIC8qKlxyXG4gICAqIElubGluZSBNb2RlIGbDvHIgVG9vbHRpcFxyXG4gICAqL1xyXG4gIHByaXZhdGUgX2lubGluZW1vZGU6IGJvb2xlYW47XHJcblxyXG4gIC8qKlxyXG4gICAqIERlZmluaWVydCBvYiBkZXIgVG9vbHRpcCBzaWNodGJhciBzZWluIHNvbGxcclxuICAgKi9cclxuICBJc1Rvb2x0aXBDb250ZW50VmlzaWJsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvKipcclxuICAgKiBTZXR0ZXIgZsO8ciBJbmxpbmUgTW9kZSBmw7xyIFRvb2x0aXBcclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHNldCBpbmxpbmVtb2RlKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLl9pbmxpbmVtb2RlID0gY29udmVydFRvQm9vbGVhbih2YWx1ZSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEdldHRlciBmw7xyIElubGluZSBNb2RlIGbDvHIgVG9vbHRpcFxyXG4gICAqL1xyXG4gIGdldCBpbmxpbmVtb2RlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2lubGluZW1vZGU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBOYW1lIGRlcyBDb250YWluZXJzIGbDvHIgQ29udGVudCAoei5CLiBJY29uKSBhdWYgd2VsY2hlbSBkZXIgVG9vbHRpcCBhbmdlemVpZ3Qgd2lyZC5cclxuICAgKi9cclxuICBAVmlld0NoaWxkKCdjb250YWluZXInLCB7IHN0YXRpYzogdHJ1ZSB9KSBjb250ZW50OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcclxuXHJcbiAgLyoqXHJcbiAgICogTmFtZSBkZXMgQ29udGFpbmVycyBmw7xyIGRlbiBUb29sdGlwXHJcbiAgICovXHJcbiAgcHJpdmF0ZSB0b29sdGlwY29udGFpbmVyOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcclxuXHJcbiAgLyoqXHJcbiAgICogU2V0dGVyIGbDvHIgTmFtZSBkZXMgQ29udGFpbmVycyBmw7xyIGRlbiBUb29sdGlwLiBXaXJkIGJlbsO2dGlndCwgZGEgVG9vbHRpcCB2aWEgTkdJRiBhdXNnZWJsZW5kZXQgd2VyZGVuIGthbm4uXHJcbiAgICovXHJcbiAgQFZpZXdDaGlsZCgndG9vbHRpcCcsIHsgc3RhdGljOiB0cnVlIH0pXHJcbiAgc2V0IHRvb2x0aXAoY29udGVudDogRWxlbWVudFJlZikge1xyXG4gICAgaWYgKGNvbnRlbnQgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGNvbnRlbnQubmF0aXZlRWxlbWVudCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy50b29sdGlwY29udGFpbmVyID0gY29udGVudDtcclxuICAgIHRoaXMub25Db250ZW50Q2hhbmdlKCk7XHJcbiAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEtvbnN0cnVrdG9yXHJcbiAgICogQHBhcmFtIHJlZiBFbGVtZW50IFJlZmVyZW56XHJcbiAgICovXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsIHByaXZhdGUgcmVmOiBFbGVtZW50UmVmKSB7IH1cclxuXHJcbiAgLyoqXHJcbiAgICogRXJ2ZW50IHdlbm4gZGFzIENvbnRyb2wgaW5pdGlhbGlzZXJ0IHdpcmRcclxuICAgKi9cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIC8vIFJlZ2lzdGVyIEV2ZW50IExpc3RlbmVyXHJcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdGhpcy5vbkNvbnRlbnRDaGFuZ2UsIHRydWUpO1xyXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMub25Db250ZW50Q2hhbmdlLCB0cnVlKTtcclxuXHJcbiAgICBpZiAodGhpcy50b29sdGlwY29udGFpbmVyICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0aGlzLnRvb2x0aXBjb250YWluZXIubmF0aXZlRWxlbWVudCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBFdmVudCB3ZW5uIGRhcyBDb250cm9sIHplcnN0w7ZydCB3aXJkLlxyXG4gICAqL1xyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgLy8gVW5yZWdpc3RlciBFdmVudCBMaXN0ZW5lclxyXG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHRoaXMub25Db250ZW50Q2hhbmdlLCB0cnVlKTtcclxuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLm9uQ29udGVudENoYW5nZSwgdHJ1ZSk7XHJcblxyXG4gICAgaWYgKHRoaXMudG9vbHRpcGNvbnRhaW5lciAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQodGhpcy50b29sdGlwY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQmVyZWNobmV0IGRpZSBQb3NpdGlvbiBkZXMgVG9vbHRpcHMgdm9uIE9iZW5cclxuICAgKi9cclxuICBwcml2YXRlIGdldFRvcFBvc2l0aW9uKCk6IG51bWJlciB7XHJcbiAgICBpZiAodGhpcy5jb250ZW50ICE9PSBudWxsICYmIHRoaXMuY29udGVudCAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLmNvbnRlbnQubmF0aXZlRWxlbWVudDtcclxuXHJcbiAgICAgIGlmIChpdGVtLmNoaWxkcmVuLmxlbmd0aCA+PSAxKSB7XHJcbiAgICAgICAgY29uc3QgY2hpbGRJdGVtID0gaXRlbS5maXJzdEVsZW1lbnRDaGlsZCBhcyBIVE1MRWxlbWVudDtcclxuICAgICAgICBjb25zdCBjb250ZW50UG9zaXRpb246IENsaWVudFJlY3QgPSBjaGlsZEl0ZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcblxyXG4gICAgICAgIHN3aXRjaCAodGhpcy5HZXRUb29sdGlwUG9zaXRpb24oKSkge1xyXG4gICAgICAgICAgY2FzZSBUb29sdGlwUG9zaXRpb24udG9wOlxyXG4gICAgICAgICAgICB0aGlzLlRvcFBvcyA9IGNvbnRlbnRQb3NpdGlvbi50b3AgLSB0aGlzLmdldFRvb2xUaXBIZWlnaHQoKTtcclxuICAgICAgICAgICAgcmV0dXJuIGNvbnRlbnRQb3NpdGlvbi50b3AgLSB0aGlzLmdldFRvb2xUaXBIZWlnaHQoKTtcclxuICAgICAgICAgIGNhc2UgVG9vbHRpcFBvc2l0aW9uLnJpZ2h0OlxyXG4gICAgICAgICAgICB0aGlzLlRvcFBvcyA9IGNvbnRlbnRQb3NpdGlvbi50b3AgKyAoY29udGVudFBvc2l0aW9uLmhlaWdodCAvIDIpIC0gKHRoaXMuZ2V0VG9vbFRpcEhlaWdodCgpIC8gMik7XHJcbiAgICAgICAgICAgIHJldHVybiBjb250ZW50UG9zaXRpb24udG9wICsgKGNvbnRlbnRQb3NpdGlvbi5oZWlnaHQgLyAyKSAtICh0aGlzLmdldFRvb2xUaXBIZWlnaHQoKSAvIDIpO1xyXG4gICAgICAgICAgY2FzZSBUb29sdGlwUG9zaXRpb24uYm90dG9tOlxyXG4gICAgICAgICAgICB0aGlzLlRvcFBvcyA9IGNvbnRlbnRQb3NpdGlvbi50b3AgKyBjb250ZW50UG9zaXRpb24uaGVpZ2h0O1xyXG4gICAgICAgICAgICByZXR1cm4gY29udGVudFBvc2l0aW9uLnRvcCArIGNvbnRlbnRQb3NpdGlvbi5oZWlnaHQ7XHJcbiAgICAgICAgICBjYXNlIFRvb2x0aXBQb3NpdGlvbi5sZWZ0OlxyXG4gICAgICAgICAgICB0aGlzLlRvcFBvcyA9IGNvbnRlbnRQb3NpdGlvbi50b3AgKyAoY29udGVudFBvc2l0aW9uLmhlaWdodCAvIDIpIC0gKHRoaXMuZ2V0VG9vbFRpcEhlaWdodCgpIC8gMik7XHJcbiAgICAgICAgICAgIHJldHVybiBjb250ZW50UG9zaXRpb24udG9wICsgKGNvbnRlbnRQb3NpdGlvbi5oZWlnaHQgLyAyKSAtICh0aGlzLmdldFRvb2xUaXBIZWlnaHQoKSAvIDIpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIGNoaWxkSXRlbS5jbGllbnRUb3AgKyBjaGlsZEl0ZW0ub2Zmc2V0VG9wIC0gKCh0aGlzLmdldFRvb2xUaXBIZWlnaHQoKSAvIDIpIC0gKGNoaWxkSXRlbS5jbGllbnRIZWlnaHQgLyAyKSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY29udGVudC5uYXRpdmVFbGVtZW50Lm9mZnNldFRvcDtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHRoaXMucmVmLm5hdGl2ZUVsZW1lbnQub2Zmc2V0VG9wO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEJlcmVjaG5ldCBkaWUgUG9zaXRpb24gZGVzIFRvb2x0aXBzIHZvbiBMaW5rc1xyXG4gICAqL1xyXG4gIHByaXZhdGUgZ2V0TGVmdFBvc2l0aW9uKCk6IG51bWJlciB7XHJcblxyXG4gICAgaWYgKHRoaXMuY29udGVudCAhPT0gbnVsbCAmJiB0aGlzLmNvbnRlbnQgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICBjb25zdCBpdGVtID0gdGhpcy5jb250ZW50Lm5hdGl2ZUVsZW1lbnQ7XHJcblxyXG4gICAgICBpZiAoaXRlbS5jaGlsZHJlbi5sZW5ndGggPj0gMSkge1xyXG4gICAgICAgIGNvbnN0IGNoaWxkSXRlbSA9IGl0ZW0uZmlyc3RFbGVtZW50Q2hpbGQgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICAgICAgY29uc3QgY29udGVudFBvc2l0aW9uOiBDbGllbnRSZWN0ID0gY2hpbGRJdGVtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG5cclxuICAgICAgICBzd2l0Y2ggKHRoaXMuR2V0VG9vbHRpcFBvc2l0aW9uKCkpIHtcclxuICAgICAgICAgIGNhc2UgVG9vbHRpcFBvc2l0aW9uLnRvcDpcclxuICAgICAgICAgICAgdGhpcy5MZWZ0UG9zID0gY29udGVudFBvc2l0aW9uLmxlZnQgKyAoY29udGVudFBvc2l0aW9uLndpZHRoIC8gMikgLSAodGhpcy5nZXRUb29sVGlwV2lkdGgoKSAvIDIpO1xyXG4gICAgICAgICAgICByZXR1cm4gY29udGVudFBvc2l0aW9uLmxlZnQgKyAoY29udGVudFBvc2l0aW9uLndpZHRoIC8gMikgLSAodGhpcy5nZXRUb29sVGlwV2lkdGgoKSAvIDIpO1xyXG4gICAgICAgICAgY2FzZSBUb29sdGlwUG9zaXRpb24ucmlnaHQ6XHJcbiAgICAgICAgICAgIHRoaXMuTGVmdFBvcyA9IGNvbnRlbnRQb3NpdGlvbi5sZWZ0ICsgY29udGVudFBvc2l0aW9uLndpZHRoO1xyXG4gICAgICAgICAgICByZXR1cm4gY29udGVudFBvc2l0aW9uLmxlZnQgKyBjb250ZW50UG9zaXRpb24ud2lkdGg7XHJcbiAgICAgICAgICBjYXNlIFRvb2x0aXBQb3NpdGlvbi5ib3R0b206XHJcbiAgICAgICAgICAgIHRoaXMuTGVmdFBvcyA9IGNvbnRlbnRQb3NpdGlvbi5sZWZ0ICsgKGNoaWxkSXRlbS5jbGllbnRXaWR0aCAvIDIpIC0gKHRoaXMuZ2V0VG9vbFRpcFdpZHRoKCkgLyAyKTtcclxuICAgICAgICAgICAgcmV0dXJuIGNvbnRlbnRQb3NpdGlvbi5sZWZ0ICsgKGNoaWxkSXRlbS5jbGllbnRXaWR0aCAvIDIpIC0gKHRoaXMuZ2V0VG9vbFRpcFdpZHRoKCkgLyAyKTtcclxuICAgICAgICAgIGNhc2UgVG9vbHRpcFBvc2l0aW9uLmxlZnQ6XHJcbiAgICAgICAgICAgIHRoaXMuTGVmdFBvcyA9IGNvbnRlbnRQb3NpdGlvbi5sZWZ0IC0gdGhpcy5nZXRUb29sVGlwV2lkdGgoKTtcclxuICAgICAgICAgICAgcmV0dXJuIGNvbnRlbnRQb3NpdGlvbi5sZWZ0IC0gdGhpcy5nZXRUb29sVGlwV2lkdGgoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLmNvbnRlbnQubmF0aXZlRWxlbWVudC5vZmZzZXRUb3A7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY29udGVudC5uYXRpdmVFbGVtZW50Lm9mZnNldFRvcDtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHRoaXMucmVmLm5hdGl2ZUVsZW1lbnQub2Zmc2V0TGVmdDtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICAvKipcclxuICAgKiBCZXJlY2huZXQgZGllIEjDtmhlIGRlcyBUb29sdGlwc1xyXG4gICAqL1xyXG4gIHByaXZhdGUgZ2V0VG9vbFRpcEhlaWdodCgpOiBudW1iZXIge1xyXG4gICAgaWYgKHRoaXMudG9vbHRpcGNvbnRhaW5lcikge1xyXG4gICAgICByZXR1cm4gdGhpcy50b29sdGlwY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuY2xpZW50SGVpZ2h0O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIDA7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBCZXJlY2huZXQgZGllIEJyZWl0ZSBkaWUgVG9vbHRpcHNcclxuICAgKi9cclxuICBwcml2YXRlIGdldFRvb2xUaXBXaWR0aCgpOiBudW1iZXIge1xyXG4gICAgaWYgKHRoaXMudG9vbHRpcGNvbnRhaW5lcikge1xyXG4gICAgICByZXR1cm4gdGhpcy50b29sdGlwY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuY2xpZW50V2lkdGg7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gMDtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICAvKipcclxuICAgKiBEZWZpbmllcnQgb2IgZGVyIFRvb2x0aXAgaW0gTWFya3VwIHZvcmhhbmRlbiBpc3RcclxuICAgKi9cclxuICBJc1Rvb2x0aXBWaXNpYmxlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2lzVG9vbHRpcFZpc2libGU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUb29sdGlwIGFuemVpZ2VuXHJcbiAgICovXHJcbiAgU2hvd1Rvb2x0aXAoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9pc1Rvb2x0aXBWaXNpYmxlID0gdHJ1ZTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLmdldExlZnRQb3NpdGlvbigpO1xyXG4gICAgICB0aGlzLmdldFRvcFBvc2l0aW9uKCk7XHJcbiAgICAgIHRoaXMuSXNUb29sdGlwQ29udGVudFZpc2libGUgPSB0cnVlO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUb29sdGlwIGF1c2JsZW5kZW5cclxuICAgKi9cclxuICBIaWRlVG9vbHRpcCgpOiB2b2lkIHtcclxuICAgIHRoaXMuX2lzVG9vbHRpcFZpc2libGUgPSBmYWxzZTtcclxuICAgIHRoaXMuSXNUb29sdGlwQ29udGVudFZpc2libGUgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldGhvZGUgd2VubiBDb250ZW50IGdlw6RuZGVydCBoYXQgdW5kIFByb3BvcnRpZXMgaW0gVUkgbmV1IGdlc2V0enQgd2VyZGVuIG3DvHNzZW4uXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBvbkNvbnRlbnRDaGFuZ2UgPSAoKTogdm9pZCA9PiB7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5nZXRMZWZ0UG9zaXRpb24oKTtcclxuICAgICAgdGhpcy5nZXRUb3BQb3NpdGlvbigpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHaWJ0IGRpZSBQb3NpdGlvbiBkZXMgVG9vbHRpcHMgenVyw7xja1xyXG4gICAqL1xyXG4gIHB1YmxpYyBHZXRUb29sdGlwUG9zaXRpb24oKTogVG9vbHRpcFBvc2l0aW9uIHtcclxuICAgIGNvbnN0IHZhbGlkUG9zaXRpb25zOiBUb29sdGlwUG9zaXRpb24gPSB0aGlzLlZhbGlkYXRlUG9zaXRpb25zKCk7XHJcblxyXG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWJpdHdpc2VcclxuICAgIGlmICh0aGlzLkhhc1Bvc2l0aW9uKFRvb2x0aXBQb3NpdGlvbi5yaWdodCkgJiYgKHZhbGlkUG9zaXRpb25zICYgVG9vbHRpcFBvc2l0aW9uLnJpZ2h0KSkge1xyXG4gICAgICByZXR1cm4gVG9vbHRpcFBvc2l0aW9uLnJpZ2h0O1xyXG4gICAgfVxyXG5cclxuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1iaXR3aXNlXHJcbiAgICBpZiAodGhpcy5IYXNQb3NpdGlvbihUb29sdGlwUG9zaXRpb24udG9wKSAmJiAodmFsaWRQb3NpdGlvbnMgJiBUb29sdGlwUG9zaXRpb24udG9wKSkge1xyXG4gICAgICByZXR1cm4gVG9vbHRpcFBvc2l0aW9uLnRvcDtcclxuICAgIH1cclxuXHJcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYml0d2lzZVxyXG4gICAgaWYgKHRoaXMuSGFzUG9zaXRpb24oVG9vbHRpcFBvc2l0aW9uLmxlZnQpICYmICh2YWxpZFBvc2l0aW9ucyAmIFRvb2x0aXBQb3NpdGlvbi5sZWZ0KSkge1xyXG4gICAgICByZXR1cm4gVG9vbHRpcFBvc2l0aW9uLmxlZnQ7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWJpdHdpc2VcclxuICAgIGlmICh0aGlzLkhhc1Bvc2l0aW9uKFRvb2x0aXBQb3NpdGlvbi5ib3R0b20pICYmICh2YWxpZFBvc2l0aW9ucyAmIFRvb2x0aXBQb3NpdGlvbi5ib3R0b20pKSB7XHJcbiAgICAgIHJldHVybiBUb29sdGlwUG9zaXRpb24uYm90dG9tO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEdldCBBdXRvIFBvc2l0aW9uIG9yIERlZmF1bHRcclxuICAgIGlmICh0aGlzLklzQXV0b1Bvc2l0aW9uKCkpIHtcclxuXHJcbiAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1iaXR3aXNlXHJcbiAgICAgIGlmICh2YWxpZFBvc2l0aW9ucyAmIFRvb2x0aXBQb3NpdGlvbi5yaWdodCkge1xyXG4gICAgICAgIHJldHVybiBUb29sdGlwUG9zaXRpb24ucmlnaHQ7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1iaXR3aXNlXHJcbiAgICAgIGlmICh2YWxpZFBvc2l0aW9ucyAmIFRvb2x0aXBQb3NpdGlvbi50b3ApIHtcclxuICAgICAgICByZXR1cm4gVG9vbHRpcFBvc2l0aW9uLnRvcDtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWJpdHdpc2VcclxuICAgICAgaWYgKHZhbGlkUG9zaXRpb25zICYgVG9vbHRpcFBvc2l0aW9uLmxlZnQpIHtcclxuICAgICAgICByZXR1cm4gVG9vbHRpcFBvc2l0aW9uLmxlZnQ7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1iaXR3aXNlXHJcbiAgICAgIGlmICh2YWxpZFBvc2l0aW9ucyAmIFRvb2x0aXBQb3NpdGlvbi5ib3R0b20pIHtcclxuICAgICAgICByZXR1cm4gVG9vbHRpcFBvc2l0aW9uLmJvdHRvbTtcclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIFRvb2x0aXBQb3NpdGlvbi5yaWdodDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB0aGlzLkdldFBvc2l0aW9uKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEZWZpbmllcnQgb2IgQXV0b1Bvc2l0aW9uIGFrdGl2IGlzdFxyXG4gICAqL1xyXG4gIHByaXZhdGUgSXNBdXRvUG9zaXRpb24oKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBwb3NpdGlvbnMgPSB0aGlzLnBvc2l0aW9uLnNwbGl0KCd8Jyk7XHJcbiAgICByZXR1cm4gcG9zaXRpb25zLmluZGV4T2YoJ2F1dG8nKSA+PSAwO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2lidCBkaWUgZGVmaW5pZXJ0ZSBQb3NpdGlvbiBmw7xyIGRlbiBUb29sdGlwIHp1csO8Y2tcclxuICAgKi9cclxuICBwcml2YXRlIEdldFBvc2l0aW9uKCk6IFRvb2x0aXBQb3NpdGlvbiB7XHJcbiAgICBjb25zdCBwb3NpdGlvbnMgPSB0aGlzLnBvc2l0aW9uLnNwbGl0KCd8Jyk7XHJcblxyXG4gICAgaWYgKHRoaXMuSGFzUG9zaXRpb24oVG9vbHRpcFBvc2l0aW9uLmxlZnQpKSB7XHJcbiAgICAgIHJldHVybiBUb29sdGlwUG9zaXRpb24ubGVmdDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5IYXNQb3NpdGlvbihUb29sdGlwUG9zaXRpb24udG9wKSkge1xyXG4gICAgICByZXR1cm4gVG9vbHRpcFBvc2l0aW9uLnRvcDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5IYXNQb3NpdGlvbihUb29sdGlwUG9zaXRpb24ucmlnaHQpKSB7XHJcbiAgICAgIHJldHVybiBUb29sdGlwUG9zaXRpb24ucmlnaHQ7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuSGFzUG9zaXRpb24oVG9vbHRpcFBvc2l0aW9uLmJvdHRvbSkpIHtcclxuICAgICAgcmV0dXJuIFRvb2x0aXBQb3NpdGlvbi5ib3R0b207XHJcbiAgICB9XHJcblxyXG4gICAgLy8gRGVmYXVsdCBQb3NpdGlvbiBpZiBlbXB0eVxyXG4gICAgcmV0dXJuIFRvb2x0aXBQb3NpdGlvbi5yaWdodDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdpYnQgenVyw7xjaywgb2IgZGllIFBvc2l0aW9uIGtvbmZpZ3VyaWVydCB3dXJkZVxyXG4gICAqXHJcbiAgICogQHBhcmFtIHBvc2l0aW9uIFBvc2l0aW9uIGF1ZiB3ZWxjaGUgZ2VwcsO8ZnQgd2lyZFxyXG4gICAqL1xyXG4gIHByaXZhdGUgSGFzUG9zaXRpb24ocG9zaXRpb246IFRvb2x0aXBQb3NpdGlvbik6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgcG9zaXRpb25zID0gdGhpcy5wb3NpdGlvbi5zcGxpdCgnfCcpO1xyXG5cclxuICAgIGlmIChwb3NpdGlvbiA9PT0gVG9vbHRpcFBvc2l0aW9uLnJpZ2h0ICYmIHBvc2l0aW9ucy5pbmRleE9mKCdyaWdodCcpID49IDApIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHBvc2l0aW9uID09PSBUb29sdGlwUG9zaXRpb24udG9wICYmIHBvc2l0aW9ucy5pbmRleE9mKCd0b3AnKSA+PSAwKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChwb3NpdGlvbiA9PT0gVG9vbHRpcFBvc2l0aW9uLmxlZnQgJiYgcG9zaXRpb25zLmluZGV4T2YoJ2xlZnQnKSA+PSAwKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChwb3NpdGlvbiA9PT0gVG9vbHRpcFBvc2l0aW9uLmJvdHRvbSAmJiBwb3NpdGlvbnMuaW5kZXhPZignYm90dG9tJykgPj0gMCkge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBQcsO8ZnQgb2IgZGllIFBvc2l0aW9uIGfDvGx0aWcgaXN0LCByZXNwLiBkZXIgVG9vbHRpcCBhdWYgZGllIFBvc2l0aW9uIHBsYXR6IGhhdFxyXG4gICAqL1xyXG4gIHByaXZhdGUgVmFsaWRhdGVQb3NpdGlvbnMoKTogVG9vbHRpcFBvc2l0aW9uIHtcclxuICAgIC8vIENoZWNrIGlmIENvbnRhaW5lciBpcyBmYWxzZVxyXG4gICAgaWYgKHRoaXMudG9vbHRpcGNvbnRhaW5lciA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHJldHVybiBUb29sdGlwUG9zaXRpb24ucmlnaHQ7XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IGFsbG93ZWRQb3NpdGlvbnM6IFRvb2x0aXBQb3NpdGlvbiA9IFRvb2x0aXBQb3NpdGlvbi5ub25lO1xyXG4gICAgY29uc3QgYmFzZVBvc2l0aW9uOiBDbGllbnRSZWN0ID0gdGhpcy5jb250ZW50Lm5hdGl2ZUVsZW1lbnQuZmlyc3RFbGVtZW50Q2hpbGQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcbiAgICBjb25zdCB0b29sdGlwUmVjdDogQ2xpZW50UmVjdCA9IHRoaXMudG9vbHRpcGNvbnRhaW5lci5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG5cclxuICAgIGNvbnN0IGxlZnRQb3NPazogYm9vbGVhbiA9IGJhc2VQb3NpdGlvbi5sZWZ0IC0gdG9vbHRpcFJlY3Qud2lkdGggPiAwO1xyXG4gICAgY29uc3QgcmlnaHRQb3NPazogYm9vbGVhbiA9IGJhc2VQb3NpdGlvbi5yaWdodCArIHRvb2x0aXBSZWN0LndpZHRoIDwgd2luZG93LmlubmVyV2lkdGg7XHJcbiAgICBjb25zdCB0b3BQb3NPazogYm9vbGVhbiA9IGJhc2VQb3NpdGlvbi50b3AgLSB0b29sdGlwUmVjdC5oZWlnaHQgPiAwO1xyXG4gICAgY29uc3QgYm90dG9tUG9zT2s6IGJvb2xlYW4gPSBiYXNlUG9zaXRpb24uYm90dG9tICsgdG9vbHRpcFJlY3QuaGVpZ2h0IDwgd2luZG93LmlubmVySGVpZ2h0O1xyXG5cclxuICAgIGNvbnN0IGxlZnRIYWxmUG9zT2s6IGJvb2xlYW4gPSBiYXNlUG9zaXRpb24ubGVmdCAtICh0b29sdGlwUmVjdC53aWR0aCAvIDIpID4gMDtcclxuICAgIGNvbnN0IHJpZ2h0SGFsZlBvc09rOiBib29sZWFuID0gYmFzZVBvc2l0aW9uLnJpZ2h0ICsgKHRvb2x0aXBSZWN0LndpZHRoIC8gMikgPCB3aW5kb3cuaW5uZXJXaWR0aDtcclxuICAgIGNvbnN0IHRvcEhhbGZQb3NPazogYm9vbGVhbiA9IGJhc2VQb3NpdGlvbi50b3AgLSAodG9vbHRpcFJlY3QuaGVpZ2h0IC8gMikgPiAwO1xyXG4gICAgY29uc3QgYm90dG9tSGFsZlBvc09rOiBib29sZWFuID0gYmFzZVBvc2l0aW9uLmJvdHRvbSArICh0b29sdGlwUmVjdC5oZWlnaHQgLyAyKSA8IHdpbmRvdy5pbm5lckhlaWdodDtcclxuXHJcbiAgICBpZiAobGVmdFBvc09rICYmIHRvcEhhbGZQb3NPayAmJiBib3R0b21IYWxmUG9zT2spIHtcclxuICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWJpdHdpc2VcclxuICAgICAgYWxsb3dlZFBvc2l0aW9ucyA9IGFsbG93ZWRQb3NpdGlvbnMgfCBUb29sdGlwUG9zaXRpb24ubGVmdDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAocmlnaHRQb3NPayAmJiB0b3BIYWxmUG9zT2sgJiYgYm90dG9tSGFsZlBvc09rKSB7XHJcbiAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1iaXR3aXNlXHJcbiAgICAgIGFsbG93ZWRQb3NpdGlvbnMgPSBhbGxvd2VkUG9zaXRpb25zIHwgVG9vbHRpcFBvc2l0aW9uLnJpZ2h0O1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0b3BQb3NPayAmJiBsZWZ0SGFsZlBvc09rICYmIHJpZ2h0SGFsZlBvc09rKSB7XHJcbiAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1iaXR3aXNlXHJcbiAgICAgIGFsbG93ZWRQb3NpdGlvbnMgPSBhbGxvd2VkUG9zaXRpb25zIHwgVG9vbHRpcFBvc2l0aW9uLnRvcDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoYm90dG9tUG9zT2sgJiYgbGVmdEhhbGZQb3NPayAmJiByaWdodEhhbGZQb3NPaykge1xyXG4gICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYml0d2lzZVxyXG4gICAgICBhbGxvd2VkUG9zaXRpb25zID0gYWxsb3dlZFBvc2l0aW9ucyB8IFRvb2x0aXBQb3NpdGlvbi5ib3R0b207XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGFsbG93ZWRQb3NpdGlvbnM7XHJcbiAgfVxyXG59XHJcbiJdfQ==
85
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb3Zfdm51dXhzbTJtIiwiYWN0dWFsQ292ZXJhZ2UiLCJEaXJlY3RpdmUiLCJJbnB1dCIsIlZpZXdDaGlsZCIsImNvbnZlcnRUb0Jvb2xlYW4iLCJUb29sdGlwUG9zaXRpb24iLCJTYWNUb29sdGlwQ29tbW9uIiwiaW5saW5lbW9kZSIsInZhbHVlIiwiZiIsInMiLCJfaW5saW5lbW9kZSIsInRvb2x0aXAiLCJjb250ZW50IiwidW5kZWZpbmVkIiwiYiIsImRvY3VtZW50IiwiYm9keSIsImFwcGVuZENoaWxkIiwibmF0aXZlRWxlbWVudCIsInRvb2x0aXBjb250YWluZXIiLCJvbkNvbnRlbnRDaGFuZ2UiLCJjZFJlZiIsImRldGVjdENoYW5nZXMiLCJjb25zdHJ1Y3RvciIsInJlZiIsIl9pc1Rvb2x0aXBWaXNpYmxlIiwiVG9wUG9zIiwiTGVmdFBvcyIsInBvc2l0aW9uIiwiSXNUb29sdGlwQ29udGVudFZpc2libGUiLCJzZXRUaW1lb3V0IiwiZ2V0TGVmdFBvc2l0aW9uIiwiZ2V0VG9wUG9zaXRpb24iLCJuZ09uSW5pdCIsIndpbmRvdyIsImFkZEV2ZW50TGlzdGVuZXIiLCJuZ09uRGVzdHJveSIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJyZW1vdmVDaGlsZCIsIml0ZW0iLCJjaGlsZHJlbiIsImxlbmd0aCIsImNoaWxkSXRlbSIsImZpcnN0RWxlbWVudENoaWxkIiwiY29udGVudFBvc2l0aW9uIiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwiR2V0VG9vbHRpcFBvc2l0aW9uIiwidG9wIiwiZ2V0VG9vbFRpcEhlaWdodCIsInJpZ2h0IiwiaGVpZ2h0IiwiYm90dG9tIiwibGVmdCIsImNsaWVudFRvcCIsIm9mZnNldFRvcCIsImNsaWVudEhlaWdodCIsIndpZHRoIiwiZ2V0VG9vbFRpcFdpZHRoIiwiY2xpZW50V2lkdGgiLCJvZmZzZXRMZWZ0IiwiSXNUb29sdGlwVmlzaWJsZSIsIlNob3dUb29sdGlwIiwiSGlkZVRvb2x0aXAiLCJ2YWxpZFBvc2l0aW9ucyIsIlZhbGlkYXRlUG9zaXRpb25zIiwiSGFzUG9zaXRpb24iLCJJc0F1dG9Qb3NpdGlvbiIsIkdldFBvc2l0aW9uIiwicG9zaXRpb25zIiwic3BsaXQiLCJpbmRleE9mIiwiYWxsb3dlZFBvc2l0aW9ucyIsIm5vbmUiLCJiYXNlUG9zaXRpb24iLCJ0b29sdGlwUmVjdCIsImxlZnRQb3NPayIsInJpZ2h0UG9zT2siLCJpbm5lcldpZHRoIiwidG9wUG9zT2siLCJib3R0b21Qb3NPayIsImlubmVySGVpZ2h0IiwibGVmdEhhbGZQb3NPayIsInJpZ2h0SGFsZlBvc09rIiwidG9wSGFsZlBvc09rIiwiYm90dG9tSGFsZlBvc09rIiwiZGVwcyIsInRva2VuIiwiaTAiLCJDaGFuZ2VEZXRlY3RvclJlZiIsIkVsZW1lbnRSZWYiLCJ0YXJnZXQiLCLJtcm1RmFjdG9yeVRhcmdldCIsImlucHV0cyIsInRvb2x0aXB0ZXh0Iiwidmlld1F1ZXJpZXMiLCJwcm9wZXJ0eU5hbWUiLCJmaXJzdCIsInByZWRpY2F0ZSIsImRlc2NlbmRhbnRzIiwic3RhdGljIiwibmdJbXBvcnQiLCJkZWNvcmF0b3JzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2FjLWNvbW1vbi9zcmMvY29udHJvbHMvdG9vbHRpcC90b29sdGlwLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGNvbnZlcnRUb0Jvb2xlYW4gfSBmcm9tICcuLi8uLi91dGlsaXRpZXMvY29udmVydGlvbic7XHJcbmltcG9ydCB7IFRvb2x0aXBQb3NpdGlvbiB9IGZyb20gJy4uLy4uL3V0aWxpdGllcy9lbnVtcyc7XHJcblxyXG4vKipcclxuICogVG9vbHRpcCBDb21wb25lbnRcclxuICpcclxuICogQmVuw7Z0aWd0IGltIEhUTUwgTWFya3VwIGZvbGdlbmRlIElkZW50aWZpZXJcclxuICogLSBjb250YWluZXI6IENvbnRhaW5lciBmw7xyIG5nLWNvbnRlbnQgaW4gd2VsY2hlbSBkYXMgRWxlbWVudCBhbmdlemVpZ3Qgd2lyZCwgd28gZGVyIFRvb2x0aXAgYW5nZWjDpG5ndCB3aXJkLlxyXG4gKiAtIHRvb2x0aXA6IENvbnRhaW5lciBmw7xyIFRvb2x0aXBcclxuICpcclxuICogVG9vbHRpcCBtdXNzIGluIDIgU2Nocml0dGVuIGFuZ2V6ZWlndCB3ZXJkZW4uIEluIGVpbmVtIGVyc3RlbiBTY2hyaXR0IHdpcmQgZGVyIFRvb2x0aXAgTWFya3VwIGVyemV1Z3QgbWl0IChuZ0lmKS4gSW4gZWluZW0gMi4gU2Nocml0dFxyXG4gKiBrYW5uIGRlciBUb29sdGlwIGRhbm4gw7xiZXIgZGllIENTUyB2aXNpYmlsaXR5IGFuZ2V6ZWlndCB3ZXJkZW4uIFdpcmQgZGllcyBuaWNodCBzbyBnZW1hY2h0LCBrYW5uIGVzIGJlaSBnZXdpc3NlbiBCcm93c2VybiB6dSBlaW5lbSBGbGFja2VyIEVmZmVrdCBmw7xocmVuLlxyXG4gKlxyXG4gKi9cclxuQERpcmVjdGl2ZSgpXHJcbmV4cG9ydCBjbGFzcyBTYWNUb29sdGlwQ29tbW9uIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIC8qKlxyXG4gICAqIFByb3BlcnR5IGbDvHIgRW51bSBpbiBBbmd1bGFyIEhUTUwgVGVtcGxhdGVcclxuICAgKi9cclxuICBUb29sdGlwUG9zaXRpb24gPSBUb29sdGlwUG9zaXRpb247XHJcblxyXG4gIC8qKlxyXG4gICAqIERlZmluaWVydCBvYiBkZXIgVG9vbHRpcCBzaWNodGJhciBpc3RcclxuICAgKi9cclxuICBwcml2YXRlIF9pc1Rvb2x0aXBWaXNpYmxlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8qKlxyXG4gICAqIFBvc2l0aW9uIGRlcyBUb29sdGlwcyBvYmVuXHJcbiAgICovXHJcbiAgVG9wUG9zOiBudW1iZXIgPSAwO1xyXG5cclxuICAvKipcclxuICAgKiBQb3NpdGlvbiBkZXMgVG9vbHRpcHMgbGlua3NcclxuICAgKi9cclxuICBMZWZ0UG9zOiBudW1iZXIgPSAwO1xyXG5cclxuICAvKipcclxuICAgKiBQb3NpdGlvbiBkZXMgVG9vbHRpcHMuIFdlcnRlOiBsZWZ0fHRvcHxyaWdodHxib3R0b218YXV0b1xyXG4gICAqXHJcbiAgICogV2VydCAnYXV0bycga2FubiBtaXQgZWluZW0gYW5kZXJlbiBXZXJ0IGtvbWJpbmllcnQgd2VyZGVuLlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgcG9zaXRpb246IHN0cmluZyA9ICdyaWdodHxhdXRvJztcclxuXHJcbiAgLyoqXHJcbiAgICogVGV4dCBmw7xyIFRvb2xUaXBcclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHRvb2x0aXB0ZXh0OiBzdHJpbmc7XHJcblxyXG4gIC8qKlxyXG4gICAqIElubGluZSBNb2RlIGbDvHIgVG9vbHRpcFxyXG4gICAqL1xyXG4gIHByaXZhdGUgX2lubGluZW1vZGU6IGJvb2xlYW47XHJcblxyXG4gIC8qKlxyXG4gICAqIERlZmluaWVydCBvYiBkZXIgVG9vbHRpcCBzaWNodGJhciBzZWluIHNvbGxcclxuICAgKi9cclxuICBJc1Rvb2x0aXBDb250ZW50VmlzaWJsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvKipcclxuICAgKiBTZXR0ZXIgZsO8ciBJbmxpbmUgTW9kZSBmw7xyIFRvb2x0aXBcclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHNldCBpbmxpbmVtb2RlKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLl9pbmxpbmVtb2RlID0gY29udmVydFRvQm9vbGVhbih2YWx1ZSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEdldHRlciBmw7xyIElubGluZSBNb2RlIGbDvHIgVG9vbHRpcFxyXG4gICAqL1xyXG4gIGdldCBpbmxpbmVtb2RlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2lubGluZW1vZGU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBOYW1lIGRlcyBDb250YWluZXJzIGbDvHIgQ29udGVudCAoei5CLiBJY29uKSBhdWYgd2VsY2hlbSBkZXIgVG9vbHRpcCBhbmdlemVpZ3Qgd2lyZC5cclxuICAgKi9cclxuICBAVmlld0NoaWxkKCdjb250YWluZXInLCB7IHN0YXRpYzogdHJ1ZSB9KSBjb250ZW50OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcclxuXHJcbiAgLyoqXHJcbiAgICogTmFtZSBkZXMgQ29udGFpbmVycyBmw7xyIGRlbiBUb29sdGlwXHJcbiAgICovXHJcbiAgcHJpdmF0ZSB0b29sdGlwY29udGFpbmVyOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcclxuXHJcbiAgLyoqXHJcbiAgICogU2V0dGVyIGbDvHIgTmFtZSBkZXMgQ29udGFpbmVycyBmw7xyIGRlbiBUb29sdGlwLiBXaXJkIGJlbsO2dGlndCwgZGEgVG9vbHRpcCB2aWEgTkdJRiBhdXNnZWJsZW5kZXQgd2VyZGVuIGthbm4uXHJcbiAgICovXHJcbiAgQFZpZXdDaGlsZCgndG9vbHRpcCcsIHsgc3RhdGljOiB0cnVlIH0pXHJcbiAgc2V0IHRvb2x0aXAoY29udGVudDogRWxlbWVudFJlZikge1xyXG4gICAgaWYgKGNvbnRlbnQgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGNvbnRlbnQubmF0aXZlRWxlbWVudCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy50b29sdGlwY29udGFpbmVyID0gY29udGVudDtcclxuICAgIHRoaXMub25Db250ZW50Q2hhbmdlKCk7XHJcbiAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEtvbnN0cnVrdG9yXHJcbiAgICogQHBhcmFtIHJlZiBFbGVtZW50IFJlZmVyZW56XHJcbiAgICovXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsIHByaXZhdGUgcmVmOiBFbGVtZW50UmVmKSB7IH1cclxuXHJcbiAgLyoqXHJcbiAgICogRXJ2ZW50IHdlbm4gZGFzIENvbnRyb2wgaW5pdGlhbGlzZXJ0IHdpcmRcclxuICAgKi9cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIC8vIFJlZ2lzdGVyIEV2ZW50IExpc3RlbmVyXHJcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdGhpcy5vbkNvbnRlbnRDaGFuZ2UsIHRydWUpO1xyXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMub25Db250ZW50Q2hhbmdlLCB0cnVlKTtcclxuXHJcbiAgICBpZiAodGhpcy50b29sdGlwY29udGFpbmVyICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0aGlzLnRvb2x0aXBjb250YWluZXIubmF0aXZlRWxlbWVudCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBFdmVudCB3ZW5uIGRhcyBDb250cm9sIHplcnN0w7ZydCB3aXJkLlxyXG4gICAqL1xyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgLy8gVW5yZWdpc3RlciBFdmVudCBMaXN0ZW5lclxyXG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHRoaXMub25Db250ZW50Q2hhbmdlLCB0cnVlKTtcclxuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLm9uQ29udGVudENoYW5nZSwgdHJ1ZSk7XHJcblxyXG4gICAgaWYgKHRoaXMudG9vbHRpcGNvbnRhaW5lciAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQodGhpcy50b29sdGlwY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQmVyZWNobmV0IGRpZSBQb3NpdGlvbiBkZXMgVG9vbHRpcHMgdm9uIE9iZW5cclxuICAgKi9cclxuICBwcml2YXRlIGdldFRvcFBvc2l0aW9uKCk6IG51bWJlciB7XHJcbiAgICBpZiAodGhpcy5jb250ZW50ICE9PSBudWxsICYmIHRoaXMuY29udGVudCAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLmNvbnRlbnQubmF0aXZlRWxlbWVudDtcclxuXHJcbiAgICAgIGlmIChpdGVtLmNoaWxkcmVuLmxlbmd0aCA+PSAxKSB7XHJcbiAgICAgICAgY29uc3QgY2hpbGRJdGVtID0gaXRlbS5maXJzdEVsZW1lbnRDaGlsZCBhcyBIVE1MRWxlbWVudDtcclxuICAgICAgICBjb25zdCBjb250ZW50UG9zaXRpb246IENsaWVudFJlY3QgPSBjaGlsZEl0ZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcblxyXG4gICAgICAgIHN3aXRjaCAodGhpcy5HZXRUb29sdGlwUG9zaXRpb24oKSkge1xyXG4gICAgICAgICAgY2FzZSBUb29sdGlwUG9zaXRpb24udG9wOlxyXG4gICAgICAgICAgICB0aGlzLlRvcFBvcyA9IGNvbnRlbnRQb3NpdGlvbi50b3AgLSB0aGlzLmdldFRvb2xUaXBIZWlnaHQoKTtcclxuICAgICAgICAgICAgcmV0dXJuIGNvbnRlbnRQb3NpdGlvbi50b3AgLSB0aGlzLmdldFRvb2xUaXBIZWlnaHQoKTtcclxuICAgICAgICAgIGNhc2UgVG9vbHRpcFBvc2l0aW9uLnJpZ2h0OlxyXG4gICAgICAgICAgICB0aGlzLlRvcFBvcyA9IGNvbnRlbnRQb3NpdGlvbi50b3AgKyAoY29udGVudFBvc2l0aW9uLmhlaWdodCAvIDIpIC0gKHRoaXMuZ2V0VG9vbFRpcEhlaWdodCgpIC8gMik7XHJcbiAgICAgICAgICAgIHJldHVybiBjb250ZW50UG9zaXRpb24udG9wICsgKGNvbnRlbnRQb3NpdGlvbi5oZWlnaHQgLyAyKSAtICh0aGlzLmdldFRvb2xUaXBIZWlnaHQoKSAvIDIpO1xyXG4gICAgICAgICAgY2FzZSBUb29sdGlwUG9zaXRpb24uYm90dG9tOlxyXG4gICAgICAgICAgICB0aGlzLlRvcFBvcyA9IGNvbnRlbnRQb3NpdGlvbi50b3AgKyBjb250ZW50UG9zaXRpb24uaGVpZ2h0O1xyXG4gICAgICAgICAgICByZXR1cm4gY29udGVudFBvc2l0aW9uLnRvcCArIGNvbnRlbnRQb3NpdGlvbi5oZWlnaHQ7XHJcbiAgICAgICAgICBjYXNlIFRvb2x0aXBQb3NpdGlvbi5sZWZ0OlxyXG4gICAgICAgICAgICB0aGlzLlRvcFBvcyA9IGNvbnRlbnRQb3NpdGlvbi50b3AgKyAoY29udGVudFBvc2l0aW9uLmhlaWdodCAvIDIpIC0gKHRoaXMuZ2V0VG9vbFRpcEhlaWdodCgpIC8gMik7XHJcbiAgICAgICAgICAgIHJldHVybiBjb250ZW50UG9zaXRpb24udG9wICsgKGNvbnRlbnRQb3NpdGlvbi5oZWlnaHQgLyAyKSAtICh0aGlzLmdldFRvb2xUaXBIZWlnaHQoKSAvIDIpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIGNoaWxkSXRlbS5jbGllbnRUb3AgKyBjaGlsZEl0ZW0ub2Zmc2V0VG9wIC0gKCh0aGlzLmdldFRvb2xUaXBIZWlnaHQoKSAvIDIpIC0gKGNoaWxkSXRlbS5jbGllbnRIZWlnaHQgLyAyKSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY29udGVudC5uYXRpdmVFbGVtZW50Lm9mZnNldFRvcDtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHRoaXMucmVmLm5hdGl2ZUVsZW1lbnQub2Zmc2V0VG9wO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEJlcmVjaG5ldCBkaWUgUG9zaXRpb24gZGVzIFRvb2x0aXBzIHZvbiBMaW5rc1xyXG4gICAqL1xyXG4gIHByaXZhdGUgZ2V0TGVmdFBvc2l0aW9uKCk6IG51bWJlciB7XHJcblxyXG4gICAgaWYgKHRoaXMuY29udGVudCAhPT0gbnVsbCAmJiB0aGlzLmNvbnRlbnQgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICBjb25zdCBpdGVtID0gdGhpcy5jb250ZW50Lm5hdGl2ZUVsZW1lbnQ7XHJcblxyXG4gICAgICBpZiAoaXRlbS5jaGlsZHJlbi5sZW5ndGggPj0gMSkge1xyXG4gICAgICAgIGNvbnN0IGNoaWxkSXRlbSA9IGl0ZW0uZmlyc3RFbGVtZW50Q2hpbGQgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICAgICAgY29uc3QgY29udGVudFBvc2l0aW9uOiBDbGllbnRSZWN0ID0gY2hpbGRJdGVtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG5cclxuICAgICAgICBzd2l0Y2ggKHRoaXMuR2V0VG9vbHRpcFBvc2l0aW9uKCkpIHtcclxuICAgICAgICAgIGNhc2UgVG9vbHRpcFBvc2l0aW9uLnRvcDpcclxuICAgICAgICAgICAgdGhpcy5MZWZ0UG9zID0gY29udGVudFBvc2l0aW9uLmxlZnQgKyAoY29udGVudFBvc2l0aW9uLndpZHRoIC8gMikgLSAodGhpcy5nZXRUb29sVGlwV2lkdGgoKSAvIDIpO1xyXG4gICAgICAgICAgICByZXR1cm4gY29udGVudFBvc2l0aW9uLmxlZnQgKyAoY29udGVudFBvc2l0aW9uLndpZHRoIC8gMikgLSAodGhpcy5nZXRUb29sVGlwV2lkdGgoKSAvIDIpO1xyXG4gICAgICAgICAgY2FzZSBUb29sdGlwUG9zaXRpb24ucmlnaHQ6XHJcbiAgICAgICAgICAgIHRoaXMuTGVmdFBvcyA9IGNvbnRlbnRQb3NpdGlvbi5sZWZ0ICsgY29udGVudFBvc2l0aW9uLndpZHRoO1xyXG4gICAgICAgICAgICByZXR1cm4gY29udGVudFBvc2l0aW9uLmxlZnQgKyBjb250ZW50UG9zaXRpb24ud2lkdGg7XHJcbiAgICAgICAgICBjYXNlIFRvb2x0aXBQb3NpdGlvbi5ib3R0b206XHJcbiAgICAgICAgICAgIHRoaXMuTGVmdFBvcyA9IGNvbnRlbnRQb3NpdGlvbi5sZWZ0ICsgKGNoaWxkSXRlbS5jbGllbnRXaWR0aCAvIDIpIC0gKHRoaXMuZ2V0VG9vbFRpcFdpZHRoKCkgLyAyKTtcclxuICAgICAgICAgICAgcmV0dXJuIGNvbnRlbnRQb3NpdGlvbi5sZWZ0ICsgKGNoaWxkSXRlbS5jbGllbnRXaWR0aCAvIDIpIC0gKHRoaXMuZ2V0VG9vbFRpcFdpZHRoKCkgLyAyKTtcclxuICAgICAgICAgIGNhc2UgVG9vbHRpcFBvc2l0aW9uLmxlZnQ6XHJcbiAgICAgICAgICAgIHRoaXMuTGVmdFBvcyA9IGNvbnRlbnRQb3NpdGlvbi5sZWZ0IC0gdGhpcy5nZXRUb29sVGlwV2lkdGgoKTtcclxuICAgICAgICAgICAgcmV0dXJuIGNvbnRlbnRQb3NpdGlvbi5sZWZ0IC0gdGhpcy5nZXRUb29sVGlwV2lkdGgoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLmNvbnRlbnQubmF0aXZlRWxlbWVudC5vZmZzZXRUb3A7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY29udGVudC5uYXRpdmVFbGVtZW50Lm9mZnNldFRvcDtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHRoaXMucmVmLm5hdGl2ZUVsZW1lbnQub2Zmc2V0TGVmdDtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICAvKipcclxuICAgKiBCZXJlY2huZXQgZGllIEjDtmhlIGRlcyBUb29sdGlwc1xyXG4gICAqL1xyXG4gIHByaXZhdGUgZ2V0VG9vbFRpcEhlaWdodCgpOiBudW1iZXIge1xyXG4gICAgaWYgKHRoaXMudG9vbHRpcGNvbnRhaW5lcikge1xyXG4gICAgICByZXR1cm4gdGhpcy50b29sdGlwY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuY2xpZW50SGVpZ2h0O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIDA7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBCZXJlY2huZXQgZGllIEJyZWl0ZSBkaWUgVG9vbHRpcHNcclxuICAgKi9cclxuICBwcml2YXRlIGdldFRvb2xUaXBXaWR0aCgpOiBudW1iZXIge1xyXG4gICAgaWYgKHRoaXMudG9vbHRpcGNvbnRhaW5lcikge1xyXG4gICAgICByZXR1cm4gdGhpcy50b29sdGlwY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuY2xpZW50V2lkdGg7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gMDtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICAvKipcclxuICAgKiBEZWZpbmllcnQgb2IgZGVyIFRvb2x0aXAgaW0gTWFya3VwIHZvcmhhbmRlbiBpc3RcclxuICAgKi9cclxuICBJc1Rvb2x0aXBWaXNpYmxlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2lzVG9vbHRpcFZpc2libGU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUb29sdGlwIGFuemVpZ2VuXHJcbiAgICovXHJcbiAgU2hvd1Rvb2x0aXAoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9pc1Rvb2x0aXBWaXNpYmxlID0gdHJ1ZTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLmdldExlZnRQb3NpdGlvbigpO1xyXG4gICAgICB0aGlzLmdldFRvcFBvc2l0aW9uKCk7XHJcbiAgICAgIHRoaXMuSXNUb29sdGlwQ29udGVudFZpc2libGUgPSB0cnVlO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUb29sdGlwIGF1c2JsZW5kZW5cclxuICAgKi9cclxuICBIaWRlVG9vbHRpcCgpOiB2b2lkIHtcclxuICAgIHRoaXMuX2lzVG9vbHRpcFZpc2libGUgPSBmYWxzZTtcclxuICAgIHRoaXMuSXNUb29sdGlwQ29udGVudFZpc2libGUgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldGhvZGUgd2VubiBDb250ZW50IGdlw6RuZGVydCBoYXQgdW5kIFByb3BvcnRpZXMgaW0gVUkgbmV1IGdlc2V0enQgd2VyZGVuIG3DvHNzZW4uXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBvbkNvbnRlbnRDaGFuZ2UgPSAoKTogdm9pZCA9PiB7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5nZXRMZWZ0UG9zaXRpb24oKTtcclxuICAgICAgdGhpcy5nZXRUb3BQb3NpdGlvbigpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHaWJ0IGRpZSBQb3NpdGlvbiBkZXMgVG9vbHRpcHMgenVyw7xja1xyXG4gICAqL1xyXG4gIHB1YmxpYyBHZXRUb29sdGlwUG9zaXRpb24oKTogVG9vbHRpcFBvc2l0aW9uIHtcclxuICAgIGNvbnN0IHZhbGlkUG9zaXRpb25zOiBUb29sdGlwUG9zaXRpb24gPSB0aGlzLlZhbGlkYXRlUG9zaXRpb25zKCk7XHJcblxyXG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWJpdHdpc2VcclxuICAgIGlmICh0aGlzLkhhc1Bvc2l0aW9uKFRvb2x0aXBQb3NpdGlvbi5yaWdodCkgJiYgKHZhbGlkUG9zaXRpb25zICYgVG9vbHRpcFBvc2l0aW9uLnJpZ2h0KSkge1xyXG4gICAgICByZXR1cm4gVG9vbHRpcFBvc2l0aW9uLnJpZ2h0O1xyXG4gICAgfVxyXG5cclxuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1iaXR3aXNlXHJcbiAgICBpZiAodGhpcy5IYXNQb3NpdGlvbihUb29sdGlwUG9zaXRpb24udG9wKSAmJiAodmFsaWRQb3NpdGlvbnMgJiBUb29sdGlwUG9zaXRpb24udG9wKSkge1xyXG4gICAgICByZXR1cm4gVG9vbHRpcFBvc2l0aW9uLnRvcDtcclxuICAgIH1cclxuXHJcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYml0d2lzZVxyXG4gICAgaWYgKHRoaXMuSGFzUG9zaXRpb24oVG9vbHRpcFBvc2l0aW9uLmxlZnQpICYmICh2YWxpZFBvc2l0aW9ucyAmIFRvb2x0aXBQb3NpdGlvbi5sZWZ0KSkge1xyXG4gICAgICByZXR1cm4gVG9vbHRpcFBvc2l0aW9uLmxlZnQ7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWJpdHdpc2VcclxuICAgIGlmICh0aGlzLkhhc1Bvc2l0aW9uKFRvb2x0aXBQb3NpdGlvbi5ib3R0b20pICYmICh2YWxpZFBvc2l0aW9ucyAmIFRvb2x0aXBQb3NpdGlvbi5ib3R0b20pKSB7XHJcbiAgICAgIHJldHVybiBUb29sdGlwUG9zaXRpb24uYm90dG9tO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEdldCBBdXRvIFBvc2l0aW9uIG9yIERlZmF1bHRcclxuICAgIGlmICh0aGlzLklzQXV0b1Bvc2l0aW9uKCkpIHtcclxuXHJcbiAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1iaXR3aXNlXHJcbiAgICAgIGlmICh2YWxpZFBvc2l0aW9ucyAmIFRvb2x0aXBQb3NpdGlvbi5yaWdodCkge1xyXG4gICAgICAgIHJldHVybiBUb29sdGlwUG9zaXRpb24ucmlnaHQ7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1iaXR3aXNlXHJcbiAgICAgIGlmICh2YWxpZFBvc2l0aW9ucyAmIFRvb2x0aXBQb3NpdGlvbi50b3ApIHtcclxuICAgICAgICByZXR1cm4gVG9vbHRpcFBvc2l0aW9uLnRvcDtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWJpdHdpc2VcclxuICAgICAgaWYgKHZhbGlkUG9zaXRpb25zICYgVG9vbHRpcFBvc2l0aW9uLmxlZnQpIHtcclxuICAgICAgICByZXR1cm4gVG9vbHRpcFBvc2l0aW9uLmxlZnQ7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1iaXR3aXNlXHJcbiAgICAgIGlmICh2YWxpZFBvc2l0aW9ucyAmIFRvb2x0aXBQb3NpdGlvbi5ib3R0b20pIHtcclxuICAgICAgICByZXR1cm4gVG9vbHRpcFBvc2l0aW9uLmJvdHRvbTtcclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIFRvb2x0aXBQb3NpdGlvbi5yaWdodDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB0aGlzLkdldFBvc2l0aW9uKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEZWZpbmllcnQgb2IgQXV0b1Bvc2l0aW9uIGFrdGl2IGlzdFxyXG4gICAqL1xyXG4gIHByaXZhdGUgSXNBdXRvUG9zaXRpb24oKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBwb3NpdGlvbnMgPSB0aGlzLnBvc2l0aW9uLnNwbGl0KCd8Jyk7XHJcbiAgICByZXR1cm4gcG9zaXRpb25zLmluZGV4T2YoJ2F1dG8nKSA+PSAwO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2lidCBkaWUgZGVmaW5pZXJ0ZSBQb3NpdGlvbiBmw7xyIGRlbiBUb29sdGlwIHp1csO8Y2tcclxuICAgKi9cclxuICBwcml2YXRlIEdldFBvc2l0aW9uKCk6IFRvb2x0aXBQb3NpdGlvbiB7XHJcbiAgICBjb25zdCBwb3NpdGlvbnMgPSB0aGlzLnBvc2l0aW9uLnNwbGl0KCd8Jyk7XHJcblxyXG4gICAgaWYgKHRoaXMuSGFzUG9zaXRpb24oVG9vbHRpcFBvc2l0aW9uLmxlZnQpKSB7XHJcbiAgICAgIHJldHVybiBUb29sdGlwUG9zaXRpb24ubGVmdDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5IYXNQb3NpdGlvbihUb29sdGlwUG9zaXRpb24udG9wKSkge1xyXG4gICAgICByZXR1cm4gVG9vbHRpcFBvc2l0aW9uLnRvcDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5IYXNQb3NpdGlvbihUb29sdGlwUG9zaXRpb24ucmlnaHQpKSB7XHJcbiAgICAgIHJldHVybiBUb29sdGlwUG9zaXRpb24ucmlnaHQ7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuSGFzUG9zaXRpb24oVG9vbHRpcFBvc2l0aW9uLmJvdHRvbSkpIHtcclxuICAgICAgcmV0dXJuIFRvb2x0aXBQb3NpdGlvbi5ib3R0b207XHJcbiAgICB9XHJcblxyXG4gICAgLy8gRGVmYXVsdCBQb3NpdGlvbiBpZiBlbXB0eVxyXG4gICAgcmV0dXJuIFRvb2x0aXBQb3NpdGlvbi5yaWdodDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdpYnQgenVyw7xjaywgb2IgZGllIFBvc2l0aW9uIGtvbmZpZ3VyaWVydCB3dXJkZVxyXG4gICAqXHJcbiAgICogQHBhcmFtIHBvc2l0aW9uIFBvc2l0aW9uIGF1ZiB3ZWxjaGUgZ2VwcsO8ZnQgd2lyZFxyXG4gICAqL1xyXG4gIHByaXZhdGUgSGFzUG9zaXRpb24ocG9zaXRpb246IFRvb2x0aXBQb3NpdGlvbik6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgcG9zaXRpb25zID0gdGhpcy5wb3NpdGlvbi5zcGxpdCgnfCcpO1xyXG5cclxuICAgIGlmIChwb3NpdGlvbiA9PT0gVG9vbHRpcFBvc2l0aW9uLnJpZ2h0ICYmIHBvc2l0aW9ucy5pbmRleE9mKCdyaWdodCcpID49IDApIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHBvc2l0aW9uID09PSBUb29sdGlwUG9zaXRpb24udG9wICYmIHBvc2l0aW9ucy5pbmRleE9mKCd0b3AnKSA+PSAwKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChwb3NpdGlvbiA9PT0gVG9vbHRpcFBvc2l0aW9uLmxlZnQgJiYgcG9zaXRpb25zLmluZGV4T2YoJ2xlZnQnKSA+PSAwKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChwb3NpdGlvbiA9PT0gVG9vbHRpcFBvc2l0aW9uLmJvdHRvbSAmJiBwb3NpdGlvbnMuaW5kZXhPZignYm90dG9tJykgPj0gMCkge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBQcsO8ZnQgb2IgZGllIFBvc2l0aW9uIGfDvGx0aWcgaXN0LCByZXNwLiBkZXIgVG9vbHRpcCBhdWYgZGllIFBvc2l0aW9uIHBsYXR6IGhhdFxyXG4gICAqL1xyXG4gIHByaXZhdGUgVmFsaWRhdGVQb3NpdGlvbnMoKTogVG9vbHRpcFBvc2l0aW9uIHtcclxuICAgIC8vIENoZWNrIGlmIENvbnRhaW5lciBpcyBmYWxzZVxyXG4gICAgaWYgKHRoaXMudG9vbHRpcGNvbnRhaW5lciA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHJldHVybiBUb29sdGlwUG9zaXRpb24ucmlnaHQ7XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IGFsbG93ZWRQb3NpdGlvbnM6IFRvb2x0aXBQb3NpdGlvbiA9IFRvb2x0aXBQb3NpdGlvbi5ub25lO1xyXG4gICAgY29uc3QgYmFzZVBvc2l0aW9uOiBDbGllbnRSZWN0ID0gdGhpcy5jb250ZW50Lm5hdGl2ZUVsZW1lbnQuZmlyc3RFbGVtZW50Q2hpbGQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcbiAgICBjb25zdCB0b29sdGlwUmVjdDogQ2xpZW50UmVjdCA9IHRoaXMudG9vbHRpcGNvbnRhaW5lci5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG5cclxuICAgIGNvbnN0IGxlZnRQb3NPazogYm9vbGVhbiA9IGJhc2VQb3NpdGlvbi5sZWZ0IC0gdG9vbHRpcFJlY3Qud2lkdGggPiAwO1xyXG4gICAgY29uc3QgcmlnaHRQb3NPazogYm9vbGVhbiA9IGJhc2VQb3NpdGlvbi5yaWdodCArIHRvb2x0aXBSZWN0LndpZHRoIDwgd2luZG93LmlubmVyV2lkdGg7XHJcbiAgICBjb25zdCB0b3BQb3NPazogYm9vbGVhbiA9IGJhc2VQb3NpdGlvbi50b3AgLSB0b29sdGlwUmVjdC5oZWlnaHQgPiAwO1xyXG4gICAgY29uc3QgYm90dG9tUG9zT2s6IGJvb2xlYW4gPSBiYXNlUG9zaXRpb24uYm90dG9tICsgdG9vbHRpcFJlY3QuaGVpZ2h0IDwgd2luZG93LmlubmVySGVpZ2h0O1xyXG5cclxuICAgIGNvbnN0IGxlZnRIYWxmUG9zT2s6IGJvb2xlYW4gPSBiYXNlUG9zaXRpb24ubGVmdCAtICh0b29sdGlwUmVjdC53aWR0aCAvIDIpID4gMDtcclxuICAgIGNvbnN0IHJpZ2h0SGFsZlBvc09rOiBib29sZWFuID0gYmFzZVBvc2l0aW9uLnJpZ2h0ICsgKHRvb2x0aXBSZWN0LndpZHRoIC8gMikgPCB3aW5kb3cuaW5uZXJXaWR0aDtcclxuICAgIGNvbnN0IHRvcEhhbGZQb3NPazogYm9vbGVhbiA9IGJhc2VQb3NpdGlvbi50b3AgLSAodG9vbHRpcFJlY3QuaGVpZ2h0IC8gMikgPiAwO1xyXG4gICAgY29uc3QgYm90dG9tSGFsZlBvc09rOiBib29sZWFuID0gYmFzZVBvc2l0aW9uLmJvdHRvbSArICh0b29sdGlwUmVjdC5oZWlnaHQgLyAyKSA8IHdpbmRvdy5pbm5lckhlaWdodDtcclxuXHJcbiAgICBpZiAobGVmdFBvc09rICYmIHRvcEhhbGZQb3NPayAmJiBib3R0b21IYWxmUG9zT2spIHtcclxuICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWJpdHdpc2VcclxuICAgICAgYWxsb3dlZFBvc2l0aW9ucyA9IGFsbG93ZWRQb3NpdGlvbnMgfCBUb29sdGlwUG9zaXRpb24ubGVmdDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAocmlnaHRQb3NPayAmJiB0b3BIYWxmUG9zT2sgJiYgYm90dG9tSGFsZlBvc09rKSB7XHJcbiAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1iaXR3aXNlXHJcbiAgICAgIGFsbG93ZWRQb3NpdGlvbnMgPSBhbGxvd2VkUG9zaXRpb25zIHwgVG9vbHRpcFBvc2l0aW9uLnJpZ2h0O1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0b3BQb3NPayAmJiBsZWZ0SGFsZlBvc09rICYmIHJpZ2h0SGFsZlBvc09rKSB7XHJcbiAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1iaXR3aXNlXHJcbiAgICAgIGFsbG93ZWRQb3NpdGlvbnMgPSBhbGxvd2VkUG9zaXRpb25zIHwgVG9vbHRpcFBvc2l0aW9uLnRvcDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoYm90dG9tUG9zT2sgJiYgbGVmdEhhbGZQb3NPayAmJiByaWdodEhhbGZQb3NPaykge1xyXG4gICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYml0d2lzZVxyXG4gICAgICBhbGxvd2VkUG9zaXRpb25zID0gYWxsb3dlZFBvc2l0aW9ucyB8IFRvb2x0aXBQb3NpdGlvbi5ib3R0b207XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGFsbG93ZWRQb3NpdGlvbnM7XHJcbiAgfVxyXG59XHJcbiJdLCJtYXBwaW5ncyI6InF2OUNBZ0JhO0FBQUFBLGFBQUEsU0FBQUEsQ0FBQSxTQUFBQyxjQUFBLFdBQUFBLGNBQUEsRUFBQUQsYUFBQSxHQWhCYixPQUE0QkUsU0FBUyxDQUFjQyxLQUFLLENBQXFCQyxTQUFTLEtBQVEsZUFBZSxDQUM3RyxPQUFTQyxnQkFBZ0IsS0FBUSw0QkFBNEIsQ0FDN0QsT0FBU0MsZUFBZSxLQUFRLHVCQUF1QixDLGlDQUV2RDs7Ozs7Ozs7OztHQVdBLEtBQ2EsQ0FBQUMsZ0JBQWdCLENBNkMzQjs7T0FHQSxHQUNJLENBQUFDLFVBQVVBLENBQUNDLEtBQWMsRUFBQVQsYUFBQSxHQUFBVSxDQUFBLE1BQUFWLGFBQUEsR0FBQVcsQ0FBQSxNQUMzQixJQUFJLENBQUNDLFdBQVcsQ0FBR1AsZ0JBQWdCLENBQUNJLEtBQUssQ0FBQyxDQUM1QyxDQUNBOztPQUdBLEdBQUksQ0FBQUQsVUFBVUEsQ0FBQSxFQUFBUixhQUFBLEdBQUFVLENBQUEsTUFBQVYsYUFBQSxHQUFBVyxDQUFBLE1BQ1osTUFBTyxLQUFJLENBQUNDLFdBQVcsQ0FDekIsQ0FZQTs7T0FHQSxHQUNJLENBQUFDLE9BQU9BLENBQUNDLE9BQW1CLEVBQUFkLGFBQUEsR0FBQVUsQ0FBQSxNQUFBVixhQUFBLEdBQUFXLENBQUEsTUFDN0IsR0FBSUcsT0FBTyxHQUFL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