@simpleangularcontrols/sac-common 13.0.0-rc.12 → 13.0.0-rc.14

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 (822) hide show
  1. package/README.md +15 -15
  2. package/common/basedatetimecontrol.d.ts +172 -172
  3. package/common/basedatetimecontrol.ngfactory.d.ts +3 -3
  4. package/common/basedatetimecontrol.ngsummary.d.ts +1 -1
  5. package/common/baseinputcontrol.d.ts +41 -41
  6. package/common/baseinputcontrol.ngfactory.d.ts +3 -3
  7. package/common/baseinputcontrol.ngsummary.d.ts +1 -1
  8. package/common/baselistcontrol.d.ts +46 -46
  9. package/common/baselistcontrol.ngfactory.d.ts +3 -3
  10. package/common/baselistcontrol.ngsummary.d.ts +1 -1
  11. package/common/basemodelcontrol.d.ts +283 -283
  12. package/common/basemodelcontrol.ngfactory.d.ts +3 -3
  13. package/common/basemodelcontrol.ngsummary.d.ts +1 -1
  14. package/common/baseselectcontrol.d.ts +17 -17
  15. package/common/baseselectcontrol.ngfactory.d.ts +3 -3
  16. package/common/baseselectcontrol.ngsummary.d.ts +1 -1
  17. package/common/baseuploadcontrol.d.ts +303 -303
  18. package/common/baseuploadcontrol.ngfactory.d.ts +3 -3
  19. package/common/baseuploadcontrol.ngsummary.d.ts +1 -1
  20. package/components/browser/browser.d.ts +270 -270
  21. package/components/browser/browser.ngfactory.d.ts +3 -3
  22. package/components/browser/browser.ngsummary.d.ts +1 -1
  23. package/components/browser/models/browserfile.d.ts +17 -17
  24. package/components/browser/models/browserfile.ngfactory.d.ts +1 -1
  25. package/components/browser/models/browserfile.ngsummary.d.ts +1 -1
  26. package/components/browser/models/browserfiledeleterequest.d.ts +18 -18
  27. package/components/browser/models/browserfiledeleterequest.ngfactory.d.ts +1 -1
  28. package/components/browser/models/browserfiledeleterequest.ngsummary.d.ts +1 -1
  29. package/components/browser/models/browserfilerenamerequest.d.ts +22 -22
  30. package/components/browser/models/browserfilerenamerequest.ngfactory.d.ts +1 -1
  31. package/components/browser/models/browserfilerenamerequest.ngsummary.d.ts +1 -1
  32. package/components/browser/models/browserfileresponse.d.ts +10 -10
  33. package/components/browser/models/browserfileresponse.ngfactory.d.ts +1 -1
  34. package/components/browser/models/browserfileresponse.ngsummary.d.ts +1 -1
  35. package/components/browser/models/browserfilesaverequest.d.ts +22 -22
  36. package/components/browser/models/browserfilesaverequest.ngfactory.d.ts +1 -1
  37. package/components/browser/models/browserfilesaverequest.ngsummary.d.ts +1 -1
  38. package/components/browser/models/browsernode.d.ts +34 -34
  39. package/components/browser/models/browsernode.ngfactory.d.ts +1 -1
  40. package/components/browser/models/browsernode.ngsummary.d.ts +1 -1
  41. package/components/browser/models/browsernodedeleterequest.d.ts +14 -14
  42. package/components/browser/models/browsernodedeleterequest.ngfactory.d.ts +1 -1
  43. package/components/browser/models/browsernodedeleterequest.ngsummary.d.ts +1 -1
  44. package/components/browser/models/browsernodenewrequest.d.ts +18 -18
  45. package/components/browser/models/browsernodenewrequest.ngfactory.d.ts +1 -1
  46. package/components/browser/models/browsernodenewrequest.ngsummary.d.ts +1 -1
  47. package/components/browser/models/browsernoderenamerequest.d.ts +18 -18
  48. package/components/browser/models/browsernoderenamerequest.ngfactory.d.ts +1 -1
  49. package/components/browser/models/browsernoderenamerequest.ngsummary.d.ts +1 -1
  50. package/components/browser/models/browsernoderequest.d.ts +18 -18
  51. package/components/browser/models/browsernoderequest.ngfactory.d.ts +1 -1
  52. package/components/browser/models/browsernoderequest.ngsummary.d.ts +1 -1
  53. package/components/browser/models/browsernoderesponse.d.ts +10 -10
  54. package/components/browser/models/browsernoderesponse.ngfactory.d.ts +1 -1
  55. package/components/browser/models/browsernoderesponse.ngsummary.d.ts +1 -1
  56. package/controls/buttons/button.d.ts +73 -73
  57. package/controls/buttons/button.ngfactory.d.ts +3 -3
  58. package/controls/buttons/button.ngsummary.d.ts +1 -1
  59. package/controls/checkbox/checkbox.d.ts +35 -35
  60. package/controls/checkbox/checkbox.ngfactory.d.ts +3 -3
  61. package/controls/checkbox/checkbox.ngsummary.d.ts +1 -1
  62. package/controls/checkbox/radiobutton.d.ts +117 -117
  63. package/controls/checkbox/radiobutton.ngfactory.d.ts +3 -3
  64. package/controls/checkbox/radiobutton.ngsummary.d.ts +1 -1
  65. package/controls/checkbox/radiobuttons.d.ts +63 -63
  66. package/controls/checkbox/radiobuttons.ngfactory.d.ts +3 -3
  67. package/controls/checkbox/radiobuttons.ngsummary.d.ts +1 -1
  68. package/controls/confirm/confirm.button.d.ts +25 -25
  69. package/controls/confirm/confirm.button.ngfactory.d.ts +1 -1
  70. package/controls/confirm/confirm.button.ngsummary.d.ts +1 -1
  71. package/controls/confirm/confirm.d.ts +52 -52
  72. package/controls/confirm/confirm.ngfactory.d.ts +3 -3
  73. package/controls/confirm/confirm.ngsummary.d.ts +1 -1
  74. package/controls/confirm/confirm.service.d.ts +63 -63
  75. package/controls/confirm/confirm.service.ngfactory.d.ts +1 -1
  76. package/controls/confirm/confirm.service.ngsummary.d.ts +1 -1
  77. package/controls/contextmenu/contextmenu.d.ts +123 -123
  78. package/controls/contextmenu/contextmenu.interface.d.ts +3 -3
  79. package/controls/contextmenu/contextmenu.interface.ngfactory.d.ts +1 -1
  80. package/controls/contextmenu/contextmenu.interface.ngsummary.d.ts +1 -1
  81. package/controls/contextmenu/contextmenu.ngfactory.d.ts +3 -3
  82. package/controls/contextmenu/contextmenu.ngsummary.d.ts +1 -1
  83. package/controls/contextmenu/contextmenuanchor.d.ts +18 -18
  84. package/controls/contextmenu/contextmenuanchor.ngfactory.d.ts +3 -3
  85. package/controls/contextmenu/contextmenuanchor.ngsummary.d.ts +1 -1
  86. package/controls/contextmenu/contextmenucontainer.d.ts +18 -18
  87. package/controls/contextmenu/contextmenucontainer.ngfactory.d.ts +3 -3
  88. package/controls/contextmenu/contextmenucontainer.ngsummary.d.ts +1 -1
  89. package/controls/contextmenu/contextmenuitem.d.ts +13 -13
  90. package/controls/contextmenu/contextmenuitem.ngfactory.d.ts +3 -3
  91. package/controls/contextmenu/contextmenuitem.ngsummary.d.ts +1 -1
  92. package/controls/contextmenu/contextmenuitembutton.d.ts +70 -70
  93. package/controls/contextmenu/contextmenuitembutton.ngfactory.d.ts +3 -3
  94. package/controls/contextmenu/contextmenuitembutton.ngsummary.d.ts +1 -1
  95. package/controls/datetime/date.d.ts +120 -120
  96. package/controls/datetime/date.ngfactory.d.ts +3 -3
  97. package/controls/datetime/date.ngsummary.d.ts +1 -1
  98. package/controls/datetime/dateselector.d.ts +164 -164
  99. package/controls/datetime/dateselector.ngfactory.d.ts +3 -3
  100. package/controls/datetime/dateselector.ngsummary.d.ts +1 -1
  101. package/controls/datetime/datetime.d.ts +134 -134
  102. package/controls/datetime/datetime.ngfactory.d.ts +3 -3
  103. package/controls/datetime/datetime.ngsummary.d.ts +1 -1
  104. package/controls/datetime/time.d.ts +114 -114
  105. package/controls/datetime/time.ngfactory.d.ts +3 -3
  106. package/controls/datetime/time.ngsummary.d.ts +1 -1
  107. package/controls/dialog/dialog.d.ts +96 -96
  108. package/controls/dialog/dialog.ngfactory.d.ts +3 -3
  109. package/controls/dialog/dialog.ngsummary.d.ts +1 -1
  110. package/controls/form/form.d.ts +50 -50
  111. package/controls/form/form.ngfactory.d.ts +3 -3
  112. package/controls/form/form.ngsummary.d.ts +1 -1
  113. package/controls/grid/grid.d.ts +130 -130
  114. package/controls/grid/grid.ngfactory.d.ts +3 -3
  115. package/controls/grid/grid.ngsummary.d.ts +1 -1
  116. package/controls/grid/gridbutton.d.ts +36 -36
  117. package/controls/grid/gridbutton.ngfactory.d.ts +3 -3
  118. package/controls/grid/gridbutton.ngsummary.d.ts +1 -1
  119. package/controls/grid/gridcolumn.d.ts +31 -31
  120. package/controls/grid/gridcolumn.ngfactory.d.ts +3 -3
  121. package/controls/grid/gridcolumn.ngsummary.d.ts +1 -1
  122. package/controls/grid/gridcolumnaction.d.ts +18 -18
  123. package/controls/grid/gridcolumnaction.ngfactory.d.ts +3 -3
  124. package/controls/grid/gridcolumnaction.ngsummary.d.ts +1 -1
  125. package/controls/grid/gridcolumnbase.d.ts +97 -97
  126. package/controls/grid/gridcolumnbase.ngfactory.d.ts +3 -3
  127. package/controls/grid/gridcolumnbase.ngsummary.d.ts +1 -1
  128. package/controls/grid/gridimage.d.ts +12 -12
  129. package/controls/grid/gridimage.ngfactory.d.ts +3 -3
  130. package/controls/grid/gridimage.ngsummary.d.ts +1 -1
  131. package/controls/grid/model.d.ts +92 -92
  132. package/controls/grid/model.ngfactory.d.ts +1 -1
  133. package/controls/grid/model.ngsummary.d.ts +1 -1
  134. package/controls/grid/paging.d.ts +148 -148
  135. package/controls/grid/paging.ngfactory.d.ts +3 -3
  136. package/controls/grid/paging.ngsummary.d.ts +1 -1
  137. package/controls/input/input.d.ts +38 -38
  138. package/controls/input/input.d.ts.map +1 -1
  139. package/controls/input/input.ngfactory.d.ts +3 -3
  140. package/controls/input/input.ngsummary.d.ts +1 -1
  141. package/controls/input/inputarea.d.ts +29 -29
  142. package/controls/input/inputarea.d.ts.map +1 -1
  143. package/controls/input/inputarea.ngfactory.d.ts +3 -3
  144. package/controls/input/inputarea.ngsummary.d.ts +1 -1
  145. package/controls/input/inputcurrency.d.ts +14 -14
  146. package/controls/input/inputcurrency.ngfactory.d.ts +3 -3
  147. package/controls/input/inputcurrency.ngsummary.d.ts +1 -1
  148. package/controls/input/inputdecimal.d.ts +62 -62
  149. package/controls/input/inputdecimal.ngfactory.d.ts +3 -3
  150. package/controls/input/inputdecimal.ngsummary.d.ts +1 -1
  151. package/controls/input/inputemail.d.ts +22 -22
  152. package/controls/input/inputemail.ngfactory.d.ts +3 -3
  153. package/controls/input/inputemail.ngsummary.d.ts +1 -1
  154. package/controls/input/inputinteger.d.ts +62 -62
  155. package/controls/input/inputinteger.ngfactory.d.ts +3 -3
  156. package/controls/input/inputinteger.ngsummary.d.ts +1 -1
  157. package/controls/input/inputpassword.d.ts +26 -26
  158. package/controls/input/inputpassword.d.ts.map +1 -1
  159. package/controls/input/inputpassword.ngfactory.d.ts +3 -3
  160. package/controls/input/inputpassword.ngsummary.d.ts +1 -1
  161. package/controls/input/inputsearch.d.ts +35 -35
  162. package/controls/input/inputsearch.ngfactory.d.ts +3 -3
  163. package/controls/input/inputsearch.ngsummary.d.ts +1 -1
  164. package/controls/layout/formlayout.d.ts +65 -65
  165. package/controls/layout/formlayout.ngfactory.d.ts +3 -3
  166. package/controls/layout/formlayout.ngsummary.d.ts +1 -1
  167. package/controls/list/buildvaluestring.d.ts +6 -6
  168. package/controls/list/buildvaluestring.ngfactory.d.ts +1 -1
  169. package/controls/list/buildvaluestring.ngsummary.d.ts +1 -1
  170. package/controls/list/dropdown.d.ts +99 -99
  171. package/controls/list/dropdown.ngfactory.d.ts +3 -3
  172. package/controls/list/dropdown.ngsummary.d.ts +1 -1
  173. package/controls/list/dropdownoptions.d.ts +41 -41
  174. package/controls/list/dropdownoptions.ngfactory.d.ts +3 -3
  175. package/controls/list/dropdownoptions.ngsummary.d.ts +1 -1
  176. package/controls/list/list.module.d.ts +6 -6
  177. package/controls/list/list.module.ngfactory.d.ts +3 -3
  178. package/controls/list/list.module.ngsummary.d.ts +1 -1
  179. package/controls/list/listbox.d.ts +91 -91
  180. package/controls/list/listbox.ngfactory.d.ts +4 -4
  181. package/controls/list/listbox.ngsummary.d.ts +2 -2
  182. package/controls/multilanguage/multilanguageinput.d.ts +105 -105
  183. package/controls/multilanguage/multilanguageinput.d.ts.map +1 -1
  184. package/controls/multilanguage/multilanguageinput.ngfactory.d.ts +3 -3
  185. package/controls/multilanguage/multilanguageinput.ngsummary.d.ts +1 -1
  186. package/controls/multilanguage/multilanguageinputarea.d.ts +110 -110
  187. package/controls/multilanguage/multilanguageinputarea.d.ts.map +1 -1
  188. package/controls/multilanguage/multilanguageinputarea.ngfactory.d.ts +3 -3
  189. package/controls/multilanguage/multilanguageinputarea.ngsummary.d.ts +1 -1
  190. package/controls/static/formcontainer.d.ts +38 -38
  191. package/controls/static/formcontainer.ngfactory.d.ts +3 -3
  192. package/controls/static/formcontainer.ngsummary.d.ts +1 -1
  193. package/controls/static/staticlabel.d.ts +21 -21
  194. package/controls/static/staticlabel.ngfactory.d.ts +3 -3
  195. package/controls/static/staticlabel.ngsummary.d.ts +1 -1
  196. package/controls/tabs/tab.d.ts +48 -48
  197. package/controls/tabs/tab.ngfactory.d.ts +3 -3
  198. package/controls/tabs/tab.ngsummary.d.ts +1 -1
  199. package/controls/tabs/tabitem.d.ts +33 -33
  200. package/controls/tabs/tabitem.ngfactory.d.ts +3 -3
  201. package/controls/tabs/tabitem.ngsummary.d.ts +1 -1
  202. package/controls/tinymce/tinymce.d.ts +152 -152
  203. package/controls/tinymce/tinymce.ngfactory.d.ts +3 -3
  204. package/controls/tinymce/tinymce.ngsummary.d.ts +1 -1
  205. package/controls/tinymce/tinymcedialogsettings.d.ts +27 -27
  206. package/controls/tinymce/tinymcedialogsettings.ngfactory.d.ts +1 -1
  207. package/controls/tinymce/tinymcedialogsettings.ngsummary.d.ts +1 -1
  208. package/controls/tinymce/tinymcedialogsettingsmeta.d.ts +9 -9
  209. package/controls/tinymce/tinymcedialogsettingsmeta.ngfactory.d.ts +4 -1
  210. package/controls/tinymce/tinymcedialogsettingsmeta.ngfactory.d.ts.map +1 -1
  211. package/controls/tinymce/tinymcedialogsettingsmeta.ngsummary.d.ts +1 -1
  212. package/controls/tinymce/tinymceinstance.d.ts +10 -10
  213. package/controls/tinymce/tinymceinstance.ngfactory.d.ts +1 -1
  214. package/controls/tinymce/tinymceinstance.ngsummary.d.ts +1 -1
  215. package/controls/tooltip/tooltip.d.ts +148 -148
  216. package/controls/tooltip/tooltip.ngfactory.d.ts +3 -3
  217. package/controls/tooltip/tooltip.ngsummary.d.ts +1 -1
  218. package/controls/treeview/treeview.d.ts +188 -188
  219. package/controls/treeview/treeview.ngfactory.d.ts +3 -3
  220. package/controls/treeview/treeview.ngsummary.d.ts +1 -1
  221. package/controls/upload/dropzonemultiple.d.ts +73 -73
  222. package/controls/upload/dropzonemultiple.d.ts.map +1 -1
  223. package/controls/upload/dropzonemultiple.ngfactory.d.ts +3 -3
  224. package/controls/upload/dropzonemultiple.ngsummary.d.ts +1 -1
  225. package/controls/upload/dropzonesingle.d.ts +50 -50
  226. package/controls/upload/dropzonesingle.d.ts.map +1 -1
  227. package/controls/upload/dropzonesingle.ngfactory.d.ts +3 -3
  228. package/controls/upload/dropzonesingle.ngsummary.d.ts +1 -1
  229. package/controls/upload/uploadmultiple.d.ts +53 -53
  230. package/controls/upload/uploadmultiple.d.ts.map +1 -1
  231. package/controls/upload/uploadmultiple.ngfactory.d.ts +3 -3
  232. package/controls/upload/uploadmultiple.ngsummary.d.ts +1 -1
  233. package/controls/upload/uploadsingle.d.ts +30 -30
  234. package/controls/upload/uploadsingle.d.ts.map +1 -1
  235. package/controls/upload/uploadsingle.ngfactory.d.ts +3 -3
  236. package/controls/upload/uploadsingle.ngsummary.d.ts +1 -1
  237. package/controls/validation/validationsummary.d.ts +63 -63
  238. package/controls/validation/validationsummary.ngfactory.d.ts +3 -3
  239. package/controls/validation/validationsummary.ngsummary.d.ts +1 -1
  240. package/controls/wizard/wizard.d.ts +76 -76
  241. package/controls/wizard/wizard.ngfactory.d.ts +3 -3
  242. package/controls/wizard/wizard.ngsummary.d.ts +1 -1
  243. package/controls/wizard/wizarditem.d.ts +28 -28
  244. package/controls/wizard/wizarditem.ngfactory.d.ts +3 -3
  245. package/controls/wizard/wizarditem.ngsummary.d.ts +1 -1
  246. package/enums/ButtonRoleType.d.ts +1 -1
  247. package/enums/ButtonRoleType.ngfactory.d.ts +1 -1
  248. package/enums/ButtonRoleType.ngsummary.d.ts +1 -1
  249. package/enums/ControlHeight.d.ts +17 -17
  250. package/enums/ControlHeight.ngfactory.d.ts +1 -1
  251. package/enums/ControlHeight.ngsummary.d.ts +1 -1
  252. package/enums/IconType.d.ts +7 -7
  253. package/enums/IconType.ngfactory.d.ts +1 -1
  254. package/enums/IconType.ngsummary.d.ts +1 -1
  255. package/esm2020/common/basedatetimecontrol.mjs +84 -84
  256. package/esm2020/common/basedatetimecontrol.ngfactory.mjs +3 -3
  257. package/esm2020/common/basedatetimecontrol.ngsummary.mjs +3 -3
  258. package/esm2020/common/baseinputcontrol.mjs +25 -25
  259. package/esm2020/common/baseinputcontrol.ngfactory.mjs +3 -3
  260. package/esm2020/common/baseinputcontrol.ngsummary.mjs +3 -3
  261. package/esm2020/common/baselistcontrol.mjs +19 -19
  262. package/esm2020/common/baselistcontrol.ngfactory.mjs +3 -3
  263. package/esm2020/common/baselistcontrol.ngsummary.mjs +3 -3
  264. package/esm2020/common/basemodelcontrol.mjs +143 -143
  265. package/esm2020/common/basemodelcontrol.ngfactory.mjs +3 -3
  266. package/esm2020/common/basemodelcontrol.ngsummary.mjs +3 -3
  267. package/esm2020/common/baseselectcontrol.mjs +9 -9
  268. package/esm2020/common/baseselectcontrol.ngfactory.mjs +3 -3
  269. package/esm2020/common/baseselectcontrol.ngsummary.mjs +3 -3
  270. package/esm2020/common/baseuploadcontrol.mjs +140 -140
  271. package/esm2020/common/baseuploadcontrol.ngfactory.mjs +3 -3
  272. package/esm2020/common/baseuploadcontrol.ngsummary.mjs +3 -3
  273. package/esm2020/components/browser/browser.mjs +141 -141
  274. package/esm2020/components/browser/browser.ngfactory.mjs +3 -3
  275. package/esm2020/components/browser/browser.ngsummary.mjs +3 -3
  276. package/esm2020/components/browser/models/browserfile.mjs +3 -3
  277. package/esm2020/components/browser/models/browserfile.ngfactory.mjs +3 -3
  278. package/esm2020/components/browser/models/browserfile.ngsummary.mjs +3 -3
  279. package/esm2020/components/browser/models/browserfiledeleterequest.mjs +8 -8
  280. package/esm2020/components/browser/models/browserfiledeleterequest.ngfactory.mjs +3 -3
  281. package/esm2020/components/browser/models/browserfiledeleterequest.ngsummary.mjs +3 -3
  282. package/esm2020/components/browser/models/browserfilerenamerequest.mjs +8 -8
  283. package/esm2020/components/browser/models/browserfilerenamerequest.ngfactory.mjs +3 -3
  284. package/esm2020/components/browser/models/browserfilerenamerequest.ngsummary.mjs +3 -3
  285. package/esm2020/components/browser/models/browserfileresponse.mjs +3 -3
  286. package/esm2020/components/browser/models/browserfileresponse.ngfactory.mjs +3 -3
  287. package/esm2020/components/browser/models/browserfileresponse.ngsummary.mjs +3 -3
  288. package/esm2020/components/browser/models/browserfilesaverequest.mjs +8 -8
  289. package/esm2020/components/browser/models/browserfilesaverequest.ngfactory.mjs +3 -3
  290. package/esm2020/components/browser/models/browserfilesaverequest.ngsummary.mjs +3 -3
  291. package/esm2020/components/browser/models/browsernode.mjs +3 -3
  292. package/esm2020/components/browser/models/browsernode.ngfactory.mjs +3 -3
  293. package/esm2020/components/browser/models/browsernode.ngsummary.mjs +3 -3
  294. package/esm2020/components/browser/models/browsernodedeleterequest.mjs +8 -8
  295. package/esm2020/components/browser/models/browsernodedeleterequest.ngfactory.mjs +3 -3
  296. package/esm2020/components/browser/models/browsernodedeleterequest.ngsummary.mjs +3 -3
  297. package/esm2020/components/browser/models/browsernodenewrequest.mjs +8 -8
  298. package/esm2020/components/browser/models/browsernodenewrequest.ngfactory.mjs +3 -3
  299. package/esm2020/components/browser/models/browsernodenewrequest.ngsummary.mjs +3 -3
  300. package/esm2020/components/browser/models/browsernoderenamerequest.mjs +8 -8
  301. package/esm2020/components/browser/models/browsernoderenamerequest.ngfactory.mjs +3 -3
  302. package/esm2020/components/browser/models/browsernoderenamerequest.ngsummary.mjs +3 -3
  303. package/esm2020/components/browser/models/browsernoderequest.mjs +8 -8
  304. package/esm2020/components/browser/models/browsernoderequest.ngfactory.mjs +3 -3
  305. package/esm2020/components/browser/models/browsernoderequest.ngsummary.mjs +3 -3
  306. package/esm2020/components/browser/models/browsernoderesponse.mjs +3 -3
  307. package/esm2020/components/browser/models/browsernoderesponse.ngfactory.mjs +3 -3
  308. package/esm2020/components/browser/models/browsernoderesponse.ngsummary.mjs +3 -3
  309. package/esm2020/controls/buttons/button.mjs +43 -43
  310. package/esm2020/controls/buttons/button.ngfactory.mjs +3 -3
  311. package/esm2020/controls/buttons/button.ngsummary.mjs +3 -3
  312. package/esm2020/controls/checkbox/checkbox.mjs +15 -15
  313. package/esm2020/controls/checkbox/checkbox.ngfactory.mjs +3 -3
  314. package/esm2020/controls/checkbox/checkbox.ngsummary.mjs +3 -3
  315. package/esm2020/controls/checkbox/radiobutton.mjs +47 -47
  316. package/esm2020/controls/checkbox/radiobutton.ngfactory.mjs +3 -3
  317. package/esm2020/controls/checkbox/radiobutton.ngsummary.mjs +3 -3
  318. package/esm2020/controls/checkbox/radiobuttons.mjs +33 -33
  319. package/esm2020/controls/checkbox/radiobuttons.ngfactory.mjs +3 -3
  320. package/esm2020/controls/checkbox/radiobuttons.ngsummary.mjs +3 -3
  321. package/esm2020/controls/confirm/confirm.button.mjs +17 -17
  322. package/esm2020/controls/confirm/confirm.button.ngfactory.mjs +3 -3
  323. package/esm2020/controls/confirm/confirm.button.ngsummary.mjs +3 -3
  324. package/esm2020/controls/confirm/confirm.mjs +29 -29
  325. package/esm2020/controls/confirm/confirm.ngfactory.mjs +3 -3
  326. package/esm2020/controls/confirm/confirm.ngsummary.mjs +3 -3
  327. package/esm2020/controls/confirm/confirm.service.mjs +33 -33
  328. package/esm2020/controls/confirm/confirm.service.ngfactory.mjs +3 -3
  329. package/esm2020/controls/confirm/confirm.service.ngsummary.mjs +3 -3
  330. package/esm2020/controls/contextmenu/contextmenu.interface.mjs +3 -3
  331. package/esm2020/controls/contextmenu/contextmenu.interface.ngfactory.mjs +3 -3
  332. package/esm2020/controls/contextmenu/contextmenu.interface.ngsummary.mjs +3 -3
  333. package/esm2020/controls/contextmenu/contextmenu.mjs +58 -58
  334. package/esm2020/controls/contextmenu/contextmenu.ngfactory.mjs +3 -3
  335. package/esm2020/controls/contextmenu/contextmenu.ngsummary.mjs +3 -3
  336. package/esm2020/controls/contextmenu/contextmenuanchor.mjs +8 -8
  337. package/esm2020/controls/contextmenu/contextmenuanchor.ngfactory.mjs +3 -3
  338. package/esm2020/controls/contextmenu/contextmenuanchor.ngsummary.mjs +3 -3
  339. package/esm2020/controls/contextmenu/contextmenucontainer.mjs +8 -8
  340. package/esm2020/controls/contextmenu/contextmenucontainer.ngfactory.mjs +3 -3
  341. package/esm2020/controls/contextmenu/contextmenucontainer.ngsummary.mjs +3 -3
  342. package/esm2020/controls/contextmenu/contextmenuitem.mjs +8 -8
  343. package/esm2020/controls/contextmenu/contextmenuitem.ngfactory.mjs +3 -3
  344. package/esm2020/controls/contextmenu/contextmenuitem.ngsummary.mjs +3 -3
  345. package/esm2020/controls/contextmenu/contextmenuitembutton.mjs +32 -32
  346. package/esm2020/controls/contextmenu/contextmenuitembutton.ngfactory.mjs +3 -3
  347. package/esm2020/controls/contextmenu/contextmenuitembutton.ngsummary.mjs +3 -3
  348. package/esm2020/controls/datetime/date.mjs +51 -51
  349. package/esm2020/controls/datetime/date.ngfactory.mjs +3 -3
  350. package/esm2020/controls/datetime/date.ngsummary.mjs +3 -3
  351. package/esm2020/controls/datetime/dateselector.mjs +111 -111
  352. package/esm2020/controls/datetime/dateselector.ngfactory.mjs +3 -3
  353. package/esm2020/controls/datetime/dateselector.ngsummary.mjs +3 -3
  354. package/esm2020/controls/datetime/datetime.mjs +53 -53
  355. package/esm2020/controls/datetime/datetime.ngfactory.mjs +3 -3
  356. package/esm2020/controls/datetime/datetime.ngsummary.mjs +3 -3
  357. package/esm2020/controls/datetime/time.mjs +50 -50
  358. package/esm2020/controls/datetime/time.ngfactory.mjs +3 -3
  359. package/esm2020/controls/datetime/time.ngsummary.mjs +3 -3
  360. package/esm2020/controls/dialog/dialog.mjs +48 -48
  361. package/esm2020/controls/dialog/dialog.ngfactory.mjs +3 -3
  362. package/esm2020/controls/dialog/dialog.ngsummary.mjs +3 -3
  363. package/esm2020/controls/form/form.mjs +31 -31
  364. package/esm2020/controls/form/form.ngfactory.mjs +3 -3
  365. package/esm2020/controls/form/form.ngsummary.mjs +3 -3
  366. package/esm2020/controls/grid/grid.mjs +46 -46
  367. package/esm2020/controls/grid/grid.ngfactory.mjs +3 -3
  368. package/esm2020/controls/grid/grid.ngsummary.mjs +3 -3
  369. package/esm2020/controls/grid/gridbutton.mjs +20 -20
  370. package/esm2020/controls/grid/gridbutton.ngfactory.mjs +3 -3
  371. package/esm2020/controls/grid/gridbutton.ngsummary.mjs +3 -3
  372. package/esm2020/controls/grid/gridcolumn.mjs +18 -18
  373. package/esm2020/controls/grid/gridcolumn.ngfactory.mjs +3 -3
  374. package/esm2020/controls/grid/gridcolumn.ngsummary.mjs +3 -3
  375. package/esm2020/controls/grid/gridcolumnaction.mjs +10 -10
  376. package/esm2020/controls/grid/gridcolumnaction.ngfactory.mjs +3 -3
  377. package/esm2020/controls/grid/gridcolumnaction.ngsummary.mjs +3 -3
  378. package/esm2020/controls/grid/gridcolumnbase.mjs +36 -36
  379. package/esm2020/controls/grid/gridcolumnbase.ngfactory.mjs +3 -3
  380. package/esm2020/controls/grid/gridcolumnbase.ngsummary.mjs +3 -3
  381. package/esm2020/controls/grid/gridimage.mjs +5 -5
  382. package/esm2020/controls/grid/gridimage.ngfactory.mjs +3 -3
  383. package/esm2020/controls/grid/gridimage.ngsummary.mjs +3 -3
  384. package/esm2020/controls/grid/model.mjs +47 -47
  385. package/esm2020/controls/grid/model.ngfactory.mjs +3 -3
  386. package/esm2020/controls/grid/model.ngsummary.mjs +3 -3
  387. package/esm2020/controls/grid/paging.mjs +80 -80
  388. package/esm2020/controls/grid/paging.ngfactory.mjs +3 -3
  389. package/esm2020/controls/grid/paging.ngsummary.mjs +3 -3
  390. package/esm2020/controls/input/input.mjs +21 -21
  391. package/esm2020/controls/input/input.ngfactory.mjs +3 -3
  392. package/esm2020/controls/input/input.ngsummary.mjs +3 -3
  393. package/esm2020/controls/input/inputarea.mjs +21 -16
  394. package/esm2020/controls/input/inputarea.ngfactory.mjs +3 -3
  395. package/esm2020/controls/input/inputarea.ngsummary.mjs +3 -3
  396. package/esm2020/controls/input/inputcurrency.mjs +9 -9
  397. package/esm2020/controls/input/inputcurrency.ngfactory.mjs +3 -3
  398. package/esm2020/controls/input/inputcurrency.ngsummary.mjs +3 -3
  399. package/esm2020/controls/input/inputdecimal.mjs +39 -39
  400. package/esm2020/controls/input/inputdecimal.ngfactory.mjs +3 -3
  401. package/esm2020/controls/input/inputdecimal.ngsummary.mjs +3 -3
  402. package/esm2020/controls/input/inputemail.mjs +13 -13
  403. package/esm2020/controls/input/inputemail.ngfactory.mjs +3 -3
  404. package/esm2020/controls/input/inputemail.ngsummary.mjs +3 -3
  405. package/esm2020/controls/input/inputinteger.mjs +38 -38
  406. package/esm2020/controls/input/inputinteger.ngfactory.mjs +3 -3
  407. package/esm2020/controls/input/inputinteger.ngsummary.mjs +3 -3
  408. package/esm2020/controls/input/inputpassword.mjs +15 -15
  409. package/esm2020/controls/input/inputpassword.ngfactory.mjs +3 -3
  410. package/esm2020/controls/input/inputpassword.ngsummary.mjs +3 -3
  411. package/esm2020/controls/input/inputsearch.mjs +18 -18
  412. package/esm2020/controls/input/inputsearch.ngfactory.mjs +3 -3
  413. package/esm2020/controls/input/inputsearch.ngsummary.mjs +3 -3
  414. package/esm2020/controls/layout/formlayout.mjs +31 -31
  415. package/esm2020/controls/layout/formlayout.ngfactory.mjs +3 -3
  416. package/esm2020/controls/layout/formlayout.ngsummary.mjs +3 -3
  417. package/esm2020/controls/list/buildvaluestring.mjs +10 -10
  418. package/esm2020/controls/list/buildvaluestring.ngfactory.mjs +3 -3
  419. package/esm2020/controls/list/buildvaluestring.ngsummary.mjs +3 -3
  420. package/esm2020/controls/list/dropdown.mjs +60 -60
  421. package/esm2020/controls/list/dropdown.ngfactory.mjs +3 -3
  422. package/esm2020/controls/list/dropdown.ngsummary.mjs +3 -3
  423. package/esm2020/controls/list/dropdownoptions.mjs +22 -22
  424. package/esm2020/controls/list/dropdownoptions.ngfactory.mjs +3 -3
  425. package/esm2020/controls/list/dropdownoptions.ngsummary.mjs +3 -3
  426. package/esm2020/controls/list/list.module.mjs +3 -3
  427. package/esm2020/controls/list/list.module.ngfactory.mjs +3 -3
  428. package/esm2020/controls/list/list.module.ngsummary.mjs +3 -3
  429. package/esm2020/controls/list/listbox.mjs +51 -51
  430. package/esm2020/controls/list/listbox.ngfactory.mjs +3 -3
  431. package/esm2020/controls/list/listbox.ngsummary.mjs +3 -3
  432. package/esm2020/controls/multilanguage/multilanguageinput.mjs +58 -58
  433. package/esm2020/controls/multilanguage/multilanguageinput.ngfactory.mjs +3 -3
  434. package/esm2020/controls/multilanguage/multilanguageinput.ngsummary.mjs +3 -3
  435. package/esm2020/controls/multilanguage/multilanguageinputarea.mjs +61 -61
  436. package/esm2020/controls/multilanguage/multilanguageinputarea.ngfactory.mjs +3 -3
  437. package/esm2020/controls/multilanguage/multilanguageinputarea.ngsummary.mjs +3 -3
  438. package/esm2020/controls/static/formcontainer.mjs +25 -25
  439. package/esm2020/controls/static/formcontainer.ngfactory.mjs +3 -3
  440. package/esm2020/controls/static/formcontainer.ngsummary.mjs +3 -3
  441. package/esm2020/controls/static/staticlabel.mjs +13 -13
  442. package/esm2020/controls/static/staticlabel.ngfactory.mjs +3 -3
  443. package/esm2020/controls/static/staticlabel.ngsummary.mjs +3 -3
  444. package/esm2020/controls/tabs/tab.mjs +24 -24
  445. package/esm2020/controls/tabs/tab.ngfactory.mjs +3 -3
  446. package/esm2020/controls/tabs/tab.ngsummary.mjs +3 -3
  447. package/esm2020/controls/tabs/tabitem.mjs +11 -11
  448. package/esm2020/controls/tabs/tabitem.ngfactory.mjs +3 -3
  449. package/esm2020/controls/tabs/tabitem.ngsummary.mjs +3 -3
  450. package/esm2020/controls/tinymce/tinymce.mjs +75 -75
  451. package/esm2020/controls/tinymce/tinymce.ngfactory.mjs +3 -3
  452. package/esm2020/controls/tinymce/tinymce.ngsummary.mjs +3 -3
  453. package/esm2020/controls/tinymce/tinymcedialogsettings.mjs +8 -8
  454. package/esm2020/controls/tinymce/tinymcedialogsettings.ngfactory.mjs +3 -3
  455. package/esm2020/controls/tinymce/tinymcedialogsettings.ngsummary.mjs +3 -3
  456. package/esm2020/controls/tinymce/tinymcedialogsettingsmeta.mjs +5 -5
  457. package/esm2020/controls/tinymce/tinymcedialogsettingsmeta.ngfactory.mjs +5 -3
  458. package/esm2020/controls/tinymce/tinymcedialogsettingsmeta.ngsummary.mjs +3 -3
  459. package/esm2020/controls/tinymce/tinymceinstance.mjs +3 -3
  460. package/esm2020/controls/tinymce/tinymceinstance.ngfactory.mjs +3 -3
  461. package/esm2020/controls/tinymce/tinymceinstance.ngsummary.mjs +3 -3
  462. package/esm2020/controls/tooltip/tooltip.mjs +77 -77
  463. package/esm2020/controls/tooltip/tooltip.ngfactory.mjs +3 -3
  464. package/esm2020/controls/tooltip/tooltip.ngsummary.mjs +3 -3
  465. package/esm2020/controls/treeview/treeview.mjs +99 -99
  466. package/esm2020/controls/treeview/treeview.ngfactory.mjs +3 -3
  467. package/esm2020/controls/treeview/treeview.ngsummary.mjs +3 -3
  468. package/esm2020/controls/upload/dropzonemultiple.mjs +45 -45
  469. package/esm2020/controls/upload/dropzonemultiple.ngfactory.mjs +3 -3
  470. package/esm2020/controls/upload/dropzonemultiple.ngsummary.mjs +3 -3
  471. package/esm2020/controls/upload/dropzonesingle.mjs +31 -28
  472. package/esm2020/controls/upload/dropzonesingle.ngfactory.mjs +3 -3
  473. package/esm2020/controls/upload/dropzonesingle.ngsummary.mjs +3 -3
  474. package/esm2020/controls/upload/uploadmultiple.mjs +34 -34
  475. package/esm2020/controls/upload/uploadmultiple.ngfactory.mjs +3 -3
  476. package/esm2020/controls/upload/uploadmultiple.ngsummary.mjs +3 -3
  477. package/esm2020/controls/upload/uploadsingle.mjs +20 -17
  478. package/esm2020/controls/upload/uploadsingle.ngfactory.mjs +3 -3
  479. package/esm2020/controls/upload/uploadsingle.ngsummary.mjs +3 -3
  480. package/esm2020/controls/validation/validationsummary.mjs +27 -27
  481. package/esm2020/controls/validation/validationsummary.ngfactory.mjs +3 -3
  482. package/esm2020/controls/validation/validationsummary.ngsummary.mjs +3 -3
  483. package/esm2020/controls/wizard/wizard.mjs +37 -37
  484. package/esm2020/controls/wizard/wizard.ngfactory.mjs +3 -3
  485. package/esm2020/controls/wizard/wizard.ngsummary.mjs +3 -3
  486. package/esm2020/controls/wizard/wizarditem.mjs +9 -9
  487. package/esm2020/controls/wizard/wizarditem.ngfactory.mjs +3 -3
  488. package/esm2020/controls/wizard/wizarditem.ngsummary.mjs +3 -3
  489. package/esm2020/enums/ButtonRoleType.mjs +3 -3
  490. package/esm2020/enums/ButtonRoleType.ngfactory.mjs +3 -3
  491. package/esm2020/enums/ButtonRoleType.ngsummary.mjs +3 -3
  492. package/esm2020/enums/ControlHeight.mjs +11 -11
  493. package/esm2020/enums/ControlHeight.ngfactory.mjs +3 -3
  494. package/esm2020/enums/ControlHeight.ngsummary.mjs +3 -3
  495. package/esm2020/enums/IconType.mjs +5 -5
  496. package/esm2020/enums/IconType.ngfactory.mjs +3 -3
  497. package/esm2020/enums/IconType.ngsummary.mjs +3 -3
  498. package/esm2020/interfaces/ISacConfigurationService.mjs +3 -3
  499. package/esm2020/interfaces/ISacConfigurationService.ngfactory.mjs +3 -3
  500. package/esm2020/interfaces/ISacConfigurationService.ngsummary.mjs +3 -3
  501. package/esm2020/interfaces/ISacFileBrowserService.mjs +3 -3
  502. package/esm2020/interfaces/ISacFileBrowserService.ngfactory.mjs +3 -3
  503. package/esm2020/interfaces/ISacFileBrowserService.ngsummary.mjs +3 -3
  504. package/esm2020/interfaces/ISacIconService.mjs +3 -3
  505. package/esm2020/interfaces/ISacIconService.ngfactory.mjs +3 -3
  506. package/esm2020/interfaces/ISacIconService.ngsummary.mjs +3 -3
  507. package/esm2020/interfaces/ISacLabelSizes.mjs +3 -3
  508. package/esm2020/interfaces/ISacLabelSizes.ngfactory.mjs +3 -3
  509. package/esm2020/interfaces/ISacLabelSizes.ngsummary.mjs +3 -3
  510. package/esm2020/interfaces/ISacLanguageService.mjs +3 -3
  511. package/esm2020/interfaces/ISacLanguageService.ngfactory.mjs +3 -3
  512. package/esm2020/interfaces/ISacLanguageService.ngsummary.mjs +3 -3
  513. package/esm2020/interfaces/ISacLocalisationService.mjs +3 -3
  514. package/esm2020/interfaces/ISacLocalisationService.ngfactory.mjs +3 -3
  515. package/esm2020/interfaces/ISacLocalisationService.ngsummary.mjs +3 -3
  516. package/esm2020/interfaces/ISacUploadEventCompleteState.mjs +3 -3
  517. package/esm2020/interfaces/ISacUploadEventCompleteState.ngfactory.mjs +3 -3
  518. package/esm2020/interfaces/ISacUploadEventCompleteState.ngsummary.mjs +3 -3
  519. package/esm2020/interfaces/ISacValidationKeyService.mjs +3 -3
  520. package/esm2020/interfaces/ISacValidationKeyService.ngfactory.mjs +3 -3
  521. package/esm2020/interfaces/ISacValidationKeyService.ngsummary.mjs +3 -3
  522. package/esm2020/interfaces/iabstractcontrollabel.mjs +3 -3
  523. package/esm2020/interfaces/iabstractcontrollabel.ngfactory.mjs +3 -3
  524. package/esm2020/interfaces/iabstractcontrollabel.ngsummary.mjs +3 -3
  525. package/esm2020/interfaces/iconfirmcomponent.mjs +3 -3
  526. package/esm2020/interfaces/iconfirmcomponent.ngfactory.mjs +3 -3
  527. package/esm2020/interfaces/iconfirmcomponent.ngsummary.mjs +3 -3
  528. package/esm2020/interfaces/idatetimecontrol.mjs +3 -3
  529. package/esm2020/interfaces/idatetimecontrol.ngfactory.mjs +3 -3
  530. package/esm2020/interfaces/idatetimecontrol.ngsummary.mjs +3 -3
  531. package/esm2020/interfaces/iuploadcontrol.mjs +3 -3
  532. package/esm2020/interfaces/iuploadcontrol.ngfactory.mjs +3 -3
  533. package/esm2020/interfaces/iuploadcontrol.ngsummary.mjs +3 -3
  534. package/esm2020/interfaces/treeviewaction.interface.mjs +3 -3
  535. package/esm2020/interfaces/treeviewaction.interface.ngfactory.mjs +3 -3
  536. package/esm2020/interfaces/treeviewaction.interface.ngsummary.mjs +3 -3
  537. package/esm2020/models/languagemodel.mjs +7 -7
  538. package/esm2020/models/languagemodel.ngfactory.mjs +3 -3
  539. package/esm2020/models/languagemodel.ngsummary.mjs +3 -3
  540. package/esm2020/public_api.mjs +5 -5
  541. package/esm2020/public_api.ngfactory.mjs +3 -3
  542. package/esm2020/public_api.ngsummary.mjs +3 -3
  543. package/esm2020/services/index.mjs +3 -3
  544. package/esm2020/services/index.ngfactory.mjs +3 -3
  545. package/esm2020/services/index.ngsummary.mjs +3 -3
  546. package/esm2020/services/sac-configuration.service.mjs +35 -35
  547. package/esm2020/services/sac-configuration.service.ngfactory.mjs +3 -3
  548. package/esm2020/services/sac-configuration.service.ngsummary.mjs +3 -3
  549. package/esm2020/services/sac-filebrowser.service.mjs +53 -53
  550. package/esm2020/services/sac-filebrowser.service.ngfactory.mjs +3 -3
  551. package/esm2020/services/sac-filebrowser.service.ngsummary.mjs +3 -3
  552. package/esm2020/services/sac-icon.service.mjs +65 -65
  553. package/esm2020/services/sac-icon.service.ngfactory.mjs +3 -3
  554. package/esm2020/services/sac-icon.service.ngsummary.mjs +3 -3
  555. package/esm2020/services/sac-language.service.mjs +11 -11
  556. package/esm2020/services/sac-language.service.ngfactory.mjs +3 -3
  557. package/esm2020/services/sac-language.service.ngsummary.mjs +3 -3
  558. package/esm2020/services/sac-localisation.service.mjs +36 -35
  559. package/esm2020/services/sac-localisation.service.ngfactory.mjs +3 -3
  560. package/esm2020/services/sac-localisation.service.ngsummary.mjs +3 -3
  561. package/esm2020/services/sac-validationkey.service.mjs +7 -7
  562. package/esm2020/services/sac-validationkey.service.ngfactory.mjs +3 -3
  563. package/esm2020/services/sac-validationkey.service.ngsummary.mjs +3 -3
  564. package/esm2020/simpleangularcontrols-sac-common.mjs +4 -4
  565. package/esm2020/utilities/convertion.mjs +12 -12
  566. package/esm2020/utilities/convertion.ngfactory.mjs +3 -3
  567. package/esm2020/utilities/convertion.ngsummary.mjs +3 -3
  568. package/esm2020/utilities/datatypes.mjs +7 -7
  569. package/esm2020/utilities/datatypes.ngfactory.mjs +3 -3
  570. package/esm2020/utilities/datatypes.ngsummary.mjs +3 -3
  571. package/esm2020/utilities/enums.mjs +11 -11
  572. package/esm2020/utilities/enums.ngfactory.mjs +3 -3
  573. package/esm2020/utilities/enums.ngsummary.mjs +3 -3
  574. package/esm2020/utilities/guid.mjs +8 -8
  575. package/esm2020/utilities/guid.ngfactory.mjs +3 -3
  576. package/esm2020/utilities/guid.ngsummary.mjs +3 -3
  577. package/esm2020/utilities/interpolation.mjs +15 -15
  578. package/esm2020/utilities/interpolation.ngfactory.mjs +3 -3
  579. package/esm2020/utilities/interpolation.ngsummary.mjs +3 -3
  580. package/esm2020/utilities/popuphelper.mjs +79 -79
  581. package/esm2020/utilities/popuphelper.ngfactory.mjs +3 -3
  582. package/esm2020/utilities/popuphelper.ngsummary.mjs +3 -3
  583. package/esm2020/utilities/positioning.mjs +56 -56
  584. package/esm2020/utilities/positioning.ngfactory.mjs +3 -3
  585. package/esm2020/utilities/positioning.ngsummary.mjs +3 -3
  586. package/esm2020/validation/email.validator.mjs +3 -3
  587. package/esm2020/validation/email.validator.ngfactory.mjs +3 -3
  588. package/esm2020/validation/email.validator.ngsummary.mjs +3 -3
  589. package/esm2020/validation/equals.validator.mjs +3 -3
  590. package/esm2020/validation/equals.validator.ngfactory.mjs +3 -3
  591. package/esm2020/validation/equals.validator.ngsummary.mjs +3 -3
  592. package/esm2020/validation/index.mjs +3 -3
  593. package/esm2020/validation/index.ngfactory.mjs +3 -3
  594. package/esm2020/validation/index.ngsummary.mjs +3 -3
  595. package/esm2020/validation/invaliddate.validator.mjs +3 -3
  596. package/esm2020/validation/invaliddate.validator.ngfactory.mjs +3 -3
  597. package/esm2020/validation/invaliddate.validator.ngsummary.mjs +3 -3
  598. package/esm2020/validation/isDateValid.mjs +10 -10
  599. package/esm2020/validation/isDateValid.ngfactory.mjs +3 -3
  600. package/esm2020/validation/isDateValid.ngsummary.mjs +3 -3
  601. package/esm2020/validation/maxdate.validator.mjs +4 -4
  602. package/esm2020/validation/maxdate.validator.ngfactory.mjs +3 -3
  603. package/esm2020/validation/maxdate.validator.ngsummary.mjs +3 -3
  604. package/esm2020/validation/maxtime.validator.mjs +4 -4
  605. package/esm2020/validation/maxtime.validator.ngfactory.mjs +3 -3
  606. package/esm2020/validation/maxtime.validator.ngsummary.mjs +3 -3
  607. package/esm2020/validation/maxvalue.validator.mjs +3 -3
  608. package/esm2020/validation/maxvalue.validator.ngfactory.mjs +3 -3
  609. package/esm2020/validation/maxvalue.validator.ngsummary.mjs +3 -3
  610. package/esm2020/validation/mindate.validator.mjs +4 -4
  611. package/esm2020/validation/mindate.validator.ngfactory.mjs +3 -3
  612. package/esm2020/validation/mindate.validator.ngsummary.mjs +3 -3
  613. package/esm2020/validation/minfiles.validator.mjs +4 -4
  614. package/esm2020/validation/minfiles.validator.ngfactory.mjs +3 -3
  615. package/esm2020/validation/minfiles.validator.ngsummary.mjs +3 -3
  616. package/esm2020/validation/mintextlength.validator.mjs +5 -0
  617. package/esm2020/validation/mintextlength.validator.ngfactory.mjs +3 -0
  618. package/esm2020/validation/mintextlength.validator.ngsummary.mjs +3 -0
  619. package/esm2020/validation/mintime.validator.mjs +4 -4
  620. package/esm2020/validation/mintime.validator.ngfactory.mjs +3 -3
  621. package/esm2020/validation/mintime.validator.ngsummary.mjs +3 -3
  622. package/esm2020/validation/minvalue.validator.mjs +3 -3
  623. package/esm2020/validation/minvalue.validator.ngfactory.mjs +3 -3
  624. package/esm2020/validation/minvalue.validator.ngsummary.mjs +3 -3
  625. package/esm2020/validation/multilanguagerequired.validator.mjs +3 -3
  626. package/esm2020/validation/multilanguagerequired.validator.ngfactory.mjs +3 -3
  627. package/esm2020/validation/multilanguagerequired.validator.ngsummary.mjs +3 -3
  628. package/esm2020/validation/multilanguagerequiredany.validator.mjs +3 -3
  629. package/esm2020/validation/multilanguagerequiredany.validator.ngfactory.mjs +3 -3
  630. package/esm2020/validation/multilanguagerequiredany.validator.ngsummary.mjs +3 -3
  631. package/esm2020/validation/notequals.validator.mjs +3 -3
  632. package/esm2020/validation/notequals.validator.ngfactory.mjs +3 -3
  633. package/esm2020/validation/notequals.validator.ngsummary.mjs +3 -3
  634. package/esm2020/validation/pattern.validator.mjs +3 -3
  635. package/esm2020/validation/pattern.validator.ngfactory.mjs +3 -3
  636. package/esm2020/validation/pattern.validator.ngsummary.mjs +3 -3
  637. package/esm2020/validation/required.validator.mjs +3 -3
  638. package/esm2020/validation/required.validator.ngfactory.mjs +3 -3
  639. package/esm2020/validation/required.validator.ngsummary.mjs +3 -3
  640. package/esm2020/validation/validation.mjs +128 -123
  641. package/esm2020/validation/validation.ngfactory.mjs +3 -3
  642. package/esm2020/validation/validation.ngsummary.mjs +3 -3
  643. package/esm2020/validation/validationerrorcreator.mjs +3 -3
  644. package/esm2020/validation/validationerrorcreator.ngfactory.mjs +3 -3
  645. package/esm2020/validation/validationerrorcreator.ngsummary.mjs +3 -3
  646. package/esm2020/validation/validationerroritem.mjs +15 -15
  647. package/esm2020/validation/validationerroritem.ngfactory.mjs +3 -3
  648. package/esm2020/validation/validationerroritem.ngsummary.mjs +3 -3
  649. package/fesm2015/simpleangularcontrols-sac-common.mjs +2873 -2854
  650. package/fesm2015/simpleangularcontrols-sac-common.mjs.map +1 -1
  651. package/fesm2020/simpleangularcontrols-sac-common.mjs +2873 -2854
  652. package/fesm2020/simpleangularcontrols-sac-common.mjs.map +1 -1
  653. package/interfaces/ISacConfigurationService.d.ts +58 -58
  654. package/interfaces/ISacConfigurationService.ngfactory.d.ts +1 -1
  655. package/interfaces/ISacConfigurationService.ngsummary.d.ts +1 -1
  656. package/interfaces/ISacFileBrowserService.d.ts +65 -65
  657. package/interfaces/ISacFileBrowserService.ngfactory.d.ts +1 -1
  658. package/interfaces/ISacFileBrowserService.ngsummary.d.ts +1 -1
  659. package/interfaces/ISacIconService.d.ts +113 -113
  660. package/interfaces/ISacIconService.ngfactory.d.ts +1 -1
  661. package/interfaces/ISacIconService.ngsummary.d.ts +1 -1
  662. package/interfaces/ISacLabelSizes.d.ts +26 -26
  663. package/interfaces/ISacLabelSizes.ngfactory.d.ts +1 -1
  664. package/interfaces/ISacLabelSizes.ngsummary.d.ts +1 -1
  665. package/interfaces/ISacLanguageService.d.ts +12 -12
  666. package/interfaces/ISacLanguageService.ngfactory.d.ts +1 -1
  667. package/interfaces/ISacLanguageService.ngsummary.d.ts +1 -1
  668. package/interfaces/ISacLocalisationService.d.ts +10 -10
  669. package/interfaces/ISacLocalisationService.ngfactory.d.ts +1 -1
  670. package/interfaces/ISacLocalisationService.ngsummary.d.ts +1 -1
  671. package/interfaces/ISacUploadEventCompleteState.d.ts +5 -5
  672. package/interfaces/ISacUploadEventCompleteState.ngfactory.d.ts +1 -1
  673. package/interfaces/ISacUploadEventCompleteState.ngsummary.d.ts +1 -1
  674. package/interfaces/ISacValidationKeyService.d.ts +52 -52
  675. package/interfaces/ISacValidationKeyService.d.ts.map +1 -1
  676. package/interfaces/ISacValidationKeyService.ngfactory.d.ts +1 -1
  677. package/interfaces/ISacValidationKeyService.ngsummary.d.ts +1 -1
  678. package/interfaces/iabstractcontrollabel.d.ts +6 -6
  679. package/interfaces/iabstractcontrollabel.ngfactory.d.ts +1 -1
  680. package/interfaces/iabstractcontrollabel.ngsummary.d.ts +1 -1
  681. package/interfaces/iconfirmcomponent.d.ts +18 -18
  682. package/interfaces/iconfirmcomponent.ngfactory.d.ts +1 -1
  683. package/interfaces/iconfirmcomponent.ngsummary.d.ts +1 -1
  684. package/interfaces/idatetimecontrol.d.ts +7 -7
  685. package/interfaces/idatetimecontrol.ngfactory.d.ts +1 -1
  686. package/interfaces/idatetimecontrol.ngsummary.d.ts +1 -1
  687. package/interfaces/iuploadcontrol.d.ts +9 -9
  688. package/interfaces/iuploadcontrol.ngfactory.d.ts +1 -1
  689. package/interfaces/iuploadcontrol.ngsummary.d.ts +1 -1
  690. package/interfaces/treeviewaction.interface.d.ts +4 -4
  691. package/interfaces/treeviewaction.interface.ngfactory.d.ts +1 -1
  692. package/interfaces/treeviewaction.interface.ngsummary.d.ts +1 -1
  693. package/models/languagemodel.d.ts +22 -22
  694. package/models/languagemodel.ngfactory.d.ts +1 -1
  695. package/models/languagemodel.ngsummary.d.ts +1 -1
  696. package/package.json +1 -1
  697. package/public_api.d.ts +86 -86
  698. package/public_api.ngfactory.d.ts +1 -1
  699. package/public_api.ngsummary.d.ts +1 -1
  700. package/services/index.d.ts +6 -6
  701. package/services/index.ngfactory.d.ts +1 -1
  702. package/services/index.ngsummary.d.ts +1 -1
  703. package/services/sac-configuration.service.d.ts +126 -126
  704. package/services/sac-configuration.service.ngfactory.d.ts +4 -4
  705. package/services/sac-configuration.service.ngsummary.d.ts +2 -2
  706. package/services/sac-filebrowser.service.d.ts +145 -145
  707. package/services/sac-filebrowser.service.ngfactory.d.ts +4 -4
  708. package/services/sac-filebrowser.service.ngsummary.d.ts +2 -2
  709. package/services/sac-icon.service.d.ts +237 -237
  710. package/services/sac-icon.service.ngfactory.d.ts +4 -4
  711. package/services/sac-icon.service.ngsummary.d.ts +2 -2
  712. package/services/sac-language.service.d.ts +31 -31
  713. package/services/sac-language.service.ngfactory.d.ts +4 -4
  714. package/services/sac-language.service.ngsummary.d.ts +2 -2
  715. package/services/sac-localisation.service.d.ts +142 -142
  716. package/services/sac-localisation.service.d.ts.map +1 -1
  717. package/services/sac-localisation.service.ngfactory.d.ts +4 -4
  718. package/services/sac-localisation.service.ngsummary.d.ts +2 -2
  719. package/services/sac-validationkey.service.d.ts +58 -58
  720. package/services/sac-validationkey.service.d.ts.map +1 -1
  721. package/services/sac-validationkey.service.ngfactory.d.ts +3 -3
  722. package/services/sac-validationkey.service.ngsummary.d.ts +1 -1
  723. package/simpleangularcontrols-sac-common-13.0.0-rc.14.tgz +0 -0
  724. package/simpleangularcontrols-sac-common.d.ts +5 -5
  725. package/utilities/convertion.d.ts +15 -15
  726. package/utilities/convertion.ngfactory.d.ts +1 -1
  727. package/utilities/convertion.ngsummary.d.ts +1 -1
  728. package/utilities/datatypes.d.ts +6 -6
  729. package/utilities/datatypes.ngfactory.d.ts +1 -1
  730. package/utilities/datatypes.ngsummary.d.ts +1 -1
  731. package/utilities/enums.d.ts +12 -12
  732. package/utilities/enums.ngfactory.d.ts +1 -1
  733. package/utilities/enums.ngsummary.d.ts +1 -1
  734. package/utilities/guid.d.ts +4 -4
  735. package/utilities/guid.ngfactory.d.ts +1 -1
  736. package/utilities/guid.ngsummary.d.ts +1 -1
  737. package/utilities/interpolation.d.ts +21 -21
  738. package/utilities/interpolation.ngfactory.d.ts +1 -1
  739. package/utilities/interpolation.ngsummary.d.ts +1 -1
  740. package/utilities/popuphelper.d.ts +83 -83
  741. package/utilities/popuphelper.ngfactory.d.ts +1 -1
  742. package/utilities/popuphelper.ngsummary.d.ts +1 -1
  743. package/utilities/positioning.d.ts +82 -82
  744. package/utilities/positioning.ngfactory.d.ts +1 -1
  745. package/utilities/positioning.ngsummary.d.ts +1 -1
  746. package/validation/email.validator.d.ts +2 -2
  747. package/validation/email.validator.ngfactory.d.ts +1 -1
  748. package/validation/email.validator.ngsummary.d.ts +1 -1
  749. package/validation/equals.validator.d.ts +2 -2
  750. package/validation/equals.validator.ngfactory.d.ts +1 -1
  751. package/validation/equals.validator.ngsummary.d.ts +1 -1
  752. package/validation/index.d.ts +2 -2
  753. package/validation/index.ngfactory.d.ts +1 -1
  754. package/validation/index.ngsummary.d.ts +1 -1
  755. package/validation/invaliddate.validator.d.ts +2 -2
  756. package/validation/invaliddate.validator.ngfactory.d.ts +1 -1
  757. package/validation/invaliddate.validator.ngsummary.d.ts +1 -1
  758. package/validation/isDateValid.d.ts +5 -5
  759. package/validation/isDateValid.ngfactory.d.ts +1 -1
  760. package/validation/isDateValid.ngsummary.d.ts +1 -1
  761. package/validation/maxdate.validator.d.ts +2 -2
  762. package/validation/maxdate.validator.ngfactory.d.ts +1 -1
  763. package/validation/maxdate.validator.ngsummary.d.ts +1 -1
  764. package/validation/maxtime.validator.d.ts +2 -2
  765. package/validation/maxtime.validator.ngfactory.d.ts +1 -1
  766. package/validation/maxtime.validator.ngsummary.d.ts +1 -1
  767. package/validation/maxvalue.validator.d.ts +2 -2
  768. package/validation/maxvalue.validator.ngfactory.d.ts +1 -1
  769. package/validation/maxvalue.validator.ngsummary.d.ts +1 -1
  770. package/validation/mindate.validator.d.ts +2 -2
  771. package/validation/mindate.validator.ngfactory.d.ts +1 -1
  772. package/validation/mindate.validator.ngsummary.d.ts +1 -1
  773. package/validation/minfiles.validator.d.ts +2 -2
  774. package/validation/minfiles.validator.ngfactory.d.ts +1 -1
  775. package/validation/minfiles.validator.ngsummary.d.ts +1 -1
  776. package/validation/mintextlength.validator.d.ts +3 -0
  777. package/validation/mintextlength.validator.d.ts.map +1 -0
  778. package/validation/mintextlength.validator.ngfactory.d.ts +2 -0
  779. package/validation/mintextlength.validator.ngfactory.d.ts.map +1 -0
  780. package/validation/mintextlength.validator.ngsummary.d.ts +2 -0
  781. package/validation/mintextlength.validator.ngsummary.d.ts.map +1 -0
  782. package/validation/mintime.validator.d.ts +2 -2
  783. package/validation/mintime.validator.ngfactory.d.ts +1 -1
  784. package/validation/mintime.validator.ngsummary.d.ts +1 -1
  785. package/validation/minvalue.validator.d.ts +2 -2
  786. package/validation/minvalue.validator.ngfactory.d.ts +1 -1
  787. package/validation/minvalue.validator.ngsummary.d.ts +1 -1
  788. package/validation/multilanguagerequired.validator.d.ts +3 -3
  789. package/validation/multilanguagerequired.validator.ngfactory.d.ts +1 -1
  790. package/validation/multilanguagerequired.validator.ngsummary.d.ts +1 -1
  791. package/validation/multilanguagerequiredany.validator.d.ts +3 -3
  792. package/validation/multilanguagerequiredany.validator.ngfactory.d.ts +1 -1
  793. package/validation/multilanguagerequiredany.validator.ngsummary.d.ts +1 -1
  794. package/validation/notequals.validator.d.ts +2 -2
  795. package/validation/notequals.validator.ngfactory.d.ts +1 -1
  796. package/validation/notequals.validator.ngsummary.d.ts +1 -1
  797. package/validation/pattern.validator.d.ts +2 -2
  798. package/validation/pattern.validator.ngfactory.d.ts +1 -1
  799. package/validation/pattern.validator.ngsummary.d.ts +1 -1
  800. package/validation/required.validator.d.ts +2 -2
  801. package/validation/required.validator.ngfactory.d.ts +1 -1
  802. package/validation/required.validator.ngsummary.d.ts +1 -1
  803. package/validation/validation.d.ts +157 -157
  804. package/validation/validation.d.ts.map +1 -1
  805. package/validation/validation.ngfactory.d.ts +1 -1
  806. package/validation/validation.ngsummary.d.ts +1 -1
  807. package/validation/validationerrorcreator.d.ts +1 -1
  808. package/validation/validationerrorcreator.ngfactory.d.ts +1 -1
  809. package/validation/validationerrorcreator.ngsummary.d.ts +1 -1
  810. package/validation/validationerroritem.d.ts +33 -33
  811. package/validation/validationerroritem.ngfactory.d.ts +1 -1
  812. package/validation/validationerroritem.ngsummary.d.ts +1 -1
  813. package/esm2020/validation/minlength.validator.mjs +0 -3
  814. package/esm2020/validation/minlength.validator.ngfactory.mjs +0 -3
  815. package/esm2020/validation/minlength.validator.ngsummary.mjs +0 -3
  816. package/simpleangularcontrols-sac-common-13.0.0-rc.12.tgz +0 -0
  817. package/validation/minlength.validator.d.ts +0 -3
  818. package/validation/minlength.validator.d.ts.map +0 -1
  819. package/validation/minlength.validator.ngfactory.d.ts +0 -2
  820. package/validation/minlength.validator.ngfactory.d.ts.map +0 -1
  821. package/validation/minlength.validator.ngsummary.d.ts +0 -2
  822. package/validation/minlength.validator.ngsummary.d.ts.map +0 -1
@@ -1,80 +1,80 @@
1
- function cov_16v1ahi2jt(){var path="C:\\Projekte\\simpleangularcontrols-ng13\\ch.jnetwork.sac-controls\\dist\\sac-common\\esm2020\\utilities\\popuphelper.mjs";var hash="8c6952724a9f02094151d7b2d209669c369dd9d3";var global=new Function("return this")();var gcv="__coverage__";var coverageData={path:"C:\\Projekte\\simpleangularcontrols-ng13\\ch.jnetwork.sac-controls\\dist\\sac-common\\esm2020\\utilities\\popuphelper.mjs",statementMap:{"0":{start:{line:5,column:8},end:{line:12,column:9}},"1":{start:{line:6,column:12},end:{line:8,column:64}},"2":{start:{line:11,column:12},end:{line:11,column:21}},"3":{start:{line:15,column:8},end:{line:22,column:9}},"4":{start:{line:16,column:12},end:{line:18,column:63}},"5":{start:{line:21,column:12},end:{line:21,column:21}},"6":{start:{line:34,column:31},end:{line:34,column:143}},"7":{start:{line:36,column:8},end:{line:38,column:9}},"8":{start:{line:37,column:12},end:{line:37,column:41}},"9":{start:{line:40,column:8},end:{line:42,column:9}},"10":{start:{line:41,column:12},end:{line:41,column:39}},"11":{start:{line:44,column:8},end:{line:46,column:9}},"12":{start:{line:45,column:12},end:{line:45,column:40}},"13":{start:{line:48,column:8},end:{line:50,column:9}},"14":{start:{line:49,column:12},end:{line:49,column:42}},"15":{start:{line:51,column:8},end:{line:53,column:9}},"16":{start:{line:52,column:12},end:{line:52,column:42}},"17":{start:{line:54,column:8},end:{line:57,column:9}},"18":{start:{line:56,column:12},end:{line:56,column:45}},"19":{start:{line:59,column:8},end:{line:80,column:9}},"20":{start:{line:61,column:12},end:{line:63,column:13}},"21":{start:{line:62,column:16},end:{line:62,column:45}},"22":{start:{line:65,column:12},end:{line:67,column:13}},"23":{start:{line:66,column:16},end:{line:66,column:43}},"24":{start:{line:69,column:12},end:{line:71,column:13}},"25":{start:{line:70,column:16},end:{line:70,column:44}},"26":{start:{line:73,column:12},end:{line:75,column:13}},"27":{start:{line:74,column:16},end:{line:74,column:46}},"28":{start:{line:76,column:12},end:{line:76,column:41}},"29":{start:{line:79,column:12},end:{line:79,column:54}},"30":{start:{line:88,column:8},end:{line:93,column:9}},"31":{start:{line:89,column:12},end:{line:89,column:79}},"32":{start:{line:92,column:12},end:{line:92,column:21}},"33":{start:{line:101,column:8},end:{line:106,column:9}},"34":{start:{line:102,column:12},end:{line:102,column:73}},"35":{start:{line:105,column:12},end:{line:105,column:21}},"36":{start:{line:114,column:8},end:{line:116,column:9}},"37":{start:{line:115,column:12},end:{line:115,column:40}},"38":{start:{line:117,column:8},end:{line:119,column:9}},"39":{start:{line:118,column:12},end:{line:118,column:39}},"40":{start:{line:120,column:8},end:{line:122,column:9}},"41":{start:{line:121,column:12},end:{line:121,column:41}},"42":{start:{line:123,column:8},end:{line:125,column:9}},"43":{start:{line:124,column:12},end:{line:124,column:42}},"44":{start:{line:126,column:8},end:{line:128,column:9}},"45":{start:{line:127,column:12},end:{line:127,column:42}},"46":{start:{line:129,column:8},end:{line:131,column:9}},"47":{start:{line:130,column:12},end:{line:130,column:45}},"48":{start:{line:133,column:8},end:{line:133,column:37}},"49":{start:{line:145,column:8},end:{line:170,column:9}},"50":{start:{line:146,column:25},end:{line:146,column:57}},"51":{start:{line:147,column:12},end:{line:166,column:13}},"52":{start:{line:148,column:34},end:{line:148,column:86}},"53":{start:{line:149,column:40},end:{line:149,column:73}},"54":{start:{line:150,column:16},end:{line:161,column:17}},"55":{start:{line:153,column:24},end:{line:153,column:123}},"56":{start:{line:156,column:24},end:{line:156,column:113}},"57":{start:{line:158,column:24},end:{line:158,column:93}},"58":{start:{line:160,column:24},end:{line:160,column:113}},"59":{start:{line:162,column:16},end:{line:162,column:66}},"60":{start:{line:165,column:16},end:{line:165,column:66}},"61":{start:{line:169,column:12},end:{line:169,column:61}},"62":{start:{line:182,column:8},end:{line:212,column:9}},"63":{start:{line:183,column:25},end:{line:183,column:57}},"64":{start:{line:184,column:12},end:{line:208,column:13}},"65":{start:{line:185,column:34},end:{line:185,column:86}},"66":{start:{line:186,column:40},end:{line:186,column:73}},"67":{start:{line:188,column:43},end:{line:190,column:68}},"68":{start:{line:191,column:16},end:{line:201,column:17}},"69":{start:{line:194,column:24},end:{line:194,column:113}},"70":{start:{line:197,column:24},end:{line:197,column:123}},"71":{start:{line:200,column:24},end:{line:200,column:93}},"72":{start:{line:202,column:16},end:{line:204,column:92}},"73":{start:{line:207,column:16},end:{line:207,column:66}},"74":{start:{line:211,column:12},end:{line:211,column:60}},"75":{start:{line:221,column:26},end:{line:221,column:53}},"76":{start:{line:222,column:8},end:{line:224,column:9}},"77":{start:{line:223,column:12},end:{line:223,column:24}},"78":{start:{line:225,column:8},end:{line:227,column:9}},"79":{start:{line:226,column:12},end:{line:226,column:24}},"80":{start:{line:228,column:8},end:{line:230,column:9}},"81":{start:{line:229,column:12},end:{line:229,column:24}},"82":{start:{line:231,column:8},end:{line:233,column:9}},"83":{start:{line:232,column:12},end:{line:232,column:24}},"84":{start:{line:234,column:8},end:{line:236,column:9}},"85":{start:{line:235,column:12},end:{line:235,column:24}},"86":{start:{line:237,column:8},end:{line:239,column:9}},"87":{start:{line:238,column:12},end:{line:238,column:24}},"88":{start:{line:240,column:8},end:{line:240,column:21}},"89":{start:{line:247,column:26},end:{line:247,column:53}},"90":{start:{line:248,column:8},end:{line:248,column:46}},"91":{start:{line:255,column:8},end:{line:257,column:9}},"92":{start:{line:256,column:12},end:{line:256,column:41}},"93":{start:{line:258,column:31},end:{line:258,column:51}},"94":{start:{line:259,column:29},end:{line:261,column:70}},"95":{start:{line:262,column:28},end:{line:262,column:105}},"96":{start:{line:263,column:26},end:{line:263,column:85}},"97":{start:{line:264,column:27},end:{line:264,column:98}},"98":{start:{line:265,column:25},end:{line:265,column:80}},"99":{start:{line:266,column:28},end:{line:266,column:103}},"100":{start:{line:267,column:30},end:{line:267,column:75}},"101":{start:{line:268,column:31},end:{line:268,column:93}},"102":{start:{line:269,column:29},end:{line:269,column:74}},"103":{start:{line:270,column:32},end:{line:270,column:97}},"104":{start:{line:271,column:8},end:{line:274,column:9}},"105":{start:{line:273,column:12},end:{line:273,column:73}},"106":{start:{line:275,column:8},end:{line:278,column:9}},"107":{start:{line:277,column:12},end:{line:277,column:76}},"108":{start:{line:279,column:8},end:{line:282,column:9}},"109":{start:{line:281,column:12},end:{line:281,column:71}},"110":{start:{line:283,column:8},end:{line:286,column:9}},"111":{start:{line:285,column:12},end:{line:285,column:72}},"112":{start:{line:287,column:8},end:{line:290,column:9}},"113":{start:{line:289,column:12},end:{line:289,column:70}},"114":{start:{line:291,column:8},end:{line:294,column:9}},"115":{start:{line:293,column:12},end:{line:293,column:73}},"116":{start:{line:295,column:8},end:{line:295,column:32}},"117":{start:{line:305,column:8},end:{line:307,column:9}},"118":{start:{line:306,column:12},end:{line:306,column:21}},"119":{start:{line:308,column:8},end:{line:310,column:9}},"120":{start:{line:309,column:12},end:{line:309,column:37}},"121":{start:{line:311,column:28},end:{line:311,column:73}},"122":{start:{line:312,column:21},end:{line:312,column:38}},"123":{start:{line:313,column:8},end:{line:313,column:36}},"124":{start:{line:322,column:8},end:{line:324,column:9}},"125":{start:{line:323,column:12},end:{line:323,column:21}},"126":{start:{line:326,column:8},end:{line:328,column:9}},"127":{start:{line:327,column:12},end:{line:327,column:51}},"128":{start:{line:329,column:29},end:{line:329,column:34}},"129":{start:{line:330,column:8},end:{line:332,column:9}},"130":{start:{line:331,column:12},end:{line:331,column:34}},"131":{start:{line:333,column:28},end:{line:333,column:101}},"132":{start:{line:334,column:8},end:{line:339,column:9}},"133":{start:{line:335,column:12},end:{line:335,column:51}},"134":{start:{line:338,column:12},end:{line:338,column:56}}},fnMap:{"0":{name:"(anonymous_0)",decl:{start:{line:4,column:4},end:{line:4,column:5}},loc:{start:{line:4,column:65},end:{line:13,column:5}},line:4},"1":{name:"(anonymous_1)",decl:{start:{line:14,column:4},end:{line:14,column:5}},loc:{start:{line:14,column:64},end:{line:23,column:5}},line:14},"2":{name:"(anonymous_2)",decl:{start:{line:33,column:4},end:{line:33,column:5}},loc:{start:{line:33,column:131},end:{line:81,column:5}},line:33},"3":{name:"(anonymous_3)",decl:{start:{line:87,column:4},end:{line:87,column:5}},loc:{start:{line:87,column:30},end:{line:94,column:5}},line:87},"4":{name:"(anonymous_4)",decl:{start:{line:100,column:4},end:{line:100,column:5}},loc:{start:{line:100,column:29},end:{line:107,column:5}},line:100},"5":{name:"(anonymous_5)",decl:{start:{line:113,column:4},end:{line:113,column:5}},loc:{start:{line:113,column:34},end:{line:134,column:5}},line:113},"6":{name:"(anonymous_6)",decl:{start:{line:144,column:4},end:{line:144,column:5}},loc:{start:{line:144,column:140},end:{line:171,column:5}},line:144},"7":{name:"(anonymous_7)",decl:{start:{line:181,column:4},end:{line:181,column:5}},loc:{start:{line:181,column:139},end:{line:213,column:5}},line:181},"8":{name:"(anonymous_8)",decl:{start:{line:220,column:4},end:{line:220,column:5}},loc:{start:{line:220,column:53},end:{line:241,column:5}},line:220},"9":{name:"(anonymous_9)",decl:{start:{line:246,column:4},end:{line:246,column:5}},loc:{start:{line:246,column:37},end:{line:249,column:5}},line:246},"10":{name:"(anonymous_10)",decl:{start:{line:253,column:4},end:{line:253,column:5}},loc:{start:{line:253,column:112},end:{line:296,column:5}},line:253},"11":{name:"(anonymous_11)",decl:{start:{line:304,column:4},end:{line:304,column:5}},loc:{start:{line:304,column:32},end:{line:314,column:5}},line:304},"12":{name:"(anonymous_12)",decl:{start:{line:321,column:4},end:{line:321,column:5}},loc:{start:{line:321,column:49},end:{line:340,column:5}},line:321}},branchMap:{"0":{loc:{start:{line:5,column:8},end:{line:12,column:9}},type:"if",locations:[{start:{line:5,column:8},end:{line:12,column:9}},{start:{line:5,column:8},end:{line:12,column:9}}],line:5},"1":{loc:{start:{line:6,column:19},end:{line:8,column:63}},type:"cond-expr",locations:[{start:{line:7,column:18},end:{line:7,column:81}},{start:{line:8,column:18},end:{line:8,column:63}}],line:6},"2":{loc:{start:{line:15,column:8},end:{line:22,column:9}},type:"if",locations:[{start:{line:15,column:8},end:{line:22,column:9}},{start:{line:15,column:8},end:{line:22,column:9}}],line:15},"3":{loc:{start:{line:16,column:19},end:{line:18,column:62}},type:"cond-expr",locations:[{start:{line:17,column:18},end:{line:17,column:80}},{start:{line:18,column:18},end:{line:18,column:62}}],line:16},"4":{loc:{start:{line:36,column:8},end:{line:38,column:9}},type:"if",locations:[{start:{line:36,column:8},end:{line:38,column:9}},{start:{line:36,column:8},end:{line:38,column:9}}],line:36},"5":{loc:{start:{line:36,column:12},end:{line:36,column:111}},type:"binary-expr",locations:[{start:{line:36,column:12},end:{line:36,column:69}},{start:{line:36,column:73},end:{line:36,column:111}}],line:36},"6":{loc:{start:{line:40,column:8},end:{line:42,column:9}},type:"if",locations:[{start:{line:40,column:8},end:{line:42,column:9}},{start:{line:40,column:8},end:{line:42,column:9}}],line:40},"7":{loc:{start:{line:40,column:12},end:{line:40,column:107}},type:"binary-expr",locations:[{start:{line:40,column:12},end:{line:40,column:67}},{start:{line:40,column:71},end:{line:40,column:107}}],line:40},"8":{loc:{start:{line:44,column:8},end:{line:46,column:9}},type:"if",locations:[{start:{line:44,column:8},end:{line:46,column:9}},{start:{line:44,column:8},end:{line:46,column:9}}],line:44},"9":{loc:{start:{line:44,column:12},end:{line:44,column:109}},type:"binary-expr",locations:[{start:{line:44,column:12},end:{line:44,column:68}},{start:{line:44,column:72},end:{line:44,column:109}}],line:44},"10":{loc:{start:{line:48,column:8},end:{line:50,column:9}},type:"if",locations:[{start:{line:48,column:8},end:{line:50,column:9}},{start:{line:48,column:8},end:{line:50,column:9}}],line:48},"11":{loc:{start:{line:48,column:12},end:{line:48,column:113}},type:"binary-expr",locations:[{start:{line:48,column:12},end:{line:48,column:70}},{start:{line:48,column:74},end:{line:48,column:113}}],line:48},"12":{loc:{start:{line:51,column:8},end:{line:53,column:9}},type:"if",locations:[{start:{line:51,column:8},end:{line:53,column:9}},{start:{line:51,column:8},end:{line:53,column:9}}],line:51},"13":{loc:{start:{line:51,column:12},end:{line:51,column:113}},type:"binary-expr",locations:[{start:{line:51,column:12},end:{line:51,column:70}},{start:{line:51,column:74},end:{line:51,column:113}}],line:51},"14":{loc:{start:{line:54,column:8},end:{line:57,column:9}},type:"if",locations:[{start:{line:54,column:8},end:{line:57,column:9}},{start:{line:54,column:8},end:{line:57,column:9}}],line:54},"15":{loc:{start:{line:54,column:12},end:{line:55,column:54}},type:"binary-expr",locations:[{start:{line:54,column:12},end:{line:54,column:73}},{start:{line:55,column:12},end:{line:55,column:54}}],line:54},"16":{loc:{start:{line:59,column:8},end:{line:80,column:9}},type:"if",locations:[{start:{line:59,column:8},end:{line:80,column:9}},{start:{line:59,column:8},end:{line:80,column:9}}],line:59},"17":{loc:{start:{line:61,column:12},end:{line:63,column:13}},type:"if",locations:[{start:{line:61,column:12},end:{line:63,column:13}},{start:{line:61,column:12},end:{line:63,column:13}}],line:61},"18":{loc:{start:{line:65,column:12},end:{line:67,column:13}},type:"if",locations:[{start:{line:65,column:12},end:{line:67,column:13}},{start:{line:65,column:12},end:{line:67,column:13}}],line:65},"19":{loc:{start:{line:69,column:12},end:{line:71,column:13}},type:"if",locations:[{start:{line:69,column:12},end:{line:71,column:13}},{start:{line:69,column:12},end:{line:71,column:13}}],line:69},"20":{loc:{start:{line:73,column:12},end:{line:75,column:13}},type:"if",locations:[{start:{line:73,column:12},end:{line:75,column:13}},{start:{line:73,column:12},end:{line:75,column:13}}],line:73},"21":{loc:{start:{line:88,column:8},end:{line:93,column:9}},type:"if",locations:[{start:{line:88,column:8},end:{line:93,column:9}},{start:{line:88,column:8},end:{line:93,column:9}}],line:88},"22":{loc:{start:{line:89,column:19},end:{line:89,column:78}},type:"binary-expr",locations:[{start:{line:89,column:19},end:{line:89,column:73}},{start:{line:89,column:77},end:{line:89,column:78}}],line:89},"23":{loc:{start:{line:101,column:8},end:{line:106,column:9}},type:"if",locations:[{start:{line:101,column:8},end:{line:106,column:9}},{start:{line:101,column:8},end:{line:106,column:9}}],line:101},"24":{loc:{start:{line:114,column:8},end:{line:116,column:9}},type:"if",locations:[{start:{line:114,column:8},end:{line:116,column:9}},{start:{line:114,column:8},end:{line:116,column:9}}],line:114},"25":{loc:{start:{line:117,column:8},end:{line:119,column:9}},type:"if",locations:[{start:{line:117,column:8},end:{line:119,column:9}},{start:{line:117,column:8},end:{line:119,column:9}}],line:117},"26":{loc:{start:{line:120,column:8},end:{line:122,column:9}},type:"if",locations:[{start:{line:120,column:8},end:{line:122,column:9}},{start:{line:120,column:8},end:{line:122,column:9}}],line:120},"27":{loc:{start:{line:123,column:8},end:{line:125,column:9}},type:"if",locations:[{start:{line:123,column:8},end:{line:125,column:9}},{start:{line:123,column:8},end:{line:125,column:9}}],line:123},"28":{loc:{start:{line:126,column:8},end:{line:128,column:9}},type:"if",locations:[{start:{line:126,column:8},end:{line:128,column:9}},{start:{line:126,column:8},end:{line:128,column:9}}],line:126},"29":{loc:{start:{line:129,column:8},end:{line:131,column:9}},type:"if",locations:[{start:{line:129,column:8},end:{line:131,column:9}},{start:{line:129,column:8},end:{line:131,column:9}}],line:129},"30":{loc:{start:{line:145,column:8},end:{line:170,column:9}},type:"if",locations:[{start:{line:145,column:8},end:{line:170,column:9}},{start:{line:145,column:8},end:{line:170,column:9}}],line:145},"31":{loc:{start:{line:145,column:12},end:{line:145,column:75}},type:"binary-expr",locations:[{start:{line:145,column:12},end:{line:145,column:39}},{start:{line:145,column:43},end:{line:145,column:75}}],line:145},"32":{loc:{start:{line:147,column:12},end:{line:166,column:13}},type:"if",locations:[{start:{line:147,column:12},end:{line:166,column:13}},{start:{line:147,column:12},end:{line:166,column:13}}],line:147},"33":{loc:{start:{line:148,column:34},end:{line:148,column:86}},type:"cond-expr",locations:[{start:{line:148,column:57},end:{line:148,column:79}},{start:{line:148,column:82},end:{line:148,column:86}}],line:148},"34":{loc:{start:{line:150,column:16},end:{line:161,column:17}},type:"switch",locations:[{start:{line:151,column:20},end:{line:151,column:45}},{start:{line:152,column:20},end:{line:153,column:123}},{start:{line:154,column:20},end:{line:154,column:48}},{start:{line:155,column:20},end:{line:156,column:113}},{start:{line:157,column:20},end:{line:158,column:93}},{start:{line:159,column:20},end:{line:160,column:113}}],line:150},"35":{loc:{start:{line:182,column:8},end:{line:212,column:9}},type:"if",locations:[{start:{line:182,column:8},end:{line:212,column:9}},{start:{line:182,column:8},end:{line:212,column:9}}],line:182},"36":{loc:{start:{line:182,column:12},end:{line:182,column:75}},type:"binary-expr",locations:[{start:{line:182,column:12},end:{line:182,column:39}},{start:{line:182,column:43},end:{line:182,column:75}}],line:182},"37":{loc:{start:{line:184,column:12},end:{line:208,column:13}},type:"if",locations:[{start:{line:184,column:12},end:{line:208,column:13}},{start:{line:184,column:12},end:{line:208,column:13}}],line:184},"38":{loc:{start:{line:185,column:34},end:{line:185,column:86}},type:"cond-expr",locations:[{start:{line:185,column:57},end:{line:185,column:79}},{start:{line:185,column:82},end:{line:185,column:86}}],line:185},"39":{loc:{start:{line:191,column:16},end:{line:201,column:17}},type:"switch",locations:[{start:{line:192,column:20},end:{line:192,column:45}},{start:{line:193,column:20},end:{line:194,column:113}},{start:{line:195,column:20},end:{line:195,column:47}},{start:{line:196,column:20},end:{line:197,column:123}},{start:{line:198,column:20},end:{line:198,column:48}},{start:{line:199,column:20},end:{line:200,column:93}}],line:191},"40":{loc:{start:{line:222,column:8},end:{line:224,column:9}},type:"if",locations:[{start:{line:222,column:8},end:{line:224,column:9}},{start:{line:222,column:8},end:{line:224,column:9}}],line:222},"41":{loc:{start:{line:222,column:12},end:{line:222,column:90}},type:"binary-expr",locations:[{start:{line:222,column:12},end:{line:222,column:55}},{start:{line:222,column:59},end:{line:222,column:90}}],line:222},"42":{loc:{start:{line:225,column:8},end:{line:227,column:9}},type:"if",locations:[{start:{line:225,column:8},end:{line:227,column:9}},{start:{line:225,column:8},end:{line:227,column:9}}],line:225},"43":{loc:{start:{line:225,column:12},end:{line:225,column:86}},type:"binary-expr",locations:[{start:{line:225,column:12},end:{line:225,column:53}},{start:{line:225,column:57},end:{line:225,column:86}}],line:225},"44":{loc:{start:{line:228,column:8},end:{line:230,column:9}},type:"if",locations:[{start:{line:228,column:8},end:{line:230,column:9}},{start:{line:228,column:8},end:{line:230,column:9}}],line:228},"45":{loc:{start:{line:228,column:12},end:{line:228,column:88}},type:"binary-expr",locations:[{start:{line:228,column:12},end:{line:228,column:54}},{start:{line:228,column:58},end:{line:228,column:88}}],line:228},"46":{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},"47":{loc:{start:{line:231,column:12},end:{line:231,column:92}},type:"binary-expr",locations:[{start:{line:231,column:12},end:{line:231,column:56}},{start:{line:231,column:60},end:{line:231,column:92}}],line:231},"48":{loc:{start:{line:234,column:8},end:{line:236,column:9}},type:"if",locations:[{start:{line:234,column:8},end:{line:236,column:9}},{start:{line:234,column:8},end:{line:236,column:9}}],line:234},"49":{loc:{start:{line:234,column:12},end:{line:234,column:92}},type:"binary-expr",locations:[{start:{line:234,column:12},end:{line:234,column:56}},{start:{line:234,column:60},end:{line:234,column:92}}],line:234},"50":{loc:{start:{line:237,column:8},end:{line:239,column:9}},type:"if",locations:[{start:{line:237,column:8},end:{line:239,column:9}},{start:{line:237,column:8},end:{line:239,column:9}}],line:237},"51":{loc:{start:{line:237,column:12},end:{line:237,column:98}},type:"binary-expr",locations:[{start:{line:237,column:12},end:{line:237,column:59}},{start:{line:237,column:63},end:{line:237,column:98}}],line:237},"52":{loc:{start:{line:255,column:8},end:{line:257,column:9}},type:"if",locations:[{start:{line:255,column:8},end:{line:257,column:9}},{start:{line:255,column:8},end:{line:257,column:9}}],line:255},"53":{loc:{start:{line:259,column:29},end:{line:261,column:70}},type:"cond-expr",locations:[{start:{line:260,column:14},end:{line:260,column:88}},{start:{line:261,column:14},end:{line:261,column:70}}],line:259},"54":{loc:{start:{line:271,column:8},end:{line:274,column:9}},type:"if",locations:[{start:{line:271,column:8},end:{line:274,column:9}},{start:{line:271,column:8},end:{line:274,column:9}}],line:271},"55":{loc:{start:{line:271,column:12},end:{line:271,column:33}},type:"binary-expr",locations:[{start:{line:271,column:12},end:{line:271,column:21}},{start:{line:271,column:25},end:{line:271,column:33}}],line:271},"56":{loc:{start:{line:275,column:8},end:{line:278,column:9}},type:"if",locations:[{start:{line:275,column:8},end:{line:278,column:9}},{start:{line:275,column:8},end:{line:278,column:9}}],line:275},"57":{loc:{start:{line:275,column:12},end:{line:275,column:36}},type:"binary-expr",locations:[{start:{line:275,column:12},end:{line:275,column:21}},{start:{line:275,column:25},end:{line:275,column:36}}],line:275},"58":{loc:{start:{line:279,column:8},end:{line:282,column:9}},type:"if",locations:[{start:{line:279,column:8},end:{line:282,column:9}},{start:{line:279,column:8},end:{line:282,column:9}}],line:279},"59":{loc:{start:{line:279,column:12},end:{line:279,column:56}},type:"binary-expr",locations:[{start:{line:279,column:12},end:{line:279,column:21}},{start:{line:279,column:25},end:{line:279,column:37}},{start:{line:279,column:41},end:{line:279,column:56}}],line:279},"60":{loc:{start:{line:283,column:8},end:{line:286,column:9}},type:"if",locations:[{start:{line:283,column:8},end:{line:286,column:9}},{start:{line:283,column:8},end:{line:286,column:9}}],line:283},"61":{loc:{start:{line:283,column:12},end:{line:283,column:57}},type:"binary-expr",locations:[{start:{line:283,column:12},end:{line:283,column:22}},{start:{line:283,column:26},end:{line:283,column:38}},{start:{line:283,column:42},end:{line:283,column:57}}],line:283},"62":{loc:{start:{line:287,column:8},end:{line:290,column:9}},type:"if",locations:[{start:{line:287,column:8},end:{line:290,column:9}},{start:{line:287,column:8},end:{line:290,column:9}}],line:287},"63":{loc:{start:{line:287,column:12},end:{line:287,column:55}},type:"binary-expr",locations:[{start:{line:287,column:12},end:{line:287,column:20}},{start:{line:287,column:24},end:{line:287,column:37}},{start:{line:287,column:41},end:{line:287,column:55}}],line:287},"64":{loc:{start:{line:291,column:8},end:{line:294,column:9}},type:"if",locations:[{start:{line:291,column:8},end:{line:294,column:9}},{start:{line:291,column:8},end:{line:294,column:9}}],line:291},"65":{loc:{start:{line:291,column:12},end:{line:291,column:58}},type:"binary-expr",locations:[{start:{line:291,column:12},end:{line:291,column:23}},{start:{line:291,column:27},end:{line:291,column:40}},{start:{line:291,column:44},end:{line:291,column:58}}],line:291},"66":{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},"67":{loc:{start:{line:308,column:8},end:{line:310,column:9}},type:"if",locations:[{start:{line:308,column:8},end:{line:310,column:9}},{start:{line:308,column:8},end:{line:310,column:9}}],line:308},"68":{loc:{start:{line:321,column:32},end:{line:321,column:47}},type:"default-arg",locations:[{start:{line:321,column:42},end:{line:321,column:47}}],line:321},"69":{loc:{start:{line:322,column:8},end:{line:324,column:9}},type:"if",locations:[{start:{line:322,column:8},end:{line:324,column:9}},{start:{line:322,column:8},end:{line:324,column:9}}],line:322},"70":{loc:{start:{line:326,column:8},end:{line:328,column:9}},type:"if",locations:[{start:{line:326,column:8},end:{line:328,column:9}},{start:{line:326,column:8},end:{line:328,column:9}}],line:326},"71":{loc:{start:{line:327,column:19},end:{line:327,column:50}},type:"cond-expr",locations:[{start:{line:327,column:29},end:{line:327,column:46}},{start:{line:327,column:49},end:{line:327,column:50}}],line:327},"72":{loc:{start:{line:330,column:8},end:{line:332,column:9}},type:"if",locations:[{start:{line:330,column:8},end:{line:332,column:9}},{start:{line:330,column:8},end:{line:332,column:9}}],line:330},"73":{loc:{start:{line:333,column:75},end:{line:333,column:100}},type:"binary-expr",locations:[{start:{line:333,column:75},end:{line:333,column:82}},{start:{line:333,column:86},end:{line:333,column:100}}],line:333},"74":{loc:{start:{line:334,column:8},end:{line:339,column:9}},type:"if",locations:[{start:{line:334,column:8},end:{line:339,column:9}},{start:{line:334,column:8},end:{line:339,column:9}}],line:334}},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},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},b:{"0":[0,0],"1":[0,0],"2":[0,0],"3":[0,0],"4":[0,0],"5":[0,0],"6":[0,0],"7":[0,0],"8":[0,0],"9":[0,0],"10":[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,0,0,0,0],"35":[0,0],"36":[0,0],"37":[0,0],"38":[0,0],"39":[0,0,0,0,0,0],"40":[0,0],"41":[0,0],"42":[0,0],"43":[0,0],"44":[0,0],"45":[0,0],"46":[0,0],"47":[0,0],"48":[0,0],"49":[0,0],"50":[0,0],"51":[0,0],"52":[0,0],"53":[0,0],"54":[0,0],"55":[0,0],"56":[0,0],"57":[0,0],"58":[0,0],"59":[0,0,0],"60":[0,0],"61":[0,0,0],"62":[0,0],"63":[0,0,0],"64":[0,0],"65":[0,0,0],"66":[0,0],"67":[0,0],"68":[0],"69":[0,0],"70":[0,0],"71":[0,0],"72":[0,0],"73":[0,0],"74":[0,0]},inputSourceMap:{version:3,file:"popuphelper.js",sourceRoot:"",sources:["../../../../projects/sac-common/src/utilities/popuphelper.ts"],names:[],mappings:"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",sourcesContent:["import { TooltipPosition } from './enums';\r\nimport { ElementRef } from '@angular/core';\r\n\r\nexport class PopUpHelper {\r\n // #region Public Methods\r\n\r\n public getContainerHeight(referenceContainer: ElementRef<HTMLElement>, referenceIsContainer: boolean): number {\r\n if (referenceContainer) {\r\n return referenceIsContainer\r\n ? referenceContainer.nativeElement.firstElementChild.clientHeight\r\n : referenceContainer.nativeElement.offsetHeight;\r\n } else {\r\n return 0;\r\n }\r\n }\r\n\r\n public getContainerWidth(referenceContainer: ElementRef<HTMLElement>, referenceIsContainer: boolean): number {\r\n if (referenceContainer) {\r\n return referenceIsContainer\r\n ? referenceContainer.nativeElement.firstElementChild.clientWidth\r\n : referenceContainer.nativeElement.offsetWidth;\r\n } else {\r\n return 0;\r\n }\r\n }\r\n\r\n /**\r\n * Get Position who the popup would be positioned\r\n *\r\n * @param referenceContainer Element Reference to HTML Element which is the reference to positioning the popup\r\n * @param popupcontentcontainer Element Reference to container of popup\r\n * @param popupOffset Offset for popup positioning\r\n * @param allowedPositions Allowed Positions for the popup\r\n * @returns Returns the position where the popup should be displayed\r\n */\r\n public getDisplayPosition(\r\n referenceContainer: ElementRef<HTMLElement>,\r\n popupcontentcontainer: ElementRef<HTMLElement>,\r\n arrowWidth: number,\r\n arrowHeight: number,\r\n allowedPositions: string,\r\n referenceIsContainer: boolean\r\n ): TooltipPosition {\r\n const validPositions: TooltipPosition = this.validatePositions(\r\n referenceContainer,\r\n popupcontentcontainer,\r\n arrowWidth,\r\n arrowHeight,\r\n referenceIsContainer\r\n );\r\n\r\n // tslint:disable-next-line:no-bitwise\r\n if (this.hasPosition(allowedPositions, 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(allowedPositions, 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(allowedPositions, 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(allowedPositions, TooltipPosition.bottom) && validPositions & TooltipPosition.bottom) {\r\n return TooltipPosition.bottom;\r\n }\r\n\r\n if (this.hasPosition(allowedPositions, TooltipPosition.topend) && validPositions & TooltipPosition.topend) {\r\n return TooltipPosition.topend;\r\n }\r\n\r\n if (\r\n this.hasPosition(allowedPositions, TooltipPosition.bottomend) &&\r\n validPositions & TooltipPosition.bottomend\r\n ) {\r\n return TooltipPosition.bottomend;\r\n }\r\n\r\n // Get Auto Position or Default\r\n if (this.isAutoPosition(allowedPositions)) {\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(allowedPositions);\r\n }\r\n }\r\n\r\n /**\r\n * Calculates the height of the popup\r\n *\r\n * @param container Element Reference to container of popup\r\n */\r\n public getPopupHeight(container: ElementRef<HTMLElement>): number {\r\n if (container) {\r\n return container.nativeElement.firstElementChild.clientHeight ?? 0;\r\n } else {\r\n return 0;\r\n }\r\n }\r\n\r\n /**\r\n * Calculates the width of the popup\r\n *\r\n * @param container Element Reference to container of popup\r\n */\r\n public getPopupWidth(container: ElementRef<HTMLElement>): number {\r\n if (container) {\r\n return container.nativeElement.firstElementChild.clientWidth;\r\n } else {\r\n return 0;\r\n }\r\n }\r\n\r\n /**\r\n * Returns the defined position for the tooltip\r\n *\r\n * @param allowedPositions Allowed positions defined in markup for popup\r\n */\r\n public getPosition(allowedPositions: string): TooltipPosition {\r\n if (this.hasPosition(allowedPositions, TooltipPosition.left)) {\r\n return TooltipPosition.left;\r\n }\r\n\r\n if (this.hasPosition(allowedPositions, TooltipPosition.top)) {\r\n return TooltipPosition.top;\r\n }\r\n\r\n if (this.hasPosition(allowedPositions, TooltipPosition.right)) {\r\n return TooltipPosition.right;\r\n }\r\n\r\n if (this.hasPosition(allowedPositions, TooltipPosition.bottom)) {\r\n return TooltipPosition.bottom;\r\n }\r\n\r\n if (this.hasPosition(allowedPositions, TooltipPosition.topend)) {\r\n return TooltipPosition.topend;\r\n }\r\n\r\n if (this.hasPosition(allowedPositions, TooltipPosition.bottomend)) {\r\n return TooltipPosition.bottomend;\r\n }\r\n\r\n // Default Position if empty\r\n return TooltipPosition.right;\r\n }\r\n\r\n /**\r\n * Calculates the position of the tooltip from links\r\n *\r\n * @param controlReference Element Reference to angular component\r\n * @param popupContainer Element Reference to container of popup\r\n * @param referenceContainer Element Reference to HTML Element which is the reference to positioning the popup\r\n * @param popupOffset Offset for popup positioning\r\n * @param requestedPosition Requested Position by Control\r\n */\r\n public getPositionLeft(\r\n referenceContainer: ElementRef<HTMLElement>,\r\n popupContainer: ElementRef<HTMLElement>,\r\n controlReference: ElementRef,\r\n arrowWidth: number,\r\n arrowHeight: number,\r\n requestedPosition: string,\r\n referenceIsContainer: boolean\r\n ): number {\r\n if (referenceContainer !== null && referenceContainer !== undefined) {\r\n const item = referenceContainer.nativeElement;\r\n\r\n if (item.children.length >= 1) {\r\n const childItem = referenceIsContainer ? (item.firstElementChild as HTMLElement) : item;\r\n const contentPosition: DOMRect = childItem.getBoundingClientRect();\r\n\r\n switch (\r\n this.getDisplayPosition(\r\n referenceContainer,\r\n popupContainer,\r\n arrowWidth,\r\n arrowHeight,\r\n requestedPosition,\r\n referenceIsContainer\r\n )\r\n ) {\r\n case TooltipPosition.top:\r\n case TooltipPosition.bottom:\r\n return (\r\n contentPosition.left + contentPosition.width / 2 - this.getPopupWidth(popupContainer) / 2\r\n );\r\n case TooltipPosition.topend:\r\n case TooltipPosition.bottomend:\r\n return contentPosition.left + contentPosition.width - this.getPopupWidth(popupContainer);\r\n case TooltipPosition.right:\r\n return contentPosition.left + contentPosition.width + arrowWidth / 2;\r\n case TooltipPosition.left:\r\n return contentPosition.left - this.getPopupWidth(popupContainer) + (arrowWidth / 2) * -1;\r\n }\r\n\r\n return referenceContainer.nativeElement.offsetTop;\r\n } else {\r\n return referenceContainer.nativeElement.offsetTop;\r\n }\r\n } else {\r\n return controlReference.nativeElement.offsetLeft;\r\n }\r\n }\r\n\r\n /**\r\n * Calculates the position of the tooltip from the top\r\n *\r\n * @param controlReference Element Reference to angular component\r\n * @param popupContainer Element Reference to container of popup\r\n * @param referenceContainer Element Reference to HTML Element which is the reference to positioning the popup\r\n * @param popupOffset Offset for popup positioning\r\n * @param requestedPosition Requested Position by Control\r\n */\r\n public getPositionTop(\r\n referenceContainer: ElementRef<HTMLElement>,\r\n popupContainer: ElementRef<HTMLElement>,\r\n controlReference: ElementRef,\r\n arrowWidth: number,\r\n arrowHeight: number,\r\n requestedPosition: string,\r\n referenceIsContainer: boolean\r\n ): number {\r\n if (referenceContainer !== null && referenceContainer !== undefined) {\r\n const item = referenceContainer.nativeElement;\r\n if (item.children.length >= 1) {\r\n const childItem = referenceIsContainer ? (item.firstElementChild as HTMLElement) : item;\r\n const contentPosition: DOMRect = childItem.getBoundingClientRect();\r\n\r\n // Get Position with Scroll (Scrollbars inside page should be substracted)\r\n const contentPositionTop =\r\n childItem.offsetTop +\r\n this.getOffsetTopParent(childItem.offsetParent as HTMLElement) +\r\n this.getScrollTopParent(childItem.parentElement);\r\n\r\n switch (\r\n this.getDisplayPosition(\r\n referenceContainer,\r\n popupContainer,\r\n arrowWidth,\r\n arrowHeight,\r\n requestedPosition,\r\n referenceIsContainer\r\n )\r\n ) {\r\n case TooltipPosition.top:\r\n case TooltipPosition.topend:\r\n return contentPositionTop - this.getPopupHeight(popupContainer) + (arrowHeight / 2) * -1;\r\n case TooltipPosition.right:\r\n case TooltipPosition.left:\r\n return (\r\n contentPositionTop + contentPosition.height / 2 - this.getPopupHeight(popupContainer) / 2\r\n );\r\n case TooltipPosition.bottom:\r\n case TooltipPosition.bottomend:\r\n return contentPositionTop + contentPosition.height + arrowHeight / 2;\r\n }\r\n\r\n return (\r\n childItem.clientTop +\r\n childItem.offsetTop -\r\n (this.getPopupHeight(popupContainer) / 2 - childItem.offsetHeight / 2)\r\n );\r\n } else {\r\n return referenceContainer.nativeElement.offsetTop;\r\n }\r\n } else {\r\n return controlReference.nativeElement.offsetTop;\r\n }\r\n }\r\n\r\n /**\r\n * Returns whether the position has been configured\r\n *\r\n * @param allowedPositions Positions that allowed by control\r\n * @param requestedPosition Position to be checked\r\n */\r\n public hasPosition(allowedPositions: string, requestedPosition: TooltipPosition): boolean {\r\n const positions = allowedPositions.split('|');\r\n\r\n if (requestedPosition === TooltipPosition.right && positions.indexOf('right') >= 0) {\r\n return true;\r\n }\r\n\r\n if (requestedPosition === TooltipPosition.top && positions.indexOf('top') >= 0) {\r\n return true;\r\n }\r\n\r\n if (requestedPosition === TooltipPosition.left && positions.indexOf('left') >= 0) {\r\n return true;\r\n }\r\n\r\n if (requestedPosition === TooltipPosition.bottom && positions.indexOf('bottom') >= 0) {\r\n return true;\r\n }\r\n\r\n if (requestedPosition === TooltipPosition.topend && positions.indexOf('topend') >= 0) {\r\n return true;\r\n }\r\n if (requestedPosition === TooltipPosition.bottomend && positions.indexOf('bottomend') >= 0) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n /**\r\n * Defines whether AutoPosition is active\r\n * @param positionProperty List of allowed positions\r\n */\r\n public isAutoPosition(positionProperty: string): boolean {\r\n const positions = positionProperty.split('|');\r\n return positions.indexOf('auto') >= 0;\r\n }\r\n\r\n /**\r\n * Checks whether the position is valid or whether the tooltip on the position has space\r\n */\r\n public validatePositions(\r\n referenceContainer: ElementRef<HTMLElement>,\r\n popupcontentcontainer: ElementRef<HTMLElement>,\r\n arrowWidth: number,\r\n arrowHeight: number,\r\n referenceIsContainer: boolean\r\n ): TooltipPosition {\r\n // Check if Container is false\r\n if (popupcontentcontainer === undefined) {\r\n return TooltipPosition.right;\r\n }\r\n\r\n let allowedPositions: TooltipPosition = TooltipPosition.none;\r\n const basePosition: DOMRect = referenceIsContainer\r\n ? referenceContainer.nativeElement.firstElementChild.getBoundingClientRect()\r\n : referenceContainer.nativeElement.getBoundingClientRect();\r\n const tooltipRect: DOMRect = popupcontentcontainer.nativeElement.firstElementChild.getBoundingClientRect();\r\n\r\n const leftPosOk: boolean = basePosition.left - tooltipRect.width + arrowWidth * -1 > 0;\r\n const rightPosOk: boolean = basePosition.right + tooltipRect.width + arrowWidth < window.innerWidth;\r\n const topPosOk: boolean = basePosition.top - tooltipRect.height + arrowHeight > 0;\r\n const bottomPosOk: boolean = basePosition.bottom + tooltipRect.height + arrowHeight < 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 && topPosOk) {\r\n // tslint:disable-next-line:no-bitwise\r\n allowedPositions = allowedPositions | TooltipPosition.topend;\r\n }\r\n\r\n if (leftPosOk && bottomPosOk) {\r\n // tslint:disable-next-line:no-bitwise\r\n allowedPositions = allowedPositions | TooltipPosition.bottomend;\r\n }\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 // #endregion Public Methods\r\n\r\n // #region Private Methods\r\n\r\n /**\r\n * Calculates the top of the page inside all elements\r\n * @param element HTML Element\r\n * @returns summarized top value for absolute position\r\n */\r\n private getOffsetTopParent(element: HTMLElement): number {\r\n if (element === null) {\r\n return 0;\r\n }\r\n\r\n if (!element.offsetParent) {\r\n return element.offsetTop;\r\n }\r\n\r\n const parentValue = this.getOffsetTopParent(element.offsetParent as HTMLElement);\r\n let offset = element.offsetTop;\r\n return parentValue + offset;\r\n }\r\n\r\n /**\r\n * Caclulate Scrollbars inside tree\r\n * @param element HTML Element\r\n * @param [isFixed=false] Invert Scroll Position value when style is fixed to preserve negative values\r\n * @returns Scroll top value of element with all childs\r\n */\r\n private getScrollTopParent(element: HTMLElement, isFixed = false): number {\r\n if (element === null) {\r\n return 0;\r\n }\r\n\r\n // Body Scroll should not be calculated\r\n if (!element.parentElement) {\r\n return isFixed ? element.scrollTop : 0;\r\n }\r\n\r\n let isCurrentFixed = false;\r\n if (window.getComputedStyle(element).getPropertyValue('position') === 'fixed') {\r\n isCurrentFixed = true;\r\n }\r\n\r\n const parentValue = this.getScrollTopParent(element.parentElement, isFixed || isCurrentFixed);\r\n\r\n if (isFixed) {\r\n return parentValue + element.scrollTop;\r\n } else {\r\n return parentValue + element.scrollTop * -1;\r\n }\r\n }\r\n\r\n // #endregion Private Methods\r\n}\r\n"]},_coverageSchema:"1a1c01bbd47fc00a2c39e90264f33305004495a9",hash:"8c6952724a9f02094151d7b2d209669c369dd9d3"};var coverage=global[gcv]||(global[gcv]={});if(!coverage[path]||coverage[path].hash!==hash){coverage[path]=coverageData;}var actualCoverage=coverage[path];{// @ts-ignore
2
- cov_16v1ahi2jt=function(){return actualCoverage;};}return actualCoverage;}cov_16v1ahi2jt();import{TooltipPosition}from'./enums';export class PopUpHelper{// #region Public Methods
3
- getContainerHeight(referenceContainer,referenceIsContainer){cov_16v1ahi2jt().f[0]++;cov_16v1ahi2jt().s[0]++;if(referenceContainer){cov_16v1ahi2jt().b[0][0]++;cov_16v1ahi2jt().s[1]++;return referenceIsContainer?(cov_16v1ahi2jt().b[1][0]++,referenceContainer.nativeElement.firstElementChild.clientHeight):(cov_16v1ahi2jt().b[1][1]++,referenceContainer.nativeElement.offsetHeight);}else{cov_16v1ahi2jt().b[0][1]++;cov_16v1ahi2jt().s[2]++;return 0;}}getContainerWidth(referenceContainer,referenceIsContainer){cov_16v1ahi2jt().f[1]++;cov_16v1ahi2jt().s[3]++;if(referenceContainer){cov_16v1ahi2jt().b[2][0]++;cov_16v1ahi2jt().s[4]++;return referenceIsContainer?(cov_16v1ahi2jt().b[3][0]++,referenceContainer.nativeElement.firstElementChild.clientWidth):(cov_16v1ahi2jt().b[3][1]++,referenceContainer.nativeElement.offsetWidth);}else{cov_16v1ahi2jt().b[2][1]++;cov_16v1ahi2jt().s[5]++;return 0;}}/**
4
- * Get Position who the popup would be positioned
5
- *
6
- * @param referenceContainer Element Reference to HTML Element which is the reference to positioning the popup
7
- * @param popupcontentcontainer Element Reference to container of popup
8
- * @param popupOffset Offset for popup positioning
9
- * @param allowedPositions Allowed Positions for the popup
10
- * @returns Returns the position where the popup should be displayed
11
- */getDisplayPosition(referenceContainer,popupcontentcontainer,arrowWidth,arrowHeight,allowedPositions,referenceIsContainer){cov_16v1ahi2jt().f[2]++;const validPositions=(cov_16v1ahi2jt().s[6]++,this.validatePositions(referenceContainer,popupcontentcontainer,arrowWidth,arrowHeight,referenceIsContainer));// tslint:disable-next-line:no-bitwise
12
- cov_16v1ahi2jt().s[7]++;if((cov_16v1ahi2jt().b[5][0]++,this.hasPosition(allowedPositions,TooltipPosition.right))&&(cov_16v1ahi2jt().b[5][1]++,validPositions&TooltipPosition.right)){cov_16v1ahi2jt().b[4][0]++;cov_16v1ahi2jt().s[8]++;return TooltipPosition.right;}else{cov_16v1ahi2jt().b[4][1]++;}// tslint:disable-next-line:no-bitwise
13
- cov_16v1ahi2jt().s[9]++;if((cov_16v1ahi2jt().b[7][0]++,this.hasPosition(allowedPositions,TooltipPosition.top))&&(cov_16v1ahi2jt().b[7][1]++,validPositions&TooltipPosition.top)){cov_16v1ahi2jt().b[6][0]++;cov_16v1ahi2jt().s[10]++;return TooltipPosition.top;}else{cov_16v1ahi2jt().b[6][1]++;}// tslint:disable-next-line:no-bitwise
14
- cov_16v1ahi2jt().s[11]++;if((cov_16v1ahi2jt().b[9][0]++,this.hasPosition(allowedPositions,TooltipPosition.left))&&(cov_16v1ahi2jt().b[9][1]++,validPositions&TooltipPosition.left)){cov_16v1ahi2jt().b[8][0]++;cov_16v1ahi2jt().s[12]++;return TooltipPosition.left;}else{cov_16v1ahi2jt().b[8][1]++;}// tslint:disable-next-line:no-bitwise
15
- cov_16v1ahi2jt().s[13]++;if((cov_16v1ahi2jt().b[11][0]++,this.hasPosition(allowedPositions,TooltipPosition.bottom))&&(cov_16v1ahi2jt().b[11][1]++,validPositions&TooltipPosition.bottom)){cov_16v1ahi2jt().b[10][0]++;cov_16v1ahi2jt().s[14]++;return TooltipPosition.bottom;}else{cov_16v1ahi2jt().b[10][1]++;}cov_16v1ahi2jt().s[15]++;if((cov_16v1ahi2jt().b[13][0]++,this.hasPosition(allowedPositions,TooltipPosition.topend))&&(cov_16v1ahi2jt().b[13][1]++,validPositions&TooltipPosition.topend)){cov_16v1ahi2jt().b[12][0]++;cov_16v1ahi2jt().s[16]++;return TooltipPosition.topend;}else{cov_16v1ahi2jt().b[12][1]++;}cov_16v1ahi2jt().s[17]++;if((cov_16v1ahi2jt().b[15][0]++,this.hasPosition(allowedPositions,TooltipPosition.bottomend))&&(cov_16v1ahi2jt().b[15][1]++,validPositions&TooltipPosition.bottomend)){cov_16v1ahi2jt().b[14][0]++;cov_16v1ahi2jt().s[18]++;return TooltipPosition.bottomend;}else{cov_16v1ahi2jt().b[14][1]++;}// Get Auto Position or Default
16
- cov_16v1ahi2jt().s[19]++;if(this.isAutoPosition(allowedPositions)){cov_16v1ahi2jt().b[16][0]++;cov_16v1ahi2jt().s[20]++;// tslint:disable-next-line:no-bitwise
17
- if(validPositions&TooltipPosition.right){cov_16v1ahi2jt().b[17][0]++;cov_16v1ahi2jt().s[21]++;return TooltipPosition.right;}else{cov_16v1ahi2jt().b[17][1]++;}// tslint:disable-next-line:no-bitwise
18
- cov_16v1ahi2jt().s[22]++;if(validPositions&TooltipPosition.top){cov_16v1ahi2jt().b[18][0]++;cov_16v1ahi2jt().s[23]++;return TooltipPosition.top;}else{cov_16v1ahi2jt().b[18][1]++;}// tslint:disable-next-line:no-bitwise
19
- cov_16v1ahi2jt().s[24]++;if(validPositions&TooltipPosition.left){cov_16v1ahi2jt().b[19][0]++;cov_16v1ahi2jt().s[25]++;return TooltipPosition.left;}else{cov_16v1ahi2jt().b[19][1]++;}// tslint:disable-next-line:no-bitwise
20
- cov_16v1ahi2jt().s[26]++;if(validPositions&TooltipPosition.bottom){cov_16v1ahi2jt().b[20][0]++;cov_16v1ahi2jt().s[27]++;return TooltipPosition.bottom;}else{cov_16v1ahi2jt().b[20][1]++;}cov_16v1ahi2jt().s[28]++;return TooltipPosition.right;}else{cov_16v1ahi2jt().b[16][1]++;cov_16v1ahi2jt().s[29]++;return this.getPosition(allowedPositions);}}/**
21
- * Calculates the height of the popup
22
- *
23
- * @param container Element Reference to container of popup
24
- */getPopupHeight(container){cov_16v1ahi2jt().f[3]++;cov_16v1ahi2jt().s[30]++;if(container){cov_16v1ahi2jt().b[21][0]++;cov_16v1ahi2jt().s[31]++;return(cov_16v1ahi2jt().b[22][0]++,container.nativeElement.firstElementChild.clientHeight)??(cov_16v1ahi2jt().b[22][1]++,0);}else{cov_16v1ahi2jt().b[21][1]++;cov_16v1ahi2jt().s[32]++;return 0;}}/**
25
- * Calculates the width of the popup
26
- *
27
- * @param container Element Reference to container of popup
28
- */getPopupWidth(container){cov_16v1ahi2jt().f[4]++;cov_16v1ahi2jt().s[33]++;if(container){cov_16v1ahi2jt().b[23][0]++;cov_16v1ahi2jt().s[34]++;return container.nativeElement.firstElementChild.clientWidth;}else{cov_16v1ahi2jt().b[23][1]++;cov_16v1ahi2jt().s[35]++;return 0;}}/**
29
- * Returns the defined position for the tooltip
30
- *
31
- * @param allowedPositions Allowed positions defined in markup for popup
32
- */getPosition(allowedPositions){cov_16v1ahi2jt().f[5]++;cov_16v1ahi2jt().s[36]++;if(this.hasPosition(allowedPositions,TooltipPosition.left)){cov_16v1ahi2jt().b[24][0]++;cov_16v1ahi2jt().s[37]++;return TooltipPosition.left;}else{cov_16v1ahi2jt().b[24][1]++;}cov_16v1ahi2jt().s[38]++;if(this.hasPosition(allowedPositions,TooltipPosition.top)){cov_16v1ahi2jt().b[25][0]++;cov_16v1ahi2jt().s[39]++;return TooltipPosition.top;}else{cov_16v1ahi2jt().b[25][1]++;}cov_16v1ahi2jt().s[40]++;if(this.hasPosition(allowedPositions,TooltipPosition.right)){cov_16v1ahi2jt().b[26][0]++;cov_16v1ahi2jt().s[41]++;return TooltipPosition.right;}else{cov_16v1ahi2jt().b[26][1]++;}cov_16v1ahi2jt().s[42]++;if(this.hasPosition(allowedPositions,TooltipPosition.bottom)){cov_16v1ahi2jt().b[27][0]++;cov_16v1ahi2jt().s[43]++;return TooltipPosition.bottom;}else{cov_16v1ahi2jt().b[27][1]++;}cov_16v1ahi2jt().s[44]++;if(this.hasPosition(allowedPositions,TooltipPosition.topend)){cov_16v1ahi2jt().b[28][0]++;cov_16v1ahi2jt().s[45]++;return TooltipPosition.topend;}else{cov_16v1ahi2jt().b[28][1]++;}cov_16v1ahi2jt().s[46]++;if(this.hasPosition(allowedPositions,TooltipPosition.bottomend)){cov_16v1ahi2jt().b[29][0]++;cov_16v1ahi2jt().s[47]++;return TooltipPosition.bottomend;}else{cov_16v1ahi2jt().b[29][1]++;}// Default Position if empty
33
- cov_16v1ahi2jt().s[48]++;return TooltipPosition.right;}/**
34
- * Calculates the position of the tooltip from links
35
- *
36
- * @param controlReference Element Reference to angular component
37
- * @param popupContainer Element Reference to container of popup
38
- * @param referenceContainer Element Reference to HTML Element which is the reference to positioning the popup
39
- * @param popupOffset Offset for popup positioning
40
- * @param requestedPosition Requested Position by Control
41
- */getPositionLeft(referenceContainer,popupContainer,controlReference,arrowWidth,arrowHeight,requestedPosition,referenceIsContainer){cov_16v1ahi2jt().f[6]++;cov_16v1ahi2jt().s[49]++;if((cov_16v1ahi2jt().b[31][0]++,referenceContainer!==null)&&(cov_16v1ahi2jt().b[31][1]++,referenceContainer!==undefined)){cov_16v1ahi2jt().b[30][0]++;const item=(cov_16v1ahi2jt().s[50]++,referenceContainer.nativeElement);cov_16v1ahi2jt().s[51]++;if(item.children.length>=1){cov_16v1ahi2jt().b[32][0]++;const childItem=(cov_16v1ahi2jt().s[52]++,referenceIsContainer?(cov_16v1ahi2jt().b[33][0]++,item.firstElementChild):(cov_16v1ahi2jt().b[33][1]++,item));const contentPosition=(cov_16v1ahi2jt().s[53]++,childItem.getBoundingClientRect());cov_16v1ahi2jt().s[54]++;switch(this.getDisplayPosition(referenceContainer,popupContainer,arrowWidth,arrowHeight,requestedPosition,referenceIsContainer)){case TooltipPosition.top:cov_16v1ahi2jt().b[34][0]++;case TooltipPosition.bottom:cov_16v1ahi2jt().b[34][1]++;cov_16v1ahi2jt().s[55]++;return contentPosition.left+contentPosition.width/2-this.getPopupWidth(popupContainer)/2;case TooltipPosition.topend:cov_16v1ahi2jt().b[34][2]++;case TooltipPosition.bottomend:cov_16v1ahi2jt().b[34][3]++;cov_16v1ahi2jt().s[56]++;return contentPosition.left+contentPosition.width-this.getPopupWidth(popupContainer);case TooltipPosition.right:cov_16v1ahi2jt().b[34][4]++;cov_16v1ahi2jt().s[57]++;return contentPosition.left+contentPosition.width+arrowWidth/2;case TooltipPosition.left:cov_16v1ahi2jt().b[34][5]++;cov_16v1ahi2jt().s[58]++;return contentPosition.left-this.getPopupWidth(popupContainer)+arrowWidth/2*-1;}cov_16v1ahi2jt().s[59]++;return referenceContainer.nativeElement.offsetTop;}else{cov_16v1ahi2jt().b[32][1]++;cov_16v1ahi2jt().s[60]++;return referenceContainer.nativeElement.offsetTop;}}else{cov_16v1ahi2jt().b[30][1]++;cov_16v1ahi2jt().s[61]++;return controlReference.nativeElement.offsetLeft;}}/**
42
- * Calculates the position of the tooltip from the top
43
- *
44
- * @param controlReference Element Reference to angular component
45
- * @param popupContainer Element Reference to container of popup
46
- * @param referenceContainer Element Reference to HTML Element which is the reference to positioning the popup
47
- * @param popupOffset Offset for popup positioning
48
- * @param requestedPosition Requested Position by Control
49
- */getPositionTop(referenceContainer,popupContainer,controlReference,arrowWidth,arrowHeight,requestedPosition,referenceIsContainer){cov_16v1ahi2jt().f[7]++;cov_16v1ahi2jt().s[62]++;if((cov_16v1ahi2jt().b[36][0]++,referenceContainer!==null)&&(cov_16v1ahi2jt().b[36][1]++,referenceContainer!==undefined)){cov_16v1ahi2jt().b[35][0]++;const item=(cov_16v1ahi2jt().s[63]++,referenceContainer.nativeElement);cov_16v1ahi2jt().s[64]++;if(item.children.length>=1){cov_16v1ahi2jt().b[37][0]++;const childItem=(cov_16v1ahi2jt().s[65]++,referenceIsContainer?(cov_16v1ahi2jt().b[38][0]++,item.firstElementChild):(cov_16v1ahi2jt().b[38][1]++,item));const contentPosition=(cov_16v1ahi2jt().s[66]++,childItem.getBoundingClientRect());// Get Position with Scroll (Scrollbars inside page should be substracted)
50
- const contentPositionTop=(cov_16v1ahi2jt().s[67]++,childItem.offsetTop+this.getOffsetTopParent(childItem.offsetParent)+this.getScrollTopParent(childItem.parentElement));cov_16v1ahi2jt().s[68]++;switch(this.getDisplayPosition(referenceContainer,popupContainer,arrowWidth,arrowHeight,requestedPosition,referenceIsContainer)){case TooltipPosition.top:cov_16v1ahi2jt().b[39][0]++;case TooltipPosition.topend:cov_16v1ahi2jt().b[39][1]++;cov_16v1ahi2jt().s[69]++;return contentPositionTop-this.getPopupHeight(popupContainer)+arrowHeight/2*-1;case TooltipPosition.right:cov_16v1ahi2jt().b[39][2]++;case TooltipPosition.left:cov_16v1ahi2jt().b[39][3]++;cov_16v1ahi2jt().s[70]++;return contentPositionTop+contentPosition.height/2-this.getPopupHeight(popupContainer)/2;case TooltipPosition.bottom:cov_16v1ahi2jt().b[39][4]++;case TooltipPosition.bottomend:cov_16v1ahi2jt().b[39][5]++;cov_16v1ahi2jt().s[71]++;return contentPositionTop+contentPosition.height+arrowHeight/2;}cov_16v1ahi2jt().s[72]++;return childItem.clientTop+childItem.offsetTop-(this.getPopupHeight(popupContainer)/2-childItem.offsetHeight/2);}else{cov_16v1ahi2jt().b[37][1]++;cov_16v1ahi2jt().s[73]++;return referenceContainer.nativeElement.offsetTop;}}else{cov_16v1ahi2jt().b[35][1]++;cov_16v1ahi2jt().s[74]++;return controlReference.nativeElement.offsetTop;}}/**
51
- * Returns whether the position has been configured
52
- *
53
- * @param allowedPositions Positions that allowed by control
54
- * @param requestedPosition Position to be checked
55
- */hasPosition(allowedPositions,requestedPosition){cov_16v1ahi2jt().f[8]++;const positions=(cov_16v1ahi2jt().s[75]++,allowedPositions.split('|'));cov_16v1ahi2jt().s[76]++;if((cov_16v1ahi2jt().b[41][0]++,requestedPosition===TooltipPosition.right)&&(cov_16v1ahi2jt().b[41][1]++,positions.indexOf('right')>=0)){cov_16v1ahi2jt().b[40][0]++;cov_16v1ahi2jt().s[77]++;return true;}else{cov_16v1ahi2jt().b[40][1]++;}cov_16v1ahi2jt().s[78]++;if((cov_16v1ahi2jt().b[43][0]++,requestedPosition===TooltipPosition.top)&&(cov_16v1ahi2jt().b[43][1]++,positions.indexOf('top')>=0)){cov_16v1ahi2jt().b[42][0]++;cov_16v1ahi2jt().s[79]++;return true;}else{cov_16v1ahi2jt().b[42][1]++;}cov_16v1ahi2jt().s[80]++;if((cov_16v1ahi2jt().b[45][0]++,requestedPosition===TooltipPosition.left)&&(cov_16v1ahi2jt().b[45][1]++,positions.indexOf('left')>=0)){cov_16v1ahi2jt().b[44][0]++;cov_16v1ahi2jt().s[81]++;return true;}else{cov_16v1ahi2jt().b[44][1]++;}cov_16v1ahi2jt().s[82]++;if((cov_16v1ahi2jt().b[47][0]++,requestedPosition===TooltipPosition.bottom)&&(cov_16v1ahi2jt().b[47][1]++,positions.indexOf('bottom')>=0)){cov_16v1ahi2jt().b[46][0]++;cov_16v1ahi2jt().s[83]++;return true;}else{cov_16v1ahi2jt().b[46][1]++;}cov_16v1ahi2jt().s[84]++;if((cov_16v1ahi2jt().b[49][0]++,requestedPosition===TooltipPosition.topend)&&(cov_16v1ahi2jt().b[49][1]++,positions.indexOf('topend')>=0)){cov_16v1ahi2jt().b[48][0]++;cov_16v1ahi2jt().s[85]++;return true;}else{cov_16v1ahi2jt().b[48][1]++;}cov_16v1ahi2jt().s[86]++;if((cov_16v1ahi2jt().b[51][0]++,requestedPosition===TooltipPosition.bottomend)&&(cov_16v1ahi2jt().b[51][1]++,positions.indexOf('bottomend')>=0)){cov_16v1ahi2jt().b[50][0]++;cov_16v1ahi2jt().s[87]++;return true;}else{cov_16v1ahi2jt().b[50][1]++;}cov_16v1ahi2jt().s[88]++;return false;}/**
56
- * Defines whether AutoPosition is active
57
- * @param positionProperty List of allowed positions
58
- */isAutoPosition(positionProperty){cov_16v1ahi2jt().f[9]++;const positions=(cov_16v1ahi2jt().s[89]++,positionProperty.split('|'));cov_16v1ahi2jt().s[90]++;return positions.indexOf('auto')>=0;}/**
59
- * Checks whether the position is valid or whether the tooltip on the position has space
60
- */validatePositions(referenceContainer,popupcontentcontainer,arrowWidth,arrowHeight,referenceIsContainer){cov_16v1ahi2jt().f[10]++;cov_16v1ahi2jt().s[91]++;// Check if Container is false
61
- if(popupcontentcontainer===undefined){cov_16v1ahi2jt().b[52][0]++;cov_16v1ahi2jt().s[92]++;return TooltipPosition.right;}else{cov_16v1ahi2jt().b[52][1]++;}let allowedPositions=(cov_16v1ahi2jt().s[93]++,TooltipPosition.none);const basePosition=(cov_16v1ahi2jt().s[94]++,referenceIsContainer?(cov_16v1ahi2jt().b[53][0]++,referenceContainer.nativeElement.firstElementChild.getBoundingClientRect()):(cov_16v1ahi2jt().b[53][1]++,referenceContainer.nativeElement.getBoundingClientRect()));const tooltipRect=(cov_16v1ahi2jt().s[95]++,popupcontentcontainer.nativeElement.firstElementChild.getBoundingClientRect());const leftPosOk=(cov_16v1ahi2jt().s[96]++,basePosition.left-tooltipRect.width+arrowWidth*-1>0);const rightPosOk=(cov_16v1ahi2jt().s[97]++,basePosition.right+tooltipRect.width+arrowWidth<window.innerWidth);const topPosOk=(cov_16v1ahi2jt().s[98]++,basePosition.top-tooltipRect.height+arrowHeight>0);const bottomPosOk=(cov_16v1ahi2jt().s[99]++,basePosition.bottom+tooltipRect.height+arrowHeight<window.innerHeight);const leftHalfPosOk=(cov_16v1ahi2jt().s[100]++,basePosition.left-tooltipRect.width/2>0);const rightHalfPosOk=(cov_16v1ahi2jt().s[101]++,basePosition.right+tooltipRect.width/2<window.innerWidth);const topHalfPosOk=(cov_16v1ahi2jt().s[102]++,basePosition.top-tooltipRect.height/2>0);const bottomHalfPosOk=(cov_16v1ahi2jt().s[103]++,basePosition.bottom+tooltipRect.height/2<window.innerHeight);cov_16v1ahi2jt().s[104]++;if((cov_16v1ahi2jt().b[55][0]++,leftPosOk)&&(cov_16v1ahi2jt().b[55][1]++,topPosOk)){cov_16v1ahi2jt().b[54][0]++;cov_16v1ahi2jt().s[105]++;// tslint:disable-next-line:no-bitwise
62
- allowedPositions=allowedPositions|TooltipPosition.topend;}else{cov_16v1ahi2jt().b[54][1]++;}cov_16v1ahi2jt().s[106]++;if((cov_16v1ahi2jt().b[57][0]++,leftPosOk)&&(cov_16v1ahi2jt().b[57][1]++,bottomPosOk)){cov_16v1ahi2jt().b[56][0]++;cov_16v1ahi2jt().s[107]++;// tslint:disable-next-line:no-bitwise
63
- allowedPositions=allowedPositions|TooltipPosition.bottomend;}else{cov_16v1ahi2jt().b[56][1]++;}cov_16v1ahi2jt().s[108]++;if((cov_16v1ahi2jt().b[59][0]++,leftPosOk)&&(cov_16v1ahi2jt().b[59][1]++,topHalfPosOk)&&(cov_16v1ahi2jt().b[59][2]++,bottomHalfPosOk)){cov_16v1ahi2jt().b[58][0]++;cov_16v1ahi2jt().s[109]++;// tslint:disable-next-line:no-bitwise
64
- allowedPositions=allowedPositions|TooltipPosition.left;}else{cov_16v1ahi2jt().b[58][1]++;}cov_16v1ahi2jt().s[110]++;if((cov_16v1ahi2jt().b[61][0]++,rightPosOk)&&(cov_16v1ahi2jt().b[61][1]++,topHalfPosOk)&&(cov_16v1ahi2jt().b[61][2]++,bottomHalfPosOk)){cov_16v1ahi2jt().b[60][0]++;cov_16v1ahi2jt().s[111]++;// tslint:disable-next-line:no-bitwise
65
- allowedPositions=allowedPositions|TooltipPosition.right;}else{cov_16v1ahi2jt().b[60][1]++;}cov_16v1ahi2jt().s[112]++;if((cov_16v1ahi2jt().b[63][0]++,topPosOk)&&(cov_16v1ahi2jt().b[63][1]++,leftHalfPosOk)&&(cov_16v1ahi2jt().b[63][2]++,rightHalfPosOk)){cov_16v1ahi2jt().b[62][0]++;cov_16v1ahi2jt().s[113]++;// tslint:disable-next-line:no-bitwise
66
- allowedPositions=allowedPositions|TooltipPosition.top;}else{cov_16v1ahi2jt().b[62][1]++;}cov_16v1ahi2jt().s[114]++;if((cov_16v1ahi2jt().b[65][0]++,bottomPosOk)&&(cov_16v1ahi2jt().b[65][1]++,leftHalfPosOk)&&(cov_16v1ahi2jt().b[65][2]++,rightHalfPosOk)){cov_16v1ahi2jt().b[64][0]++;cov_16v1ahi2jt().s[115]++;// tslint:disable-next-line:no-bitwise
67
- allowedPositions=allowedPositions|TooltipPosition.bottom;}else{cov_16v1ahi2jt().b[64][1]++;}cov_16v1ahi2jt().s[116]++;return allowedPositions;}// #endregion Public Methods
1
+ function cov_20dzm1ja8p(){var path="/home/runner/work/simpleangularcontrols/simpleangularcontrols/ch.jnetwork.sac-controls/dist/sac-common/esm2020/utilities/popuphelper.mjs";var hash="c400d4dfb8e6f136882374d4e2cc4c6bab2fd6ff";var global=new Function("return this")();var gcv="__coverage__";var coverageData={path:"/home/runner/work/simpleangularcontrols/simpleangularcontrols/ch.jnetwork.sac-controls/dist/sac-common/esm2020/utilities/popuphelper.mjs",statementMap:{"0":{start:{line:5,column:8},end:{line:12,column:9}},"1":{start:{line:6,column:12},end:{line:8,column:64}},"2":{start:{line:11,column:12},end:{line:11,column:21}},"3":{start:{line:15,column:8},end:{line:22,column:9}},"4":{start:{line:16,column:12},end:{line:18,column:63}},"5":{start:{line:21,column:12},end:{line:21,column:21}},"6":{start:{line:34,column:31},end:{line:34,column:143}},"7":{start:{line:36,column:8},end:{line:38,column:9}},"8":{start:{line:37,column:12},end:{line:37,column:41}},"9":{start:{line:40,column:8},end:{line:42,column:9}},"10":{start:{line:41,column:12},end:{line:41,column:39}},"11":{start:{line:44,column:8},end:{line:46,column:9}},"12":{start:{line:45,column:12},end:{line:45,column:40}},"13":{start:{line:48,column:8},end:{line:50,column:9}},"14":{start:{line:49,column:12},end:{line:49,column:42}},"15":{start:{line:51,column:8},end:{line:53,column:9}},"16":{start:{line:52,column:12},end:{line:52,column:42}},"17":{start:{line:54,column:8},end:{line:57,column:9}},"18":{start:{line:56,column:12},end:{line:56,column:45}},"19":{start:{line:59,column:8},end:{line:80,column:9}},"20":{start:{line:61,column:12},end:{line:63,column:13}},"21":{start:{line:62,column:16},end:{line:62,column:45}},"22":{start:{line:65,column:12},end:{line:67,column:13}},"23":{start:{line:66,column:16},end:{line:66,column:43}},"24":{start:{line:69,column:12},end:{line:71,column:13}},"25":{start:{line:70,column:16},end:{line:70,column:44}},"26":{start:{line:73,column:12},end:{line:75,column:13}},"27":{start:{line:74,column:16},end:{line:74,column:46}},"28":{start:{line:76,column:12},end:{line:76,column:41}},"29":{start:{line:79,column:12},end:{line:79,column:54}},"30":{start:{line:88,column:8},end:{line:93,column:9}},"31":{start:{line:89,column:12},end:{line:89,column:79}},"32":{start:{line:92,column:12},end:{line:92,column:21}},"33":{start:{line:101,column:8},end:{line:106,column:9}},"34":{start:{line:102,column:12},end:{line:102,column:73}},"35":{start:{line:105,column:12},end:{line:105,column:21}},"36":{start:{line:114,column:8},end:{line:116,column:9}},"37":{start:{line:115,column:12},end:{line:115,column:40}},"38":{start:{line:117,column:8},end:{line:119,column:9}},"39":{start:{line:118,column:12},end:{line:118,column:39}},"40":{start:{line:120,column:8},end:{line:122,column:9}},"41":{start:{line:121,column:12},end:{line:121,column:41}},"42":{start:{line:123,column:8},end:{line:125,column:9}},"43":{start:{line:124,column:12},end:{line:124,column:42}},"44":{start:{line:126,column:8},end:{line:128,column:9}},"45":{start:{line:127,column:12},end:{line:127,column:42}},"46":{start:{line:129,column:8},end:{line:131,column:9}},"47":{start:{line:130,column:12},end:{line:130,column:45}},"48":{start:{line:133,column:8},end:{line:133,column:37}},"49":{start:{line:145,column:8},end:{line:170,column:9}},"50":{start:{line:146,column:25},end:{line:146,column:57}},"51":{start:{line:147,column:12},end:{line:166,column:13}},"52":{start:{line:148,column:34},end:{line:148,column:86}},"53":{start:{line:149,column:40},end:{line:149,column:73}},"54":{start:{line:150,column:16},end:{line:161,column:17}},"55":{start:{line:153,column:24},end:{line:153,column:123}},"56":{start:{line:156,column:24},end:{line:156,column:113}},"57":{start:{line:158,column:24},end:{line:158,column:93}},"58":{start:{line:160,column:24},end:{line:160,column:113}},"59":{start:{line:162,column:16},end:{line:162,column:66}},"60":{start:{line:165,column:16},end:{line:165,column:66}},"61":{start:{line:169,column:12},end:{line:169,column:61}},"62":{start:{line:182,column:8},end:{line:212,column:9}},"63":{start:{line:183,column:25},end:{line:183,column:57}},"64":{start:{line:184,column:12},end:{line:208,column:13}},"65":{start:{line:185,column:34},end:{line:185,column:86}},"66":{start:{line:186,column:40},end:{line:186,column:73}},"67":{start:{line:188,column:43},end:{line:190,column:68}},"68":{start:{line:191,column:16},end:{line:201,column:17}},"69":{start:{line:194,column:24},end:{line:194,column:113}},"70":{start:{line:197,column:24},end:{line:197,column:123}},"71":{start:{line:200,column:24},end:{line:200,column:93}},"72":{start:{line:202,column:16},end:{line:204,column:92}},"73":{start:{line:207,column:16},end:{line:207,column:66}},"74":{start:{line:211,column:12},end:{line:211,column:60}},"75":{start:{line:221,column:26},end:{line:221,column:53}},"76":{start:{line:222,column:8},end:{line:224,column:9}},"77":{start:{line:223,column:12},end:{line:223,column:24}},"78":{start:{line:225,column:8},end:{line:227,column:9}},"79":{start:{line:226,column:12},end:{line:226,column:24}},"80":{start:{line:228,column:8},end:{line:230,column:9}},"81":{start:{line:229,column:12},end:{line:229,column:24}},"82":{start:{line:231,column:8},end:{line:233,column:9}},"83":{start:{line:232,column:12},end:{line:232,column:24}},"84":{start:{line:234,column:8},end:{line:236,column:9}},"85":{start:{line:235,column:12},end:{line:235,column:24}},"86":{start:{line:237,column:8},end:{line:239,column:9}},"87":{start:{line:238,column:12},end:{line:238,column:24}},"88":{start:{line:240,column:8},end:{line:240,column:21}},"89":{start:{line:247,column:26},end:{line:247,column:53}},"90":{start:{line:248,column:8},end:{line:248,column:46}},"91":{start:{line:255,column:8},end:{line:257,column:9}},"92":{start:{line:256,column:12},end:{line:256,column:41}},"93":{start:{line:258,column:31},end:{line:258,column:51}},"94":{start:{line:259,column:29},end:{line:261,column:70}},"95":{start:{line:262,column:28},end:{line:262,column:105}},"96":{start:{line:263,column:26},end:{line:263,column:85}},"97":{start:{line:264,column:27},end:{line:264,column:98}},"98":{start:{line:265,column:25},end:{line:265,column:80}},"99":{start:{line:266,column:28},end:{line:266,column:103}},"100":{start:{line:267,column:30},end:{line:267,column:75}},"101":{start:{line:268,column:31},end:{line:268,column:93}},"102":{start:{line:269,column:29},end:{line:269,column:74}},"103":{start:{line:270,column:32},end:{line:270,column:97}},"104":{start:{line:271,column:8},end:{line:274,column:9}},"105":{start:{line:273,column:12},end:{line:273,column:73}},"106":{start:{line:275,column:8},end:{line:278,column:9}},"107":{start:{line:277,column:12},end:{line:277,column:76}},"108":{start:{line:279,column:8},end:{line:282,column:9}},"109":{start:{line:281,column:12},end:{line:281,column:71}},"110":{start:{line:283,column:8},end:{line:286,column:9}},"111":{start:{line:285,column:12},end:{line:285,column:72}},"112":{start:{line:287,column:8},end:{line:290,column:9}},"113":{start:{line:289,column:12},end:{line:289,column:70}},"114":{start:{line:291,column:8},end:{line:294,column:9}},"115":{start:{line:293,column:12},end:{line:293,column:73}},"116":{start:{line:295,column:8},end:{line:295,column:32}},"117":{start:{line:305,column:8},end:{line:307,column:9}},"118":{start:{line:306,column:12},end:{line:306,column:21}},"119":{start:{line:308,column:8},end:{line:310,column:9}},"120":{start:{line:309,column:12},end:{line:309,column:37}},"121":{start:{line:311,column:28},end:{line:311,column:73}},"122":{start:{line:312,column:21},end:{line:312,column:38}},"123":{start:{line:313,column:8},end:{line:313,column:36}},"124":{start:{line:322,column:8},end:{line:324,column:9}},"125":{start:{line:323,column:12},end:{line:323,column:21}},"126":{start:{line:326,column:8},end:{line:328,column:9}},"127":{start:{line:327,column:12},end:{line:327,column:51}},"128":{start:{line:329,column:29},end:{line:329,column:34}},"129":{start:{line:330,column:8},end:{line:332,column:9}},"130":{start:{line:331,column:12},end:{line:331,column:34}},"131":{start:{line:333,column:28},end:{line:333,column:101}},"132":{start:{line:334,column:8},end:{line:339,column:9}},"133":{start:{line:335,column:12},end:{line:335,column:51}},"134":{start:{line:338,column:12},end:{line:338,column:56}}},fnMap:{"0":{name:"(anonymous_0)",decl:{start:{line:4,column:4},end:{line:4,column:5}},loc:{start:{line:4,column:65},end:{line:13,column:5}},line:4},"1":{name:"(anonymous_1)",decl:{start:{line:14,column:4},end:{line:14,column:5}},loc:{start:{line:14,column:64},end:{line:23,column:5}},line:14},"2":{name:"(anonymous_2)",decl:{start:{line:33,column:4},end:{line:33,column:5}},loc:{start:{line:33,column:131},end:{line:81,column:5}},line:33},"3":{name:"(anonymous_3)",decl:{start:{line:87,column:4},end:{line:87,column:5}},loc:{start:{line:87,column:30},end:{line:94,column:5}},line:87},"4":{name:"(anonymous_4)",decl:{start:{line:100,column:4},end:{line:100,column:5}},loc:{start:{line:100,column:29},end:{line:107,column:5}},line:100},"5":{name:"(anonymous_5)",decl:{start:{line:113,column:4},end:{line:113,column:5}},loc:{start:{line:113,column:34},end:{line:134,column:5}},line:113},"6":{name:"(anonymous_6)",decl:{start:{line:144,column:4},end:{line:144,column:5}},loc:{start:{line:144,column:140},end:{line:171,column:5}},line:144},"7":{name:"(anonymous_7)",decl:{start:{line:181,column:4},end:{line:181,column:5}},loc:{start:{line:181,column:139},end:{line:213,column:5}},line:181},"8":{name:"(anonymous_8)",decl:{start:{line:220,column:4},end:{line:220,column:5}},loc:{start:{line:220,column:53},end:{line:241,column:5}},line:220},"9":{name:"(anonymous_9)",decl:{start:{line:246,column:4},end:{line:246,column:5}},loc:{start:{line:246,column:37},end:{line:249,column:5}},line:246},"10":{name:"(anonymous_10)",decl:{start:{line:253,column:4},end:{line:253,column:5}},loc:{start:{line:253,column:112},end:{line:296,column:5}},line:253},"11":{name:"(anonymous_11)",decl:{start:{line:304,column:4},end:{line:304,column:5}},loc:{start:{line:304,column:32},end:{line:314,column:5}},line:304},"12":{name:"(anonymous_12)",decl:{start:{line:321,column:4},end:{line:321,column:5}},loc:{start:{line:321,column:49},end:{line:340,column:5}},line:321}},branchMap:{"0":{loc:{start:{line:5,column:8},end:{line:12,column:9}},type:"if",locations:[{start:{line:5,column:8},end:{line:12,column:9}},{start:{line:5,column:8},end:{line:12,column:9}}],line:5},"1":{loc:{start:{line:6,column:19},end:{line:8,column:63}},type:"cond-expr",locations:[{start:{line:7,column:18},end:{line:7,column:81}},{start:{line:8,column:18},end:{line:8,column:63}}],line:6},"2":{loc:{start:{line:15,column:8},end:{line:22,column:9}},type:"if",locations:[{start:{line:15,column:8},end:{line:22,column:9}},{start:{line:15,column:8},end:{line:22,column:9}}],line:15},"3":{loc:{start:{line:16,column:19},end:{line:18,column:62}},type:"cond-expr",locations:[{start:{line:17,column:18},end:{line:17,column:80}},{start:{line:18,column:18},end:{line:18,column:62}}],line:16},"4":{loc:{start:{line:36,column:8},end:{line:38,column:9}},type:"if",locations:[{start:{line:36,column:8},end:{line:38,column:9}},{start:{line:36,column:8},end:{line:38,column:9}}],line:36},"5":{loc:{start:{line:36,column:12},end:{line:36,column:111}},type:"binary-expr",locations:[{start:{line:36,column:12},end:{line:36,column:69}},{start:{line:36,column:73},end:{line:36,column:111}}],line:36},"6":{loc:{start:{line:40,column:8},end:{line:42,column:9}},type:"if",locations:[{start:{line:40,column:8},end:{line:42,column:9}},{start:{line:40,column:8},end:{line:42,column:9}}],line:40},"7":{loc:{start:{line:40,column:12},end:{line:40,column:107}},type:"binary-expr",locations:[{start:{line:40,column:12},end:{line:40,column:67}},{start:{line:40,column:71},end:{line:40,column:107}}],line:40},"8":{loc:{start:{line:44,column:8},end:{line:46,column:9}},type:"if",locations:[{start:{line:44,column:8},end:{line:46,column:9}},{start:{line:44,column:8},end:{line:46,column:9}}],line:44},"9":{loc:{start:{line:44,column:12},end:{line:44,column:109}},type:"binary-expr",locations:[{start:{line:44,column:12},end:{line:44,column:68}},{start:{line:44,column:72},end:{line:44,column:109}}],line:44},"10":{loc:{start:{line:48,column:8},end:{line:50,column:9}},type:"if",locations:[{start:{line:48,column:8},end:{line:50,column:9}},{start:{line:48,column:8},end:{line:50,column:9}}],line:48},"11":{loc:{start:{line:48,column:12},end:{line:48,column:113}},type:"binary-expr",locations:[{start:{line:48,column:12},end:{line:48,column:70}},{start:{line:48,column:74},end:{line:48,column:113}}],line:48},"12":{loc:{start:{line:51,column:8},end:{line:53,column:9}},type:"if",locations:[{start:{line:51,column:8},end:{line:53,column:9}},{start:{line:51,column:8},end:{line:53,column:9}}],line:51},"13":{loc:{start:{line:51,column:12},end:{line:51,column:113}},type:"binary-expr",locations:[{start:{line:51,column:12},end:{line:51,column:70}},{start:{line:51,column:74},end:{line:51,column:113}}],line:51},"14":{loc:{start:{line:54,column:8},end:{line:57,column:9}},type:"if",locations:[{start:{line:54,column:8},end:{line:57,column:9}},{start:{line:54,column:8},end:{line:57,column:9}}],line:54},"15":{loc:{start:{line:54,column:12},end:{line:55,column:54}},type:"binary-expr",locations:[{start:{line:54,column:12},end:{line:54,column:73}},{start:{line:55,column:12},end:{line:55,column:54}}],line:54},"16":{loc:{start:{line:59,column:8},end:{line:80,column:9}},type:"if",locations:[{start:{line:59,column:8},end:{line:80,column:9}},{start:{line:59,column:8},end:{line:80,column:9}}],line:59},"17":{loc:{start:{line:61,column:12},end:{line:63,column:13}},type:"if",locations:[{start:{line:61,column:12},end:{line:63,column:13}},{start:{line:61,column:12},end:{line:63,column:13}}],line:61},"18":{loc:{start:{line:65,column:12},end:{line:67,column:13}},type:"if",locations:[{start:{line:65,column:12},end:{line:67,column:13}},{start:{line:65,column:12},end:{line:67,column:13}}],line:65},"19":{loc:{start:{line:69,column:12},end:{line:71,column:13}},type:"if",locations:[{start:{line:69,column:12},end:{line:71,column:13}},{start:{line:69,column:12},end:{line:71,column:13}}],line:69},"20":{loc:{start:{line:73,column:12},end:{line:75,column:13}},type:"if",locations:[{start:{line:73,column:12},end:{line:75,column:13}},{start:{line:73,column:12},end:{line:75,column:13}}],line:73},"21":{loc:{start:{line:88,column:8},end:{line:93,column:9}},type:"if",locations:[{start:{line:88,column:8},end:{line:93,column:9}},{start:{line:88,column:8},end:{line:93,column:9}}],line:88},"22":{loc:{start:{line:89,column:19},end:{line:89,column:78}},type:"binary-expr",locations:[{start:{line:89,column:19},end:{line:89,column:73}},{start:{line:89,column:77},end:{line:89,column:78}}],line:89},"23":{loc:{start:{line:101,column:8},end:{line:106,column:9}},type:"if",locations:[{start:{line:101,column:8},end:{line:106,column:9}},{start:{line:101,column:8},end:{line:106,column:9}}],line:101},"24":{loc:{start:{line:114,column:8},end:{line:116,column:9}},type:"if",locations:[{start:{line:114,column:8},end:{line:116,column:9}},{start:{line:114,column:8},end:{line:116,column:9}}],line:114},"25":{loc:{start:{line:117,column:8},end:{line:119,column:9}},type:"if",locations:[{start:{line:117,column:8},end:{line:119,column:9}},{start:{line:117,column:8},end:{line:119,column:9}}],line:117},"26":{loc:{start:{line:120,column:8},end:{line:122,column:9}},type:"if",locations:[{start:{line:120,column:8},end:{line:122,column:9}},{start:{line:120,column:8},end:{line:122,column:9}}],line:120},"27":{loc:{start:{line:123,column:8},end:{line:125,column:9}},type:"if",locations:[{start:{line:123,column:8},end:{line:125,column:9}},{start:{line:123,column:8},end:{line:125,column:9}}],line:123},"28":{loc:{start:{line:126,column:8},end:{line:128,column:9}},type:"if",locations:[{start:{line:126,column:8},end:{line:128,column:9}},{start:{line:126,column:8},end:{line:128,column:9}}],line:126},"29":{loc:{start:{line:129,column:8},end:{line:131,column:9}},type:"if",locations:[{start:{line:129,column:8},end:{line:131,column:9}},{start:{line:129,column:8},end:{line:131,column:9}}],line:129},"30":{loc:{start:{line:145,column:8},end:{line:170,column:9}},type:"if",locations:[{start:{line:145,column:8},end:{line:170,column:9}},{start:{line:145,column:8},end:{line:170,column:9}}],line:145},"31":{loc:{start:{line:145,column:12},end:{line:145,column:75}},type:"binary-expr",locations:[{start:{line:145,column:12},end:{line:145,column:39}},{start:{line:145,column:43},end:{line:145,column:75}}],line:145},"32":{loc:{start:{line:147,column:12},end:{line:166,column:13}},type:"if",locations:[{start:{line:147,column:12},end:{line:166,column:13}},{start:{line:147,column:12},end:{line:166,column:13}}],line:147},"33":{loc:{start:{line:148,column:34},end:{line:148,column:86}},type:"cond-expr",locations:[{start:{line:148,column:57},end:{line:148,column:79}},{start:{line:148,column:82},end:{line:148,column:86}}],line:148},"34":{loc:{start:{line:150,column:16},end:{line:161,column:17}},type:"switch",locations:[{start:{line:151,column:20},end:{line:151,column:45}},{start:{line:152,column:20},end:{line:153,column:123}},{start:{line:154,column:20},end:{line:154,column:48}},{start:{line:155,column:20},end:{line:156,column:113}},{start:{line:157,column:20},end:{line:158,column:93}},{start:{line:159,column:20},end:{line:160,column:113}}],line:150},"35":{loc:{start:{line:182,column:8},end:{line:212,column:9}},type:"if",locations:[{start:{line:182,column:8},end:{line:212,column:9}},{start:{line:182,column:8},end:{line:212,column:9}}],line:182},"36":{loc:{start:{line:182,column:12},end:{line:182,column:75}},type:"binary-expr",locations:[{start:{line:182,column:12},end:{line:182,column:39}},{start:{line:182,column:43},end:{line:182,column:75}}],line:182},"37":{loc:{start:{line:184,column:12},end:{line:208,column:13}},type:"if",locations:[{start:{line:184,column:12},end:{line:208,column:13}},{start:{line:184,column:12},end:{line:208,column:13}}],line:184},"38":{loc:{start:{line:185,column:34},end:{line:185,column:86}},type:"cond-expr",locations:[{start:{line:185,column:57},end:{line:185,column:79}},{start:{line:185,column:82},end:{line:185,column:86}}],line:185},"39":{loc:{start:{line:191,column:16},end:{line:201,column:17}},type:"switch",locations:[{start:{line:192,column:20},end:{line:192,column:45}},{start:{line:193,column:20},end:{line:194,column:113}},{start:{line:195,column:20},end:{line:195,column:47}},{start:{line:196,column:20},end:{line:197,column:123}},{start:{line:198,column:20},end:{line:198,column:48}},{start:{line:199,column:20},end:{line:200,column:93}}],line:191},"40":{loc:{start:{line:222,column:8},end:{line:224,column:9}},type:"if",locations:[{start:{line:222,column:8},end:{line:224,column:9}},{start:{line:222,column:8},end:{line:224,column:9}}],line:222},"41":{loc:{start:{line:222,column:12},end:{line:222,column:90}},type:"binary-expr",locations:[{start:{line:222,column:12},end:{line:222,column:55}},{start:{line:222,column:59},end:{line:222,column:90}}],line:222},"42":{loc:{start:{line:225,column:8},end:{line:227,column:9}},type:"if",locations:[{start:{line:225,column:8},end:{line:227,column:9}},{start:{line:225,column:8},end:{line:227,column:9}}],line:225},"43":{loc:{start:{line:225,column:12},end:{line:225,column:86}},type:"binary-expr",locations:[{start:{line:225,column:12},end:{line:225,column:53}},{start:{line:225,column:57},end:{line:225,column:86}}],line:225},"44":{loc:{start:{line:228,column:8},end:{line:230,column:9}},type:"if",locations:[{start:{line:228,column:8},end:{line:230,column:9}},{start:{line:228,column:8},end:{line:230,column:9}}],line:228},"45":{loc:{start:{line:228,column:12},end:{line:228,column:88}},type:"binary-expr",locations:[{start:{line:228,column:12},end:{line:228,column:54}},{start:{line:228,column:58},end:{line:228,column:88}}],line:228},"46":{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},"47":{loc:{start:{line:231,column:12},end:{line:231,column:92}},type:"binary-expr",locations:[{start:{line:231,column:12},end:{line:231,column:56}},{start:{line:231,column:60},end:{line:231,column:92}}],line:231},"48":{loc:{start:{line:234,column:8},end:{line:236,column:9}},type:"if",locations:[{start:{line:234,column:8},end:{line:236,column:9}},{start:{line:234,column:8},end:{line:236,column:9}}],line:234},"49":{loc:{start:{line:234,column:12},end:{line:234,column:92}},type:"binary-expr",locations:[{start:{line:234,column:12},end:{line:234,column:56}},{start:{line:234,column:60},end:{line:234,column:92}}],line:234},"50":{loc:{start:{line:237,column:8},end:{line:239,column:9}},type:"if",locations:[{start:{line:237,column:8},end:{line:239,column:9}},{start:{line:237,column:8},end:{line:239,column:9}}],line:237},"51":{loc:{start:{line:237,column:12},end:{line:237,column:98}},type:"binary-expr",locations:[{start:{line:237,column:12},end:{line:237,column:59}},{start:{line:237,column:63},end:{line:237,column:98}}],line:237},"52":{loc:{start:{line:255,column:8},end:{line:257,column:9}},type:"if",locations:[{start:{line:255,column:8},end:{line:257,column:9}},{start:{line:255,column:8},end:{line:257,column:9}}],line:255},"53":{loc:{start:{line:259,column:29},end:{line:261,column:70}},type:"cond-expr",locations:[{start:{line:260,column:14},end:{line:260,column:88}},{start:{line:261,column:14},end:{line:261,column:70}}],line:259},"54":{loc:{start:{line:271,column:8},end:{line:274,column:9}},type:"if",locations:[{start:{line:271,column:8},end:{line:274,column:9}},{start:{line:271,column:8},end:{line:274,column:9}}],line:271},"55":{loc:{start:{line:271,column:12},end:{line:271,column:33}},type:"binary-expr",locations:[{start:{line:271,column:12},end:{line:271,column:21}},{start:{line:271,column:25},end:{line:271,column:33}}],line:271},"56":{loc:{start:{line:275,column:8},end:{line:278,column:9}},type:"if",locations:[{start:{line:275,column:8},end:{line:278,column:9}},{start:{line:275,column:8},end:{line:278,column:9}}],line:275},"57":{loc:{start:{line:275,column:12},end:{line:275,column:36}},type:"binary-expr",locations:[{start:{line:275,column:12},end:{line:275,column:21}},{start:{line:275,column:25},end:{line:275,column:36}}],line:275},"58":{loc:{start:{line:279,column:8},end:{line:282,column:9}},type:"if",locations:[{start:{line:279,column:8},end:{line:282,column:9}},{start:{line:279,column:8},end:{line:282,column:9}}],line:279},"59":{loc:{start:{line:279,column:12},end:{line:279,column:56}},type:"binary-expr",locations:[{start:{line:279,column:12},end:{line:279,column:21}},{start:{line:279,column:25},end:{line:279,column:37}},{start:{line:279,column:41},end:{line:279,column:56}}],line:279},"60":{loc:{start:{line:283,column:8},end:{line:286,column:9}},type:"if",locations:[{start:{line:283,column:8},end:{line:286,column:9}},{start:{line:283,column:8},end:{line:286,column:9}}],line:283},"61":{loc:{start:{line:283,column:12},end:{line:283,column:57}},type:"binary-expr",locations:[{start:{line:283,column:12},end:{line:283,column:22}},{start:{line:283,column:26},end:{line:283,column:38}},{start:{line:283,column:42},end:{line:283,column:57}}],line:283},"62":{loc:{start:{line:287,column:8},end:{line:290,column:9}},type:"if",locations:[{start:{line:287,column:8},end:{line:290,column:9}},{start:{line:287,column:8},end:{line:290,column:9}}],line:287},"63":{loc:{start:{line:287,column:12},end:{line:287,column:55}},type:"binary-expr",locations:[{start:{line:287,column:12},end:{line:287,column:20}},{start:{line:287,column:24},end:{line:287,column:37}},{start:{line:287,column:41},end:{line:287,column:55}}],line:287},"64":{loc:{start:{line:291,column:8},end:{line:294,column:9}},type:"if",locations:[{start:{line:291,column:8},end:{line:294,column:9}},{start:{line:291,column:8},end:{line:294,column:9}}],line:291},"65":{loc:{start:{line:291,column:12},end:{line:291,column:58}},type:"binary-expr",locations:[{start:{line:291,column:12},end:{line:291,column:23}},{start:{line:291,column:27},end:{line:291,column:40}},{start:{line:291,column:44},end:{line:291,column:58}}],line:291},"66":{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},"67":{loc:{start:{line:308,column:8},end:{line:310,column:9}},type:"if",locations:[{start:{line:308,column:8},end:{line:310,column:9}},{start:{line:308,column:8},end:{line:310,column:9}}],line:308},"68":{loc:{start:{line:321,column:32},end:{line:321,column:47}},type:"default-arg",locations:[{start:{line:321,column:42},end:{line:321,column:47}}],line:321},"69":{loc:{start:{line:322,column:8},end:{line:324,column:9}},type:"if",locations:[{start:{line:322,column:8},end:{line:324,column:9}},{start:{line:322,column:8},end:{line:324,column:9}}],line:322},"70":{loc:{start:{line:326,column:8},end:{line:328,column:9}},type:"if",locations:[{start:{line:326,column:8},end:{line:328,column:9}},{start:{line:326,column:8},end:{line:328,column:9}}],line:326},"71":{loc:{start:{line:327,column:19},end:{line:327,column:50}},type:"cond-expr",locations:[{start:{line:327,column:29},end:{line:327,column:46}},{start:{line:327,column:49},end:{line:327,column:50}}],line:327},"72":{loc:{start:{line:330,column:8},end:{line:332,column:9}},type:"if",locations:[{start:{line:330,column:8},end:{line:332,column:9}},{start:{line:330,column:8},end:{line:332,column:9}}],line:330},"73":{loc:{start:{line:333,column:75},end:{line:333,column:100}},type:"binary-expr",locations:[{start:{line:333,column:75},end:{line:333,column:82}},{start:{line:333,column:86},end:{line:333,column:100}}],line:333},"74":{loc:{start:{line:334,column:8},end:{line:339,column:9}},type:"if",locations:[{start:{line:334,column:8},end:{line:339,column:9}},{start:{line:334,column:8},end:{line:339,column:9}}],line:334}},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},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},b:{"0":[0,0],"1":[0,0],"2":[0,0],"3":[0,0],"4":[0,0],"5":[0,0],"6":[0,0],"7":[0,0],"8":[0,0],"9":[0,0],"10":[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,0,0,0,0],"35":[0,0],"36":[0,0],"37":[0,0],"38":[0,0],"39":[0,0,0,0,0,0],"40":[0,0],"41":[0,0],"42":[0,0],"43":[0,0],"44":[0,0],"45":[0,0],"46":[0,0],"47":[0,0],"48":[0,0],"49":[0,0],"50":[0,0],"51":[0,0],"52":[0,0],"53":[0,0],"54":[0,0],"55":[0,0],"56":[0,0],"57":[0,0],"58":[0,0],"59":[0,0,0],"60":[0,0],"61":[0,0,0],"62":[0,0],"63":[0,0,0],"64":[0,0],"65":[0,0,0],"66":[0,0],"67":[0,0],"68":[0],"69":[0,0],"70":[0,0],"71":[0,0],"72":[0,0],"73":[0,0],"74":[0,0]},inputSourceMap:{version:3,file:"popuphelper.js",sourceRoot:"",sources:["../../../../projects/sac-common/src/utilities/popuphelper.ts"],names:[],mappings:"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",sourcesContent:["import { TooltipPosition } from './enums';\nimport { ElementRef } from '@angular/core';\n\nexport class PopUpHelper {\n // #region Public Methods\n\n public getContainerHeight(referenceContainer: ElementRef<HTMLElement>, referenceIsContainer: boolean): number {\n if (referenceContainer) {\n return referenceIsContainer\n ? referenceContainer.nativeElement.firstElementChild.clientHeight\n : referenceContainer.nativeElement.offsetHeight;\n } else {\n return 0;\n }\n }\n\n public getContainerWidth(referenceContainer: ElementRef<HTMLElement>, referenceIsContainer: boolean): number {\n if (referenceContainer) {\n return referenceIsContainer\n ? referenceContainer.nativeElement.firstElementChild.clientWidth\n : referenceContainer.nativeElement.offsetWidth;\n } else {\n return 0;\n }\n }\n\n /**\n * Get Position who the popup would be positioned\n *\n * @param referenceContainer Element Reference to HTML Element which is the reference to positioning the popup\n * @param popupcontentcontainer Element Reference to container of popup\n * @param popupOffset Offset for popup positioning\n * @param allowedPositions Allowed Positions for the popup\n * @returns Returns the position where the popup should be displayed\n */\n public getDisplayPosition(\n referenceContainer: ElementRef<HTMLElement>,\n popupcontentcontainer: ElementRef<HTMLElement>,\n arrowWidth: number,\n arrowHeight: number,\n allowedPositions: string,\n referenceIsContainer: boolean\n ): TooltipPosition {\n const validPositions: TooltipPosition = this.validatePositions(\n referenceContainer,\n popupcontentcontainer,\n arrowWidth,\n arrowHeight,\n referenceIsContainer\n );\n\n // tslint:disable-next-line:no-bitwise\n if (this.hasPosition(allowedPositions, TooltipPosition.right) && validPositions & TooltipPosition.right) {\n return TooltipPosition.right;\n }\n\n // tslint:disable-next-line:no-bitwise\n if (this.hasPosition(allowedPositions, TooltipPosition.top) && validPositions & TooltipPosition.top) {\n return TooltipPosition.top;\n }\n\n // tslint:disable-next-line:no-bitwise\n if (this.hasPosition(allowedPositions, TooltipPosition.left) && validPositions & TooltipPosition.left) {\n return TooltipPosition.left;\n }\n\n // tslint:disable-next-line:no-bitwise\n if (this.hasPosition(allowedPositions, TooltipPosition.bottom) && validPositions & TooltipPosition.bottom) {\n return TooltipPosition.bottom;\n }\n\n if (this.hasPosition(allowedPositions, TooltipPosition.topend) && validPositions & TooltipPosition.topend) {\n return TooltipPosition.topend;\n }\n\n if (\n this.hasPosition(allowedPositions, TooltipPosition.bottomend) &&\n validPositions & TooltipPosition.bottomend\n ) {\n return TooltipPosition.bottomend;\n }\n\n // Get Auto Position or Default\n if (this.isAutoPosition(allowedPositions)) {\n // tslint:disable-next-line:no-bitwise\n if (validPositions & TooltipPosition.right) {\n return TooltipPosition.right;\n }\n\n // tslint:disable-next-line:no-bitwise\n if (validPositions & TooltipPosition.top) {\n return TooltipPosition.top;\n }\n\n // tslint:disable-next-line:no-bitwise\n if (validPositions & TooltipPosition.left) {\n return TooltipPosition.left;\n }\n\n // tslint:disable-next-line:no-bitwise\n if (validPositions & TooltipPosition.bottom) {\n return TooltipPosition.bottom;\n }\n\n return TooltipPosition.right;\n } else {\n return this.getPosition(allowedPositions);\n }\n }\n\n /**\n * Calculates the height of the popup\n *\n * @param container Element Reference to container of popup\n */\n public getPopupHeight(container: ElementRef<HTMLElement>): number {\n if (container) {\n return container.nativeElement.firstElementChild.clientHeight ?? 0;\n } else {\n return 0;\n }\n }\n\n /**\n * Calculates the width of the popup\n *\n * @param container Element Reference to container of popup\n */\n public getPopupWidth(container: ElementRef<HTMLElement>): number {\n if (container) {\n return container.nativeElement.firstElementChild.clientWidth;\n } else {\n return 0;\n }\n }\n\n /**\n * Returns the defined position for the tooltip\n *\n * @param allowedPositions Allowed positions defined in markup for popup\n */\n public getPosition(allowedPositions: string): TooltipPosition {\n if (this.hasPosition(allowedPositions, TooltipPosition.left)) {\n return TooltipPosition.left;\n }\n\n if (this.hasPosition(allowedPositions, TooltipPosition.top)) {\n return TooltipPosition.top;\n }\n\n if (this.hasPosition(allowedPositions, TooltipPosition.right)) {\n return TooltipPosition.right;\n }\n\n if (this.hasPosition(allowedPositions, TooltipPosition.bottom)) {\n return TooltipPosition.bottom;\n }\n\n if (this.hasPosition(allowedPositions, TooltipPosition.topend)) {\n return TooltipPosition.topend;\n }\n\n if (this.hasPosition(allowedPositions, TooltipPosition.bottomend)) {\n return TooltipPosition.bottomend;\n }\n\n // Default Position if empty\n return TooltipPosition.right;\n }\n\n /**\n * Calculates the position of the tooltip from links\n *\n * @param controlReference Element Reference to angular component\n * @param popupContainer Element Reference to container of popup\n * @param referenceContainer Element Reference to HTML Element which is the reference to positioning the popup\n * @param popupOffset Offset for popup positioning\n * @param requestedPosition Requested Position by Control\n */\n public getPositionLeft(\n referenceContainer: ElementRef<HTMLElement>,\n popupContainer: ElementRef<HTMLElement>,\n controlReference: ElementRef,\n arrowWidth: number,\n arrowHeight: number,\n requestedPosition: string,\n referenceIsContainer: boolean\n ): number {\n if (referenceContainer !== null && referenceContainer !== undefined) {\n const item = referenceContainer.nativeElement;\n\n if (item.children.length >= 1) {\n const childItem = referenceIsContainer ? (item.firstElementChild as HTMLElement) : item;\n const contentPosition: DOMRect = childItem.getBoundingClientRect();\n\n switch (\n this.getDisplayPosition(\n referenceContainer,\n popupContainer,\n arrowWidth,\n arrowHeight,\n requestedPosition,\n referenceIsContainer\n )\n ) {\n case TooltipPosition.top:\n case TooltipPosition.bottom:\n return (\n contentPosition.left + contentPosition.width / 2 - this.getPopupWidth(popupContainer) / 2\n );\n case TooltipPosition.topend:\n case TooltipPosition.bottomend:\n return contentPosition.left + contentPosition.width - this.getPopupWidth(popupContainer);\n case TooltipPosition.right:\n return contentPosition.left + contentPosition.width + arrowWidth / 2;\n case TooltipPosition.left:\n return contentPosition.left - this.getPopupWidth(popupContainer) + (arrowWidth / 2) * -1;\n }\n\n return referenceContainer.nativeElement.offsetTop;\n } else {\n return referenceContainer.nativeElement.offsetTop;\n }\n } else {\n return controlReference.nativeElement.offsetLeft;\n }\n }\n\n /**\n * Calculates the position of the tooltip from the top\n *\n * @param controlReference Element Reference to angular component\n * @param popupContainer Element Reference to container of popup\n * @param referenceContainer Element Reference to HTML Element which is the reference to positioning the popup\n * @param popupOffset Offset for popup positioning\n * @param requestedPosition Requested Position by Control\n */\n public getPositionTop(\n referenceContainer: ElementRef<HTMLElement>,\n popupContainer: ElementRef<HTMLElement>,\n controlReference: ElementRef,\n arrowWidth: number,\n arrowHeight: number,\n requestedPosition: string,\n referenceIsContainer: boolean\n ): number {\n if (referenceContainer !== null && referenceContainer !== undefined) {\n const item = referenceContainer.nativeElement;\n if (item.children.length >= 1) {\n const childItem = referenceIsContainer ? (item.firstElementChild as HTMLElement) : item;\n const contentPosition: DOMRect = childItem.getBoundingClientRect();\n\n // Get Position with Scroll (Scrollbars inside page should be substracted)\n const contentPositionTop =\n childItem.offsetTop +\n this.getOffsetTopParent(childItem.offsetParent as HTMLElement) +\n this.getScrollTopParent(childItem.parentElement);\n\n switch (\n this.getDisplayPosition(\n referenceContainer,\n popupContainer,\n arrowWidth,\n arrowHeight,\n requestedPosition,\n referenceIsContainer\n )\n ) {\n case TooltipPosition.top:\n case TooltipPosition.topend:\n return contentPositionTop - this.getPopupHeight(popupContainer) + (arrowHeight / 2) * -1;\n case TooltipPosition.right:\n case TooltipPosition.left:\n return (\n contentPositionTop + contentPosition.height / 2 - this.getPopupHeight(popupContainer) / 2\n );\n case TooltipPosition.bottom:\n case TooltipPosition.bottomend:\n return contentPositionTop + contentPosition.height + arrowHeight / 2;\n }\n\n return (\n childItem.clientTop +\n childItem.offsetTop -\n (this.getPopupHeight(popupContainer) / 2 - childItem.offsetHeight / 2)\n );\n } else {\n return referenceContainer.nativeElement.offsetTop;\n }\n } else {\n return controlReference.nativeElement.offsetTop;\n }\n }\n\n /**\n * Returns whether the position has been configured\n *\n * @param allowedPositions Positions that allowed by control\n * @param requestedPosition Position to be checked\n */\n public hasPosition(allowedPositions: string, requestedPosition: TooltipPosition): boolean {\n const positions = allowedPositions.split('|');\n\n if (requestedPosition === TooltipPosition.right && positions.indexOf('right') >= 0) {\n return true;\n }\n\n if (requestedPosition === TooltipPosition.top && positions.indexOf('top') >= 0) {\n return true;\n }\n\n if (requestedPosition === TooltipPosition.left && positions.indexOf('left') >= 0) {\n return true;\n }\n\n if (requestedPosition === TooltipPosition.bottom && positions.indexOf('bottom') >= 0) {\n return true;\n }\n\n if (requestedPosition === TooltipPosition.topend && positions.indexOf('topend') >= 0) {\n return true;\n }\n if (requestedPosition === TooltipPosition.bottomend && positions.indexOf('bottomend') >= 0) {\n return true;\n }\n\n return false;\n }\n\n /**\n * Defines whether AutoPosition is active\n * @param positionProperty List of allowed positions\n */\n public isAutoPosition(positionProperty: string): boolean {\n const positions = positionProperty.split('|');\n return positions.indexOf('auto') >= 0;\n }\n\n /**\n * Checks whether the position is valid or whether the tooltip on the position has space\n */\n public validatePositions(\n referenceContainer: ElementRef<HTMLElement>,\n popupcontentcontainer: ElementRef<HTMLElement>,\n arrowWidth: number,\n arrowHeight: number,\n referenceIsContainer: boolean\n ): TooltipPosition {\n // Check if Container is false\n if (popupcontentcontainer === undefined) {\n return TooltipPosition.right;\n }\n\n let allowedPositions: TooltipPosition = TooltipPosition.none;\n const basePosition: DOMRect = referenceIsContainer\n ? referenceContainer.nativeElement.firstElementChild.getBoundingClientRect()\n : referenceContainer.nativeElement.getBoundingClientRect();\n const tooltipRect: DOMRect = popupcontentcontainer.nativeElement.firstElementChild.getBoundingClientRect();\n\n const leftPosOk: boolean = basePosition.left - tooltipRect.width + arrowWidth * -1 > 0;\n const rightPosOk: boolean = basePosition.right + tooltipRect.width + arrowWidth < window.innerWidth;\n const topPosOk: boolean = basePosition.top - tooltipRect.height + arrowHeight > 0;\n const bottomPosOk: boolean = basePosition.bottom + tooltipRect.height + arrowHeight < window.innerHeight;\n\n const leftHalfPosOk: boolean = basePosition.left - tooltipRect.width / 2 > 0;\n const rightHalfPosOk: boolean = basePosition.right + tooltipRect.width / 2 < window.innerWidth;\n const topHalfPosOk: boolean = basePosition.top - tooltipRect.height / 2 > 0;\n const bottomHalfPosOk: boolean = basePosition.bottom + tooltipRect.height / 2 < window.innerHeight;\n\n if (leftPosOk && topPosOk) {\n // tslint:disable-next-line:no-bitwise\n allowedPositions = allowedPositions | TooltipPosition.topend;\n }\n\n if (leftPosOk && bottomPosOk) {\n // tslint:disable-next-line:no-bitwise\n allowedPositions = allowedPositions | TooltipPosition.bottomend;\n }\n\n if (leftPosOk && topHalfPosOk && bottomHalfPosOk) {\n // tslint:disable-next-line:no-bitwise\n allowedPositions = allowedPositions | TooltipPosition.left;\n }\n\n if (rightPosOk && topHalfPosOk && bottomHalfPosOk) {\n // tslint:disable-next-line:no-bitwise\n allowedPositions = allowedPositions | TooltipPosition.right;\n }\n\n if (topPosOk && leftHalfPosOk && rightHalfPosOk) {\n // tslint:disable-next-line:no-bitwise\n allowedPositions = allowedPositions | TooltipPosition.top;\n }\n\n if (bottomPosOk && leftHalfPosOk && rightHalfPosOk) {\n // tslint:disable-next-line:no-bitwise\n allowedPositions = allowedPositions | TooltipPosition.bottom;\n }\n\n return allowedPositions;\n }\n\n // #endregion Public Methods\n\n // #region Private Methods\n\n /**\n * Calculates the top of the page inside all elements\n * @param element HTML Element\n * @returns summarized top value for absolute position\n */\n private getOffsetTopParent(element: HTMLElement): number {\n if (element === null) {\n return 0;\n }\n\n if (!element.offsetParent) {\n return element.offsetTop;\n }\n\n const parentValue = this.getOffsetTopParent(element.offsetParent as HTMLElement);\n let offset = element.offsetTop;\n return parentValue + offset;\n }\n\n /**\n * Caclulate Scrollbars inside tree\n * @param element HTML Element\n * @param [isFixed=false] Invert Scroll Position value when style is fixed to preserve negative values\n * @returns Scroll top value of element with all childs\n */\n private getScrollTopParent(element: HTMLElement, isFixed = false): number {\n if (element === null) {\n return 0;\n }\n\n // Body Scroll should not be calculated\n if (!element.parentElement) {\n return isFixed ? element.scrollTop : 0;\n }\n\n let isCurrentFixed = false;\n if (window.getComputedStyle(element).getPropertyValue('position') === 'fixed') {\n isCurrentFixed = true;\n }\n\n const parentValue = this.getScrollTopParent(element.parentElement, isFixed || isCurrentFixed);\n\n if (isFixed) {\n return parentValue + element.scrollTop;\n } else {\n return parentValue + element.scrollTop * -1;\n }\n }\n\n // #endregion Private Methods\n}\n"]},_coverageSchema:"1a1c01bbd47fc00a2c39e90264f33305004495a9",hash:"c400d4dfb8e6f136882374d4e2cc4c6bab2fd6ff"};var coverage=global[gcv]||(global[gcv]={});if(!coverage[path]||coverage[path].hash!==hash){coverage[path]=coverageData;}var actualCoverage=coverage[path];{// @ts-ignore
2
+ cov_20dzm1ja8p=function(){return actualCoverage;};}return actualCoverage;}cov_20dzm1ja8p();import{TooltipPosition}from'./enums';export class PopUpHelper{// #region Public Methods
3
+ getContainerHeight(referenceContainer,referenceIsContainer){cov_20dzm1ja8p().f[0]++;cov_20dzm1ja8p().s[0]++;if(referenceContainer){cov_20dzm1ja8p().b[0][0]++;cov_20dzm1ja8p().s[1]++;return referenceIsContainer?(cov_20dzm1ja8p().b[1][0]++,referenceContainer.nativeElement.firstElementChild.clientHeight):(cov_20dzm1ja8p().b[1][1]++,referenceContainer.nativeElement.offsetHeight);}else{cov_20dzm1ja8p().b[0][1]++;cov_20dzm1ja8p().s[2]++;return 0;}}getContainerWidth(referenceContainer,referenceIsContainer){cov_20dzm1ja8p().f[1]++;cov_20dzm1ja8p().s[3]++;if(referenceContainer){cov_20dzm1ja8p().b[2][0]++;cov_20dzm1ja8p().s[4]++;return referenceIsContainer?(cov_20dzm1ja8p().b[3][0]++,referenceContainer.nativeElement.firstElementChild.clientWidth):(cov_20dzm1ja8p().b[3][1]++,referenceContainer.nativeElement.offsetWidth);}else{cov_20dzm1ja8p().b[2][1]++;cov_20dzm1ja8p().s[5]++;return 0;}}/**
4
+ * Get Position who the popup would be positioned
5
+ *
6
+ * @param referenceContainer Element Reference to HTML Element which is the reference to positioning the popup
7
+ * @param popupcontentcontainer Element Reference to container of popup
8
+ * @param popupOffset Offset for popup positioning
9
+ * @param allowedPositions Allowed Positions for the popup
10
+ * @returns Returns the position where the popup should be displayed
11
+ */getDisplayPosition(referenceContainer,popupcontentcontainer,arrowWidth,arrowHeight,allowedPositions,referenceIsContainer){cov_20dzm1ja8p().f[2]++;const validPositions=(cov_20dzm1ja8p().s[6]++,this.validatePositions(referenceContainer,popupcontentcontainer,arrowWidth,arrowHeight,referenceIsContainer));// tslint:disable-next-line:no-bitwise
12
+ cov_20dzm1ja8p().s[7]++;if((cov_20dzm1ja8p().b[5][0]++,this.hasPosition(allowedPositions,TooltipPosition.right))&&(cov_20dzm1ja8p().b[5][1]++,validPositions&TooltipPosition.right)){cov_20dzm1ja8p().b[4][0]++;cov_20dzm1ja8p().s[8]++;return TooltipPosition.right;}else{cov_20dzm1ja8p().b[4][1]++;}// tslint:disable-next-line:no-bitwise
13
+ cov_20dzm1ja8p().s[9]++;if((cov_20dzm1ja8p().b[7][0]++,this.hasPosition(allowedPositions,TooltipPosition.top))&&(cov_20dzm1ja8p().b[7][1]++,validPositions&TooltipPosition.top)){cov_20dzm1ja8p().b[6][0]++;cov_20dzm1ja8p().s[10]++;return TooltipPosition.top;}else{cov_20dzm1ja8p().b[6][1]++;}// tslint:disable-next-line:no-bitwise
14
+ cov_20dzm1ja8p().s[11]++;if((cov_20dzm1ja8p().b[9][0]++,this.hasPosition(allowedPositions,TooltipPosition.left))&&(cov_20dzm1ja8p().b[9][1]++,validPositions&TooltipPosition.left)){cov_20dzm1ja8p().b[8][0]++;cov_20dzm1ja8p().s[12]++;return TooltipPosition.left;}else{cov_20dzm1ja8p().b[8][1]++;}// tslint:disable-next-line:no-bitwise
15
+ cov_20dzm1ja8p().s[13]++;if((cov_20dzm1ja8p().b[11][0]++,this.hasPosition(allowedPositions,TooltipPosition.bottom))&&(cov_20dzm1ja8p().b[11][1]++,validPositions&TooltipPosition.bottom)){cov_20dzm1ja8p().b[10][0]++;cov_20dzm1ja8p().s[14]++;return TooltipPosition.bottom;}else{cov_20dzm1ja8p().b[10][1]++;}cov_20dzm1ja8p().s[15]++;if((cov_20dzm1ja8p().b[13][0]++,this.hasPosition(allowedPositions,TooltipPosition.topend))&&(cov_20dzm1ja8p().b[13][1]++,validPositions&TooltipPosition.topend)){cov_20dzm1ja8p().b[12][0]++;cov_20dzm1ja8p().s[16]++;return TooltipPosition.topend;}else{cov_20dzm1ja8p().b[12][1]++;}cov_20dzm1ja8p().s[17]++;if((cov_20dzm1ja8p().b[15][0]++,this.hasPosition(allowedPositions,TooltipPosition.bottomend))&&(cov_20dzm1ja8p().b[15][1]++,validPositions&TooltipPosition.bottomend)){cov_20dzm1ja8p().b[14][0]++;cov_20dzm1ja8p().s[18]++;return TooltipPosition.bottomend;}else{cov_20dzm1ja8p().b[14][1]++;}// Get Auto Position or Default
16
+ cov_20dzm1ja8p().s[19]++;if(this.isAutoPosition(allowedPositions)){cov_20dzm1ja8p().b[16][0]++;cov_20dzm1ja8p().s[20]++;// tslint:disable-next-line:no-bitwise
17
+ if(validPositions&TooltipPosition.right){cov_20dzm1ja8p().b[17][0]++;cov_20dzm1ja8p().s[21]++;return TooltipPosition.right;}else{cov_20dzm1ja8p().b[17][1]++;}// tslint:disable-next-line:no-bitwise
18
+ cov_20dzm1ja8p().s[22]++;if(validPositions&TooltipPosition.top){cov_20dzm1ja8p().b[18][0]++;cov_20dzm1ja8p().s[23]++;return TooltipPosition.top;}else{cov_20dzm1ja8p().b[18][1]++;}// tslint:disable-next-line:no-bitwise
19
+ cov_20dzm1ja8p().s[24]++;if(validPositions&TooltipPosition.left){cov_20dzm1ja8p().b[19][0]++;cov_20dzm1ja8p().s[25]++;return TooltipPosition.left;}else{cov_20dzm1ja8p().b[19][1]++;}// tslint:disable-next-line:no-bitwise
20
+ cov_20dzm1ja8p().s[26]++;if(validPositions&TooltipPosition.bottom){cov_20dzm1ja8p().b[20][0]++;cov_20dzm1ja8p().s[27]++;return TooltipPosition.bottom;}else{cov_20dzm1ja8p().b[20][1]++;}cov_20dzm1ja8p().s[28]++;return TooltipPosition.right;}else{cov_20dzm1ja8p().b[16][1]++;cov_20dzm1ja8p().s[29]++;return this.getPosition(allowedPositions);}}/**
21
+ * Calculates the height of the popup
22
+ *
23
+ * @param container Element Reference to container of popup
24
+ */getPopupHeight(container){cov_20dzm1ja8p().f[3]++;cov_20dzm1ja8p().s[30]++;if(container){cov_20dzm1ja8p().b[21][0]++;cov_20dzm1ja8p().s[31]++;return(cov_20dzm1ja8p().b[22][0]++,container.nativeElement.firstElementChild.clientHeight)??(cov_20dzm1ja8p().b[22][1]++,0);}else{cov_20dzm1ja8p().b[21][1]++;cov_20dzm1ja8p().s[32]++;return 0;}}/**
25
+ * Calculates the width of the popup
26
+ *
27
+ * @param container Element Reference to container of popup
28
+ */getPopupWidth(container){cov_20dzm1ja8p().f[4]++;cov_20dzm1ja8p().s[33]++;if(container){cov_20dzm1ja8p().b[23][0]++;cov_20dzm1ja8p().s[34]++;return container.nativeElement.firstElementChild.clientWidth;}else{cov_20dzm1ja8p().b[23][1]++;cov_20dzm1ja8p().s[35]++;return 0;}}/**
29
+ * Returns the defined position for the tooltip
30
+ *
31
+ * @param allowedPositions Allowed positions defined in markup for popup
32
+ */getPosition(allowedPositions){cov_20dzm1ja8p().f[5]++;cov_20dzm1ja8p().s[36]++;if(this.hasPosition(allowedPositions,TooltipPosition.left)){cov_20dzm1ja8p().b[24][0]++;cov_20dzm1ja8p().s[37]++;return TooltipPosition.left;}else{cov_20dzm1ja8p().b[24][1]++;}cov_20dzm1ja8p().s[38]++;if(this.hasPosition(allowedPositions,TooltipPosition.top)){cov_20dzm1ja8p().b[25][0]++;cov_20dzm1ja8p().s[39]++;return TooltipPosition.top;}else{cov_20dzm1ja8p().b[25][1]++;}cov_20dzm1ja8p().s[40]++;if(this.hasPosition(allowedPositions,TooltipPosition.right)){cov_20dzm1ja8p().b[26][0]++;cov_20dzm1ja8p().s[41]++;return TooltipPosition.right;}else{cov_20dzm1ja8p().b[26][1]++;}cov_20dzm1ja8p().s[42]++;if(this.hasPosition(allowedPositions,TooltipPosition.bottom)){cov_20dzm1ja8p().b[27][0]++;cov_20dzm1ja8p().s[43]++;return TooltipPosition.bottom;}else{cov_20dzm1ja8p().b[27][1]++;}cov_20dzm1ja8p().s[44]++;if(this.hasPosition(allowedPositions,TooltipPosition.topend)){cov_20dzm1ja8p().b[28][0]++;cov_20dzm1ja8p().s[45]++;return TooltipPosition.topend;}else{cov_20dzm1ja8p().b[28][1]++;}cov_20dzm1ja8p().s[46]++;if(this.hasPosition(allowedPositions,TooltipPosition.bottomend)){cov_20dzm1ja8p().b[29][0]++;cov_20dzm1ja8p().s[47]++;return TooltipPosition.bottomend;}else{cov_20dzm1ja8p().b[29][1]++;}// Default Position if empty
33
+ cov_20dzm1ja8p().s[48]++;return TooltipPosition.right;}/**
34
+ * Calculates the position of the tooltip from links
35
+ *
36
+ * @param controlReference Element Reference to angular component
37
+ * @param popupContainer Element Reference to container of popup
38
+ * @param referenceContainer Element Reference to HTML Element which is the reference to positioning the popup
39
+ * @param popupOffset Offset for popup positioning
40
+ * @param requestedPosition Requested Position by Control
41
+ */getPositionLeft(referenceContainer,popupContainer,controlReference,arrowWidth,arrowHeight,requestedPosition,referenceIsContainer){cov_20dzm1ja8p().f[6]++;cov_20dzm1ja8p().s[49]++;if((cov_20dzm1ja8p().b[31][0]++,referenceContainer!==null)&&(cov_20dzm1ja8p().b[31][1]++,referenceContainer!==undefined)){cov_20dzm1ja8p().b[30][0]++;const item=(cov_20dzm1ja8p().s[50]++,referenceContainer.nativeElement);cov_20dzm1ja8p().s[51]++;if(item.children.length>=1){cov_20dzm1ja8p().b[32][0]++;const childItem=(cov_20dzm1ja8p().s[52]++,referenceIsContainer?(cov_20dzm1ja8p().b[33][0]++,item.firstElementChild):(cov_20dzm1ja8p().b[33][1]++,item));const contentPosition=(cov_20dzm1ja8p().s[53]++,childItem.getBoundingClientRect());cov_20dzm1ja8p().s[54]++;switch(this.getDisplayPosition(referenceContainer,popupContainer,arrowWidth,arrowHeight,requestedPosition,referenceIsContainer)){case TooltipPosition.top:cov_20dzm1ja8p().b[34][0]++;case TooltipPosition.bottom:cov_20dzm1ja8p().b[34][1]++;cov_20dzm1ja8p().s[55]++;return contentPosition.left+contentPosition.width/2-this.getPopupWidth(popupContainer)/2;case TooltipPosition.topend:cov_20dzm1ja8p().b[34][2]++;case TooltipPosition.bottomend:cov_20dzm1ja8p().b[34][3]++;cov_20dzm1ja8p().s[56]++;return contentPosition.left+contentPosition.width-this.getPopupWidth(popupContainer);case TooltipPosition.right:cov_20dzm1ja8p().b[34][4]++;cov_20dzm1ja8p().s[57]++;return contentPosition.left+contentPosition.width+arrowWidth/2;case TooltipPosition.left:cov_20dzm1ja8p().b[34][5]++;cov_20dzm1ja8p().s[58]++;return contentPosition.left-this.getPopupWidth(popupContainer)+arrowWidth/2*-1;}cov_20dzm1ja8p().s[59]++;return referenceContainer.nativeElement.offsetTop;}else{cov_20dzm1ja8p().b[32][1]++;cov_20dzm1ja8p().s[60]++;return referenceContainer.nativeElement.offsetTop;}}else{cov_20dzm1ja8p().b[30][1]++;cov_20dzm1ja8p().s[61]++;return controlReference.nativeElement.offsetLeft;}}/**
42
+ * Calculates the position of the tooltip from the top
43
+ *
44
+ * @param controlReference Element Reference to angular component
45
+ * @param popupContainer Element Reference to container of popup
46
+ * @param referenceContainer Element Reference to HTML Element which is the reference to positioning the popup
47
+ * @param popupOffset Offset for popup positioning
48
+ * @param requestedPosition Requested Position by Control
49
+ */getPositionTop(referenceContainer,popupContainer,controlReference,arrowWidth,arrowHeight,requestedPosition,referenceIsContainer){cov_20dzm1ja8p().f[7]++;cov_20dzm1ja8p().s[62]++;if((cov_20dzm1ja8p().b[36][0]++,referenceContainer!==null)&&(cov_20dzm1ja8p().b[36][1]++,referenceContainer!==undefined)){cov_20dzm1ja8p().b[35][0]++;const item=(cov_20dzm1ja8p().s[63]++,referenceContainer.nativeElement);cov_20dzm1ja8p().s[64]++;if(item.children.length>=1){cov_20dzm1ja8p().b[37][0]++;const childItem=(cov_20dzm1ja8p().s[65]++,referenceIsContainer?(cov_20dzm1ja8p().b[38][0]++,item.firstElementChild):(cov_20dzm1ja8p().b[38][1]++,item));const contentPosition=(cov_20dzm1ja8p().s[66]++,childItem.getBoundingClientRect());// Get Position with Scroll (Scrollbars inside page should be substracted)
50
+ const contentPositionTop=(cov_20dzm1ja8p().s[67]++,childItem.offsetTop+this.getOffsetTopParent(childItem.offsetParent)+this.getScrollTopParent(childItem.parentElement));cov_20dzm1ja8p().s[68]++;switch(this.getDisplayPosition(referenceContainer,popupContainer,arrowWidth,arrowHeight,requestedPosition,referenceIsContainer)){case TooltipPosition.top:cov_20dzm1ja8p().b[39][0]++;case TooltipPosition.topend:cov_20dzm1ja8p().b[39][1]++;cov_20dzm1ja8p().s[69]++;return contentPositionTop-this.getPopupHeight(popupContainer)+arrowHeight/2*-1;case TooltipPosition.right:cov_20dzm1ja8p().b[39][2]++;case TooltipPosition.left:cov_20dzm1ja8p().b[39][3]++;cov_20dzm1ja8p().s[70]++;return contentPositionTop+contentPosition.height/2-this.getPopupHeight(popupContainer)/2;case TooltipPosition.bottom:cov_20dzm1ja8p().b[39][4]++;case TooltipPosition.bottomend:cov_20dzm1ja8p().b[39][5]++;cov_20dzm1ja8p().s[71]++;return contentPositionTop+contentPosition.height+arrowHeight/2;}cov_20dzm1ja8p().s[72]++;return childItem.clientTop+childItem.offsetTop-(this.getPopupHeight(popupContainer)/2-childItem.offsetHeight/2);}else{cov_20dzm1ja8p().b[37][1]++;cov_20dzm1ja8p().s[73]++;return referenceContainer.nativeElement.offsetTop;}}else{cov_20dzm1ja8p().b[35][1]++;cov_20dzm1ja8p().s[74]++;return controlReference.nativeElement.offsetTop;}}/**
51
+ * Returns whether the position has been configured
52
+ *
53
+ * @param allowedPositions Positions that allowed by control
54
+ * @param requestedPosition Position to be checked
55
+ */hasPosition(allowedPositions,requestedPosition){cov_20dzm1ja8p().f[8]++;const positions=(cov_20dzm1ja8p().s[75]++,allowedPositions.split('|'));cov_20dzm1ja8p().s[76]++;if((cov_20dzm1ja8p().b[41][0]++,requestedPosition===TooltipPosition.right)&&(cov_20dzm1ja8p().b[41][1]++,positions.indexOf('right')>=0)){cov_20dzm1ja8p().b[40][0]++;cov_20dzm1ja8p().s[77]++;return true;}else{cov_20dzm1ja8p().b[40][1]++;}cov_20dzm1ja8p().s[78]++;if((cov_20dzm1ja8p().b[43][0]++,requestedPosition===TooltipPosition.top)&&(cov_20dzm1ja8p().b[43][1]++,positions.indexOf('top')>=0)){cov_20dzm1ja8p().b[42][0]++;cov_20dzm1ja8p().s[79]++;return true;}else{cov_20dzm1ja8p().b[42][1]++;}cov_20dzm1ja8p().s[80]++;if((cov_20dzm1ja8p().b[45][0]++,requestedPosition===TooltipPosition.left)&&(cov_20dzm1ja8p().b[45][1]++,positions.indexOf('left')>=0)){cov_20dzm1ja8p().b[44][0]++;cov_20dzm1ja8p().s[81]++;return true;}else{cov_20dzm1ja8p().b[44][1]++;}cov_20dzm1ja8p().s[82]++;if((cov_20dzm1ja8p().b[47][0]++,requestedPosition===TooltipPosition.bottom)&&(cov_20dzm1ja8p().b[47][1]++,positions.indexOf('bottom')>=0)){cov_20dzm1ja8p().b[46][0]++;cov_20dzm1ja8p().s[83]++;return true;}else{cov_20dzm1ja8p().b[46][1]++;}cov_20dzm1ja8p().s[84]++;if((cov_20dzm1ja8p().b[49][0]++,requestedPosition===TooltipPosition.topend)&&(cov_20dzm1ja8p().b[49][1]++,positions.indexOf('topend')>=0)){cov_20dzm1ja8p().b[48][0]++;cov_20dzm1ja8p().s[85]++;return true;}else{cov_20dzm1ja8p().b[48][1]++;}cov_20dzm1ja8p().s[86]++;if((cov_20dzm1ja8p().b[51][0]++,requestedPosition===TooltipPosition.bottomend)&&(cov_20dzm1ja8p().b[51][1]++,positions.indexOf('bottomend')>=0)){cov_20dzm1ja8p().b[50][0]++;cov_20dzm1ja8p().s[87]++;return true;}else{cov_20dzm1ja8p().b[50][1]++;}cov_20dzm1ja8p().s[88]++;return false;}/**
56
+ * Defines whether AutoPosition is active
57
+ * @param positionProperty List of allowed positions
58
+ */isAutoPosition(positionProperty){cov_20dzm1ja8p().f[9]++;const positions=(cov_20dzm1ja8p().s[89]++,positionProperty.split('|'));cov_20dzm1ja8p().s[90]++;return positions.indexOf('auto')>=0;}/**
59
+ * Checks whether the position is valid or whether the tooltip on the position has space
60
+ */validatePositions(referenceContainer,popupcontentcontainer,arrowWidth,arrowHeight,referenceIsContainer){cov_20dzm1ja8p().f[10]++;cov_20dzm1ja8p().s[91]++;// Check if Container is false
61
+ if(popupcontentcontainer===undefined){cov_20dzm1ja8p().b[52][0]++;cov_20dzm1ja8p().s[92]++;return TooltipPosition.right;}else{cov_20dzm1ja8p().b[52][1]++;}let allowedPositions=(cov_20dzm1ja8p().s[93]++,TooltipPosition.none);const basePosition=(cov_20dzm1ja8p().s[94]++,referenceIsContainer?(cov_20dzm1ja8p().b[53][0]++,referenceContainer.nativeElement.firstElementChild.getBoundingClientRect()):(cov_20dzm1ja8p().b[53][1]++,referenceContainer.nativeElement.getBoundingClientRect()));const tooltipRect=(cov_20dzm1ja8p().s[95]++,popupcontentcontainer.nativeElement.firstElementChild.getBoundingClientRect());const leftPosOk=(cov_20dzm1ja8p().s[96]++,basePosition.left-tooltipRect.width+arrowWidth*-1>0);const rightPosOk=(cov_20dzm1ja8p().s[97]++,basePosition.right+tooltipRect.width+arrowWidth<window.innerWidth);const topPosOk=(cov_20dzm1ja8p().s[98]++,basePosition.top-tooltipRect.height+arrowHeight>0);const bottomPosOk=(cov_20dzm1ja8p().s[99]++,basePosition.bottom+tooltipRect.height+arrowHeight<window.innerHeight);const leftHalfPosOk=(cov_20dzm1ja8p().s[100]++,basePosition.left-tooltipRect.width/2>0);const rightHalfPosOk=(cov_20dzm1ja8p().s[101]++,basePosition.right+tooltipRect.width/2<window.innerWidth);const topHalfPosOk=(cov_20dzm1ja8p().s[102]++,basePosition.top-tooltipRect.height/2>0);const bottomHalfPosOk=(cov_20dzm1ja8p().s[103]++,basePosition.bottom+tooltipRect.height/2<window.innerHeight);cov_20dzm1ja8p().s[104]++;if((cov_20dzm1ja8p().b[55][0]++,leftPosOk)&&(cov_20dzm1ja8p().b[55][1]++,topPosOk)){cov_20dzm1ja8p().b[54][0]++;cov_20dzm1ja8p().s[105]++;// tslint:disable-next-line:no-bitwise
62
+ allowedPositions=allowedPositions|TooltipPosition.topend;}else{cov_20dzm1ja8p().b[54][1]++;}cov_20dzm1ja8p().s[106]++;if((cov_20dzm1ja8p().b[57][0]++,leftPosOk)&&(cov_20dzm1ja8p().b[57][1]++,bottomPosOk)){cov_20dzm1ja8p().b[56][0]++;cov_20dzm1ja8p().s[107]++;// tslint:disable-next-line:no-bitwise
63
+ allowedPositions=allowedPositions|TooltipPosition.bottomend;}else{cov_20dzm1ja8p().b[56][1]++;}cov_20dzm1ja8p().s[108]++;if((cov_20dzm1ja8p().b[59][0]++,leftPosOk)&&(cov_20dzm1ja8p().b[59][1]++,topHalfPosOk)&&(cov_20dzm1ja8p().b[59][2]++,bottomHalfPosOk)){cov_20dzm1ja8p().b[58][0]++;cov_20dzm1ja8p().s[109]++;// tslint:disable-next-line:no-bitwise
64
+ allowedPositions=allowedPositions|TooltipPosition.left;}else{cov_20dzm1ja8p().b[58][1]++;}cov_20dzm1ja8p().s[110]++;if((cov_20dzm1ja8p().b[61][0]++,rightPosOk)&&(cov_20dzm1ja8p().b[61][1]++,topHalfPosOk)&&(cov_20dzm1ja8p().b[61][2]++,bottomHalfPosOk)){cov_20dzm1ja8p().b[60][0]++;cov_20dzm1ja8p().s[111]++;// tslint:disable-next-line:no-bitwise
65
+ allowedPositions=allowedPositions|TooltipPosition.right;}else{cov_20dzm1ja8p().b[60][1]++;}cov_20dzm1ja8p().s[112]++;if((cov_20dzm1ja8p().b[63][0]++,topPosOk)&&(cov_20dzm1ja8p().b[63][1]++,leftHalfPosOk)&&(cov_20dzm1ja8p().b[63][2]++,rightHalfPosOk)){cov_20dzm1ja8p().b[62][0]++;cov_20dzm1ja8p().s[113]++;// tslint:disable-next-line:no-bitwise
66
+ allowedPositions=allowedPositions|TooltipPosition.top;}else{cov_20dzm1ja8p().b[62][1]++;}cov_20dzm1ja8p().s[114]++;if((cov_20dzm1ja8p().b[65][0]++,bottomPosOk)&&(cov_20dzm1ja8p().b[65][1]++,leftHalfPosOk)&&(cov_20dzm1ja8p().b[65][2]++,rightHalfPosOk)){cov_20dzm1ja8p().b[64][0]++;cov_20dzm1ja8p().s[115]++;// tslint:disable-next-line:no-bitwise
67
+ allowedPositions=allowedPositions|TooltipPosition.bottom;}else{cov_20dzm1ja8p().b[64][1]++;}cov_20dzm1ja8p().s[116]++;return allowedPositions;}// #endregion Public Methods
68
68
  // #region Private Methods
69
- /**
70
- * Calculates the top of the page inside all elements
71
- * @param element HTML Element
72
- * @returns summarized top value for absolute position
73
- */getOffsetTopParent(element){cov_16v1ahi2jt().f[11]++;cov_16v1ahi2jt().s[117]++;if(element===null){cov_16v1ahi2jt().b[66][0]++;cov_16v1ahi2jt().s[118]++;return 0;}else{cov_16v1ahi2jt().b[66][1]++;}cov_16v1ahi2jt().s[119]++;if(!element.offsetParent){cov_16v1ahi2jt().b[67][0]++;cov_16v1ahi2jt().s[120]++;return element.offsetTop;}else{cov_16v1ahi2jt().b[67][1]++;}const parentValue=(cov_16v1ahi2jt().s[121]++,this.getOffsetTopParent(element.offsetParent));let offset=(cov_16v1ahi2jt().s[122]++,element.offsetTop);cov_16v1ahi2jt().s[123]++;return parentValue+offset;}/**
74
- * Caclulate Scrollbars inside tree
75
- * @param element HTML Element
76
- * @param [isFixed=false] Invert Scroll Position value when style is fixed to preserve negative values
77
- * @returns Scroll top value of element with all childs
78
- */getScrollTopParent(element,isFixed=(cov_16v1ahi2jt().b[68][0]++,false)){cov_16v1ahi2jt().f[12]++;cov_16v1ahi2jt().s[124]++;if(element===null){cov_16v1ahi2jt().b[69][0]++;cov_16v1ahi2jt().s[125]++;return 0;}else{cov_16v1ahi2jt().b[69][1]++;}// Body Scroll should not be calculated
79
- cov_16v1ahi2jt().s[126]++;if(!element.parentElement){cov_16v1ahi2jt().b[70][0]++;cov_16v1ahi2jt().s[127]++;return isFixed?(cov_16v1ahi2jt().b[71][0]++,element.scrollTop):(cov_16v1ahi2jt().b[71][1]++,0);}else{cov_16v1ahi2jt().b[70][1]++;}let isCurrentFixed=(cov_16v1ahi2jt().s[128]++,false);cov_16v1ahi2jt().s[129]++;if(window.getComputedStyle(element).getPropertyValue('position')==='fixed'){cov_16v1ahi2jt().b[72][0]++;cov_16v1ahi2jt().s[130]++;isCurrentFixed=true;}else{cov_16v1ahi2jt().b[72][1]++;}const parentValue=(cov_16v1ahi2jt().s[131]++,this.getScrollTopParent(element.parentElement,(cov_16v1ahi2jt().b[73][0]++,isFixed)||(cov_16v1ahi2jt().b[73][1]++,isCurrentFixed)));cov_16v1ahi2jt().s[132]++;if(isFixed){cov_16v1ahi2jt().b[74][0]++;cov_16v1ahi2jt().s[133]++;return parentValue+element.scrollTop;}else{cov_16v1ahi2jt().b[74][1]++;cov_16v1ahi2jt().s[134]++;return parentValue+element.scrollTop*-1;}}}//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wdXBoZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9zYWMtY29tbW9uL3NyYy91dGlsaXRpZXMvcG9wdXBoZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUcxQyxNQUFNLE9BQU8sV0FBVztJQUNwQix5QkFBeUI7SUFFbEIsa0JBQWtCLENBQUMsa0JBQTJDLEVBQUUsb0JBQTZCO1FBQ2hHLElBQUksa0JBQWtCLEVBQUU7WUFDcEIsT0FBTyxvQkFBb0I7Z0JBQ3ZCLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLENBQUMsaUJBQWlCLENBQUMsWUFBWTtnQkFDakUsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUM7U0FDdkQ7YUFBTTtZQUNILE9BQU8sQ0FBQyxDQUFDO1NBQ1o7SUFDTCxDQUFDO0lBRU0saUJBQWlCLENBQUMsa0JBQTJDLEVBQUUsb0JBQTZCO1FBQy9GLElBQUksa0JBQWtCLEVBQUU7WUFDcEIsT0FBTyxvQkFBb0I7Z0JBQ3ZCLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLENBQUMsaUJBQWlCLENBQUMsV0FBVztnQkFDaEUsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUM7U0FDdEQ7YUFBTTtZQUNILE9BQU8sQ0FBQyxDQUFDO1NBQ1o7SUFDTCxDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSSxrQkFBa0IsQ0FDckIsa0JBQTJDLEVBQzNDLHFCQUE4QyxFQUM5QyxVQUFrQixFQUNsQixXQUFtQixFQUNuQixnQkFBd0IsRUFDeEIsb0JBQTZCO1FBRTdCLE1BQU0sY0FBYyxHQUFvQixJQUFJLENBQUMsaUJBQWlCLENBQzFELGtCQUFrQixFQUNsQixxQkFBcUIsRUFDckIsVUFBVSxFQUNWLFdBQVcsRUFDWCxvQkFBb0IsQ0FDdkIsQ0FBQztRQUVGLHNDQUFzQztRQUN0QyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsZ0JBQWdCLEVBQUUsZUFBZSxDQUFDLEtBQUssQ0FBQyxJQUFJLGNBQWMsR0FBRyxlQUFlLENBQUMsS0FBSyxFQUFFO1lBQ3JHLE9BQU8sZUFBZSxDQUFDLEtBQUssQ0FBQztTQUNoQztRQUVELHNDQUFzQztRQUN0QyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsZ0JBQWdCLEVBQUUsZUFBZSxDQUFDLEdBQUcsQ0FBQyxJQUFJLGNBQWMsR0FBRyxlQUFlLENBQUMsR0FBRyxFQUFFO1lBQ2pHLE9BQU8sZUFBZSxDQUFDLEdBQUcsQ0FBQztTQUM5QjtRQUVELHNDQUFzQztRQUN0QyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsZ0JBQWdCLEVBQUUsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLGNBQWMsR0FBRyxlQUFlLENBQUMsSUFBSSxFQUFFO1lBQ25HLE9BQU8sZUFBZSxDQUFDLElBQUksQ0FBQztTQUMvQjtRQUVELHNDQUFzQztRQUN0QyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsZ0JBQWdCLEVBQUUsZUFBZSxDQUFDLE1BQU0sQ0FBQyxJQUFJLGNBQWMsR0FBRyxlQUFlLENBQUMsTUFBTSxFQUFFO1lBQ3ZHLE9BQU8sZUFBZSxDQUFDLE1BQU0sQ0FBQztTQUNqQztRQUVELElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsRUFBRSxlQUFlLENBQUMsTUFBTSxDQUFDLElBQUksY0FBYyxHQUFHLGVBQWUsQ0FBQyxNQUFNLEVBQUU7WUFDdkcsT0FBTyxlQUFlLENBQUMsTUFBTSxDQUFDO1NBQ2pDO1FBRUQsSUFDSSxJQUFJLENBQUMsV0FBVyxDQUFDLGdCQUFnQixFQUFFLGVBQWUsQ0FBQyxTQUFTLENBQUM7WUFDN0QsY0FBYyxHQUFHLGVBQWUsQ0FBQyxTQUFTLEVBQzVDO1lBQ0UsT0FBTyxlQUFlLENBQUMsU0FBUyxDQUFDO1NBQ3BDO1FBRUQsK0JBQStCO1FBQy9CLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFO1lBQ3ZDLHNDQUFzQztZQUN0QyxJQUFJLGNBQWMsR0FBRyxlQUFlLENBQUMsS0FBSyxFQUFFO2dCQUN4QyxPQUFPLGVBQWUsQ0FBQyxLQUFLLENBQUM7YUFDaEM7WUFFRCxzQ0FBc0M7WUFDdEMsSUFBSSxjQUFjLEdBQUcsZUFBZSxDQUFDLEdBQUcsRUFBRTtnQkFDdEMsT0FBTyxlQUFlLENBQUMsR0FBRyxDQUFDO2FBQzlCO1lBRUQsc0NBQXNDO1lBQ3RDLElBQUksY0FBYyxHQUFHLGVBQWUsQ0FBQyxJQUFJLEVBQUU7Z0JBQ3ZDLE9BQU8sZUFBZSxDQUFDLElBQUksQ0FBQzthQUMvQjtZQUVELHNDQUFzQztZQUN0QyxJQUFJLGNBQWMsR0FBRyxlQUFlLENBQUMsTUFBTSxFQUFFO2dCQUN6QyxPQUFPLGVBQWUsQ0FBQyxNQUFNLENBQUM7YUFDakM7WUFFRCxPQUFPLGVBQWUsQ0FBQyxLQUFLLENBQUM7U0FDaEM7YUFBTTtZQUNILE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1NBQzdDO0lBQ0wsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxjQUFjLENBQUMsU0FBa0M7UUFDcEQsSUFBSSxTQUFTLEVBQUU7WUFDWCxPQUFPLFNBQVMsQ0FBQyxhQUFhLENBQUMsaUJBQWlCLENBQUMsWUFBWSxJQUFJLENBQUMsQ0FBQztTQUN0RTthQUFNO1lBQ0gsT0FBTyxDQUFDLENBQUM7U0FDWjtJQUNMLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksYUFBYSxDQUFDLFNBQWtDO1FBQ25ELElBQUksU0FBUyxFQUFFO1lBQ1gsT0FBTyxTQUFTLENBQUMsYUFBYSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsQ0FBQztTQUNoRTthQUFNO1lBQ0gsT0FBTyxDQUFDLENBQUM7U0FDWjtJQUNMLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksV0FBVyxDQUFDLGdCQUF3QjtRQUN2QyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsZ0JBQWdCLEVBQUUsZUFBZSxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQzFELE9BQU8sZUFBZSxDQUFDLElBQUksQ0FBQztTQUMvQjtRQUVELElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsRUFBRSxlQUFlLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDekQsT0FBTyxlQUFlLENBQUMsR0FBRyxDQUFDO1NBQzlCO1FBRUQsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLGdCQUFnQixFQUFFLGVBQWUsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUMzRCxPQUFPLGVBQWUsQ0FBQyxLQUFLLENBQUM7U0FDaEM7UUFFRCxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsZ0JBQWdCLEVBQUUsZUFBZSxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQzVELE9BQU8sZUFBZSxDQUFDLE1BQU0sQ0FBQztTQUNqQztRQUVELElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsRUFBRSxlQUFlLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDNUQsT0FBTyxlQUFlLENBQUMsTUFBTSxDQUFDO1NBQ2pDO1FBRUQsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLGdCQUFnQixFQUFFLGVBQWUsQ0FBQyxTQUFTLENBQUMsRUFBRTtZQUMvRCxPQUFPLGVBQWUsQ0FBQyxTQUFTLENBQUM7U0FDcEM7UUFFRCw0QkFBNEI7UUFDNUIsT0FBTyxlQUFlLENBQUMsS0FBSyxDQUFDO0lBQ2pDLENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNJLGVBQWUsQ0FDbEIsa0JBQTJDLEVBQzNDLGNBQXVDLEVBQ3ZDLGdCQUE0QixFQUM1QixVQUFrQixFQUNsQixXQUFtQixFQUNuQixpQkFBeUIsRUFDekIsb0JBQTZCO1FBRTdCLElBQUksa0JBQWtCLEtBQUssSUFBSSxJQUFJLGtCQUFrQixLQUFLLFNBQVMsRUFBRTtZQUNqRSxNQUFNLElBQUksR0FBRyxrQkFBa0IsQ0FBQyxhQUFhLENBQUM7WUFFOUMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUU7Z0JBQzNCLE1BQU0sU0FBUyxHQUFHLG9CQUFvQixDQUFDLENBQUMsQ0FBRSxJQUFJLENBQUMsaUJBQWlDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztnQkFDeEYsTUFBTSxlQUFlLEdBQVksU0FBUyxDQUFDLHFCQUFxQixFQUFFLENBQUM7Z0JBRW5FLFFBQ0ksSUFBSSxDQUFDLGtCQUFrQixDQUNuQixrQkFBa0IsRUFDbEIsY0FBYyxFQUNkLFVBQVUsRUFDVixXQUFXLEVBQ1gsaUJBQWlCLEVBQ2pCLG9CQUFvQixDQUN2QixFQUNIO29CQUNFLEtBQUssZUFBZSxDQUFDLEdBQUcsQ0FBQztvQkFDekIsS0FBSyxlQUFlLENBQUMsTUFBTTt3QkFDdkIsT0FBTyxDQUNILGVBQWUsQ0FBQyxJQUFJLEdBQUcsZUFBZSxDQUFDLEtBQUssR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQzVGLENBQUM7b0JBQ04sS0FBSyxlQUFlLENBQUMsTUFBTSxDQUFDO29CQUM1QixLQUFLLGVBQWUsQ0FBQyxTQUFTO3dCQUMxQixPQUFPLGVBQWUsQ0FBQyxJQUFJLEdBQUcsZUFBZSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxDQUFDO29CQUM3RixLQUFLLGVBQWUsQ0FBQyxLQUFLO3dCQUN0QixPQUFPLGVBQWUsQ0FBQyxJQUFJLEdBQUcsZUFBZSxDQUFDLEtBQUssR0FBRyxVQUFVLEdBQUcsQ0FBQyxDQUFDO29CQUN6RSxLQUFLLGVBQWUsQ0FBQyxJQUFJO3dCQUNyQixPQUFPLGVBQWUsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztpQkFDaEc7Z0JBRUQsT0FBTyxrQkFBa0IsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDO2FBQ3JEO2lCQUFNO2dCQUNILE9BQU8sa0JBQWtCLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQzthQUNyRDtTQUNKO2FBQU07WUFDSCxPQUFPLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUM7U0FDcEQ7SUFDTCxDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSSxjQUFjLENBQ2pCLGtCQUEyQyxFQUMzQyxjQUF1QyxFQUN2QyxnQkFBNEIsRUFDNUIsVUFBa0IsRUFDbEIsV0FBbUIsRUFDbkIsaUJBQXlCLEVBQ3pCLG9CQUE2QjtRQUU3QixJQUFJLGtCQUFrQixLQUFLLElBQUksSUFBSSxrQkFBa0IsS0FBSyxTQUFTLEVBQUU7WUFDakUsTUFBTSxJQUFJLEdBQUcsa0JBQWtCLENBQUMsYUFBYSxDQUFDO1lBQzlDLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFO2dCQUMzQixNQUFNLFNBQVMsR0FBRyxvQkFBb0IsQ0FBQyxDQUFDLENBQUUsSUFBSSxDQUFDLGlCQUFpQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7Z0JBQ3hGLE1BQU0sZUFBZSxHQUFZLFNBQVMsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO2dCQUVuRSwwRUFBMEU7Z0JBQzFFLE1BQU0sa0JBQWtCLEdBQ3BCLFNBQVMsQ0FBQyxTQUFTO29CQUNuQixJQUFJLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDLFlBQTJCLENBQUM7b0JBQzlELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLENBQUM7Z0JBRXJELFFBQ0ksSUFBSSxDQUFDLGtCQUFrQixDQUNuQixrQkFBa0IsRUFDbEIsY0FBYyxFQUNkLFVBQVUsRUFDVixXQUFXLEVBQ1gsaUJBQWlCLEVBQ2pCLG9CQUFvQixDQUN2QixFQUNIO29CQUNFLEtBQUssZUFBZSxDQUFDLEdBQUcsQ0FBQztvQkFDekIsS0FBSyxlQUFlLENBQUMsTUFBTTt3QkFDdkIsT0FBTyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO29CQUM3RixLQUFLLGVBQWUsQ0FBQyxLQUFLLENBQUM7b0JBQzNCLEtBQUssZUFBZSxDQUFDLElBQUk7d0JBQ3JCLE9BQU8sQ0FDSCxrQkFBa0IsR0FBRyxlQUFlLENBQUMsTUFBTSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FDNUYsQ0FBQztvQkFDTixLQUFLLGVBQWUsQ0FBQyxNQUFNLENBQUM7b0JBQzVCLEtBQUssZUFBZSxDQUFDLFNBQVM7d0JBQzFCLE9BQU8sa0JBQWtCLEdBQUcsZUFBZSxDQUFDLE1BQU0sR0FBRyxXQUFXLEdBQUcsQ0FBQyxDQUFDO2lCQUM1RTtnQkFFRCxPQUFPLENBQ0gsU0FBUyxDQUFDLFNBQVM7b0JBQ25CLFNBQVMsQ0FBQyxTQUFTO29CQUNuQixDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxZQUFZLEdBQUcsQ0FBQyxDQUFDLENBQ3pFLENBQUM7YUFDTDtpQkFBTTtnQkFDSCxPQUFPLGtCQUFrQixDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUM7YUFDckQ7U0FDSjthQUFNO1lBQ0gsT0FBTyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDO1NBQ25EO0lBQ0wsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksV0FBVyxDQUFDLGdCQUF3QixFQUFFLGlCQUFrQztRQUMzRSxNQUFNLFNBQVMsR0FBRyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFOUMsSUFBSSxpQkFBaUIsS0FBSyxlQUFlLENBQUMsS0FBSyxJQUFJLFNBQVMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ2hGLE9BQU8sSUFBSSxDQUFDO1NBQ2Y7UUFFRCxJQUFJLGlCQUFpQixLQUFLLGVBQWUsQ0FBQyxHQUFHLElBQUksU0FBUyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDNUUsT0FBTyxJQUFJLENBQUM7U0FDZjtRQUVELElBQUksaUJBQWlCLEtBQUssZUFBZSxDQUFDLElBQUksSUFBSSxTQUFTLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUM5RSxPQUFPLElBQUksQ0FBQztTQUNmO1FBRUQsSUFBSSxpQkFBaUIsS0FBSyxlQUFlLENBQUMsTUFBTSxJQUFJLFNBQVMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ2xGLE9BQU8sSUFBSSxDQUFDO1NBQ2Y7UUFFRCxJQUFJLGlCQUFpQixLQUFLLGVBQWUsQ0FBQyxNQUFNLElBQUksU0FBUyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDbEYsT0FBTyxJQUFJLENBQUM7U0FDZjtRQUNELElBQUksaUJBQWlCLEtBQUssZUFBZSxDQUFDLFNBQVMsSUFBSSxTQUFTLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUN4RixPQUFPLElBQUksQ0FBQztTQUNmO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVEOzs7T0FHRztJQUNJLGNBQWMsQ0FBQyxnQkFBd0I7UUFDMUMsTUFBTSxTQUFTLEdBQUcsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzlDLE9BQU8sU0FBUyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVEOztPQUVHO0lBQ0ksaUJBQWlCLENBQ3BCLGtCQUEyQyxFQUMzQyxxQkFBOEMsRUFDOUMsVUFBa0IsRUFDbEIsV0FBbUIsRUFDbkIsb0JBQTZCO1FBRTdCLDhCQUE4QjtRQUM5QixJQUFJLHFCQUFxQixLQUFLLFNBQVMsRUFBRTtZQUNyQyxPQUFPLGVBQWUsQ0FBQyxLQUFLLENBQUM7U0FDaEM7UUFFRCxJQUFJLGdCQUFnQixHQUFvQixlQUFlLENBQUMsSUFBSSxDQUFDO1FBQzdELE1BQU0sWUFBWSxHQUFZLG9CQUFvQjtZQUM5QyxDQUFDLENBQUMsa0JBQWtCLENBQUMsYUFBYSxDQUFDLGlCQUFpQixDQUFDLHFCQUFxQixFQUFFO1lBQzVFLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUMvRCxNQUFNLFdBQVcsR0FBWSxxQkFBcUIsQ0FBQyxhQUFhLENBQUMsaUJBQWlCLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUUzRyxNQUFNLFNBQVMsR0FBWSxZQUFZLENBQUMsSUFBSSxHQUFHLFdBQVcsQ0FBQyxLQUFLLEdBQUcsVUFBVSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN2RixNQUFNLFVBQVUsR0FBWSxZQUFZLENBQUMsS0FBSyxHQUFHLFdBQVcsQ0FBQyxLQUFLLEdBQUcsVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUM7UUFDcEcsTUFBTSxRQUFRLEdBQVksWUFBWSxDQUFDLEdBQUcsR0FBRyxXQUFXLENBQUMsTUFBTSxHQUFHLFdBQVcsR0FBRyxDQUFDLENBQUM7UUFDbEYsTUFBTSxXQUFXLEdBQVksWUFBWSxDQUFDLE1BQU0sR0FBRyxXQUFXLENBQUMsTUFBTSxHQUFHLFdBQVcsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDO1FBRXpHLE1BQU0sYUFBYSxHQUFZLFlBQVksQ0FBQyxJQUFJLEdBQUcsV0FBVyxDQUFDLEtBQUssR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzdFLE1BQU0sY0FBYyxHQUFZLFlBQVksQ0FBQyxLQUFLLEdBQUcsV0FBVyxDQUFDLEtBQUssR0FBRyxDQUFDLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQztRQUMvRixNQUFNLFlBQVksR0FBWSxZQUFZLENBQUMsR0FBRyxHQUFHLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM1RSxNQUFNLGVBQWUsR0FBWSxZQUFZLENBQUMsTUFBTSxHQUFHLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUM7UUFFbkcsSUFBSSxTQUFTLElBQUksUUFBUSxFQUFFO1lBQ3ZCLHNDQUFzQztZQUN0QyxnQkFBZ0IsR0FBRyxnQkFBZ0IsR0FBRyxlQUFlLENBQUMsTUFBTSxDQUFDO1NBQ2hFO1FBRUQsSUFBSSxTQUFTLElBQUksV0FBVyxFQUFFO1lBQzFCLHNDQUFzQztZQUN0QyxnQkFBZ0IsR0FBRyxnQkFBZ0IsR0FBRyxlQUFlLENBQUMsU0FBUyxDQUFDO1NBQ25FO1FBRUQsSUFBSSxTQUFTLElBQUksWUFBWSxJQUFJLGVBQWUsRUFBRTtZQUM5QyxzQ0FBc0M7WUFDdEMsZ0JBQWdCLEdBQUcsZ0JBQWdCLEdBQUcsZUFBZSxDQUFDLElBQUksQ0FBQztTQUM5RDtRQUVELElBQUksVUFBVSxJQUFJLFlBQVksSUFBSSxlQUFlLEVBQUU7WUFDL0Msc0NBQXNDO1lBQ3RDLGdCQUFnQixHQUFHLGdCQUFnQixHQUFHLGVBQWUsQ0FBQyxLQUFLLENBQUM7U0FDL0Q7UUFFRCxJQUFJLFFBQVEsSUFBSSxhQUFhLElBQUksY0FBYyxFQUFFO1lBQzdDLHNDQUFzQztZQUN0QyxnQkFBZ0IsR0FBRyxnQkFBZ0IsR0FBRyxlQUFlLENBQUMsR0FBRyxDQUFDO1NBQzdEO1FBRUQsSUFBSSxXQUFXLElBQUksYUFBYSxJQUFJLGNBQWMsRUFBRTtZQUNoRCxzQ0FBc0M7WUFDdEMsZ0JBQWdCLEdBQUcsZ0JBQWdCLEdBQUcsZUFBZSxDQUFDLE1BQU0sQ0FBQztTQUNoRTtRQUVELE9BQU8sZ0JBQWdCLENBQUM7SUFDNUIsQ0FBQztJQUVELDRCQUE0QjtJQUU1QiwwQkFBMEI7SUFFMUI7Ozs7T0FJRztJQUNLLGtCQUFrQixDQUFDLE9BQW9CO1FBQzNDLElBQUksT0FBTyxLQUFLLElBQUksRUFBRTtZQUNsQixPQUFPLENBQUMsQ0FBQztTQUNaO1FBRUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUU7WUFDdkIsT0FBTyxPQUFPLENBQUMsU0FBUyxDQUFDO1NBQzVCO1FBRUQsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxZQUEyQixDQUFDLENBQUM7UUFDakYsSUFBSSxNQUFNLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQztRQUMvQixPQUFPLFdBQVcsR0FBRyxNQUFNLENBQUM7SUFDaEMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ssa0JBQWtCLENBQUMsT0FBb0IsRUFBRSxPQUFPLEdBQUcsS0FBSztRQUM1RCxJQUFJLE9BQU8sS0FBSyxJQUFJLEVBQUU7WUFDbEIsT0FBTyxDQUFDLENBQUM7U0FDWjtRQUVELHVDQUF1QztRQUN2QyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRTtZQUN4QixPQUFPLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQzFDO1FBRUQsSUFBSSxjQUFjLEdBQUcsS0FBSyxDQUFDO1FBQzNCLElBQUksTUFBTSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxLQUFLLE9BQU8sRUFBRTtZQUMzRSxjQUFjLEdBQUcsSUFBSSxDQUFDO1NBQ3pCO1FBRUQsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsT0FBTyxJQUFJLGNBQWMsQ0FBQyxDQUFDO1FBRTlGLElBQUksT0FBTyxFQUFFO1lBQ1QsT0FBTyxXQUFXLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQztTQUMxQzthQUFNO1lBQ0gsT0FBTyxXQUFXLEdBQUcsT0FBTyxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQztTQUMvQztJQUNMLENBQUM7Q0FHSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRvb2x0aXBQb3NpdGlvbiB9IGZyb20gJy4vZW51bXMnO1xyXG5pbXBvcnQgeyBFbGVtZW50UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5leHBvcnQgY2xhc3MgUG9wVXBIZWxwZXIge1xyXG4gICAgLy8gI3JlZ2lvbiBQdWJsaWMgTWV0aG9kc1xyXG5cclxuICAgIHB1YmxpYyBnZXRDb250YWluZXJIZWlnaHQocmVmZXJlbmNlQ29udGFpbmVyOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PiwgcmVmZXJlbmNlSXNDb250YWluZXI6IGJvb2xlYW4pOiBudW1iZXIge1xyXG4gICAgICAgIGlmIChyZWZlcmVuY2VDb250YWluZXIpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHJlZmVyZW5jZUlzQ29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICA/IHJlZmVyZW5jZUNvbnRhaW5lci5uYXRpdmVFbGVtZW50LmZpcnN0RWxlbWVudENoaWxkLmNsaWVudEhlaWdodFxyXG4gICAgICAgICAgICAgICAgOiByZWZlcmVuY2VDb250YWluZXIubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQ7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIDA7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXRDb250YWluZXJXaWR0aChyZWZlcmVuY2VDb250YWluZXI6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LCByZWZlcmVuY2VJc0NvbnRhaW5lcjogYm9vbGVhbik6IG51bWJlciB7XHJcbiAgICAgICAgaWYgKHJlZmVyZW5jZUNvbnRhaW5lcikge1xyXG4gICAgICAgICAgICByZXR1cm4gcmVmZXJlbmNlSXNDb250YWluZXJcclxuICAgICAgICAgICAgICAgID8gcmVmZXJlbmNlQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuZmlyc3RFbGVtZW50Q2hpbGQuY2xpZW50V2lkdGhcclxuICAgICAgICAgICAgICAgIDogcmVmZXJlbmNlQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGg7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIDA7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0IFBvc2l0aW9uIHdobyB0aGUgcG9wdXAgd291bGQgYmUgcG9zaXRpb25lZFxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSByZWZlcmVuY2VDb250YWluZXIgRWxlbWVudCBSZWZlcmVuY2UgdG8gSFRNTCBFbGVtZW50IHdoaWNoIGlzIHRoZSByZWZlcmVuY2UgdG8gcG9zaXRpb25pbmcgdGhlIHBvcHVwXHJcbiAgICAgKiBAcGFyYW0gcG9wdXBjb250ZW50Y29udGFpbmVyIEVsZW1lbnQgUmVmZXJlbmNlIHRvIGNvbnRhaW5lciBvZiBwb3B1cFxyXG4gICAgICogQHBhcmFtIHBvcHVwT2Zmc2V0IE9mZnNldCBmb3IgcG9wdXAgcG9zaXRpb25pbmdcclxuICAgICAqIEBwYXJhbSBhbGxvd2VkUG9zaXRpb25zIEFsbG93ZWQgUG9zaXRpb25zIGZvciB0aGUgcG9wdXBcclxuICAgICAqIEByZXR1cm5zIFJldHVybnMgdGhlIHBvc2l0aW9uIHdoZXJlIHRoZSBwb3B1cCBzaG91bGQgYmUgZGlzcGxheWVkXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXREaXNwbGF5UG9zaXRpb24oXHJcbiAgICAgICAgcmVmZXJlbmNlQ29udGFpbmVyOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcclxuICAgICAgICBwb3B1cGNvbnRlbnRjb250YWluZXI6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxyXG4gICAgICAgIGFycm93V2lkdGg6IG51bWJlcixcclxuICAgICAgICBhcnJvd0hlaWdodDogbnVtYmVyLFxyXG4gICAgICAgIGFsbG93ZWRQb3NpdGlvbnM6IHN0cmluZyxcclxuICAgICAgICByZWZlcmVuY2VJc0NvbnRhaW5lcjogYm9vbGVhblxyXG4gICAgKTogVG9vbHRpcFBvc2l0aW9uIHtcclxuICAgICAgICBjb25zdCB2YWxpZFBvc2l0aW9uczogVG9vbHRpcFBvc2l0aW9uID0gdGhpcy52YWxpZGF0ZVBvc2l0aW9ucyhcclxuICAgICAgICAgICAgcmVmZXJlbmNlQ29udGFpbmVyLFxyXG4gICAgICAgICAgICBwb3B1cGNvbnRlbnRjb250YWluZXIsXHJcbiAgICAgICAgICAgIGFycm93V2lkdGgsXHJcbiAgICAgICAgICAgIGFycm93SGVpZ2h0LFxyXG4gICAgICAgICAgICByZWZlcmVuY2VJc0NvbnRhaW5lclxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1iaXR3aXNlXHJcbiAgICAgICAgaWYgKHRoaXMuaGFzUG9zaXRpb24oYWxsb3dlZFBvc2l0aW9ucywgVG9vbHRpcFBvc2l0aW9uLnJpZ2h0KSAmJiB2YWxpZFBvc2l0aW9ucyAmIFRvb2x0aXBQb3NpdGlvbi5yaWdodCkge1xyXG4gICAgICAgICAgICByZXR1cm4gVG9vbHRpcFBvc2l0aW9uLnJpZ2h0O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWJpdHdpc2VcclxuICAgICAgICBpZiAodGhpcy5oYXNQb3NpdGlvbihhbGxvd2VkUG9zaXRpb25zLCBUb29sdGlwUG9zaXRpb24udG9wKSAmJiB2YWxpZFBvc2l0aW9ucyAmIFRvb2x0aXBQb3NpdGlvbi50b3ApIHtcclxuICAgICAgICAgICAgcmV0dXJuIFRvb2x0aXBQb3NpdGlvbi50b3A7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYml0d2lzZVxyXG4gICAgICAgIGlmICh0aGlzLmhhc1Bvc2l0aW9uKGFsbG93ZWRQb3NpdGlvbnMsIFRvb2x0aXBQb3NpdGlvbi5sZWZ0KSAmJiB2YWxpZFBvc2l0aW9ucyAmIFRvb2x0aXBQb3NpdGlvbi5sZWZ0KSB7XHJcbiAgICAgICAgICAgIHJldHVybiBUb29sdGlwUG9zaXRpb24ubGVmdDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1iaXR3aXNlXHJcbiAgICAgICAgaWYgKHRoaXMuaGFzUG9zaXRpb24oYWxsb3dlZFBvc2l0aW9ucywgVG9vbHRpcFBvc2l0aW9uLmJvdHRvbSkgJiYgdmFsaWRQb3NpdGlvbnMgJiBUb29sdGlwUG9zaXRpb24uYm90dG9tKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBUb29sdGlwUG9zaXRpb24uYm90dG9tO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMuaGFzUG9zaXRpb24oYWxsb3dlZFBvc2l0aW9ucywgVG9vbHRpcFBvc2l0aW9uLnRvcGVuZCkgJiYgdmFsaWRQb3NpdGlvbnMgJiBUb29sdGlwUG9zaXRpb24udG9wZW5kKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBUb29sdGlwUG9zaXRpb24udG9wZW5kO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICB0aGlzLmhhc1Bvc2l0aW9uKGFsbG93ZWRQb3NpdGlvbnMsIFRvb2x0aXBQb3NpdGlvbi5ib3R0b21lbmQpICYmXHJcbiAgICAgICAgICAgIHZhbGlkUG9zaXRpb25zICYgVG9vbHRpcFBvc2l0aW9uLmJvdHRvbWVuZFxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgICByZXR1cm4gVG9vbHRpcFBvc2l0aW9uLmJvdHRvbWVuZDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIEdldCBBdXRvIFBvc2l0aW9uIG9yIERlZmF1bHRcclxuICAgICAgICBpZiAodGhpcy5pc0F1dG9Qb3NpdGlvbihhbGxvd2VkUG9zaXRpb25zKSkge1xyXG4gICAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYml0d2lzZVxyXG4gICAgICAgICAgICBpZiAodmFsaWRQb3NpdGlvbnMgJiBUb29sdGlwUG9zaXRpb24ucmlnaHQpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBUb29sdGlwUG9zaXRpb24ucmlnaHQ7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1iaXR3aXNlXHJcbiAgICAgICAgICAgIGlmICh2YWxpZFBvc2l0aW9ucyAmIFRvb2x0aXBQb3NpdGlvbi50b3ApIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBUb29sdGlwUG9zaXRpb24udG9wO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYml0d2lzZVxyXG4gICAgICAgICAgICBpZiAodmFsaWRQb3NpdGlvbnMgJiBUb29sdGlwUG9zaXRpb24ubGVmdCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFRvb2x0aXBQb3NpdGlvbi5sZWZ0O1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYml0d2lzZVxyXG4gICAgICAgICAgICBpZiAodmFsaWRQb3NpdGlvbnMgJiBUb29sdGlwUG9zaXRpb24uYm90dG9tKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gVG9vbHRpcFBvc2l0aW9uLmJvdHRvbTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgcmV0dXJuIFRvb2x0aXBQb3NpdGlvbi5yaWdodDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRQb3NpdGlvbihhbGxvd2VkUG9zaXRpb25zKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDYWxjdWxhdGVzIHRoZSBoZWlnaHQgb2YgdGhlIHBvcHVwXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIGNvbnRhaW5lciBFbGVtZW50IFJlZmVyZW5jZSB0byBjb250YWluZXIgb2YgcG9wdXBcclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldFBvcHVwSGVpZ2h0KGNvbnRhaW5lcjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4pOiBudW1iZXIge1xyXG4gICAgICAgIGlmIChjb250YWluZXIpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGNvbnRhaW5lci5uYXRpdmVFbGVtZW50LmZpcnN0RWxlbWVudENoaWxkLmNsaWVudEhlaWdodCA/PyAwO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiAwO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENhbGN1bGF0ZXMgdGhlIHdpZHRoIG9mIHRoZSBwb3B1cFxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBjb250YWluZXIgRWxlbWVudCBSZWZlcmVuY2UgdG8gY29udGFpbmVyIG9mIHBvcHVwXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXRQb3B1cFdpZHRoKGNvbnRhaW5lcjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4pOiBudW1iZXIge1xyXG4gICAgICAgIGlmIChjb250YWluZXIpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGNvbnRhaW5lci5uYXRpdmVFbGVtZW50LmZpcnN0RWxlbWVudENoaWxkLmNsaWVudFdpZHRoO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiAwO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJldHVybnMgdGhlIGRlZmluZWQgcG9zaXRpb24gZm9yIHRoZSB0b29sdGlwXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIGFsbG93ZWRQb3NpdGlvbnMgQWxsb3dlZCBwb3NpdGlvbnMgZGVmaW5lZCBpbiBtYXJrdXAgZm9yIHBvcHVwXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXRQb3NpdGlvbihhbGxvd2VkUG9zaXRpb25zOiBzdHJpbmcpOiBUb29sdGlwUG9zaXRpb24ge1xyXG4gICAgICAgIGlmICh0aGlzLmhhc1Bvc2l0aW9uKGFsbG93ZWRQb3NpdGlvbnMsIFRvb2x0aXBQb3NpdGlvbi5sZWZ0KSkge1xyXG4gICAgICAgICAgICByZXR1cm4gVG9vbHRpcFBvc2l0aW9uLmxlZnQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5oYXNQb3NpdGlvbihhbGxvd2VkUG9zaXRpb25zLCBUb29sdGlwUG9zaXRpb24udG9wKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gVG9vbHRpcFBvc2l0aW9uLnRvcDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmhhc1Bvc2l0aW9uKGFsbG93ZWRQb3NpdGlvbnMsIFRvb2x0aXBQb3NpdGlvbi5yaWdodCkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIFRvb2x0aXBQb3NpdGlvbi5yaWdodDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmhhc1Bvc2l0aW9uKGFsbG93ZWRQb3NpdGlvbnMsIFRvb2x0aXBQb3NpdGlvbi5ib3R0b20pKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBUb29sdGlwUG9zaXRpb24uYm90dG9tO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMuaGFzUG9zaXRpb24oYWxsb3dlZFBvc2l0aW9ucywgVG9vbHRpcFBvc2l0aW9uLnRvcGVuZCkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIFRvb2x0aXBQb3NpdGlvbi50b3BlbmQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5oYXNQb3NpdGlvbihhbGxvd2VkUG9zaXRpb25zLCBUb29sdGlwUG9zaXRpb24uYm90dG9tZW5kKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gVG9vbHRpcFBvc2l0aW9uLmJvdHRvbWVuZDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIERlZmF1bHQgUG9zaXRpb24gaWYgZW1wdHlcclxuICAgICAgICByZXR1cm4gVG9vbHRpcFBvc2l0aW9uLnJpZ2h0O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2FsY3VsYXRlcyB0aGUgcG9zaXRpb24gb2YgdGhlIHRvb2x0aXAgZnJvbSBsaW5rc1xyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBjb250cm9sUmVmZXJlbmNlIEVsZW1lbnQgUmVmZXJlbmNlIHRvIGFuZ3VsYXIgY29tcG9uZW50XHJcbiAgICAgKiBAcGFyYW0gcG9wdXBDb250YWluZXIgRWxlbWVudCBSZWZlcmVuY2UgdG8gY29udGFpbmVyIG9mIHBvcHVwXHJcbiAgICAgKiBAcGFyYW0gcmVmZXJlbmNlQ29udGFpbmVyIEVsZW1lbnQgUmVmZXJlbmNlIHRvIEhUTUwgRWxlbWVudCB3aGljaCBpcyB0aGUgcmVmZXJlbmNlIHRvIHBvc2l0aW9uaW5nIHRoZSBwb3B1cFxyXG4gICAgICogQHBhcmFtIHBvcHVwT2Zmc2V0IE9mZnNldCBmb3IgcG9wdXAgcG9zaXRpb25pbmdcclxuICAgICAqIEBwYXJhbSByZXF1ZXN0ZWRQb3NpdGlvbiBSZXF1ZXN0ZWQgUG9zaXRpb24gYnkgQ29udHJvbFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0UG9zaXRpb25MZWZ0KFxyXG4gICAgICAgIHJlZmVyZW5jZUNvbnRhaW5lcjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXHJcbiAgICAgICAgcG9wdXBDb250YWluZXI6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxyXG4gICAgICAgIGNvbnRyb2xSZWZlcmVuY2U6IEVsZW1lbnRSZWYsXHJcbiAgICAgICAgYXJyb3dXaWR0aDogbnVtYmVyLFxyXG4gICAgICAgIGFycm93SGVpZ2h0OiBudW1iZXIsXHJcbiAgICAgICAgcmVxdWVzdGVkUG9zaXRpb246IHN0cmluZyxcclxuICAgICAgICByZWZlcmVuY2VJc0NvbnRhaW5lcjogYm9vbGVhblxyXG4gICAgKTogbnVtYmVyIHtcclxuICAgICAgICBpZiAocmVmZXJlbmNlQ29udGFpbmVyICE9PSBudWxsICYmIHJlZmVyZW5jZUNvbnRhaW5lciAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSByZWZlcmVuY2VDb250YWluZXIubmF0aXZlRWxlbWVudDtcclxuXHJcbiAgICAgICAgICAgIGlmIChpdGVtLmNoaWxkcmVuLmxlbmd0aCA+PSAxKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjaGlsZEl0ZW0gPSByZWZlcmVuY2VJc0NvbnRhaW5lciA/IChpdGVtLmZpcnN0RWxlbWVudENoaWxkIGFzIEhUTUxFbGVtZW50KSA6IGl0ZW07XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjb250ZW50UG9zaXRpb246IERPTVJlY3QgPSBjaGlsZEl0ZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcblxyXG4gICAgICAgICAgICAgICAgc3dpdGNoIChcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmdldERpc3BsYXlQb3NpdGlvbihcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlQ29udGFpbmVyLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwb3B1cENvbnRhaW5lcixcclxuICAgICAgICAgICAgICAgICAgICAgICAgYXJyb3dXaWR0aCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgYXJyb3dIZWlnaHQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RlZFBvc2l0aW9uLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2VJc0NvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgVG9vbHRpcFBvc2l0aW9uLnRvcDpcclxuICAgICAgICAgICAgICAgICAgICBjYXNlIFRvb2x0aXBQb3NpdGlvbi5ib3R0b206XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50UG9zaXRpb24ubGVmdCArIGNvbnRlbnRQb3NpdGlvbi53aWR0aCAvIDIgLSB0aGlzLmdldFBvcHVwV2lkdGgocG9wdXBDb250YWluZXIpIC8gMlxyXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgVG9vbHRpcFBvc2l0aW9uLnRvcGVuZDpcclxuICAgICAgICAgICAgICAgICAgICBjYXNlIFRvb2x0aXBQb3NpdGlvbi5ib3R0b21lbmQ6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjb250ZW50UG9zaXRpb24ubGVmdCArIGNvbnRlbnRQb3NpdGlvbi53aWR0aCAtIHRoaXMuZ2V0UG9wdXBXaWR0aChwb3B1cENvbnRhaW5lcik7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBUb29sdGlwUG9zaXRpb24ucmlnaHQ6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjb250ZW50UG9zaXRpb24ubGVmdCArIGNvbnRlbnRQb3NpdGlvbi53aWR0aCArIGFycm93V2lkdGggLyAyO1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgVG9vbHRpcFBvc2l0aW9uLmxlZnQ6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjb250ZW50UG9zaXRpb24ubGVmdCAtIHRoaXMuZ2V0UG9wdXBXaWR0aChwb3B1cENvbnRhaW5lcikgKyAoYXJyb3dXaWR0aCAvIDIpICogLTE7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlZmVyZW5jZUNvbnRhaW5lci5uYXRpdmVFbGVtZW50Lm9mZnNldFRvcDtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiByZWZlcmVuY2VDb250YWluZXIubmF0aXZlRWxlbWVudC5vZmZzZXRUb3A7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gY29udHJvbFJlZmVyZW5jZS5uYXRpdmVFbGVtZW50Lm9mZnNldExlZnQ7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2FsY3VsYXRlcyB0aGUgcG9zaXRpb24gb2YgdGhlIHRvb2x0aXAgZnJvbSB0aGUgdG9wXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIGNvbnRyb2xSZWZlcmVuY2UgRWxlbWVudCBSZWZlcmVuY2UgdG8gYW5ndWxhciBjb21wb25lbnRcclxuICAgICAqIEBwYXJhbSBwb3B1cENvbnRhaW5lciBFbGVtZW50IFJlZmVyZW5jZSB0byBjb250YWluZXIgb2YgcG9wdXBcclxuICAgICAqIEBwYXJhbSByZWZlcmVuY2VDb250YWluZXIgRWxlbWVudCBSZWZlcmVuY2UgdG8gSFRNTCBFbGVtZW50IHdoaWNoIGlzIHRoZSByZWZlcmVuY2UgdG8gcG9zaXRpb25pbmcgdGhlIHBvcHVwXHJcbiAgICAgKiBAcGFyYW0gcG9wdXBPZmZzZXQgT2Zmc2V0IGZvciBwb3B1cCBwb3NpdGlvbmluZ1xyXG4gICAgICogQHBhcmFtIHJlcXVlc3RlZFBvc2l0aW9uIFJlcXVlc3RlZCBQb3NpdGlvbiBieSBDb250cm9sXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXRQb3NpdGlvblRvcChcclxuICAgICAgICByZWZlcmVuY2VDb250YWluZXI6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxyXG4gICAgICAgIHBvcHVwQ29udGFpbmVyOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcclxuICAgICAgICBjb250cm9sUmVmZXJlbmNlOiBFbGVtZW50UmVmLFxyXG4gICAgICAgIGFycm93V2lkdGg6IG51bWJlcixcclxuICAgICAgICBhcnJvd0hlaWdodDogbnVtYmVyLFxyXG4gICAgICAgIHJlcXVlc3RlZFBvc2l0aW9uOiBzdHJpbmcsXHJcbiAgICAgICAgcmVmZXJlbmNlSXNDb250YWluZXI6IGJvb2xlYW5cclxuICAgICk6IG51bWJlciB7XHJcbiAgICAgICAgaWYgKHJlZmVyZW5jZUNvbnRhaW5lciAhPT0gbnVsbCAmJiByZWZlcmVuY2VDb250YWluZXIgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICBjb25zdCBpdGVtID0gcmVmZXJlbmNlQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICAgICAgICAgIGlmIChpdGVtLmNoaWxkcmVuLmxlbmd0aCA+PSAxKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjaGlsZEl0ZW0gPSByZWZlcmVuY2VJc0NvbnRhaW5lciA/IChpdGVtLmZpcnN0RWxlbWVudENoaWxkIGFzIEhUTUxFbGVtZW50KSA6IGl0ZW07XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjb250ZW50UG9zaXRpb246IERPTVJlY3QgPSBjaGlsZEl0ZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcblxyXG4gICAgICAgICAgICAgICAgLy8gR2V0IFBvc2l0aW9uIHdpdGggU2Nyb2xsIChTY3JvbGxiYXJzIGluc2lkZSBwYWdlIHNob3VsZCBiZSBzdWJzdHJhY3RlZClcclxuICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRlbnRQb3NpdGlvblRvcCA9XHJcbiAgICAgICAgICAgICAgICAgICAgY2hpbGRJdGVtLm9mZnNldFRvcCArXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRPZmZzZXRUb3BQYXJlbnQoY2hpbGRJdGVtLm9mZnNldFBhcmVudCBhcyBIVE1MRWxlbWVudCkgK1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0U2Nyb2xsVG9wUGFyZW50KGNoaWxkSXRlbS5wYXJlbnRFbGVtZW50KTtcclxuXHJcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0RGlzcGxheVBvc2l0aW9uKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2VDb250YWluZXIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvcHVwQ29udGFpbmVyLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBhcnJvd1dpZHRoLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBhcnJvd0hlaWdodCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdGVkUG9zaXRpb24sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZUlzQ29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBUb29sdGlwUG9zaXRpb24udG9wOlxyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgVG9vbHRpcFBvc2l0aW9uLnRvcGVuZDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRlbnRQb3NpdGlvblRvcCAtIHRoaXMuZ2V0UG9wdXBIZWlnaHQocG9wdXBDb250YWluZXIpICsgKGFycm93SGVpZ2h0IC8gMikgKiAtMTtcclxuICAgICAgICAgICAgICAgICAgICBjYXNlIFRvb2x0aXBQb3NpdGlvbi5yaWdodDpcclxuICAgICAgICAgICAgICAgICAgICBjYXNlIFRvb2x0aXBQb3NpdGlvbi5sZWZ0OlxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudFBvc2l0aW9uVG9wICsgY29udGVudFBvc2l0aW9uLmhlaWdodCAvIDIgLSB0aGlzLmdldFBvcHVwSGVpZ2h0KHBvcHVwQ29udGFpbmVyKSAvIDJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICBjYXNlIFRvb2x0aXBQb3NpdGlvbi5ib3R0b206XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBUb29sdGlwUG9zaXRpb24uYm90dG9tZW5kOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29udGVudFBvc2l0aW9uVG9wICsgY29udGVudFBvc2l0aW9uLmhlaWdodCArIGFycm93SGVpZ2h0IC8gMjtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgICAgIGNoaWxkSXRlbS5jbGllbnRUb3AgK1xyXG4gICAgICAgICAgICAgICAgICAgIGNoaWxkSXRlbS5vZmZzZXRUb3AgLVxyXG4gICAgICAgICAgICAgICAgICAgICh0aGlzLmdldFBvcHVwSGVpZ2h0KHBvcHVwQ29udGFpbmVyKSAvIDIgLSBjaGlsZEl0ZW0ub2Zmc2V0SGVpZ2h0IC8gMilcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVmZXJlbmNlQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQub2Zmc2V0VG9wO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIGNvbnRyb2xSZWZlcmVuY2UubmF0aXZlRWxlbWVudC5vZmZzZXRUb3A7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0dXJucyB3aGV0aGVyIHRoZSBwb3NpdGlvbiBoYXMgYmVlbiBjb25maWd1cmVkXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIGFsbG93ZWRQb3NpdGlvbnMgUG9zaXRpb25zIHRoYXQgYWxsb3dlZCBieSBjb250cm9sXHJcbiAgICAgKiBAcGFyYW0gcmVxdWVzdGVkUG9zaXRpb24gUG9zaXRpb24gdG8gYmUgY2hlY2tlZFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgaGFzUG9zaXRpb24oYWxsb3dlZFBvc2l0aW9uczogc3RyaW5nLCByZXF1ZXN0ZWRQb3NpdGlvbjogVG9vbHRpcFBvc2l0aW9uKTogYm9vbGVhbiB7XHJcbiAgICAgICAgY29uc3QgcG9zaXRpb25zID0gYWxsb3dlZFBvc2l0aW9ucy5zcGxpdCgnfCcpO1xyXG5cclxuICAgICAgICBpZiAocmVxdWVzdGVkUG9zaXRpb24gPT09IFRvb2x0aXBQb3NpdGlvbi5yaWdodCAmJiBwb3NpdGlvbnMuaW5kZXhPZigncmlnaHQnKSA+PSAwKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHJlcXVlc3RlZFBvc2l0aW9uID09PSBUb29sdGlwUG9zaXRpb24udG9wICYmIHBvc2l0aW9ucy5pbmRleE9mKCd0b3AnKSA+PSAwKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHJlcXVlc3RlZFBvc2l0aW9uID09PSBUb29sdGlwUG9zaXRpb24ubGVmdCAmJiBwb3NpdGlvbnMuaW5kZXhPZignbGVmdCcpID49IDApIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAocmVxdWVzdGVkUG9zaXRpb24gPT09IFRvb2x0aXBQb3NpdGlvbi5ib3R0b20gJiYgcG9zaXRpb25zLmluZGV4T2YoJ2JvdHRvbScpID49IDApIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAocmVxdWVzdGVkUG9zaXRpb24gPT09IFRvb2x0aXBQb3NpdGlvbi50b3BlbmQgJiYgcG9zaXRpb25zLmluZGV4T2YoJ3RvcGVuZCcpID49IDApIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChyZXF1ZXN0ZWRQb3NpdGlvbiA9PT0gVG9vbHRpcFBvc2l0aW9uLmJvdHRvbWVuZCAmJiBwb3NpdGlvbnMuaW5kZXhPZignYm90dG9tZW5kJykgPj0gMCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIERlZmluZXMgd2hldGhlciBBdXRvUG9zaXRpb24gaXMgYWN0aXZlXHJcbiAgICAgKiBAcGFyYW0gcG9zaXRpb25Qcm9wZXJ0eSBMaXN0IG9mIGFsbG93ZWQgcG9zaXRpb25zXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBpc0F1dG9Qb3NpdGlvbihwb3NpdGlvblByb3BlcnR5OiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgICAgICBjb25zdCBwb3NpdGlvbnMgPSBwb3NpdGlvblByb3BlcnR5LnNwbGl0KCd8Jyk7XHJcbiAgICAgICAgcmV0dXJuIHBvc2l0aW9ucy5pbmRleE9mKCdhdXRvJykgPj0gMDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENoZWNrcyB3aGV0aGVyIHRoZSBwb3NpdGlvbiBpcyB2YWxpZCBvciB3aGV0aGVyIHRoZSB0b29sdGlwIG9uIHRoZSBwb3NpdGlvbiBoYXMgc3BhY2VcclxuICAgICAqL1xyXG4gICAgcHVibGljIHZhbGlkYXRlUG9zaXRpb25zKFxyXG4gICAgICAgIHJlZmVyZW5jZUNvbnRhaW5lcjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXHJcbiAgICAgICAgcG9wdXBjb250ZW50Y29udGFpbmVyOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcclxuICAgICAgICBhcnJvd1dpZHRoOiBudW1iZXIsXHJcbiAgICAgICAgYXJyb3dIZWlnaHQ6IG51bWJlcixcclxuICAgICAgICByZWZlcmVuY2VJc0NvbnRhaW5lcjogYm9vbGVhblxyXG4gICAgKTogVG9vbHRpcFBvc2l0aW9uIHtcclxuICAgICAgICAvLyBDaGVjayBpZiBDb250YWluZXIgaXMgZmFsc2VcclxuICAgICAgICBpZiAocG9wdXBjb250ZW50Y29udGFpbmVyID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIFRvb2x0aXBQb3NpdGlvbi5yaWdodDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCBhbGxvd2VkUG9zaXRpb25zOiBUb29sdGlwUG9zaXRpb24gPSBUb29sdGlwUG9zaXRpb24ubm9uZTtcclxuICAgICAgICBjb25zdCBiYXNlUG9zaXRpb246IERPTVJlY3QgPSByZWZlcmVuY2VJc0NvbnRhaW5lclxyXG4gICAgICAgICAgICA/IHJlZmVyZW5jZUNvbnRhaW5lci5uYXRpdmVFbGVtZW50LmZpcnN0RWxlbWVudENoaWxkLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpXHJcbiAgICAgICAgICAgIDogcmVmZXJlbmNlQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcbiAgICAgICAgY29uc3QgdG9vbHRpcFJlY3Q6IERPTVJlY3QgPSBwb3B1cGNvbnRlbnRjb250YWluZXIubmF0aXZlRWxlbWVudC5maXJzdEVsZW1lbnRDaGlsZC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuXHJcbiAgICAgICAgY29uc3QgbGVmdFBvc09rOiBib29sZWFuID0gYmFzZVBvc2l0aW9uLmxlZnQgLSB0b29sdGlwUmVjdC53aWR0aCArIGFycm93V2lkdGggKiAtMSA+IDA7XHJcbiAgICAgICAgY29uc3QgcmlnaHRQb3NPazogYm9vbGVhbiA9IGJhc2VQb3NpdGlvbi5yaWdodCArIHRvb2x0aXBSZWN0LndpZHRoICsgYXJyb3dXaWR0aCA8IHdpbmRvdy5pbm5lcldpZHRoO1xyXG4gICAgICAgIGNvbnN0IHRvcFBvc09rOiBib29sZWFuID0gYmFzZVBvc2l0aW9uLnRvcCAtIHRvb2x0aXBSZWN0LmhlaWdodCArIGFycm93SGVpZ2h0ID4gMDtcclxuICAgICAgICBjb25zdCBib3R0b21Qb3NPazogYm9vbGVhbiA9IGJhc2VQb3NpdGlvbi5ib3R0b20gKyB0b29sdGlwUmVjdC5oZWlnaHQgKyBhcnJvd0hlaWdodCA8IHdpbmRvdy5pbm5lckhlaWdodDtcclxuXHJcbiAgICAgICAgY29uc3QgbGVmdEhhbGZQb3NPazogYm9vbGVhbiA9IGJhc2VQb3NpdGlvbi5sZWZ0IC0gdG9vbHRpcFJlY3Qud2lkdGggLyAyID4gMDtcclxuICAgICAgICBjb25zdCByaWdodEhhbGZQb3NPazogYm9vbGVhbiA9IGJhc2VQb3NpdGlvbi5yaWdodCArIHRvb2x0aXBSZWN0LndpZHRoIC8gMiA8IHdpbmRvdy5pbm5lcldpZHRoO1xyXG4gICAgICAgIGNvbnN0IHRvcEhhbGZQb3NPazogYm9vbGVhbiA9IGJhc2VQb3NpdGlvbi50b3AgLSB0b29sdGlwUmVjdC5oZWlnaHQgLyAyID4gMDtcclxuICAgICAgICBjb25zdCBib3R0b21IYWxmUG9zT2s6IGJvb2xlYW4gPSBiYXNlUG9zaXRpb24uYm90dG9tICsgdG9vbHRpcFJlY3QuaGVpZ2h0IC8gMiA8IHdpbmRvdy5pbm5lckhlaWdodDtcclxuXHJcbiAgICAgICAgaWYgKGxlZnRQb3NPayAmJiB0b3BQb3NPaykge1xyXG4gICAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYml0d2lzZVxyXG4gICAgICAgICAgICBhbGxvd2VkUG9zaXRpb25zID0gYWxsb3dlZFBvc2l0aW9ucyB8IFRvb2x0aXBQb3NpdGlvbi50b3BlbmQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAobGVmdFBvc09rICYmIGJvdHRvbVBvc09rKSB7XHJcbiAgICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1iaXR3aXNlXHJcbiAgICAgICAgICAgIGFsbG93ZWRQb3NpdGlvbnMgPSBhbGxvd2VkUG9zaXRpb25zIHwgVG9vbHRpcFBvc2l0aW9uLmJvdHRvbWVuZDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChsZWZ0UG9zT2sgJiYgdG9wSGFsZlBvc09rICYmIGJvdHRvbUhhbGZQb3NPaykge1xyXG4gICAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYml0d2lzZVxyXG4gICAgICAgICAgICBhbGxvd2VkUG9zaXRpb25zID0gYWxsb3dlZFBvc2l0aW9ucyB8IFRvb2x0aXBQb3NpdGlvbi5sZWZ0O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHJpZ2h0UG9zT2sgJiYgdG9wSGFsZlBvc09rICYmIGJvdHRvbUhhbGZQb3NPaykge1xyXG4gICAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYml0d2lzZVxyXG4gICAgICAgICAgICBhbGxvd2VkUG9zaXRpb25zID0gYWxsb3dlZFBvc2l0aW9ucyB8IFRvb2x0aXBQb3NpdGlvbi5yaWdodDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0b3BQb3NPayAmJiBsZWZ0SGFsZlBvc09rICYmIHJpZ2h0SGFsZlBvc09rKSB7XHJcbiAgICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1iaXR3aXNlXHJcbiAgICAgICAgICAgIGFsbG93ZWRQb3NpdGlvbnMgPSBhbGxvd2VkUG9zaXRpb25zIHwgVG9vbHRpcFBvc2l0aW9uLnRvcDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChib3R0b21Qb3NPayAmJiBsZWZ0SGFsZlBvc09rICYmIHJpZ2h0SGFsZlBvc09rKSB7XHJcbiAgICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1iaXR3aXNlXHJcbiAgICAgICAgICAgIGFsbG93ZWRQb3NpdGlvbnMgPSBhbGxvd2VkUG9zaXRpb25zIHwgVG9vbHRpcFBvc2l0aW9uLmJvdHRvbTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBhbGxvd2VkUG9zaXRpb25zO1xyXG4gICAgfVxyXG5cclxuICAgIC8vICNlbmRyZWdpb24gUHVibGljIE1ldGhvZHNcclxuXHJcbiAgICAvLyAjcmVnaW9uIFByaXZhdGUgTWV0aG9kc1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2FsY3VsYXRlcyB0aGUgdG9wIG9mIHRoZSBwYWdlIGluc2lkZSBhbGwgZWxlbWVudHNcclxuICAgICAqIEBwYXJhbSBlbGVtZW50IEhUTUwgRWxlbWVudFxyXG4gICAgICogQHJldHVybnMgc3VtbWFyaXplZCB0b3AgdmFsdWUgZm9yIGFic29sdXRlIHBvc2l0aW9uXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgZ2V0T2Zmc2V0VG9wUGFyZW50KGVsZW1lbnQ6IEhUTUxFbGVtZW50KTogbnVtYmVyIHtcclxuICAgICAgICBpZiAoZWxlbWVudCA9PT0gbnVsbCkge1xyXG4gICAgICAgICAgICByZXR1cm4gMDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICghZWxlbWVudC5vZmZzZXRQYXJlbnQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQub2Zmc2V0VG9wO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgcGFyZW50VmFsdWUgPSB0aGlzLmdldE9mZnNldFRvcFBhcmVudChlbGVtZW50Lm9mZnNldFBhcmVudCBhcyBIVE1MRWxlbWVudCk7XHJcbiAgICAgICAgbGV0IG9mZnNldCA9IGVsZW1lbnQub2Zmc2V0VG9wO1xyXG4gICAgICAgIHJldHVybiBwYXJlbnRWYWx1ZSArIG9mZnNldDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENhY2x1bGF0ZSBTY3JvbGxiYXJzIGluc2lkZSB0cmVlXHJcbiAgICAgKiBAcGFyYW0gZWxlbWVudCBIVE1MIEVsZW1lbnRcclxuICAgICAqIEBwYXJhbSBbaXNGaXhlZD1mYWxzZV0gSW52ZXJ0IFNjcm9sbCBQb3NpdGlvbiB2YWx1ZSB3aGVuIHN0eWxlIGlzIGZpeGVkIHRvIHByZXNlcnZlIG5lZ2F0aXZlIHZhbHVlc1xyXG4gICAgICogQHJldHVybnMgU2Nyb2xsIHRvcCB2YWx1ZSBvZiBlbGVtZW50IHdpdGggYWxsIGNoaWxkc1xyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGdldFNjcm9sbFRvcFBhcmVudChlbGVtZW50OiBIVE1MRWxlbWVudCwgaXNGaXhlZCA9IGZhbHNlKTogbnVtYmVyIHtcclxuICAgICAgICBpZiAoZWxlbWVudCA9PT0gbnVsbCkge1xyXG4gICAgICAgICAgICByZXR1cm4gMDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIEJvZHkgU2Nyb2xsIHNob3VsZCBub3QgYmUgY2FsY3VsYXRlZFxyXG4gICAgICAgIGlmICghZWxlbWVudC5wYXJlbnRFbGVtZW50KSB7XHJcbiAgICAgICAgICAgIHJldHVybiBpc0ZpeGVkID8gZWxlbWVudC5zY3JvbGxUb3AgOiAwO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IGlzQ3VycmVudEZpeGVkID0gZmFsc2U7XHJcbiAgICAgICAgaWYgKHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpLmdldFByb3BlcnR5VmFsdWUoJ3Bvc2l0aW9uJykgPT09ICdmaXhlZCcpIHtcclxuICAgICAgICAgICAgaXNDdXJyZW50Rml4ZWQgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgcGFyZW50VmFsdWUgPSB0aGlzLmdldFNjcm9sbFRvcFBhcmVudChlbGVtZW50LnBhcmVudEVsZW1lbnQsIGlzRml4ZWQgfHwgaXNDdXJyZW50Rml4ZWQpO1xyXG5cclxuICAgICAgICBpZiAoaXNGaXhlZCkge1xyXG4gICAgICAgICAgICByZXR1cm4gcGFyZW50VmFsdWUgKyBlbGVtZW50LnNjcm9sbFRvcDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gcGFyZW50VmFsdWUgKyBlbGVtZW50LnNjcm9sbFRvcCAqIC0xO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyAjZW5kcmVnaW9uIFByaXZhdGUgTWV0aG9kc1xyXG59XHJcbiJdfQ==
80
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb3ZfMTZ2MWFoaTJqdCIsImFjdHVhbENvdmVyYWdlIiwiVG9vbHRpcFBvc2l0aW9uIiwiUG9wVXBIZWxwZXIiLCJnZXRDb250YWluZXJIZWlnaHQiLCJyZWZlcmVuY2VDb250YWluZXIiLCJyZWZlcmVuY2VJc0NvbnRhaW5lciIsImYiLCJzIiwiYiIsIm5hdGl2ZUVsZW1lbnQiLCJmaXJzdEVsZW1lbnRDaGlsZCIsImNsaWVudEhlaWdodCIsIm9mZnNldEhlaWdodCIsImdldENvbnRhaW5lcldpZHRoIiwiY2xpZW50V2lkdGgiLCJvZmZzZXRXaWR0aCIsImdldERpc3BsYXlQb3NpdGlvbiIsInBvcHVwY29udGVudGNvbnRhaW5lciIsImFycm93V2lkdGgiLCJhcnJvd0hlaWdodCIsImFsbG93ZWRQb3NpdGlvbnMiLCJ2YWxpZFBvc2l0aW9ucyIsInZhbGlkYXRlUG9zaXRpb25zIiwiaGFzUG9zaXRpb24iLCJyaWdodCIsInRvcCIsImxlZnQiLCJib3R0b20iLCJ0b3BlbmQiLCJib3R0b21lbmQiLCJpc0F1dG9Qb3NpdGlvbiIsImdldFBvc2l0aW9uIiwiZ2V0UG9wdXBIZWlnaHQiLCJjb250YWluZXIiLCJnZXRQb3B1cFdpZHRoIiwiZ2V0UG9zaXRpb25MZWZ0IiwicG9wdXBDb250YWluZXIiLCJjb250cm9sUmVmZXJlbmNlIiwicmVxdWVzdGVkUG9zaXRpb24iLCJ1bmRlZmluZWQiLCJpdGVtIiwiY2hpbGRyZW4iLCJsZW5ndGgiLCJjaGlsZEl0ZW0iLCJjb250ZW50UG9zaXRpb24iLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJ3aWR0aCIsIm9mZnNldFRvcCIsIm9mZnNldExlZnQiLCJnZXRQb3NpdGlvblRvcCIsImNvbnRlbnRQb3NpdGlvblRvcCIsImdldE9mZnNldFRvcFBhcmVudCIsIm9mZnNldFBhcmVudCIsImdldFNjcm9sbFRvcFBhcmVudCIsInBhcmVudEVsZW1lbnQiLCJoZWlnaHQiLCJjbGllbnRUb3AiLCJwb3NpdGlvbnMiLCJzcGxpdCIsImluZGV4T2YiLCJwb3NpdGlvblByb3BlcnR5Iiwibm9uZSIsImJhc2VQb3NpdGlvbiIsInRvb2x0aXBSZWN0IiwibGVmdFBvc09rIiwicmlnaHRQb3NPayIsIndpbmRvdyIsImlubmVyV2lkdGgiLCJ0b3BQb3NPayIsImJvdHRvbVBvc09rIiwiaW5uZXJIZWlnaHQiLCJsZWZ0SGFsZlBvc09rIiwicmlnaHRIYWxmUG9zT2siLCJ0b3BIYWxmUG9zT2siLCJib3R0b21IYWxmUG9zT2siLCJlbGVtZW50IiwicGFyZW50VmFsdWUiLCJvZmZzZXQiLCJpc0ZpeGVkIiwic2Nyb2xsVG9wIiwiaXNDdXJyZW50Rml4ZWQiLCJnZXRDb21wdXRlZFN0eWxlIiwiZ2V0UHJvcGVydHlWYWx1ZSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3NhYy1jb21tb24vc3JjL3V0aWxpdGllcy9wb3B1cGhlbHBlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUb29sdGlwUG9zaXRpb24gfSBmcm9tICcuL2VudW1zJztcclxuaW1wb3J0IHsgRWxlbWVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuZXhwb3J0IGNsYXNzIFBvcFVwSGVscGVyIHtcclxuICAgIC8vICNyZWdpb24gUHVibGljIE1ldGhvZHNcclxuXHJcbiAgICBwdWJsaWMgZ2V0Q29udGFpbmVySGVpZ2h0KHJlZmVyZW5jZUNvbnRhaW5lcjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sIHJlZmVyZW5jZUlzQ29udGFpbmVyOiBib29sZWFuKTogbnVtYmVyIHtcclxuICAgICAgICBpZiAocmVmZXJlbmNlQ29udGFpbmVyKSB7XHJcbiAgICAgICAgICAgIHJldHVybiByZWZlcmVuY2VJc0NvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgPyByZWZlcmVuY2VDb250YWluZXIubmF0aXZlRWxlbWVudC5maXJzdEVsZW1lbnRDaGlsZC5jbGllbnRIZWlnaHRcclxuICAgICAgICAgICAgICAgIDogcmVmZXJlbmNlQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0O1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiAwO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0Q29udGFpbmVyV2lkdGgocmVmZXJlbmNlQ29udGFpbmVyOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PiwgcmVmZXJlbmNlSXNDb250YWluZXI6IGJvb2xlYW4pOiBudW1iZXIge1xyXG4gICAgICAgIGlmIChyZWZlcmVuY2VDb250YWluZXIpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHJlZmVyZW5jZUlzQ29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICA/IHJlZmVyZW5jZUNvbnRhaW5lci5uYXRpdmVFbGVtZW50LmZpcnN0RWxlbWVudENoaWxkLmNsaWVudFdpZHRoXHJcbiAgICAgICAgICAgICAgICA6IHJlZmVyZW5jZUNvbnRhaW5lci5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiAwO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldCBQb3NpdGlvbiB3aG8gdGhlIHBvcHVwIHdvdWxkIGJlIHBvc2l0aW9uZWRcclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gcmVmZXJlbmNlQ29udGFpbmVyIEVsZW1lbnQgUmVmZXJlbmNlIHRvIEhUTUwgRWxlbWVudCB3aGljaCBpcyB0aGUgcmVmZXJlbmNlIHRvIHBvc2l0aW9uaW5nIHRoZSBwb3B1cFxyXG4gICAgICogQHBhcmFtIHBvcHVwY29udGVudGNvbnRhaW5lciBFbGVtZW50IFJlZmVyZW5jZSB0byBjb250YWluZXIgb2YgcG9wdXBcclxuICAgICAqIEBwYXJhbSBwb3B1cE9mZnNldCBPZmZzZXQgZm9yIHBvcHVwIHBvc2l0aW9uaW5nXHJcbiAgICAgKiBAcGFyYW0gYWxsb3dlZFBvc2l0aW9ucyBBbGxvd2VkIFBvc2l0aW9ucyBmb3IgdGhlIHBvcHVwXHJcbiAgICAgKiBAcmV0dXJucyBSZXR1cm5zIHRoZSBwb3NpdGlvbiB3aGVyZSB0aGUgcG9wdXAgc2hvdWxkIGJlIGRpc3BsYXllZFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0RGlzcGxheVBvc2l0aW9uKFxyXG4gICAgICAgIHJlZmVyZW5jZUNvbnRhaW5lcjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXHJcbiAgICAgICAgcG9wdXBjb250ZW50Y29udGFpbmVyOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcclxuICAgICAgICBhcnJvd1dpZHRoOiBudW1iZXIsXHJcbiAgICAgICAgYXJyb3dIZWlnaHQ6IG51bWJlcixcclxuICAgICAgICBhbGxvd2VkUG9zaXRpb25zOiBzdHJpbmcsXHJcbiAgICAgICAgcmVmZXJlbmNlSXNDb250YWluZXI6IGJvb2xlYW5cclxuICAgICk6IFRvb2x0aXBQb3NpdGlvbiB7XHJcbiAgICAgICAgY29uc3QgdmFsaWRQb3NpdGlvbnM6IFRvb2x0aXBQb3NpdGlvbiA9IHRoaXMudmFsaWRhdGVQb3NpdGlvbnMoXHJcbiAgICAgICAgICAgIHJlZmVyZW5jZUNvbnRhaW5lcixcclxuICAgICAgICAgICAgcG9wdXBjb250ZW50Y29udGFpbmVyLFxyXG4gICAgICAgICAgICBhcnJvd1dpZHRoLFxyXG4gICAgICAgICAgICBhcnJvd0hlaWdodCxcclxuICAgICAgICAgICAgcmVmZXJlbmNlSXNDb250YWluZXJcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYml0d2lzZVxyXG4gICAgICAgIGlmICh0aGlzLmhhc1Bvc2l0aW9uKGFsbG93ZWRQb3NpdGlvbnMsIFRvb2x0aXBQb3NpdGlvbi5yaWdodCkgJiYgdmFsaWRQb3NpdGlvbnMgJiBUb29sdGlwUG9zaXRpb24ucmlnaHQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIFRvb2x0aXBQb3NpdGlvbi5yaWdodDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1iaXR3aXNlXHJcbiAgICAgICAgaWYgKHRoaXMuaGFzUG9zaXRpb24oYWxsb3dlZFBvc2l0aW9ucywgVG9vbHRpcFBvc2l0aW9uLnRvcCkgJiYgdmFsaWRQb3NpdGlvbnMgJiBUb29sdGlwUG9zaXRpb24udG9wKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBUb29sdGlwUG9zaXRpb24udG9wO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWJpdHdpc2VcclxuICAgICAgICBpZiAodGhpcy5oYXNQb3NpdGlvbihhbGxvd2VkUG9zaXRpb25zLCBUb29sdGlwUG9zaXRpb24ubGVmdCkgJiYgdmFsaWRQb3NpdGlvbnMgJiBUb29sdGlwUG9zaXRpb24ubGVmdCkge1xyXG4gICAgICAgICAgICByZXR1cm4gVG9vbHRpcFBvc2l0aW9uLmxlZnQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYml0d2lzZVxyXG4gICAgICAgIGlmICh0aGlzLmhhc1Bvc2l0aW9uKGFsbG93ZWRQb3NpdGlvbnMsIFRvb2x0aXBQb3NpdGlvbi5ib3R0b20pICYmIHZhbGlkUG9zaXRpb25zICYgVG9vbHRpcFBvc2l0aW9uLmJvdHRvbSkge1xyXG4gICAgICAgICAgICByZXR1cm4gVG9vbHRpcFBvc2l0aW9uLmJvdHRvbTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmhhc1Bvc2l0aW9uKGFsbG93ZWRQb3NpdGlvbnMsIFRvb2x0aXBQb3NpdGlvbi50b3BlbmQpICYmIHZhbGlkUG9zaXRpb25zICYgVG9vbHRpcFBvc2l0aW9uLnRvcGVuZCkge1xyXG4gICAgICAgICAgICByZXR1cm4gVG9vbHRpcFBvc2l0aW9uLnRvcGVuZDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgICAgdGhpcy5oYXNQb3NpdGlvbihhbGxvd2VkUG9zaXRpb25zLCBUb29sdGlwUG9zaXRpb24uYm90dG9tZW5kKSAmJlxyXG4gICAgICAgICAgICB2YWxpZFBvc2l0aW9ucyAmIFRvb2x0aXBQb3NpdGlvbi5ib3R0b21lbmRcclxuICAgICAgICApIHtcclxuICAgICAgICAgICAgcmV0dXJuIFRvb2x0aXBQb3NpdGlvbi5ib3R0b21lbmQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBHZXQgQXV0byBQb3NpdGlvbiBvciBEZWZhdWx0XHJcbiAgICAgICAgaWYgKHRoaXMuaXNBdXRvUG9zaXRpb24oYWxsb3dlZFBvc2l0aW9ucykpIHtcclxuICAgICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWJpdHdpc2VcclxuICAgICAgICAgICAgaWYgKHZhbGlkUG9zaXRpb25zICYgVG9vbHRpcFBvc2l0aW9uLnJpZ2h0KSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gVG9vbHRpcFBvc2l0aW9uLnJpZ2h0O1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYml0d2lzZVxyXG4gICAgICAgICAgICBpZiAodmFsaWRQb3NpdGlvbnMgJiBUb29sdGlwUG9zaXRpb24udG9wKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gVG9vbHRpcFBvc2l0aW9uLnRvcDtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWJpdHdpc2VcclxuICAgICAgICAgICAgaWYgKHZhbGlkUG9zaXRpb25zICYgVG9vbHRpcFBvc2l0aW9uLmxlZnQpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBUb29sdGlwUG9zaXRpb24ubGVmdDtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWJpdHdpc2VcclxuICAgICAgICAgICAgaWYgKHZhbGlkUG9zaXRpb25zICYgVG9vbHRpcFBvc2l0aW9uLmJvdHRvbSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFRvb2x0aXBQb3NpdGlvbi5ib3R0b207XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHJldHVybiBUb29sdGlwUG9zaXRpb24ucmlnaHQ7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0UG9zaXRpb24oYWxsb3dlZFBvc2l0aW9ucyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2FsY3VsYXRlcyB0aGUgaGVpZ2h0IG9mIHRoZSBwb3B1cFxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBjb250YWluZXIgRWxlbWVudCBSZWZlcmVuY2UgdG8gY29udGFpbmVyIG9mIHBvcHVwXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXRQb3B1cEhlaWdodChjb250YWluZXI6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+KTogbnVtYmVyIHtcclxuICAgICAgICBpZiAoY29udGFpbmVyKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBjb250YWluZXIubmF0aXZlRWxlbWVudC5maXJzdEVsZW1lbnRDaGlsZC5jbGllbnRIZWlnaHQgPz8gMDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gMDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDYWxjdWxhdGVzIHRoZSB3aWR0aCBvZiB0aGUgcG9wdXBcclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gY29udGFpbmVyIEVsZW1lbnQgUmVmZXJlbmNlIHRvIGNvbnRhaW5lciBvZiBwb3B1cFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0UG9wdXBXaWR0aChjb250YWluZXI6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+KTogbnVtYmVyIHtcclxuICAgICAgICBpZiAoY29udGFpbmVyKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBjb250YWluZXIubmF0aXZlRWxlbWVudC5maXJzdEVsZW1lbnRDaGlsZC5jbGllbnRXaWR0aDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gMDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXR1cm5zIHRoZSBkZWZpbmVkIHBvc2l0aW9uIGZvciB0aGUgdG9vbHRpcFxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBhbGxvd2VkUG9zaXRpb25zIEFsbG93ZWQgcG9zaXRpb25zIGRlZmluZWQgaW4gbWFya3VwIGZvciBwb3B1cFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0UG9zaXRpb24oYWxsb3dlZFBvc2l0aW9uczogc3RyaW5nKTogVG9vbHRpcFBvc2l0aW9uIHtcclxuICAgICAgICBpZiAodGhpcy5oYXNQb3NpdGlvbihhbGxvd2VkUG9zaXRpb25zLCBUb29sdGlwUG9zaXRpb24ubGVmdCkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIFRvb2x0aXBQb3NpdGlvbi5sZWZ0O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMuaGFzUG9zaXRpb24oYWxsb3dlZFBvc2l0aW9ucywgVG9vbHRpcFBvc2l0aW9uLnRvcCkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIFRvb2x0aXBQb3NpdGlvbi50b3A7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5oYXNQb3NpdGlvbihhbGxvd2VkUG9zaXRpb25zLCBUb29sdGlwUG9zaXRpb24ucmlnaHQpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBUb29sdGlwUG9zaXRpb24ucmlnaHQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5oYXNQb3NpdGlvbihhbGxvd2VkUG9zaXRpb25zLCBUb29sdGlwUG9zaXRpb24uYm90dG9tKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gVG9vbHRpcFBvc2l0aW9uLmJvdHRvbTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmhhc1Bvc2l0aW9uKGFsbG93ZWRQb3NpdGlvbnMsIFRvb2x0aXBQb3NpdGlvbi50b3BlbmQpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBUb29sdGlwUG9zaXRpb24udG9wZW5kO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMuaGFzUG9zaXRpb24oYWxsb3dlZFBvc2l0aW9ucywgVG9vbHRpcFBvc2l0aW9uLmJvdHRvbWVuZCkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIFRvb2x0aXBQb3NpdGlvbi5ib3R0b21lbmQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBEZWZhdWx0IFBvc2l0aW9uIGlmIGVtcHR5XHJcbiAgICAgICAgcmV0dXJuIFRvb2x0aXBQb3NpdGlvbi5yaWdodDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENhbGN1bGF0ZXMgdGhlIHBvc2l0aW9uIG9mIHRoZSB0b29sdGlwIGZyb20gbGlua3NcclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gY29udHJvbFJlZmVyZW5jZSBFbGVtZW50IFJlZmVyZW5jZSB0byBhbmd1bGFyIGNvbXBvbmVudFxyXG4gICAgICogQHBhcmFtIHBvcHVwQ29udGFpbmVyIEVsZW1lbnQgUmVmZXJlbmNlIHRvIGNvbnRhaW5lciBvZiBwb3B1cFxyXG4gICAgICogQHBhcmFtIHJlZmVyZW5jZUNvbnRhaW5lciBFbGVtZW50IFJlZmVyZW5jZSB0byBIVE1MIEVsZW1lbnQgd2hpY2ggaXMgdGhlIHJlZmVyZW5jZSB0byBwb3NpdGlvbmluZyB0aGUgcG9wdXBcclxuICAgICAqIEBwYXJhbSBwb3B1cE9mZnNldCBPZmZzZXQgZm9yIHBvcHVwIHBvc2l0aW9uaW5nXHJcbiAgICAgKiBAcGFyYW0gcmVxdWVzdGVkUG9zaXRpb24gUmVxdWVzdGVkIFBvc2l0aW9uIGJ5IENvbnRyb2xcclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldFBvc2l0aW9uTGVmdChcclxuICAgICAgICByZWZlcmVuY2VDb250YWluZXI6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxyXG4gICAgICAgIHBvcHVwQ29udGFpbmVyOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcclxuICAgICAgICBjb250cm9sUmVmZXJlbmNlOiBFbGVtZW50UmVmLFxyXG4gICAgICAgIGFycm93V2lkdGg6IG51bWJlcixcclxuICAgICAgICBhcnJvd0hlaWdodDogbnVtYmVyLFxyXG4gICAgICAgIHJlcXVlc3RlZFBvc2l0aW9uOiBzdHJpbmcsXHJcbiAgICAgICAgcmVmZXJlbmNlSXNDb250YWluZXI6IGJvb2xlYW5cclxuICAgICk6IG51bWJlciB7XHJcbiAgICAgICAgaWYgKHJlZmVyZW5jZUNvbnRhaW5lciAhPT0gbnVsbCAmJiByZWZlcmVuY2VDb250YWluZXIgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICBjb25zdCBpdGVtID0gcmVmZXJlbmNlQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQ7XHJcblxyXG4gICAgICAgICAgICBpZiAoaXRlbS5jaGlsZHJlbi5sZW5ndGggPj0gMSkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY2hpbGRJdGVtID0gcmVmZXJlbmNlSXNDb250YWluZXIgPyAoaXRlbS5maXJzdEVsZW1lbnRDaGlsZCBhcyBIVE1MRWxlbWVudCkgOiBpdGVtO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY29udGVudFBvc2l0aW9uOiBET01SZWN0ID0gY2hpbGRJdGVtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG5cclxuICAgICAgICAgICAgICAgIHN3aXRjaCAoXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXREaXNwbGF5UG9zaXRpb24oXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZUNvbnRhaW5lcixcclxuICAgICAgICAgICAgICAgICAgICAgICAgcG9wdXBDb250YWluZXIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFycm93V2lkdGgsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFycm93SGVpZ2h0LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0ZWRQb3NpdGlvbixcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlSXNDb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgICAgICBjYXNlIFRvb2x0aXBQb3NpdGlvbi50b3A6XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBUb29sdGlwUG9zaXRpb24uYm90dG9tOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudFBvc2l0aW9uLmxlZnQgKyBjb250ZW50UG9zaXRpb24ud2lkdGggLyAyIC0gdGhpcy5nZXRQb3B1cFdpZHRoKHBvcHVwQ29udGFpbmVyKSAvIDJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICBjYXNlIFRvb2x0aXBQb3NpdGlvbi50b3BlbmQ6XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBUb29sdGlwUG9zaXRpb24uYm90dG9tZW5kOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29udGVudFBvc2l0aW9uLmxlZnQgKyBjb250ZW50UG9zaXRpb24ud2lkdGggLSB0aGlzLmdldFBvcHVwV2lkdGgocG9wdXBDb250YWluZXIpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgVG9vbHRpcFBvc2l0aW9uLnJpZ2h0OlxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29udGVudFBvc2l0aW9uLmxlZnQgKyBjb250ZW50UG9zaXRpb24ud2lkdGggKyBhcnJvd1dpZHRoIC8gMjtcclxuICAgICAgICAgICAgICAgICAgICBjYXNlIFRvb2x0aXBQb3NpdGlvbi5sZWZ0OlxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29udGVudFBvc2l0aW9uLmxlZnQgLSB0aGlzLmdldFBvcHVwV2lkdGgocG9wdXBDb250YWluZXIpICsgKGFycm93V2lkdGggLyAyKSAqIC0xO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIHJldHVybiByZWZlcmVuY2VDb250YWluZXIubmF0aXZlRWxlbWVudC5vZmZzZXRUb3A7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVmZXJlbmNlQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQub2Zmc2V0VG9wO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIGNvbnRyb2xSZWZlcmVuY2UubmF0aXZlRWxlbWVudC5vZmZzZXRMZWZ0O1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENhbGN1bGF0ZXMgdGhlIHBvc2l0aW9uIG9mIHRoZSB0b29sdGlwIGZyb20gdGhlIHRvcFxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBjb250cm9sUmVmZXJlbmNlIEVsZW1lbnQgUmVmZXJlbmNlIHRvIGFuZ3VsYXIgY29tcG9uZW50XHJcbiAgICAgKiBAcGFyYW0gcG9wdXBDb250YWluZXIgRWxlbWVudCBSZWZlcmVuY2UgdG8gY29udGFpbmVyIG9mIHBvcHVwXHJcbiAgICAgKiBAcGFyYW0gcmVmZXJlbmNlQ29udGFpbmVyIEVsZW1lbnQgUmVmZXJlbmNlIHRvIEhUTUwgRWxlbWVudCB3aGljaCBpcyB0aGUgcmVmZXJlbmNlIHRvIHBvc2l0aW9uaW5nIHRoZSBwb3B1cFxyXG4gICAgICogQHBhcmFtIHBvcHVwT2Zmc2V0IE9mZnNldCBmb3IgcG9wdXAgcG9zaXRpb25pbmdcclxuICAgICAqIEBwYXJhbSByZXF1ZXN0ZWRQb3NpdGlvbiBSZXF1ZXN0ZWQgUG9zaXRpb24gYnkgQ29udHJvbFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0UG9zaXRpb25Ub3AoXHJcbiAgICAgICAgcmVmZXJlbmNlQ29udGFpbmVyOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcclxuICAgICAgICBwb3B1cENvbnRhaW5lcjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXHJcbiAgICAgICAgY29udHJvbFJlZmVyZW5jZTogRWxlbWVudFJlZixcclxuICAgICAgICBhcnJvd1dpZHRoOiBudW1iZXIsXHJcbiAgICAgICAgYXJyb3dIZWlnaHQ6IG51bWJlcixcclxuICAgICAgICByZXF1ZXN0ZWRQb3NpdGlvbjogc3RyaW5nLFxyXG4gICAgICAgIHJlZmVyZW5jZUlzQ29udGFpbmVyOiBib29sZWFuXHJcbiAgICApOiBudW1iZXIge1xyXG4gICAgICAgIGlmIChyZWZlcmVuY2VDb250YWluZXIgIT09IG51bGwgJiYgcmVmZXJlbmNlQ29udGFpbmVyICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgY29uc3QgaXRlbSA9IHJlZmVyZW5jZUNvbnRhaW5lci5uYXRpdmVFbGVtZW50O1xyXG4gICAgICAgICAgICBpZiAoaXRlbS5jaGlsZHJlbi5sZW5ndGggPj0gMSkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY2hpbGRJdGVtID0gcmVmZXJlbmNlSXNDb250YWluZXIgPyAoaXRlbS5maXJzdEVsZW1lbnRDaGlsZCBhcyBIVE1MRWxlbWVudCkgOiBpdGVtO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY29udGVudFBvc2l0aW9uOiBET01SZWN0ID0gY2hpbGRJdGVtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIEdldCBQb3NpdGlvbiB3aXRoIFNjcm9sbCAoU2Nyb2xsYmFycyBpbnNpZGUgcGFnZSBzaG91bGQgYmUgc3Vic3RyYWN0ZWQpXHJcbiAgICAgICAgICAgICAgICBjb25zdCBjb250ZW50UG9zaXRpb25Ub3AgPVxyXG4gICAgICAgICAgICAgICAgICAgIGNoaWxkSXRlbS5vZmZzZXRUb3AgK1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0T2Zmc2V0VG9wUGFyZW50KGNoaWxkSXRlbS5vZmZzZXRQYXJlbnQgYXMgSFRNTEVsZW1lbnQpICtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmdldFNjcm9sbFRvcFBhcmVudChjaGlsZEl0ZW0ucGFyZW50RWxlbWVudCk7XHJcblxyXG4gICAgICAgICAgICAgICAgc3dpdGNoIChcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmdldERpc3BsYXlQb3NpdGlvbihcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlQ29udGFpbmVyLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwb3B1cENvbnRhaW5lcixcclxuICAgICAgICAgICAgICAgICAgICAgICAgYXJyb3dXaWR0aCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgYXJyb3dIZWlnaHQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RlZFBvc2l0aW9uLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2VJc0NvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgVG9vbHRpcFBvc2l0aW9uLnRvcDpcclxuICAgICAgICAgICAgICAgICAgICBjYXNlIFRvb2x0aXBQb3NpdGlvbi50b3BlbmQ6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjb250ZW50UG9zaXRpb25Ub3AgLSB0aGlzLmdldFBvcHVwSGVpZ2h0KHBvcHVwQ29udGFpbmVyKSArIChhcnJvd0hlaWdodCAvIDIpICogLTE7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBUb29sdGlwUG9zaXRpb24ucmlnaHQ6XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBUb29sdGlwUG9zaXRpb24ubGVmdDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRQb3NpdGlvblRvcCArIGNvbnRlbnRQb3NpdGlvbi5oZWlnaHQgLyAyIC0gdGhpcy5nZXRQb3B1cEhlaWdodChwb3B1cENvbnRhaW5lcikgLyAyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBUb29sdGlwUG9zaXRpb24uYm90dG9tOlxyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgVG9vbHRpcFBvc2l0aW9uLmJvdHRvbWVuZDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRlbnRQb3NpdGlvblRvcCArIGNvbnRlbnRQb3NpdGlvbi5oZWlnaHQgKyBhcnJvd0hlaWdodCAvIDI7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgICAgICBjaGlsZEl0ZW0uY2xpZW50VG9wICtcclxuICAgICAgICAgICAgICAgICAgICBjaGlsZEl0ZW0ub2Zmc2V0VG9wIC1cclxuICAgICAgICAgICAgICAgICAgICAodGhpcy5nZXRQb3B1cEhlaWdodChwb3B1cENvbnRhaW5lcikgLyAyIC0gY2hpbGRJdGVtLm9mZnNldEhlaWdodCAvIDIpXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlZmVyZW5jZUNvbnRhaW5lci5uYXRpdmVFbGVtZW50Lm9mZnNldFRvcDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiBjb250cm9sUmVmZXJlbmNlLm5hdGl2ZUVsZW1lbnQub2Zmc2V0VG9wO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJldHVybnMgd2hldGhlciB0aGUgcG9zaXRpb24gaGFzIGJlZW4gY29uZmlndXJlZFxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBhbGxvd2VkUG9zaXRpb25zIFBvc2l0aW9ucyB0aGF0IGFsbG93ZWQgYnkgY29udHJvbFxyXG4gICAgICogQHBhcmFtIHJlcXVlc3RlZFBvc2l0aW9uIFBvc2l0aW9uIHRvIGJlIGNoZWNrZWRcclxuICAgICAqL1xyXG4gICAgcHVibGljIGhhc1Bvc2l0aW9uKGFsbG93ZWRQb3NpdGlvbnM6IHN0cmluZywgcmVxdWVzdGVkUG9zaXRpb246IFRvb2x0aXBQb3NpdGlvbik6IGJvb2xlYW4ge1xyXG4gICAgICAgIGNvbnN0IHBvc2l0aW9ucyA9IGFsbG93ZWRQb3NpdGlvbnMuc3BsaXQoJ3wnKTtcclxuXHJcbiAgICAgICAgaWYgKHJlcXVlc3RlZFBvc2l0aW9uID09PSBUb29sdGlwUG9zaXRpb24ucmlnaHQgJiYgcG9zaXRpb25zLmluZGV4T2YoJ3JpZ2h0JykgPj0gMCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChyZXF1ZXN0ZWRQb3NpdGlvbiA9PT0gVG9vbHRpcFBvc2l0aW9uLnRvcCAmJiBwb3NpdGlvbnMuaW5kZXhPZigndG9wJykgPj0gMCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChyZXF1ZXN0ZWRQb3NpdGlvbiA9PT0gVG9vbHRpcFBvc2l0aW9uLmxlZnQgJiYgcG9zaXRpb25zLmluZGV4T2YoJ2xlZnQnKSA+PSAwKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHJlcXVlc3RlZFBvc2l0aW9uID09PSBUb29sdGlwUG9zaXRpb24uYm90dG9tICYmIHBvc2l0aW9ucy5pbmRleE9mKCdib3R0b20nKSA+PSAwKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHJlcXVlc3RlZFBvc2l0aW9uID09PSBUb29sdGlwUG9zaXRpb24udG9wZW5kICYmIHBvc2l0aW9ucy5pbmRleE9mKCd0b3BlbmQnKSA+PSAwKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAocmVxdWVzdGVkUG9zaXRpb24gPT09IFRvb2x0aXBQb3NpdGlvbi5ib3R0b21lbmQgJiYgcG9zaXRpb25zLmluZGV4T2YoJ2JvdHRvbWVuZCcpID49IDApIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBEZWZpbmVzIHdoZXRoZXIgQXV0b1Bvc2l0aW9uIGlzIGFjdGl2ZVxyXG4gICAgICogQHBhcmFtIHBvc2l0aW9uUHJvcGVydHkgTGlzdCBvZiBhbGxvd2VkIHBvc2l0aW9uc1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgaXNBdXRvUG9zaXRpb24ocG9zaXRpb25Qcm9wZXJ0eTogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICAgICAgY29uc3QgcG9zaXRpb25zID0gcG9zaXRpb25Qcm9wZXJ0eS5zcGxpdCgnfCcpO1xyXG4gICAgICAgIHJldHVybiBwb3NpdGlvbnMuaW5kZXhPZignYXV0bycpID49IDA7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDaGVja3Mgd2hldGhlciB0aGUgcG9zaXRpb24gaXMgdmFsaWQgb3Igd2hldGhlciB0aGUgdG9vbHRpcCBvbiB0aGUgcG9zaXRpb24gaGFzIHNwYWNlXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyB2YWxpZGF0ZVBvc2l0aW9ucyhcclxuICAgICAgICByZWZlcmVuY2VDb250YWluZXI6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxyXG4gICAgICAgIHBvcHVwY29udGVudGNvbnRhaW5lcjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXHJcbiAgICAgICAgYXJyb3dXaWR0aDogbnVtYmVyLFxyXG4gICAgICAgIGFycm93SGVpZ2h0OiBudW1iZXIsXHJcbiAgICAgICAgcmVmZXJlbmNlSXNDb250YWluZXI6IGJvb2xlYW5cclxuICAgICk6IFRvb2x0aXBQb3NpdGlvbiB7XHJcbiAgICAgICAgLy8gQ2hlY2sgaWYgQ29udGFpbmVyIGlzIGZhbHNlXHJcbiAgICAgICAgaWYgKHBvcHVwY29udGVudGNvbnRhaW5lciA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBUb29sdGlwUG9zaXRpb24ucmlnaHQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgYWxsb3dlZFBvc2l0aW9uczogVG9vbHRpcFBvc2l0aW9uID0gVG9vbHRpcFBvc2l0aW9uLm5vbmU7XHJcbiAgICAgICAgY29uc3QgYmFzZVBvc2l0aW9uOiBET01SZWN0ID0gcmVmZXJlbmNlSXNDb250YWluZXJcclxuICAgICAgICAgICAgPyByZWZlcmVuY2VDb250YWluZXIubmF0aXZlRWxlbWVudC5maXJzdEVsZW1lbnRDaGlsZC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxyXG4gICAgICAgICAgICA6IHJlZmVyZW5jZUNvbnRhaW5lci5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG4gICAgICAgIGNvbnN0IHRvb2x0aXBSZWN0OiBET01SZWN0ID0gcG9wdXBjb250ZW50Y29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuZmlyc3RFbGVtZW50Q2hpbGQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcblxyXG4gICAgICAgIGNvbnN0IGxlZnRQb3NPazogYm9vbGVhbiA9IGJhc2VQb3NpdGlvbi5sZWZ0IC0gdG9vbHRpcFJlY3Qud2lkdGggKyBhcnJvd1dpZHRoICogLTEgPiAwO1xyXG4gICAgICAgIGNvbnN0IHJpZ2h0UG9zT2s6IGJvb2xlYW4gPSBiYXNlUG9zaXRpb24ucmlnaHQgKyB0b29sdGlwUmVjdC53aWR0aCArIGFycm93V2lkdGggPCB3aW5kb3cuaW5uZXJXaWR0aDtcclxuICAgICAgICBjb25zdCB0b3BQb3NPazogYm9vbGVhbiA9IGJhc2VQb3NpdGlvbi50b3AgLSB0b29sdGlwUmVjdC5oZWlnaHQgKyBhcnJvd0hlaWdodCA+IDA7XHJcbiAgICAgICAgY29uc3QgYm90dG9tUG9zT2s6IGJvb2xlYW4gPSBiYXNlUG9zaXRpb24uYm90dG9tICsgdG9vbHRpcFJlY3QuaGVpZ2h0ICsgYXJyb3dIZWlnaHQgPCB3aW5kb3cuaW5uZXJIZWlnaHQ7XHJcblxyXG4gICAgICAgIGNvbnN0IGxlZnRIYWxmUG9zT2s6IGJvb2xlYW4gPSBiYXNlUG9zaXRpb24ubGVmdCAtIHRvb2x0aXBSZWN0LndpZHRoIC8gMiA+IDA7XHJcbiAgICAgICAgY29uc3QgcmlnaHRIYWxmUG9zT2s6IGJvb2xlYW4gPSBiYXNlUG9zaXRpb24ucmlnaHQgKyB0b29sdGlwUmVjdC53aWR0aCAvIDIgPCB3aW5kb3cuaW5uZXJXaWR0aDtcclxuICAgICAgICBjb25zdCB0b3BIYWxmUG9zT2s6IGJvb2xlYW4gPSBiYXNlUG9zaXRpb24udG9wIC0gdG9vbHRpcFJlY3QuaGVpZ2h0IC8gMiA+IDA7XHJcbiAgICAgICAgY29uc3QgYm90dG9tSGFsZlBvc09rOiBib29sZWFuID0gYmFzZVBvc2l0aW9uLmJvdHRvbSArIHRvb2x0aXBSZWN0LmhlaWdodCAvIDIgPCB3aW5kb3cuaW5uZXJIZWlnaHQ7XHJcblxyXG4gICAgICAgIGlmIChsZWZ0UG9zT2sgJiYgdG9wUG9zT2spIHtcclxuICAgICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWJpdHdpc2VcclxuICAgICAgICAgICAgYWxsb3dlZFBvc2l0aW9ucyA9IGFsbG93ZWRQb3NpdGlvbnMgfCBUb29sdGlwUG9zaXRpb24udG9wZW5kO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGxlZnRQb3NPayAmJiBib3R0b21Qb3NPaykge1xyXG4gICAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYml0d2lzZVxyXG4gICAgICAgICAgICBhbGxvd2VkUG9zaXRpb25zID0gYWxsb3dlZFBvc2l0aW9ucyB8IFRvb2x0aXBQb3NpdGlvbi5ib3R0b21lbmQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAobGVmdFBvc09rICYmIHRvcEhhbGZQb3NPayAmJiBib3R0b21IYWxmUG9zT2spIHtcclxuICAgICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWJpdHdpc2VcclxuICAgICAgICAgICAgYWxsb3dlZFBvc2l0aW9ucyA9IGFsbG93ZWRQb3NpdGlvbnMgfCBUb29sdGlwUG9zaXRpb24ubGVmdDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChyaWdodFBvc09rICYmIHRvcEhhbGZQb3NPayAmJiBib3R0b21IYWxmUG9zT2spIHtcclxuICAgICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWJpdHdpc2VcclxuICAgICAgICAgICAgYWxsb3dlZFBvc2l0aW9ucyA9IGFsbG93ZWRQb3NpdGlvbnMgfCBUb29sdGlwUG9zaXRpb24ucmlnaHQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodG9wUG9zT2sgJiYgbGVmdEhhbGZQb3NPayAmJiByaWdodEhhbGZQb3NPaykge1xyXG4gICAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYml0d2lzZVxyXG4gICAgICAgICAgICBhbGxvd2VkUG9zaXRpb25zID0gYWxsb3dlZFBvc2l0aW9ucyB8IFRvb2x0aXBQb3NpdGlvbi50b3A7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoYm90dG9tUG9zT2sgJiYgbGVmdEhhbGZQb3NPayAmJiByaWdodEhhbGZQb3NPaykge1xyXG4gICAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYml0d2lzZVxyXG4gICAgICAgICAgICBhbGxvd2VkUG9zaXRpb25zID0gYWxsb3dlZFBvc2l0aW9ucyB8IFRvb2x0aXBQb3NpdGlvbi5ib3R0b207XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gYWxsb3dlZFBvc2l0aW9ucztcclxuICAgIH1cclxuXHJcbiAgICAvLyAjZW5kcmVnaW9uIFB1YmxpYyBNZXRob2RzXHJcblxyXG4gICAgLy8gI3JlZ2lvbiBQcml2YXRlIE1ldGhvZHNcclxuXHJcbiAgICAvKipcclxuICAgICAqIENhbGN1bGF0ZXMgdGhlIHRvcCBvZiB0aGUgcGFnZSBpbnNpZGUgYWxsIGVsZW1lbnRzXHJcbiAgICAgKiBAcGFyYW0gZWxlbWVudCBIVE1MIEVsZW1lbnRcclxuICAgICAqIEByZXR1cm5zIHN1bW1hcml6ZWQgdG9wIHZhbHVlIGZvciBhYnNvbHV0ZSBwb3NpdGlvblxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGdldE9mZnNldFRvcFBhcmVudChlbGVtZW50OiBIVE1MRWxlbWVudCk6IG51bWJlciB7XHJcbiAgICAgICAgaWYgKGVsZW1lbnQgPT09IG51bGwpIHtcclxuICAgICAgICAgICAgcmV0dXJuIDA7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoIWVsZW1lbnQub2Zmc2V0UGFyZW50KSB7XHJcbiAgICAgICAgICAgIHJldHVybiBlbGVtZW50Lm9mZnNldFRvcDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IHBhcmVudFZhbHVlID0gdGhpcy5nZXRPZmZzZXRUb3BQYXJlbnQoZWxlbWVudC5vZmZzZXRQYXJlbnQgYXMgSFRNTEVsZW1lbnQpO1xyXG4gICAgICAgIGxldCBvZmZzZXQgPSBlbGVtZW50Lm9mZnNldFRvcDtcclxuICAgICAgICByZXR1cm4gcGFyZW50VmFsdWUgKyBvZmZzZXQ7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDYWNsdWxhdGUgU2Nyb2xsYmFycyBpbnNpZGUgdHJlZVxyXG4gICAgICogQHBhcmFtIGVsZW1lbnQgSFRNTCBFbGVtZW50XHJcbiAgICAgKiBAcGFyYW0gW2lzRml4ZWQ9ZmFsc2VdIEludmVydCBTY3JvbGwgUG9zaXRpb24gdmFsdWUgd2hlbiBzdHlsZSBpcyBmaXhlZCB0byBwcmVzZXJ2ZSBuZWdhdGl2ZSB2YWx1ZXNcclxuICAgICAqIEByZXR1cm5zIFNjcm9sbCB0b3AgdmFsdWUgb2YgZWxlbWVudCB3aXRoIGFsbCBjaGlsZHNcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBnZXRTY3JvbGxUb3BQYXJlbnQoZWxlbWVudDogSFRNTEVsZW1lbnQsIGlzRml4ZWQgPSBmYWxzZSk6IG51bWJlciB7XHJcbiAgICAgICAgaWYgKGVsZW1lbnQgPT09IG51bGwpIHtcclxuICAgICAgICAgICAgcmV0dXJuIDA7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBCb2R5IFNjcm9sbCBzaG91bGQgbm90IGJlIGNhbGN1bGF0ZWRcclxuICAgICAgICBpZiAoIWVsZW1lbnQucGFyZW50RWxlbWVudCkge1xyXG4gICAgICAgICAgICByZXR1cm4gaXNGaXhlZCA/IGVsZW1lbnQuc2Nyb2xsVG9wIDogMDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCBpc0N1cnJlbnRGaXhlZCA9IGZhbHNlO1xyXG4gICAgICAgIGlmICh3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KS5nZXRQcm9wZXJ0eVZhbHVlKCdwb3NpdGlvbicpID09PSAnZml4ZWQnKSB7XHJcbiAgICAgICAgICAgIGlzQ3VycmVudEZpeGVkID0gdHJ1ZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IHBhcmVudFZhbHVlID0gdGhpcy5nZXRTY3JvbGxUb3BQYXJlbnQoZWxlbWVudC5wYXJlbnRFbGVtZW50LCBpc0ZpeGVkIHx8IGlzQ3VycmVudEZpeGVkKTtcclxuXHJcbiAgICAgICAgaWYgKGlzRml4ZWQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHBhcmVudFZhbHVlICsgZWxlbWVudC5zY3JvbGxUb3A7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIHBhcmVudFZhbHVlICsgZWxlbWVudC5zY3JvbGxUb3AgKiAtMTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gI2VuZHJlZ2lvbiBQcml2YXRlIE1ldGhvZHNcclxufVxyXG4iXSwibWFwcGluZ3MiOiJxeHVEQWtCWTtBQUFBQSxjQUFBLFNBQUFBLENBQUEsU0FBQUMsY0FBQSxXQUFBQSxjQUFBLEVBQUFELGNBQUEsR0FsQlosT0FBU0UsZUFBZSxLQUFRLFNBQVMsQ0FHekMsTUFBTSxNQUFPLENBQUFDLFdBQVcsQ0FDcEI7QUFFT0Msa0JBQWtCQSxDQUFDQyxrQkFBMkMsQ0FBRUMsb0JBQTZCLEVBQUFOLGNBQUEsR0FBQU8sQ0FBQSxNQUFBUCxjQUFBLEdBQUFRLENBQUEsTUFDaEcsR0FBSUgsa0JBQWtCLENBQUUsQ0FBQUwsY0FBQSxHQUFBUyxDQUFBLFNBQUFULGNBQUEsR0FBQVEsQ0FBQSxNQUNwQixNQUFPLENBQUFGLG9CQUFvQixFQUFBTixjQUFBLEdBQUFTLENBQUEsU0FDckJKLGtCQUFrQixDQUFDSyxhQUFhLENBQUNDLGlCQUFpQixDQUFDQyxZQUFZLEdBQUFaLGNBQUEsR0FBQVMsQ0FBQSxTQUMvREosa0JBQWtCLENBQUNLLGFBQWEsQ0FBQ0csWUFBWSxFLENBQ3RELElBQU0sQ0FBQWIsY0FBQSxHQUFBUyxDQUFBLFNBQUFULGNBQUEsR0FBQVEsQ0FBQSxNQUNILE1BQU8sRUFBQyxDLENBRWhCLENBRU9NLGlCQUFpQkEsQ0FBQ1Qsa0JBQTJDLENBQUVDLG9CQUE2QixFQUFBTixjQUFBLEdBQUFPLENBQUEsTUFBQVAsY0FBQSxHQUFBUSxDQUFBLE1BQy9GLEdBQUlILGtCQUFrQixDQUFFLENBQUFMLGNBQUEsR0FBQVMsQ0FBQSxTQUFBVCxjQUFBLEdBQUFR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Q0FBQSxXQUFBVCxjQUFBLEdBQUFRLENBQUEsT0FFRCxHQUFJLENBQUFSLGNBQUEsR0FBQVMsQ0FBQSxVQUFBOEIsaUJBQWlCLEdBQUtyQyxlQUFlLENBQUN5QixJQUFJLElBQUEzQixjQUFBLEdBQUFTLENBQUEsVUFBSWlELFNBQVMsQ0FBQ0UsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFJLENBQUMsRUFBRSxDQUFBNUQsY0FBQSxHQUFBUyxDQUFBLFVBQUFULGNBQUEsR0FBQVEsQ0FBQSxPQUM5RSxNQUFPLEtBQUksQyxDQUNkLEtBQUFSLGNBQUEsR0FBQVMsQ0FBQSxXQUFBVCxjQUFBLEdBQUFRLENBQUEsT0FFRCxHQUFJLENBQUFSLGNBQUEsR0FBQVMsQ0FBQSxVQUFBOEIsaUJBQWlCLEdBQUtyQyxlQUFlLENBQUMwQixNQUFNLElBQUE1QixjQUFBLEdBQUFTLENBQUEsVUFBSWlELFNBQVMsQ0FBQ0UsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFJLENBQUMsRUFBRSxDQUFBNUQsY0FBQSxHQUFBUyxDQUFBLFVBQUFULGNBQUEsR0FBQVEsQ0FBQSxPQUNsRixNQUFPLEtBQUksQyxDQUNkLEtBQUFSLGNBQUEsR0FBQVMsQ0FBQSxXQUFBVCxjQUFBLEdBQUFRLENBQUEsT0FFRCxHQUFJLENBQUFSLGNBQUEsR0FBQVMsQ0FBQSxVQUFBOEIsaUJBQWlCLEdBQUtyQyxlQUFlLENBQUMyQixNQUFNLElBQUE3QixjQUFBLEdBQUFTLENBQUEsVUFBSWlELFNBQVMsQ0FBQ0UsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFJLENBQUMsRUFBRSxDQUFBNUQsY0FBQSxHQUFBUyxDQUFBLFVBQUFULGNBQUEsR0FBQVEsQ0FBQSxPQUNsRixNQUFPLEtBQUksQyxDQUNkLEtBQUFSLGNBQUEsR0FBQVMsQ0FBQSxXQUFBVCxjQUFBLEdBQUFRLENBQUEsT0FDRCxHQUFJLENBQUFSLGNBQUEsR0FBQVMsQ0FBQSxVQUFBOEIsaUJBQWlCLEdBQUtyQyxlQUFlLENBQUM0QixTQUFTLElBQUE5QixjQUFBLEdBQUFTLENBQUEsVUFBSWlE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
69
+ /**
70
+ * Calculates the top of the page inside all elements
71
+ * @param element HTML Element
72
+ * @returns summarized top value for absolute position
73
+ */getOffsetTopParent(element){cov_20dzm1ja8p().f[11]++;cov_20dzm1ja8p().s[117]++;if(element===null){cov_20dzm1ja8p().b[66][0]++;cov_20dzm1ja8p().s[118]++;return 0;}else{cov_20dzm1ja8p().b[66][1]++;}cov_20dzm1ja8p().s[119]++;if(!element.offsetParent){cov_20dzm1ja8p().b[67][0]++;cov_20dzm1ja8p().s[120]++;return element.offsetTop;}else{cov_20dzm1ja8p().b[67][1]++;}const parentValue=(cov_20dzm1ja8p().s[121]++,this.getOffsetTopParent(element.offsetParent));let offset=(cov_20dzm1ja8p().s[122]++,element.offsetTop);cov_20dzm1ja8p().s[123]++;return parentValue+offset;}/**
74
+ * Caclulate Scrollbars inside tree
75
+ * @param element HTML Element
76
+ * @param [isFixed=false] Invert Scroll Position value when style is fixed to preserve negative values
77
+ * @returns Scroll top value of element with all childs
78
+ */getScrollTopParent(element,isFixed=(cov_20dzm1ja8p().b[68][0]++,false)){cov_20dzm1ja8p().f[12]++;cov_20dzm1ja8p().s[124]++;if(element===null){cov_20dzm1ja8p().b[69][0]++;cov_20dzm1ja8p().s[125]++;return 0;}else{cov_20dzm1ja8p().b[69][1]++;}// Body Scroll should not be calculated
79
+ cov_20dzm1ja8p().s[126]++;if(!element.parentElement){cov_20dzm1ja8p().b[70][0]++;cov_20dzm1ja8p().s[127]++;return isFixed?(cov_20dzm1ja8p().b[71][0]++,element.scrollTop):(cov_20dzm1ja8p().b[71][1]++,0);}else{cov_20dzm1ja8p().b[70][1]++;}let isCurrentFixed=(cov_20dzm1ja8p().s[128]++,false);cov_20dzm1ja8p().s[129]++;if(window.getComputedStyle(element).getPropertyValue('position')==='fixed'){cov_20dzm1ja8p().b[72][0]++;cov_20dzm1ja8p().s[130]++;isCurrentFixed=true;}else{cov_20dzm1ja8p().b[72][1]++;}const parentValue=(cov_20dzm1ja8p().s[131]++,this.getScrollTopParent(element.parentElement,(cov_20dzm1ja8p().b[73][0]++,isFixed)||(cov_20dzm1ja8p().b[73][1]++,isCurrentFixed)));cov_20dzm1ja8p().s[132]++;if(isFixed){cov_20dzm1ja8p().b[74][0]++;cov_20dzm1ja8p().s[133]++;return parentValue+element.scrollTop;}else{cov_20dzm1ja8p().b[74][1]++;cov_20dzm1ja8p().s[134]++;return parentValue+element.scrollTop*-1;}}}//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wdXBoZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9zYWMtY29tbW9uL3NyYy91dGlsaXRpZXMvcG9wdXBoZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUcxQyxNQUFNLE9BQU8sV0FBVztJQUNwQix5QkFBeUI7SUFFbEIsa0JBQWtCLENBQUMsa0JBQTJDLEVBQUUsb0JBQTZCO1FBQ2hHLElBQUksa0JBQWtCLEVBQUU7WUFDcEIsT0FBTyxvQkFBb0I7Z0JBQ3ZCLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLENBQUMsaUJBQWlCLENBQUMsWUFBWTtnQkFDakUsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUM7U0FDdkQ7YUFBTTtZQUNILE9BQU8sQ0FBQyxDQUFDO1NBQ1o7SUFDTCxDQUFDO0lBRU0saUJBQWlCLENBQUMsa0JBQTJDLEVBQUUsb0JBQTZCO1FBQy9GLElBQUksa0JBQWtCLEVBQUU7WUFDcEIsT0FBTyxvQkFBb0I7Z0JBQ3ZCLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLENBQUMsaUJBQWlCLENBQUMsV0FBVztnQkFDaEUsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUM7U0FDdEQ7YUFBTTtZQUNILE9BQU8sQ0FBQyxDQUFDO1NBQ1o7SUFDTCxDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSSxrQkFBa0IsQ0FDckIsa0JBQTJDLEVBQzNDLHFCQUE4QyxFQUM5QyxVQUFrQixFQUNsQixXQUFtQixFQUNuQixnQkFBd0IsRUFDeEIsb0JBQTZCO1FBRTdCLE1BQU0sY0FBYyxHQUFvQixJQUFJLENBQUMsaUJBQWlCLENBQzFELGtCQUFrQixFQUNsQixxQkFBcUIsRUFDckIsVUFBVSxFQUNWLFdBQVcsRUFDWCxvQkFBb0IsQ0FDdkIsQ0FBQztRQUVG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akYsSUFBSSxNQUFNLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQztRQUMvQixPQUFPLFdBQVcsR0FBRyxNQUFNLENBQUM7SUFDaEMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ssa0JBQWtCLENBQUMsT0FBb0IsRUFBRSxPQUFPLEdBQUcsS0FBSztRQUM1RCxJQUFJLE9BQU8sS0FBSyxJQUFJLEVBQUU7WUFDbEIsT0FBTyxDQUFDLENBQUM7U0FDWjtRQUVELHVDQUF1QztRQUN2QyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRTtZQUN4QixPQUFPLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQzFDO1FBRUQsSUFBSSxjQUFjLEdBQUcsS0FBSyxDQUFDO1FBQzNCLElBQUksTUFBTSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxLQUFLLE9BQU8sRUFBRTtZQUMzRSxjQUFjLEdBQUcsSUFBSSxDQUFDO1NBQ3pCO1FBRUQsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsT0FBTyxJQUFJLGNBQWMsQ0FBQyxDQUFDO1FBRTlGLElBQUksT0FBTyxFQUFFO1lBQ1QsT0FBTyxXQUFXLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQztTQUMxQzthQUFNO1lBQ0gsT0FBTyxXQUFXLEdBQUcsT0FBTyxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQztTQUMvQztJQUNMLENBQUM7Q0FHSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRvb2x0aXBQb3NpdGlvbiB9IGZyb20gJy4vZW51bXMnO1xuaW1wb3J0IHsgRWxlbWVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgY2xhc3MgUG9wVXBIZWxwZXIge1xuICAgIC8vICNyZWdpb24gUHVibGljIE1ldGhvZHNcblxuICAgIHB1YmxpYyBnZXRDb250YWluZXJIZWlnaHQocmVmZXJlbmNlQ29udGFpbmVyOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PiwgcmVmZXJlbmNlSXNDb250YWluZXI6IGJvb2xlYW4pOiBudW1iZXIge1xuICAgICAgICBpZiAocmVmZXJlbmNlQ29udGFpbmVyKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVmZXJlbmNlSXNDb250YWluZXJcbiAgICAgICAgICAgICAgICA/IHJlZmVyZW5jZUNvbnRhaW5lci5uYXRpdmVFbGVtZW50LmZpcnN0RWxlbWVudENoaWxkLmNsaWVudEhlaWdodFxuICAgICAgICAgICAgICAgIDogcmVmZXJlbmNlQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0Q29udGFpbmVyV2lkdGgocmVmZXJlbmNlQ29udGFpbmVyOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PiwgcmVmZXJlbmNlSXNDb250YWluZXI6IGJvb2xlYW4pOiBudW1iZXIge1xuICAgICAgICBpZiAocmVmZXJlbmNlQ29udGFpbmVyKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVmZXJlbmNlSXNDb250YWluZXJcbiAgICAgICAgICAgICAgICA/IHJlZmVyZW5jZUNvbnRhaW5lci5uYXRpdmVFbGVtZW50LmZpcnN0RWxlbWVudENoaWxkLmNsaWVudFdpZHRoXG4gICAgICAgICAgICAgICAgOiByZWZlcmVuY2VDb250YWluZXIubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IFBvc2l0aW9uIHdobyB0aGUgcG9wdXAgd291bGQgYmUgcG9zaXRpb25lZFxuICAgICAqXG4gICAgICogQHBhcmFtIHJlZmVyZW5jZUNvbnRhaW5lciBFbGVtZW50IFJlZmVyZW5jZSB0byBIVE1MIEVsZW1lbnQgd2hpY2ggaXMgdGhlIHJlZmVyZW5jZSB0byBwb3NpdGlvbmluZyB0aGUgcG9wdXBcbiAgICAgKiBAcGFyYW0gcG9wdXBjb250ZW50Y29udGFpbmVyIEVsZW1lbnQgUmVmZXJlbmNlIHRvIGNvbnRhaW5lciBvZiBwb3B1cFxuICAgICAqIEBwYXJhbSBwb3B1cE9mZnNldCBPZmZzZXQgZm9yIHBvcHVwIHBvc2l0aW9uaW5nXG4gICAgICogQHBhcmFtIGFsbG93ZWRQb3NpdGlvbnMgQWxsb3dlZCBQb3NpdGlvbnMgZm9yIHRoZSBwb3B1cFxuICAgICAqIEByZXR1cm5zIFJldHVybnMgdGhlIHBvc2l0aW9uIHdoZXJlIHRoZSBwb3B1cCBzaG91bGQgYmUgZGlzcGxheWVkXG4gICAgICovXG4gICAgcHVibGljIGdldERpc3BsYXlQb3NpdGlvbihcbiAgICAgICAgcmVmZXJlbmNlQ29udGFpbmVyOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICAgICAgcG9wdXBjb250ZW50Y29udGFpbmVyOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICAgICAgYXJyb3dXaWR0aDogbnVtYmVyLFxuICAgICAgICBhcnJvd0hlaWdodDogbnVtYmVyLFxuICAgICAgICBhbGxvd2VkUG9zaXRpb25zOiBzdHJpbmcsXG4gICAgICAgIHJlZmVyZW5jZUlzQ29udGFpbmVyOiBib29sZWFuXG4gICAgKTogVG9vbHRpcFBvc2l0aW9uIHtcbiAgICAgICAgY29uc3QgdmFsaWRQb3NpdGlvbnM6IFRvb2x0aXBQb3NpdGlvbiA9IHRoaXMudmFsaWRhdGVQb3NpdGlvbnMoXG4gICAgICAgICAgICByZWZlcmVuY2VDb250YWluZXIsXG4gICAgICAgICAgICBwb3B1cGNvbnRlbnRjb250YWluZXIsXG4gICAgICAgICAgICBhcnJvd1dpZHRoLFxuICAgICAgICAgICAgYXJyb3dIZWlnaHQsXG4gICAgICAgICAgICByZWZlcmVuY2VJc0NvbnRhaW5lclxuICAgICAgICApO1xuXG4gICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1iaXR3aXNlXG4gICAgICAgIGlmICh0aGlzLmhhc1Bvc2l0aW9uKGFsbG93ZWRQb3NpdGlvbnMsIFRvb2x0aXBQb3NpdGlvbi5yaWdodCkgJiYgdmFsaWRQb3NpdGlvbnMgJiBUb29sdGlwUG9zaXRpb24ucmlnaHQpIHtcbiAgICAgICAgICAgIHJldHVybiBUb29sdGlwUG9zaXRpb24ucmlnaHQ7XG4gICAgICAgIH1cblxuICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYml0d2lzZVxuICAgICAgICBpZiAodGhpcy5oYXNQb3NpdGlvbihhbGxvd2VkUG9zaXRpb25zLCBUb29sdGlwUG9zaXRpb24udG9wKSAmJiB2YWxpZFBvc2l0aW9ucyAmIFRvb2x0aXBQb3NpdGlvbi50b3ApIHtcbiAgICAgICAgICAgIHJldHVybiBUb29sdGlwUG9zaXRpb24udG9wO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWJpdHdpc2VcbiAgICAgICAgaWYgKHRoaXMuaGFzUG9zaXRpb24oYWxsb3dlZFBvc2l0aW9ucywgVG9vbHRpcFBvc2l0aW9uLmxlZnQpICYmIHZhbGlkUG9zaXRpb25zICYgVG9vbHRpcFBvc2l0aW9uLmxlZnQpIHtcbiAgICAgICAgICAgIHJldHVybiBUb29sdGlwUG9zaXRpb24ubGVmdDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1iaXR3aXNlXG4gICAgICAgIGlmICh0aGlzLmhhc1Bvc2l0aW9uKGFsbG93ZWRQb3NpdGlvbnMsIFRvb2x0aXBQb3NpdGlvbi5ib3R0b20pICYmIHZhbGlkUG9zaXRpb25zICYgVG9vbHRpcFBvc2l0aW9uLmJvdHRvbSkge1xuICAgICAgICAgICAgcmV0dXJuIFRvb2x0aXBQb3NpdGlvbi5ib3R0b207XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5oYXNQb3NpdGlvbihhbGxvd2VkUG9zaXRpb25zLCBUb29sdGlwUG9zaXRpb24udG9wZW5kKSAmJiB2YWxpZFBvc2l0aW9ucyAmIFRvb2x0aXBQb3NpdGlvbi50b3BlbmQpIHtcbiAgICAgICAgICAgIHJldHVybiBUb29sdGlwUG9zaXRpb24udG9wZW5kO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgdGhpcy5oYXNQb3NpdGlvbihhbGxvd2VkUG9zaXRpb25zLCBUb29sdGlwUG9zaXRpb24uYm90dG9tZW5kKSAmJlxuICAgICAgICAgICAgdmFsaWRQb3NpdGlvbnMgJiBUb29sdGlwUG9zaXRpb24uYm90dG9tZW5kXG4gICAgICAgICkge1xuICAgICAgICAgICAgcmV0dXJuIFRvb2x0aXBQb3NpdGlvbi5ib3R0b21lbmQ7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBHZXQgQXV0byBQb3NpdGlvbiBvciBEZWZhdWx0XG4gICAgICAgIGlmICh0aGlzLmlzQXV0b1Bvc2l0aW9uKGFsbG93ZWRQb3NpdGlvbnMpKSB7XG4gICAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYml0d2lzZVxuICAgICAgICAgICAgaWYgKHZhbGlkUG9zaXRpb25zICYgVG9vbHRpcFBvc2l0aW9uLnJpZ2h0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFRvb2x0aXBQb3NpdGlvbi5yaWdodDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWJpdHdpc2VcbiAgICAgICAgICAgIGlmICh2YWxpZFBvc2l0aW9ucyAmIFRvb2x0aXBQb3NpdGlvbi50b3ApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gVG9vbHRpcFBvc2l0aW9uLnRvcDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWJpdHdpc2VcbiAgICAgICAgICAgIGlmICh2YWxpZFBvc2l0aW9ucyAmIFRvb2x0aXBQb3NpdGlvbi5sZWZ0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFRvb2x0aXBQb3NpdGlvbi5sZWZ0O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYml0d2lzZVxuICAgICAgICAgICAgaWYgKHZhbGlkUG9zaXRpb25zICYgVG9vbHRpcFBvc2l0aW9uLmJvdHRvbSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBUb29sdGlwUG9zaXRpb24uYm90dG9tO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gVG9vbHRpcFBvc2l0aW9uLnJpZ2h0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0UG9zaXRpb24oYWxsb3dlZFBvc2l0aW9ucyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDYWxjdWxhdGVzIHRoZSBoZWlnaHQgb2YgdGhlIHBvcHVwXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY29udGFpbmVyIEVsZW1lbnQgUmVmZXJlbmNlIHRvIGNvbnRhaW5lciBvZiBwb3B1cFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRQb3B1cEhlaWdodChjb250YWluZXI6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+KTogbnVtYmVyIHtcbiAgICAgICAgaWYgKGNvbnRhaW5lcikge1xuICAgICAgICAgICAgcmV0dXJuIGNvbnRhaW5lci5uYXRpdmVFbGVtZW50LmZpcnN0RWxlbWVudENoaWxkLmNsaWVudEhlaWdodCA/PyAwO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDYWxjdWxhdGVzIHRoZSB3aWR0aCBvZiB0aGUgcG9wdXBcbiAgICAgKlxuICAgICAqIEBwYXJhbSBjb250YWluZXIgRWxlbWVudCBSZWZlcmVuY2UgdG8gY29udGFpbmVyIG9mIHBvcHVwXG4gICAgICovXG4gICAgcHVibGljIGdldFBvcHVwV2lkdGgoY29udGFpbmVyOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50Pik6IG51bWJlciB7XG4gICAgICAgIGlmIChjb250YWluZXIpIHtcbiAgICAgICAgICAgIHJldHVybiBjb250YWluZXIubmF0aXZlRWxlbWVudC5maXJzdEVsZW1lbnRDaGlsZC5jbGllbnRXaWR0aDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgZGVmaW5lZCBwb3NpdGlvbiBmb3IgdGhlIHRvb2x0aXBcbiAgICAgKlxuICAgICAqIEBwYXJhbSBhbGxvd2VkUG9zaXRpb25zIEFsbG93ZWQgcG9zaXRpb25zIGRlZmluZWQgaW4gbWFya3VwIGZvciBwb3B1cFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRQb3NpdGlvbihhbGxvd2VkUG9zaXRpb25zOiBzdHJpbmcpOiBUb29sdGlwUG9zaXRpb24ge1xuICAgICAgICBpZiAodGhpcy5oYXNQb3NpdGlvbihhbGxvd2VkUG9zaXRpb25zLCBUb29sdGlwUG9zaXRpb24ubGVmdCkpIHtcbiAgICAgICAgICAgIHJldHVybiBUb29sdGlwUG9zaXRpb24ubGVmdDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmhhc1Bvc2l0aW9uKGFsbG93ZWRQb3NpdGlvbnMsIFRvb2x0aXBQb3NpdGlvbi50b3ApKSB7XG4gICAgICAgICAgICByZXR1cm4gVG9vbHRpcFBvc2l0aW9uLnRvcDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmhhc1Bvc2l0aW9uKGFsbG93ZWRQb3NpdGlvbnMsIFRvb2x0aXBQb3NpdGlvbi5yaWdodCkpIHtcbiAgICAgICAgICAgIHJldHVybiBUb29sdGlwUG9zaXRpb24ucmlnaHQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5oYXNQb3NpdGlvbihhbGxvd2VkUG9zaXRpb25zLCBUb29sdGlwUG9zaXRpb24uYm90dG9tKSkge1xuICAgICAgICAgICAgcmV0dXJuIFRvb2x0aXBQb3NpdGlvbi5ib3R0b207XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5oYXNQb3NpdGlvbihhbGxvd2VkUG9zaXRpb25zLCBUb29sdGlwUG9zaXRpb24udG9wZW5kKSkge1xuICAgICAgICAgICAgcmV0dXJuIFRvb2x0aXBQb3NpdGlvbi50b3BlbmQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5oYXNQb3NpdGlvbihhbGxvd2VkUG9zaXRpb25zLCBUb29sdGlwUG9zaXRpb24uYm90dG9tZW5kKSkge1xuICAgICAgICAgICAgcmV0dXJuIFRvb2x0aXBQb3NpdGlvbi5ib3R0b21lbmQ7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBEZWZhdWx0IFBvc2l0aW9uIGlmIGVtcHR5XG4gICAgICAgIHJldHVybiBUb29sdGlwUG9zaXRpb24ucmlnaHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2FsY3VsYXRlcyB0aGUgcG9zaXRpb24gb2YgdGhlIHRvb2x0aXAgZnJvbSBsaW5rc1xuICAgICAqXG4gICAgICogQHBhcmFtIGNvbnRyb2xSZWZlcmVuY2UgRWxlbWVudCBSZWZlcmVuY2UgdG8gYW5ndWxhciBjb21wb25lbnRcbiAgICAgKiBAcGFyYW0gcG9wdXBDb250YWluZXIgRWxlbWVudCBSZWZlcmVuY2UgdG8gY29udGFpbmVyIG9mIHBvcHVwXG4gICAgICogQHBhcmFtIHJlZmVyZW5jZUNvbnRhaW5lciBFbGVtZW50IFJlZmVyZW5jZSB0byBIVE1MIEVsZW1lbnQgd2hpY2ggaXMgdGhlIHJlZmVyZW5jZSB0byBwb3NpdGlvbmluZyB0aGUgcG9wdXBcbiAgICAgKiBAcGFyYW0gcG9wdXBPZmZzZXQgT2Zmc2V0IGZvciBwb3B1cCBwb3NpdGlvbmluZ1xuICAgICAqIEBwYXJhbSByZXF1ZXN0ZWRQb3NpdGlvbiBSZXF1ZXN0ZWQgUG9zaXRpb24gYnkgQ29udHJvbFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRQb3NpdGlvbkxlZnQoXG4gICAgICAgIHJlZmVyZW5jZUNvbnRhaW5lcjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgICAgIHBvcHVwQ29udGFpbmVyOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICAgICAgY29udHJvbFJlZmVyZW5jZTogRWxlbWVudFJlZixcbiAgICAgICAgYXJyb3dXaWR0aDogbnVtYmVyLFxuICAgICAgICBhcnJvd0hlaWdodDogbnVtYmVyLFxuICAgICAgICByZXF1ZXN0ZWRQb3NpdGlvbjogc3RyaW5nLFxuICAgICAgICByZWZlcmVuY2VJc0NvbnRhaW5lcjogYm9vbGVhblxuICAgICk6IG51bWJlciB7XG4gICAgICAgIGlmIChyZWZlcmVuY2VDb250YWluZXIgIT09IG51bGwgJiYgcmVmZXJlbmNlQ29udGFpbmVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSByZWZlcmVuY2VDb250YWluZXIubmF0aXZlRWxlbWVudDtcblxuICAgICAgICAgICAgaWYgKGl0ZW0uY2hpbGRyZW4ubGVuZ3RoID49IDEpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjaGlsZEl0ZW0gPSByZWZlcmVuY2VJc0NvbnRhaW5lciA/IChpdGVtLmZpcnN0RWxlbWVudENoaWxkIGFzIEhUTUxFbGVtZW50KSA6IGl0ZW07XG4gICAgICAgICAgICAgICAgY29uc3QgY29udGVudFBvc2l0aW9uOiBET01SZWN0ID0gY2hpbGRJdGVtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgICAgICAgICAgICAgc3dpdGNoIChcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXREaXNwbGF5UG9zaXRpb24oXG4gICAgICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2VDb250YWluZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICBwb3B1cENvbnRhaW5lcixcbiAgICAgICAgICAgICAgICAgICAgICAgIGFycm93V2lkdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICBhcnJvd0hlaWdodCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RlZFBvc2l0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlSXNDb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIFRvb2x0aXBQb3NpdGlvbi50b3A6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgVG9vbHRpcFBvc2l0aW9uLmJvdHRvbTpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudFBvc2l0aW9uLmxlZnQgKyBjb250ZW50UG9zaXRpb24ud2lkdGggLyAyIC0gdGhpcy5nZXRQb3B1cFdpZHRoKHBvcHVwQ29udGFpbmVyKSAvIDJcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgVG9vbHRpcFBvc2l0aW9uLnRvcGVuZDpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBUb29sdGlwUG9zaXRpb24uYm90dG9tZW5kOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRlbnRQb3NpdGlvbi5sZWZ0ICsgY29udGVudFBvc2l0aW9uLndpZHRoIC0gdGhpcy5nZXRQb3B1cFdpZHRoKHBvcHVwQ29udGFpbmVyKTtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBUb29sdGlwUG9zaXRpb24ucmlnaHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29udGVudFBvc2l0aW9uLmxlZnQgKyBjb250ZW50UG9zaXRpb24ud2lkdGggKyBhcnJvd1dpZHRoIC8gMjtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBUb29sdGlwUG9zaXRpb24ubGVmdDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjb250ZW50UG9zaXRpb24ubGVmdCAtIHRoaXMuZ2V0UG9wdXBXaWR0aChwb3B1cENvbnRhaW5lcikgKyAoYXJyb3dXaWR0aCAvIDIpICogLTE7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlZmVyZW5jZUNvbnRhaW5lci5uYXRpdmVFbGVtZW50Lm9mZnNldFRvcDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlZmVyZW5jZUNvbnRhaW5lci5uYXRpdmVFbGVtZW50Lm9mZnNldFRvcDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBjb250cm9sUmVmZXJlbmNlLm5hdGl2ZUVsZW1lbnQub2Zmc2V0TGVmdDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhbGN1bGF0ZXMgdGhlIHBvc2l0aW9uIG9mIHRoZSB0b29sdGlwIGZyb20gdGhlIHRvcFxuICAgICAqXG4gICAgICogQHBhcmFtIGNvbnRyb2xSZWZlcmVuY2UgRWxlbWVudCBSZWZlcmVuY2UgdG8gYW5ndWxhciBjb21wb25lbnRcbiAgICAgKiBAcGFyYW0gcG9wdXBDb250YWluZXIgRWxlbWVudCBSZWZlcmVuY2UgdG8gY29udGFpbmVyIG9mIHBvcHVwXG4gICAgICogQHBhcmFtIHJlZmVyZW5jZUNvbnRhaW5lciBFbGVtZW50IFJlZmVyZW5jZSB0byBIVE1MIEVsZW1lbnQgd2hpY2ggaXMgdGhlIHJlZmVyZW5jZSB0byBwb3NpdGlvbmluZyB0aGUgcG9wdXBcbiAgICAgKiBAcGFyYW0gcG9wdXBPZmZzZXQgT2Zmc2V0IGZvciBwb3B1cCBwb3NpdGlvbmluZ1xuICAgICAqIEBwYXJhbSByZXF1ZXN0ZWRQb3NpdGlvbiBSZXF1ZXN0ZWQgUG9zaXRpb24gYnkgQ29udHJvbFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRQb3NpdGlvblRvcChcbiAgICAgICAgcmVmZXJlbmNlQ29udGFpbmVyOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICAgICAgcG9wdXBDb250YWluZXI6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgICAgICBjb250cm9sUmVmZXJlbmNlOiBFbGVtZW50UmVmLFxuICAgICAgICBhcnJvd1dpZHRoOiBudW1iZXIsXG4gICAgICAgIGFycm93SGVpZ2h0OiBudW1iZXIsXG4gICAgICAgIHJlcXVlc3RlZFBvc2l0aW9uOiBzdHJpbmcsXG4gICAgICAgIHJlZmVyZW5jZUlzQ29udGFpbmVyOiBib29sZWFuXG4gICAgKTogbnVtYmVyIHtcbiAgICAgICAgaWYgKHJlZmVyZW5jZUNvbnRhaW5lciAhPT0gbnVsbCAmJiByZWZlcmVuY2VDb250YWluZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgY29uc3QgaXRlbSA9IHJlZmVyZW5jZUNvbnRhaW5lci5uYXRpdmVFbGVtZW50O1xuICAgICAgICAgICAgaWYgKGl0ZW0uY2hpbGRyZW4ubGVuZ3RoID49IDEpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjaGlsZEl0ZW0gPSByZWZlcmVuY2VJc0NvbnRhaW5lciA/IChpdGVtLmZpcnN0RWxlbWVudENoaWxkIGFzIEhUTUxFbGVtZW50KSA6IGl0ZW07XG4gICAgICAgICAgICAgICAgY29uc3QgY29udGVudFBvc2l0aW9uOiBET01SZWN0ID0gY2hpbGRJdGVtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgICAgICAgICAgICAgLy8gR2V0IFBvc2l0aW9uIHdpdGggU2Nyb2xsIChTY3JvbGxiYXJzIGluc2lkZSBwYWdlIHNob3VsZCBiZSBzdWJzdHJhY3RlZClcbiAgICAgICAgICAgICAgICBjb25zdCBjb250ZW50UG9zaXRpb25Ub3AgPVxuICAgICAgICAgICAgICAgICAgICBjaGlsZEl0ZW0ub2Zmc2V0VG9wICtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRPZmZzZXRUb3BQYXJlbnQoY2hpbGRJdGVtLm9mZnNldFBhcmVudCBhcyBIVE1MRWxlbWVudCkgK1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmdldFNjcm9sbFRvcFBhcmVudChjaGlsZEl0ZW0ucGFyZW50RWxlbWVudCk7XG5cbiAgICAgICAgICAgICAgICBzd2l0Y2ggKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmdldERpc3BsYXlQb3NpdGlvbihcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZUNvbnRhaW5lcixcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvcHVwQ29udGFpbmVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgYXJyb3dXaWR0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFycm93SGVpZ2h0LFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdGVkUG9zaXRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2VJc0NvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgVG9vbHRpcFBvc2l0aW9uLnRvcDpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBUb29sdGlwUG9zaXRpb24udG9wZW5kOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRlbnRQb3NpdGlvblRvcCAtIHRoaXMuZ2V0UG9wdXBIZWlnaHQocG9wdXBDb250YWluZXIpICsgKGFycm93SGVpZ2h0IC8gMikgKiAtMTtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBUb29sdGlwUG9zaXRpb24ucmlnaHQ6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgVG9vbHRpcFBvc2l0aW9uLmxlZnQ6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRQb3NpdGlvblRvcCArIGNvbnRlbnRQb3NpdGlvbi5oZWlnaHQgLyAyIC0gdGhpcy5nZXRQb3B1cEhlaWdodChwb3B1cENvbnRhaW5lcikgLyAyXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIFRvb2x0aXBQb3NpdGlvbi5ib3R0b206XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgVG9vbHRpcFBvc2l0aW9uLmJvdHRvbWVuZDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjb250ZW50UG9zaXRpb25Ub3AgKyBjb250ZW50UG9zaXRpb24uaGVpZ2h0ICsgYXJyb3dIZWlnaHQgLyAyO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgIGNoaWxkSXRlbS5jbGllbnRUb3AgK1xuICAgICAgICAgICAgICAgICAgICBjaGlsZEl0ZW0ub2Zmc2V0VG9wIC1cbiAgICAgICAgICAgICAgICAgICAgKHRoaXMuZ2V0UG9wdXBIZWlnaHQocG9wdXBDb250YWluZXIpIC8gMiAtIGNoaWxkSXRlbS5vZmZzZXRIZWlnaHQgLyAyKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiByZWZlcmVuY2VDb250YWluZXIubmF0aXZlRWxlbWVudC5vZmZzZXRUb3A7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gY29udHJvbFJlZmVyZW5jZS5uYXRpdmVFbGVtZW50Lm9mZnNldFRvcDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgd2hldGhlciB0aGUgcG9zaXRpb24gaGFzIGJlZW4gY29uZmlndXJlZFxuICAgICAqXG4gICAgICogQHBhcmFtIGFsbG93ZWRQb3NpdGlvbnMgUG9zaXRpb25zIHRoYXQgYWxsb3dlZCBieSBjb250cm9sXG4gICAgICogQHBhcmFtIHJlcXVlc3RlZFBvc2l0aW9uIFBvc2l0aW9uIHRvIGJlIGNoZWNrZWRcbiAgICAgKi9cbiAgICBwdWJsaWMgaGFzUG9zaXRpb24oYWxsb3dlZFBvc2l0aW9uczogc3RyaW5nLCByZXF1ZXN0ZWRQb3NpdGlvbjogVG9vbHRpcFBvc2l0aW9uKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IHBvc2l0aW9ucyA9IGFsbG93ZWRQb3NpdGlvbnMuc3BsaXQoJ3wnKTtcblxuICAgICAgICBpZiAocmVxdWVzdGVkUG9zaXRpb24gPT09IFRvb2x0aXBQb3NpdGlvbi5yaWdodCAmJiBwb3NpdGlvbnMuaW5kZXhPZigncmlnaHQnKSA+PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChyZXF1ZXN0ZWRQb3NpdGlvbiA9PT0gVG9vbHRpcFBvc2l0aW9uLnRvcCAmJiBwb3NpdGlvbnMuaW5kZXhPZigndG9wJykgPj0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocmVxdWVzdGVkUG9zaXRpb24gPT09IFRvb2x0aXBQb3NpdGlvbi5sZWZ0ICYmIHBvc2l0aW9ucy5pbmRleE9mKCdsZWZ0JykgPj0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocmVxdWVzdGVkUG9zaXRpb24gPT09IFRvb2x0aXBQb3NpdGlvbi5ib3R0b20gJiYgcG9zaXRpb25zLmluZGV4T2YoJ2JvdHRvbScpID49IDApIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHJlcXVlc3RlZFBvc2l0aW9uID09PSBUb29sdGlwUG9zaXRpb24udG9wZW5kICYmIHBvc2l0aW9ucy5pbmRleE9mKCd0b3BlbmQnKSA+PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocmVxdWVzdGVkUG9zaXRpb24gPT09IFRvb2x0aXBQb3NpdGlvbi5ib3R0b21lbmQgJiYgcG9zaXRpb25zLmluZGV4T2YoJ2JvdHRvbWVuZCcpID49IDApIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERlZmluZXMgd2hldGhlciBBdXRvUG9zaXRpb24gaXMgYWN0aXZlXG4gICAgICogQHBhcmFtIHBvc2l0aW9uUHJvcGVydHkgTGlzdCBvZiBhbGxvd2VkIHBvc2l0aW9uc1xuICAgICAqL1xuICAgIHB1YmxpYyBpc0F1dG9Qb3NpdGlvbihwb3NpdGlvblByb3BlcnR5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgcG9zaXRpb25zID0gcG9zaXRpb25Qcm9wZXJ0eS5zcGxpdCgnfCcpO1xuICAgICAgICByZXR1cm4gcG9zaXRpb25zLmluZGV4T2YoJ2F1dG8nKSA+PSAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyB3aGV0aGVyIHRoZSBwb3NpdGlvbiBpcyB2YWxpZCBvciB3aGV0aGVyIHRoZSB0b29sdGlwIG9uIHRoZSBwb3NpdGlvbiBoYXMgc3BhY2VcbiAgICAgKi9cbiAgICBwdWJsaWMgdmFsaWRhdGVQb3NpdGlvbnMoXG4gICAgICAgIHJlZmVyZW5jZUNvbnRhaW5lcjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgICAgIHBvcHVwY29udGVudGNvbnRhaW5lcjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgICAgIGFycm93V2lkdGg6IG51bWJlcixcbiAgICAgICAgYXJyb3dIZWlnaHQ6IG51bWJlcixcbiAgICAgICAgcmVmZXJlbmNlSXNDb250YWluZXI6IGJvb2xlYW5cbiAgICApOiBUb29sdGlwUG9zaXRpb24ge1xuICAgICAgICAvLyBDaGVjayBpZiBDb250YWluZXIgaXMgZmFsc2VcbiAgICAgICAgaWYgKHBvcHVwY29udGVudGNvbnRhaW5lciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gVG9vbHRpcFBvc2l0aW9uLnJpZ2h0O1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGFsbG93ZWRQb3NpdGlvbnM6IFRvb2x0aXBQb3NpdGlvbiA9IFRvb2x0aXBQb3NpdGlvbi5ub25lO1xuICAgICAgICBjb25zdCBiYXNlUG9zaXRpb246IERPTVJlY3QgPSByZWZlcmVuY2VJc0NvbnRhaW5lclxuICAgICAgICAgICAgPyByZWZlcmVuY2VDb250YWluZXIubmF0aXZlRWxlbWVudC5maXJzdEVsZW1lbnRDaGlsZC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuICAgICAgICAgICAgOiByZWZlcmVuY2VDb250YWluZXIubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgY29uc3QgdG9vbHRpcFJlY3Q6IERPTVJlY3QgPSBwb3B1cGNvbnRlbnRjb250YWluZXIubmF0aXZlRWxlbWVudC5maXJzdEVsZW1lbnRDaGlsZC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAgICAgICBjb25zdCBsZWZ0UG9zT2s6IGJvb2xlYW4gPSBiYXNlUG9zaXRpb24ubGVmdCAtIHRvb2x0aXBSZWN0LndpZHRoICsgYXJyb3dXaWR0aCAqIC0xID4gMDtcbiAgICAgICAgY29uc3QgcmlnaHRQb3NPazogYm9vbGVhbiA9IGJhc2VQb3NpdGlvbi5yaWdodCArIHRvb2x0aXBSZWN0LndpZHRoICsgYXJyb3dXaWR0aCA8IHdpbmRvdy5pbm5lcldpZHRoO1xuICAgICAgICBjb25zdCB0b3BQb3NPazogYm9vbGVhbiA9IGJhc2VQb3NpdGlvbi50b3AgLSB0b29sdGlwUmVjdC5oZWlnaHQgKyBhcnJvd0hlaWdodCA+IDA7XG4gICAgICAgIGNvbnN0IGJvdHRvbVBvc09rOiBib29sZWFuID0gYmFzZVBvc2l0aW9uLmJvdHRvbSArIHRvb2x0aXBSZWN0LmhlaWdodCArIGFycm93SGVpZ2h0IDwgd2luZG93LmlubmVySGVpZ2h0O1xuXG4gICAgICAgIGNvbnN0IGxlZnRIYWxmUG9zT2s6IGJvb2xlYW4gPSBiYXNlUG9zaXRpb24ubGVmdCAtIHRvb2x0aXBSZWN0LndpZHRoIC8gMiA+IDA7XG4gICAgICAgIGNvbnN0IHJpZ2h0SGFsZlBvc09rOiBib29sZWFuID0gYmFzZVBvc2l0aW9uLnJpZ2h0ICsgdG9vbHRpcFJlY3Qud2lkdGggLyAyIDwgd2luZG93LmlubmVyV2lkdGg7XG4gICAgICAgIGNvbnN0IHRvcEhhbGZQb3NPazogYm9vbGVhbiA9IGJhc2VQb3NpdGlvbi50b3AgLSB0b29sdGlwUmVjdC5oZWlnaHQgLyAyID4gMDtcbiAgICAgICAgY29uc3QgYm90dG9tSGFsZlBvc09rOiBib29sZWFuID0gYmFzZVBvc2l0aW9uLmJvdHRvbSArIHRvb2x0aXBSZWN0LmhlaWdodCAvIDIgPCB3aW5kb3cuaW5uZXJIZWlnaHQ7XG5cbiAgICAgICAgaWYgKGxlZnRQb3NPayAmJiB0b3BQb3NPaykge1xuICAgICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWJpdHdpc2VcbiAgICAgICAgICAgIGFsbG93ZWRQb3NpdGlvbnMgPSBhbGxvd2VkUG9zaXRpb25zIHwgVG9vbHRpcFBvc2l0aW9uLnRvcGVuZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChsZWZ0UG9zT2sgJiYgYm90dG9tUG9zT2spIHtcbiAgICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1iaXR3aXNlXG4gICAgICAgICAgICBhbGxvd2VkUG9zaXRpb25zID0gYWxsb3dlZFBvc2l0aW9ucyB8IFRvb2x0aXBQb3NpdGlvbi5ib3R0b21lbmQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobGVmdFBvc09rICYmIHRvcEhhbGZQb3NPayAmJiBib3R0b21IYWxmUG9zT2spIHtcbiAgICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1iaXR3aXNlXG4gICAgICAgICAgICBhbGxvd2VkUG9zaXRpb25zID0gYWxsb3dlZFBvc2l0aW9ucyB8IFRvb2x0aXBQb3NpdGlvbi5sZWZ0O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHJpZ2h0UG9zT2sgJiYgdG9wSGFsZlBvc09rICYmIGJvdHRvbUhhbGZQb3NPaykge1xuICAgICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWJpdHdpc2VcbiAgICAgICAgICAgIGFsbG93ZWRQb3NpdGlvbnMgPSBhbGxvd2VkUG9zaXRpb25zIHwgVG9vbHRpcFBvc2l0aW9uLnJpZ2h0O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRvcFBvc09rICYmIGxlZnRIYWxmUG9zT2sgJiYgcmlnaHRIYWxmUG9zT2spIHtcbiAgICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1iaXR3aXNlXG4gICAgICAgICAgICBhbGxvd2VkUG9zaXRpb25zID0gYWxsb3dlZFBvc2l0aW9ucyB8IFRvb2x0aXBQb3NpdGlvbi50b3A7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYm90dG9tUG9zT2sgJiYgbGVmdEhhbGZQb3NPayAmJiByaWdodEhhbGZQb3NPaykge1xuICAgICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWJpdHdpc2VcbiAgICAgICAgICAgIGFsbG93ZWRQb3NpdGlvbnMgPSBhbGxvd2VkUG9zaXRpb25zIHwgVG9vbHRpcFBvc2l0aW9uLmJvdHRvbTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBhbGxvd2VkUG9zaXRpb25zO1xuICAgIH1cblxuICAgIC8vICNlbmRyZWdpb24gUHVibGljIE1ldGhvZHNcblxuICAgIC8vICNyZWdpb24gUHJpdmF0ZSBNZXRob2RzXG5cbiAgICAvKipcbiAgICAgKiBDYWxjdWxhdGVzIHRoZSB0b3Agb2YgdGhlIHBhZ2UgaW5zaWRlIGFsbCBlbGVtZW50c1xuICAgICAqIEBwYXJhbSBlbGVtZW50IEhUTUwgRWxlbWVudFxuICAgICAqIEByZXR1cm5zIHN1bW1hcml6ZWQgdG9wIHZhbHVlIGZvciBhYnNvbHV0ZSBwb3NpdGlvblxuICAgICAqL1xuICAgIHByaXZhdGUgZ2V0T2Zmc2V0VG9wUGFyZW50KGVsZW1lbnQ6IEhUTUxFbGVtZW50KTogbnVtYmVyIHtcbiAgICAgICAgaWYgKGVsZW1lbnQgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFlbGVtZW50Lm9mZnNldFBhcmVudCkge1xuICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQub2Zmc2V0VG9wO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcGFyZW50VmFsdWUgPSB0aGlzLmdldE9mZnNldFRvcFBhcmVudChlbGVtZW50Lm9mZnNldFBhcmVudCBhcyBIVE1MRWxlbWVudCk7XG4gICAgICAgIGxldCBvZmZzZXQgPSBlbGVtZW50Lm9mZnNldFRvcDtcbiAgICAgICAgcmV0dXJuIHBhcmVudFZhbHVlICsgb2Zmc2V0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhY2x1bGF0ZSBTY3JvbGxiYXJzIGluc2lkZSB0cmVlXG4gICAgICogQHBhcmFtIGVsZW1lbnQgSFRNTCBFbGVtZW50XG4gICAgICogQHBhcmFtIFtpc0ZpeGVkPWZhbHNlXSBJbnZlcnQgU2Nyb2xsIFBvc2l0aW9uIHZhbHVlIHdoZW4gc3R5bGUgaXMgZml4ZWQgdG8gcHJlc2VydmUgbmVnYXRpdmUgdmFsdWVzXG4gICAgICogQHJldHVybnMgU2Nyb2xsIHRvcCB2YWx1ZSBvZiBlbGVtZW50IHdpdGggYWxsIGNoaWxkc1xuICAgICAqL1xuICAgIHByaXZhdGUgZ2V0U2Nyb2xsVG9wUGFyZW50KGVsZW1lbnQ6IEhUTUxFbGVtZW50LCBpc0ZpeGVkID0gZmFsc2UpOiBudW1iZXIge1xuICAgICAgICBpZiAoZWxlbWVudCA9PT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBCb2R5IFNjcm9sbCBzaG91bGQgbm90IGJlIGNhbGN1bGF0ZWRcbiAgICAgICAgaWYgKCFlbGVtZW50LnBhcmVudEVsZW1lbnQpIHtcbiAgICAgICAgICAgIHJldHVybiBpc0ZpeGVkID8gZWxlbWVudC5zY3JvbGxUb3AgOiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGlzQ3VycmVudEZpeGVkID0gZmFsc2U7XG4gICAgICAgIGlmICh3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KS5nZXRQcm9wZXJ0eVZhbHVlKCdwb3NpdGlvbicpID09PSAnZml4ZWQnKSB7XG4gICAgICAgICAgICBpc0N1cnJlbnRGaXhlZCA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwYXJlbnRWYWx1ZSA9IHRoaXMuZ2V0U2Nyb2xsVG9wUGFyZW50KGVsZW1lbnQucGFyZW50RWxlbWVudCwgaXNGaXhlZCB8fCBpc0N1cnJlbnRGaXhlZCk7XG5cbiAgICAgICAgaWYgKGlzRml4ZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBwYXJlbnRWYWx1ZSArIGVsZW1lbnQuc2Nyb2xsVG9wO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHBhcmVudFZhbHVlICsgZWxlbWVudC5zY3JvbGxUb3AgKiAtMTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vICNlbmRyZWdpb24gUHJpdmF0ZSBNZXRob2RzXG59XG4iXX0=
80
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb3ZfMjBkem0xamE4cCIsImFjdHVhbENvdmVyYWdlIiwiVG9vbHRpcFBvc2l0aW9uIiwiUG9wVXBIZWxwZXIiLCJnZXRDb250YWluZXJIZWlnaHQiLCJyZWZlcmVuY2VDb250YWluZXIiLCJyZWZlcmVuY2VJc0NvbnRhaW5lciIsImYiLCJzIiwiYiIsIm5hdGl2ZUVsZW1lbnQiLCJmaXJzdEVsZW1lbnRDaGlsZCIsImNsaWVudEhlaWdodCIsIm9mZnNldEhlaWdodCIsImdldENvbnRhaW5lcldpZHRoIiwiY2xpZW50V2lkdGgiLCJvZmZzZXRXaWR0aCIsImdldERpc3BsYXlQb3NpdGlvbiIsInBvcHVwY29udGVudGNvbnRhaW5lciIsImFycm93V2lkdGgiLCJhcnJvd0hlaWdodCIsImFsbG93ZWRQb3NpdGlvbnMiLCJ2YWxpZFBvc2l0aW9ucyIsInZhbGlkYXRlUG9zaXRpb25zIiwiaGFzUG9zaXRpb24iLCJyaWdodCIsInRvcCIsImxlZnQiLCJib3R0b20iLCJ0b3BlbmQiLCJib3R0b21lbmQiLCJpc0F1dG9Qb3NpdGlvbiIsImdldFBvc2l0aW9uIiwiZ2V0UG9wdXBIZWlnaHQiLCJjb250YWluZXIiLCJnZXRQb3B1cFdpZHRoIiwiZ2V0UG9zaXRpb25MZWZ0IiwicG9wdXBDb250YWluZXIiLCJjb250cm9sUmVmZXJlbmNlIiwicmVxdWVzdGVkUG9zaXRpb24iLCJ1bmRlZmluZWQiLCJpdGVtIiwiY2hpbGRyZW4iLCJsZW5ndGgiLCJjaGlsZEl0ZW0iLCJjb250ZW50UG9zaXRpb24iLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJ3aWR0aCIsIm9mZnNldFRvcCIsIm9mZnNldExlZnQiLCJnZXRQb3NpdGlvblRvcCIsImNvbnRlbnRQb3NpdGlvblRvcCIsImdldE9mZnNldFRvcFBhcmVudCIsIm9mZnNldFBhcmVudCIsImdldFNjcm9sbFRvcFBhcmVudCIsInBhcmVudEVsZW1lbnQiLCJoZWlnaHQiLCJjbGllbnRUb3AiLCJwb3NpdGlvbnMiLCJzcGxpdCIsImluZGV4T2YiLCJwb3NpdGlvblByb3BlcnR5Iiwibm9uZSIsImJhc2VQb3NpdGlvbiIsInRvb2x0aXBSZWN0IiwibGVmdFBvc09rIiwicmlnaHRQb3NPayIsIndpbmRvdyIsImlubmVyV2lkdGgiLCJ0b3BQb3NPayIsImJvdHRvbVBvc09rIiwiaW5uZXJIZWlnaHQiLCJsZWZ0SGFsZlBvc09rIiwicmlnaHRIYWxmUG9zT2siLCJ0b3BIYWxmUG9zT2siLCJib3R0b21IYWxmUG9zT2siLCJlbGVtZW50IiwicGFyZW50VmFsdWUiLCJvZmZzZXQiLCJpc0ZpeGVkIiwic2Nyb2xsVG9wIiwiaXNDdXJyZW50Rml4ZWQiLCJnZXRDb21wdXRlZFN0eWxlIiwiZ2V0UHJvcGVydHlWYWx1ZSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3NhYy1jb21tb24vc3JjL3V0aWxpdGllcy9wb3B1cGhlbHBlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUb29sdGlwUG9zaXRpb24gfSBmcm9tICcuL2VudW1zJztcbmltcG9ydCB7IEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuZXhwb3J0IGNsYXNzIFBvcFVwSGVscGVyIHtcbiAgICAvLyAjcmVnaW9uIFB1YmxpYyBNZXRob2RzXG5cbiAgICBwdWJsaWMgZ2V0Q29udGFpbmVySGVpZ2h0KHJlZmVyZW5jZUNvbnRhaW5lcjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sIHJlZmVyZW5jZUlzQ29udGFpbmVyOiBib29sZWFuKTogbnVtYmVyIHtcbiAgICAgICAgaWYgKHJlZmVyZW5jZUNvbnRhaW5lcikge1xuICAgICAgICAgICAgcmV0dXJuIHJlZmVyZW5jZUlzQ29udGFpbmVyXG4gICAgICAgICAgICAgICAgPyByZWZlcmVuY2VDb250YWluZXIubmF0aXZlRWxlbWVudC5maXJzdEVsZW1lbnRDaGlsZC5jbGllbnRIZWlnaHRcbiAgICAgICAgICAgICAgICA6IHJlZmVyZW5jZUNvbnRhaW5lci5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGdldENvbnRhaW5lcldpZHRoKHJlZmVyZW5jZUNvbnRhaW5lcjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sIHJlZmVyZW5jZUlzQ29udGFpbmVyOiBib29sZWFuKTogbnVtYmVyIHtcbiAgICAgICAgaWYgKHJlZmVyZW5jZUNvbnRhaW5lcikge1xuICAgICAgICAgICAgcmV0dXJuIHJlZmVyZW5jZUlzQ29udGFpbmVyXG4gICAgICAgICAgICAgICAgPyByZWZlcmVuY2VDb250YWluZXIubmF0aXZlRWxlbWVudC5maXJzdEVsZW1lbnRDaGlsZC5jbGllbnRXaWR0aFxuICAgICAgICAgICAgICAgIDogcmVmZXJlbmNlQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGg7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCBQb3NpdGlvbiB3aG8gdGhlIHBvcHVwIHdvdWxkIGJlIHBvc2l0aW9uZWRcbiAgICAgKlxuICAgICAqIEBwYXJhbSByZWZlcmVuY2VDb250YWluZXIgRWxlbWVudCBSZWZlcmVuY2UgdG8gSFRNTCBFbGVtZW50IHdoaWNoIGlzIHRoZSByZWZlcmVuY2UgdG8gcG9zaXRpb25pbmcgdGhlIHBvcHVwXG4gICAgICogQHBhcmFtIHBvcHVwY29udGVudGNvbnRhaW5lciBFbGVtZW50IFJlZmVyZW5jZSB0byBjb250YWluZXIgb2YgcG9wdXBcbiAgICAgKiBAcGFyYW0gcG9wdXBPZmZzZXQgT2Zmc2V0IGZvciBwb3B1cCBwb3NpdGlvbmluZ1xuICAgICAqIEBwYXJhbSBhbGxvd2VkUG9zaXRpb25zIEFsbG93ZWQgUG9zaXRpb25zIGZvciB0aGUgcG9wdXBcbiAgICAgKiBAcmV0dXJucyBSZXR1cm5zIHRoZSBwb3NpdGlvbiB3aGVyZSB0aGUgcG9wdXAgc2hvdWxkIGJlIGRpc3BsYXllZFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXREaXNwbGF5UG9zaXRpb24oXG4gICAgICAgIHJlZmVyZW5jZUNvbnRhaW5lcjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgICAgIHBvcHVwY29udGVudGNvbnRhaW5lcjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgICAgIGFycm93V2lkdGg6IG51bWJlcixcbiAgICAgICAgYXJyb3dIZWlnaHQ6IG51bWJlcixcbiAgICAgICAgYWxsb3dlZFBvc2l0aW9uczogc3RyaW5nLFxuICAgICAgICByZWZlcmVuY2VJc0NvbnRhaW5lcjogYm9vbGVhblxuICAgICk6IFRvb2x0aXBQb3NpdGlvbiB7XG4gICAgICAgIGNvbnN0IHZhbGlkUG9zaXRpb25zOiBUb29sdGlwUG9zaXRpb24gPSB0aGlzLnZhbGlkYXRlUG9zaXRpb25zKFxuICAgICAgICAgICAgcmVmZXJlbmNlQ29udGFpbmVyLFxuICAgICAgICAgICAgcG9wdXBjb250ZW50Y29udGFpbmVyLFxuICAgICAgICAgICAgYXJyb3dXaWR0aCxcbiAgICAgICAgICAgIGFycm93SGVpZ2h0LFxuICAgICAgICAgICAgcmVmZXJlbmNlSXNDb250YWluZXJcbiAgICAgICAgKTtcblxuICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYml0d2lzZVxuICAgICAgICBpZiAodGhpcy5oYXNQb3NpdGlvbihhbGxvd2VkUG9zaXRpb25zLCBUb29sdGlwUG9zaXRpb24ucmlnaHQpICYmIHZhbGlkUG9zaXRpb25zICYgVG9vbHRpcFBvc2l0aW9uLnJpZ2h0KSB7XG4gICAgICAgICAgICByZXR1cm4gVG9vbHRpcFBvc2l0aW9uLnJpZ2h0O1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWJpdHdpc2VcbiAgICAgICAgaWYgKHRoaXMuaGFzUG9zaXRpb24oYWxsb3dlZFBvc2l0aW9ucywgVG9vbHRpcFBvc2l0aW9uLnRvcCkgJiYgdmFsaWRQb3NpdGlvbnMgJiBUb29sdGlwUG9zaXRpb24udG9wKSB7XG4gICAgICAgICAgICByZXR1cm4gVG9vbHRpcFBvc2l0aW9uLnRvcDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1iaXR3aXNlXG4gICAgICAgIGlmICh0aGlzLmhhc1Bvc2l0aW9uKGFsbG93ZWRQb3NpdGlvbnMsIFRvb2x0aXBQb3NpdGlvbi5sZWZ0KSAmJiB2YWxpZFBvc2l0aW9ucyAmIFRvb2x0aXBQb3NpdGlvbi5sZWZ0KSB7XG4gICAgICAgICAgICByZXR1cm4gVG9vbHRpcFBvc2l0aW9uLmxlZnQ7XG4gICAgICAgIH1cblxuICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYml0d2lzZVxuICAgICAgICBpZiAodGhpcy5oYXNQb3NpdGlvbihhbGxvd2VkUG9zaXRpb25zLCBUb29sdGlwUG9zaXRpb24uYm90dG9tKSAmJiB2YWxpZFBvc2l0aW9ucyAmIFRvb2x0aXBQb3NpdGlvbi5ib3R0b20pIHtcbiAgICAgICAgICAgIHJldHVybiBUb29sdGlwUG9zaXRpb24uYm90dG9tO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaGFzUG9zaXRpb24oYWxsb3dlZFBvc2l0aW9ucywgVG9vbHRpcFBvc2l0aW9uLnRvcGVuZCkgJiYgdmFsaWRQb3NpdGlvbnMgJiBUb29sdGlwUG9zaXRpb24udG9wZW5kKSB7XG4gICAgICAgICAgICByZXR1cm4gVG9vbHRpcFBvc2l0aW9uLnRvcGVuZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHRoaXMuaGFzUG9zaXRpb24oYWxsb3dlZFBvc2l0aW9ucywgVG9vbHRpcFBvc2l0aW9uLmJvdHRvbWVuZCkgJiZcbiAgICAgICAgICAgIHZhbGlkUG9zaXRpb25zICYgVG9vbHRpcFBvc2l0aW9uLmJvdHRvbWVuZFxuICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybiBUb29sdGlwUG9zaXRpb24uYm90dG9tZW5kO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gR2V0IEF1dG8gUG9zaXRpb24gb3IgRGVmYXVsdFxuICAgICAgICBpZiAodGhpcy5pc0F1dG9Qb3NpdGlvbihhbGxvd2VkUG9zaXRpb25zKSkge1xuICAgICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWJpdHdpc2VcbiAgICAgICAgICAgIGlmICh2YWxpZFBvc2l0aW9ucyAmIFRvb2x0aXBQb3NpdGlvbi5yaWdodCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBUb29sdGlwUG9zaXRpb24ucmlnaHQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1iaXR3aXNlXG4gICAgICAgICAgICBpZiAodmFsaWRQb3NpdGlvbnMgJiBUb29sdGlwUG9zaXRpb24udG9wKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFRvb2x0aXBQb3NpdGlvbi50b3A7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1iaXR3aXNlXG4gICAgICAgICAgICBpZiAodmFsaWRQb3NpdGlvbnMgJiBUb29sdGlwUG9zaXRpb24ubGVmdCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBUb29sdGlwUG9zaXRpb24ubGVmdDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWJpdHdpc2VcbiAgICAgICAgICAgIGlmICh2YWxpZFBvc2l0aW9ucyAmIFRvb2x0aXBQb3NpdGlvbi5ib3R0b20pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gVG9vbHRpcFBvc2l0aW9uLmJvdHRvbTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIFRvb2x0aXBQb3NpdGlvbi5yaWdodDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdldFBvc2l0aW9uKGFsbG93ZWRQb3NpdGlvbnMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2FsY3VsYXRlcyB0aGUgaGVpZ2h0IG9mIHRoZSBwb3B1cFxuICAgICAqXG4gICAgICogQHBhcmFtIGNvbnRhaW5lciBFbGVtZW50IFJlZmVyZW5jZSB0byBjb250YWluZXIgb2YgcG9wdXBcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0UG9wdXBIZWlnaHQoY29udGFpbmVyOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50Pik6IG51bWJlciB7XG4gICAgICAgIGlmIChjb250YWluZXIpIHtcbiAgICAgICAgICAgIHJldHVybiBjb250YWluZXIubmF0aXZlRWxlbWVudC5maXJzdEVsZW1lbnRDaGlsZC5jbGllbnRIZWlnaHQgPz8gMDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2FsY3VsYXRlcyB0aGUgd2lkdGggb2YgdGhlIHBvcHVwXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY29udGFpbmVyIEVsZW1lbnQgUmVmZXJlbmNlIHRvIGNvbnRhaW5lciBvZiBwb3B1cFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRQb3B1cFdpZHRoKGNvbnRhaW5lcjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4pOiBudW1iZXIge1xuICAgICAgICBpZiAoY29udGFpbmVyKSB7XG4gICAgICAgICAgICByZXR1cm4gY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuZmlyc3RFbGVtZW50Q2hpbGQuY2xpZW50V2lkdGg7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGRlZmluZWQgcG9zaXRpb24gZm9yIHRoZSB0b29sdGlwXG4gICAgICpcbiAgICAgKiBAcGFyYW0gYWxsb3dlZFBvc2l0aW9ucyBBbGxvd2VkIHBvc2l0aW9ucyBkZWZpbmVkIGluIG1hcmt1cCBmb3IgcG9wdXBcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0UG9zaXRpb24oYWxsb3dlZFBvc2l0aW9uczogc3RyaW5nKTogVG9vbHRpcFBvc2l0aW9uIHtcbiAgICAgICAgaWYgKHRoaXMuaGFzUG9zaXRpb24oYWxsb3dlZFBvc2l0aW9ucywgVG9vbHRpcFBvc2l0aW9uLmxlZnQpKSB7XG4gICAgICAgICAgICByZXR1cm4gVG9vbHRpcFBvc2l0aW9uLmxlZnQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5oYXNQb3NpdGlvbihhbGxvd2VkUG9zaXRpb25zLCBUb29sdGlwUG9zaXRpb24udG9wKSkge1xuICAgICAgICAgICAgcmV0dXJuIFRvb2x0aXBQb3NpdGlvbi50b3A7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5oYXNQb3NpdGlvbihhbGxvd2VkUG9zaXRpb25zLCBUb29sdGlwUG9zaXRpb24ucmlnaHQpKSB7XG4gICAgICAgICAgICByZXR1cm4gVG9vbHRpcFBvc2l0aW9uLnJpZ2h0O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaGFzUG9zaXRpb24oYWxsb3dlZFBvc2l0aW9ucywgVG9vbHRpcFBvc2l0aW9uLmJvdHRvbSkpIHtcbiAgICAgICAgICAgIHJldHVybiBUb29sdGlwUG9zaXRpb24uYm90dG9tO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaGFzUG9zaXRpb24oYWxsb3dlZFBvc2l0aW9ucywgVG9vbHRpcFBvc2l0aW9uLnRvcGVuZCkpIHtcbiAgICAgICAgICAgIHJldHVybiBUb29sdGlwUG9zaXRpb24udG9wZW5kO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaGFzUG9zaXRpb24oYWxsb3dlZFBvc2l0aW9ucywgVG9vbHRpcFBvc2l0aW9uLmJvdHRvbWVuZCkpIHtcbiAgICAgICAgICAgIHJldHVybiBUb29sdGlwUG9zaXRpb24uYm90dG9tZW5kO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gRGVmYXVsdCBQb3NpdGlvbiBpZiBlbXB0eVxuICAgICAgICByZXR1cm4gVG9vbHRpcFBvc2l0aW9uLnJpZ2h0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhbGN1bGF0ZXMgdGhlIHBvc2l0aW9uIG9mIHRoZSB0b29sdGlwIGZyb20gbGlua3NcbiAgICAgKlxuICAgICAqIEBwYXJhbSBjb250cm9sUmVmZXJlbmNlIEVsZW1lbnQgUmVmZXJlbmNlIHRvIGFuZ3VsYXIgY29tcG9uZW50XG4gICAgICogQHBhcmFtIHBvcHVwQ29udGFpbmVyIEVsZW1lbnQgUmVmZXJlbmNlIHRvIGNvbnRhaW5lciBvZiBwb3B1cFxuICAgICAqIEBwYXJhbSByZWZlcmVuY2VDb250YWluZXIgRWxlbWVudCBSZWZlcmVuY2UgdG8gSFRNTCBFbGVtZW50IHdoaWNoIGlzIHRoZSByZWZlcmVuY2UgdG8gcG9zaXRpb25pbmcgdGhlIHBvcHVwXG4gICAgICogQHBhcmFtIHBvcHVwT2Zmc2V0IE9mZnNldCBmb3IgcG9wdXAgcG9zaXRpb25pbmdcbiAgICAgKiBAcGFyYW0gcmVxdWVzdGVkUG9zaXRpb24gUmVxdWVzdGVkIFBvc2l0aW9uIGJ5IENvbnRyb2xcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0UG9zaXRpb25MZWZ0KFxuICAgICAgICByZWZlcmVuY2VDb250YWluZXI6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgICAgICBwb3B1cENvbnRhaW5lcjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgICAgIGNvbnRyb2xSZWZlcmVuY2U6IEVsZW1lbnRSZWYsXG4gICAgICAgIGFycm93V2lkdGg6IG51bWJlcixcbiAgICAgICAgYXJyb3dIZWlnaHQ6IG51bWJlcixcbiAgICAgICAgcmVxdWVzdGVkUG9zaXRpb246IHN0cmluZyxcbiAgICAgICAgcmVmZXJlbmNlSXNDb250YWluZXI6IGJvb2xlYW5cbiAgICApOiBudW1iZXIge1xuICAgICAgICBpZiAocmVmZXJlbmNlQ29udGFpbmVyICE9PSBudWxsICYmIHJlZmVyZW5jZUNvbnRhaW5lciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBjb25zdCBpdGVtID0gcmVmZXJlbmNlQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICAgICAgICAgIGlmIChpdGVtLmNoaWxkcmVuLmxlbmd0aCA+PSAxKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY2hpbGRJdGVtID0gcmVmZXJlbmNlSXNDb250YWluZXIgPyAoaXRlbS5maXJzdEVsZW1lbnRDaGlsZCBhcyBIVE1MRWxlbWVudCkgOiBpdGVtO1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRlbnRQb3NpdGlvbjogRE9NUmVjdCA9IGNoaWxkSXRlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAgICAgICAgICAgICAgIHN3aXRjaCAoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0RGlzcGxheVBvc2l0aW9uKFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlQ29udGFpbmVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgcG9wdXBDb250YWluZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICBhcnJvd1dpZHRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgYXJyb3dIZWlnaHQsXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0ZWRQb3NpdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZUlzQ29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBUb29sdGlwUG9zaXRpb24udG9wOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIFRvb2x0aXBQb3NpdGlvbi5ib3R0b206XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRQb3NpdGlvbi5sZWZ0ICsgY29udGVudFBvc2l0aW9uLndpZHRoIC8gMiAtIHRoaXMuZ2V0UG9wdXBXaWR0aChwb3B1cENvbnRhaW5lcikgLyAyXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIFRvb2x0aXBQb3NpdGlvbi50b3BlbmQ6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgVG9vbHRpcFBvc2l0aW9uLmJvdHRvbWVuZDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjb250ZW50UG9zaXRpb24ubGVmdCArIGNvbnRlbnRQb3NpdGlvbi53aWR0aCAtIHRoaXMuZ2V0UG9wdXBXaWR0aChwb3B1cENvbnRhaW5lcik7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgVG9vbHRpcFBvc2l0aW9uLnJpZ2h0OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRlbnRQb3NpdGlvbi5sZWZ0ICsgY29udGVudFBvc2l0aW9uLndpZHRoICsgYXJyb3dXaWR0aCAvIDI7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgVG9vbHRpcFBvc2l0aW9uLmxlZnQ6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29udGVudFBvc2l0aW9uLmxlZnQgLSB0aGlzLmdldFBvcHVwV2lkdGgocG9wdXBDb250YWluZXIpICsgKGFycm93V2lkdGggLyAyKSAqIC0xO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiByZWZlcmVuY2VDb250YWluZXIubmF0aXZlRWxlbWVudC5vZmZzZXRUb3A7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiByZWZlcmVuY2VDb250YWluZXIubmF0aXZlRWxlbWVudC5vZmZzZXRUb3A7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gY29udHJvbFJlZmVyZW5jZS5uYXRpdmVFbGVtZW50Lm9mZnNldExlZnQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDYWxjdWxhdGVzIHRoZSBwb3NpdGlvbiBvZiB0aGUgdG9vbHRpcCBmcm9tIHRoZSB0b3BcbiAgICAgKlxuICAgICAqIEBwYXJhbSBjb250cm9sUmVmZXJlbmNlIEVsZW1lbnQgUmVmZXJlbmNlIHRvIGFuZ3VsYXIgY29tcG9uZW50XG4gICAgICogQHBhcmFtIHBvcHVwQ29udGFpbmVyIEVsZW1lbnQgUmVmZXJlbmNlIHRvIGNvbnRhaW5lciBvZiBwb3B1cFxuICAgICAqIEBwYXJhbSByZWZlcmVuY2VDb250YWluZXIgRWxlbWVudCBSZWZlcmVuY2UgdG8gSFRNTCBFbGVtZW50IHdoaWNoIGlzIHRoZSByZWZlcmVuY2UgdG8gcG9zaXRpb25pbmcgdGhlIHBvcHVwXG4gICAgICogQHBhcmFtIHBvcHVwT2Zmc2V0IE9mZnNldCBmb3IgcG9wdXAgcG9zaXRpb25pbmdcbiAgICAgKiBAcGFyYW0gcmVxdWVzdGVkUG9zaXRpb24gUmVxdWVzdGVkIFBvc2l0aW9uIGJ5IENvbnRyb2xcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0UG9zaXRpb25Ub3AoXG4gICAgICAgIHJlZmVyZW5jZUNvbnRhaW5lcjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgICAgIHBvcHVwQ29udGFpbmVyOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICAgICAgY29udHJvbFJlZmVyZW5jZTogRWxlbWVudFJlZixcbiAgICAgICAgYXJyb3dXaWR0aDogbnVtYmVyLFxuICAgICAgICBhcnJvd0hlaWdodDogbnVtYmVyLFxuICAgICAgICByZXF1ZXN0ZWRQb3NpdGlvbjogc3RyaW5nLFxuICAgICAgICByZWZlcmVuY2VJc0NvbnRhaW5lcjogYm9vbGVhblxuICAgICk6IG51bWJlciB7XG4gICAgICAgIGlmIChyZWZlcmVuY2VDb250YWluZXIgIT09IG51bGwgJiYgcmVmZXJlbmNlQ29udGFpbmVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSByZWZlcmVuY2VDb250YWluZXIubmF0aXZlRWxlbWVudDtcbiAgICAgICAgICAgIGlmIChpdGVtLmNoaWxkcmVuLmxlbmd0aCA+PSAxKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY2hpbGRJdGVtID0gcmVmZXJlbmNlSXNDb250YWluZXIgPyAoaXRlbS5maXJzdEVsZW1lbnRDaGlsZCBhcyBIVE1MRWxlbWVudCkgOiBpdGVtO1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRlbnRQb3NpdGlvbjogRE9NUmVjdCA9IGNoaWxkSXRlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAgICAgICAgICAgICAgIC8vIEdldCBQb3NpdGlvbiB3aXRoIFNjcm9sbCAoU2Nyb2xsYmFycyBpbnNpZGUgcGFnZSBzaG91bGQgYmUgc3Vic3RyYWN0ZWQpXG4gICAgICAgICAgICAgICAgY29uc3QgY29udGVudFBvc2l0aW9uVG9wID1cbiAgICAgICAgICAgICAgICAgICAgY2hpbGRJdGVtLm9mZnNldFRvcCArXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0T2Zmc2V0VG9wUGFyZW50KGNoaWxkSXRlbS5vZmZzZXRQYXJlbnQgYXMgSFRNTEVsZW1lbnQpICtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRTY3JvbGxUb3BQYXJlbnQoY2hpbGRJdGVtLnBhcmVudEVsZW1lbnQpO1xuXG4gICAgICAgICAgICAgICAgc3dpdGNoIChcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXREaXNwbGF5UG9zaXRpb24oXG4gICAgICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2VDb250YWluZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICBwb3B1cENvbnRhaW5lcixcbiAgICAgICAgICAgICAgICAgICAgICAgIGFycm93V2lkdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICBhcnJvd0hlaWdodCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RlZFBvc2l0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlSXNDb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIFRvb2x0aXBQb3NpdGlvbi50b3A6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgVG9vbHRpcFBvc2l0aW9uLnRvcGVuZDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjb250ZW50UG9zaXRpb25Ub3AgLSB0aGlzLmdldFBvcHVwSGVpZ2h0KHBvcHVwQ29udGFpbmVyKSArIChhcnJvd0hlaWdodCAvIDIpICogLTE7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgVG9vbHRpcFBvc2l0aW9uLnJpZ2h0OlxuICAgICAgICAgICAgICAgICAgICBjYXNlIFRvb2x0aXBQb3NpdGlvbi5sZWZ0OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50UG9zaXRpb25Ub3AgKyBjb250ZW50UG9zaXRpb24uaGVpZ2h0IC8gMiAtIHRoaXMuZ2V0UG9wdXBIZWlnaHQocG9wdXBDb250YWluZXIpIC8gMlxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBUb29sdGlwUG9zaXRpb24uYm90dG9tOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIFRvb2x0aXBQb3NpdGlvbi5ib3R0b21lbmQ6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29udGVudFBvc2l0aW9uVG9wICsgY29udGVudFBvc2l0aW9uLmhlaWdodCArIGFycm93SGVpZ2h0IC8gMjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICBjaGlsZEl0ZW0uY2xpZW50VG9wICtcbiAgICAgICAgICAgICAgICAgICAgY2hpbGRJdGVtLm9mZnNldFRvcCAtXG4gICAgICAgICAgICAgICAgICAgICh0aGlzLmdldFBvcHVwSGVpZ2h0KHBvcHVwQ29udGFpbmVyKSAvIDIgLSBjaGlsZEl0ZW0ub2Zmc2V0SGVpZ2h0IC8gMilcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVmZXJlbmNlQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQub2Zmc2V0VG9wO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGNvbnRyb2xSZWZlcmVuY2UubmF0aXZlRWxlbWVudC5vZmZzZXRUb3A7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHdoZXRoZXIgdGhlIHBvc2l0aW9uIGhhcyBiZWVuIGNvbmZpZ3VyZWRcbiAgICAgKlxuICAgICAqIEBwYXJhbSBhbGxvd2VkUG9zaXRpb25zIFBvc2l0aW9ucyB0aGF0IGFsbG93ZWQgYnkgY29udHJvbFxuICAgICAqIEBwYXJhbSByZXF1ZXN0ZWRQb3NpdGlvbiBQb3NpdGlvbiB0byBiZSBjaGVja2VkXG4gICAgICovXG4gICAgcHVibGljIGhhc1Bvc2l0aW9uKGFsbG93ZWRQb3NpdGlvbnM6IHN0cmluZywgcmVxdWVzdGVkUG9zaXRpb246IFRvb2x0aXBQb3NpdGlvbik6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBwb3NpdGlvbnMgPSBhbGxvd2VkUG9zaXRpb25zLnNwbGl0KCd8Jyk7XG5cbiAgICAgICAgaWYgKHJlcXVlc3RlZFBvc2l0aW9uID09PSBUb29sdGlwUG9zaXRpb24ucmlnaHQgJiYgcG9zaXRpb25zLmluZGV4T2YoJ3JpZ2h0JykgPj0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocmVxdWVzdGVkUG9zaXRpb24gPT09IFRvb2x0aXBQb3NpdGlvbi50b3AgJiYgcG9zaXRpb25zLmluZGV4T2YoJ3RvcCcpID49IDApIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHJlcXVlc3RlZFBvc2l0aW9uID09PSBUb29sdGlwUG9zaXRpb24ubGVmdCAmJiBwb3NpdGlvbnMuaW5kZXhPZignbGVmdCcpID49IDApIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHJlcXVlc3RlZFBvc2l0aW9uID09PSBUb29sdGlwUG9zaXRpb24uYm90dG9tICYmIHBvc2l0aW9ucy5pbmRleE9mKCdib3R0b20nKSA+PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChyZXF1ZXN0ZWRQb3NpdGlvbiA9PT0gVG9vbHRpcFBvc2l0aW9uLnRvcGVuZCAmJiBwb3NpdGlvbnMuaW5kZXhPZigndG9wZW5kJykgPj0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJlcXVlc3RlZFBvc2l0aW9uID09PSBUb29sdGlwUG9zaXRpb24uYm90dG9tZW5kICYmIHBvc2l0aW9ucy5pbmRleE9mKCdib3R0b21lbmQnKSA+PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZWZpbmVzIHdoZXRoZXIgQXV0b1Bvc2l0aW9uIGlzIGFjdGl2ZVxuICAgICAqIEBwYXJhbSBwb3NpdGlvblByb3BlcnR5IExpc3Qgb2YgYWxsb3dlZCBwb3NpdGlvbnNcbiAgICAgKi9cbiAgICBwdWJsaWMgaXNBdXRvUG9zaXRpb24ocG9zaXRpb25Qcm9wZXJ0eTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IHBvc2l0aW9ucyA9IHBvc2l0aW9uUHJvcGVydHkuc3BsaXQoJ3wnKTtcbiAgICAgICAgcmV0dXJuIHBvc2l0aW9ucy5pbmRleE9mKCdhdXRvJykgPj0gMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3Mgd2hldGhlciB0aGUgcG9zaXRpb24gaXMgdmFsaWQgb3Igd2hldGhlciB0aGUgdG9vbHRpcCBvbiB0aGUgcG9zaXRpb24gaGFzIHNwYWNlXG4gICAgICovXG4gICAgcHVibGljIHZhbGlkYXRlUG9zaXRpb25zKFxuICAgICAgICByZWZlcmVuY2VDb250YWluZXI6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgICAgICBwb3B1cGNvbnRlbnRjb250YWluZXI6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgICAgICBhcnJvd1dpZHRoOiBudW1iZXIsXG4gICAgICAgIGFycm93SGVpZ2h0OiBudW1iZXIsXG4gICAgICAgIHJlZmVyZW5jZUlzQ29udGFpbmVyOiBib29sZWFuXG4gICAgKTogVG9vbHRpcFBvc2l0aW9uIHtcbiAgICAgICAgLy8gQ2hlY2sgaWYgQ29udGFpbmVyIGlzIGZhbHNlXG4gICAgICAgIGlmIChwb3B1cGNvbnRlbnRjb250YWluZXIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIFRvb2x0aXBQb3NpdGlvbi5yaWdodDtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBhbGxvd2VkUG9zaXRpb25zOiBUb29sdGlwUG9zaXRpb24gPSBUb29sdGlwUG9zaXRpb24ubm9uZTtcbiAgICAgICAgY29uc3QgYmFzZVBvc2l0aW9uOiBET01SZWN0ID0gcmVmZXJlbmNlSXNDb250YWluZXJcbiAgICAgICAgICAgID8gcmVmZXJlbmNlQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuZmlyc3RFbGVtZW50Q2hpbGQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcbiAgICAgICAgICAgIDogcmVmZXJlbmNlQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIGNvbnN0IHRvb2x0aXBSZWN0OiBET01SZWN0ID0gcG9wdXBjb250ZW50Y29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuZmlyc3RFbGVtZW50Q2hpbGQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICAgICAgY29uc3QgbGVmdFBvc09rOiBib29sZWFuID0gYmFzZVBvc2l0aW9uLmxlZnQgLSB0b29sdGlwUmVjdC53aWR0aCArIGFycm93V2lkdGggKiAtMSA+IDA7XG4gICAgICAgIGNvbnN0IHJpZ2h0UG9zT2s6IGJvb2xlYW4gPSBiYXNlUG9zaXRpb24ucmlnaHQgKyB0b29sdGlwUmVjdC53aWR0aCArIGFycm93V2lkdGggPCB3aW5kb3cuaW5uZXJXaWR0aDtcbiAgICAgICAgY29uc3QgdG9wUG9zT2s6IGJvb2xlYW4gPSBiYXNlUG9zaXRpb24udG9wIC0gdG9vbHRpcFJlY3QuaGVpZ2h0ICsgYXJyb3dIZWlnaHQgPiAwO1xuICAgICAgICBjb25zdCBib3R0b21Qb3NPazogYm9vbGVhbiA9IGJhc2VQb3NpdGlvbi5ib3R0b20gKyB0b29sdGlwUmVjdC5oZWlnaHQgKyBhcnJvd0hlaWdodCA8IHdpbmRvdy5pbm5lckhlaWdodDtcblxuICAgICAgICBjb25zdCBsZWZ0SGFsZlBvc09rOiBib29sZWFuID0gYmFzZVBvc2l0aW9uLmxlZnQgLSB0b29sdGlwUmVjdC53aWR0aCAvIDIgPiAwO1xuICAgICAgICBjb25zdCByaWdodEhhbGZQb3NPazogYm9vbGVhbiA9IGJhc2VQb3NpdGlvbi5yaWdodCArIHRvb2x0aXBSZWN0LndpZHRoIC8gMiA8IHdpbmRvdy5pbm5lcldpZHRoO1xuICAgICAgICBjb25zdCB0b3BIYWxmUG9zT2s6IGJvb2xlYW4gPSBiYXNlUG9zaXRpb24udG9wIC0gdG9vbHRpcFJlY3QuaGVpZ2h0IC8gMiA+IDA7XG4gICAgICAgIGNvbnN0IGJvdHRvbUhhbGZQb3NPazogYm9vbGVhbiA9IGJhc2VQb3NpdGlvbi5ib3R0b20gKyB0b29sdGlwUmVjdC5oZWlnaHQgLyAyIDwgd2luZG93LmlubmVySGVpZ2h0O1xuXG4gICAgICAgIGlmIChsZWZ0UG9zT2sgJiYgdG9wUG9zT2spIHtcbiAgICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1iaXR3aXNlXG4gICAgICAgICAgICBhbGxvd2VkUG9zaXRpb25zID0gYWxsb3dlZFBvc2l0aW9ucyB8IFRvb2x0aXBQb3NpdGlvbi50b3BlbmQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobGVmdFBvc09rICYmIGJvdHRvbVBvc09rKSB7XG4gICAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYml0d2lzZVxuICAgICAgICAgICAgYWxsb3dlZFBvc2l0aW9ucyA9IGFsbG93ZWRQb3NpdGlvbnMgfCBUb29sdGlwUG9zaXRpb24uYm90dG9tZW5kO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGxlZnRQb3NPayAmJiB0b3BIYWxmUG9zT2sgJiYgYm90dG9tSGFsZlBvc09rKSB7XG4gICAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYml0d2lzZVxuICAgICAgICAgICAgYWxsb3dlZFBvc2l0aW9ucyA9IGFsbG93ZWRQb3NpdGlvbnMgfCBUb29sdGlwUG9zaXRpb24ubGVmdDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChyaWdodFBvc09rICYmIHRvcEhhbGZQb3NPayAmJiBib3R0b21IYWxmUG9zT2spIHtcbiAgICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1iaXR3aXNlXG4gICAgICAgICAgICBhbGxvd2VkUG9zaXRpb25zID0gYWxsb3dlZFBvc2l0aW9ucyB8IFRvb2x0aXBQb3NpdGlvbi5yaWdodDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0b3BQb3NPayAmJiBsZWZ0SGFsZlBvc09rICYmIHJpZ2h0SGFsZlBvc09rKSB7XG4gICAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYml0d2lzZVxuICAgICAgICAgICAgYWxsb3dlZFBvc2l0aW9ucyA9IGFsbG93ZWRQb3NpdGlvbnMgfCBUb29sdGlwUG9zaXRpb24udG9wO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGJvdHRvbVBvc09rICYmIGxlZnRIYWxmUG9zT2sgJiYgcmlnaHRIYWxmUG9zT2spIHtcbiAgICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1iaXR3aXNlXG4gICAgICAgICAgICBhbGxvd2VkUG9zaXRpb25zID0gYWxsb3dlZFBvc2l0aW9ucyB8IFRvb2x0aXBQb3NpdGlvbi5ib3R0b207XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYWxsb3dlZFBvc2l0aW9ucztcbiAgICB9XG5cbiAgICAvLyAjZW5kcmVnaW9uIFB1YmxpYyBNZXRob2RzXG5cbiAgICAvLyAjcmVnaW9uIFByaXZhdGUgTWV0aG9kc1xuXG4gICAgLyoqXG4gICAgICogQ2FsY3VsYXRlcyB0aGUgdG9wIG9mIHRoZSBwYWdlIGluc2lkZSBhbGwgZWxlbWVudHNcbiAgICAgKiBAcGFyYW0gZWxlbWVudCBIVE1MIEVsZW1lbnRcbiAgICAgKiBAcmV0dXJucyBzdW1tYXJpemVkIHRvcCB2YWx1ZSBmb3IgYWJzb2x1dGUgcG9zaXRpb25cbiAgICAgKi9cbiAgICBwcml2YXRlIGdldE9mZnNldFRvcFBhcmVudChlbGVtZW50OiBIVE1MRWxlbWVudCk6IG51bWJlciB7XG4gICAgICAgIGlmIChlbGVtZW50ID09PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghZWxlbWVudC5vZmZzZXRQYXJlbnQpIHtcbiAgICAgICAgICAgIHJldHVybiBlbGVtZW50Lm9mZnNldFRvcDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHBhcmVudFZhbHVlID0gdGhpcy5nZXRPZmZzZXRUb3BQYXJlbnQoZWxlbWVudC5vZmZzZXRQYXJlbnQgYXMgSFRNTEVsZW1lbnQpO1xuICAgICAgICBsZXQgb2Zmc2V0ID0gZWxlbWVudC5vZmZzZXRUb3A7XG4gICAgICAgIHJldHVybiBwYXJlbnRWYWx1ZSArIG9mZnNldDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDYWNsdWxhdGUgU2Nyb2xsYmFycyBpbnNpZGUgdHJlZVxuICAgICAqIEBwYXJhbSBlbGVtZW50IEhUTUwgRWxlbWVudFxuICAgICAqIEBwYXJhbSBbaXNGaXhlZD1mYWxzZV0gSW52ZXJ0IFNjcm9sbCBQb3NpdGlvbiB2YWx1ZSB3aGVuIHN0eWxlIGlzIGZpeGVkIHRvIHByZXNlcnZlIG5lZ2F0aXZlIHZhbHVlc1xuICAgICAqIEByZXR1cm5zIFNjcm9sbCB0b3AgdmFsdWUgb2YgZWxlbWVudCB3aXRoIGFsbCBjaGlsZHNcbiAgICAgKi9cbiAgICBwcml2YXRlIGdldFNjcm9sbFRvcFBhcmVudChlbGVtZW50OiBIVE1MRWxlbWVudCwgaXNGaXhlZCA9IGZhbHNlKTogbnVtYmVyIHtcbiAgICAgICAgaWYgKGVsZW1lbnQgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQm9keSBTY3JvbGwgc2hvdWxkIG5vdCBiZSBjYWxjdWxhdGVkXG4gICAgICAgIGlmICghZWxlbWVudC5wYXJlbnRFbGVtZW50KSB7XG4gICAgICAgICAgICByZXR1cm4gaXNGaXhlZCA/IGVsZW1lbnQuc2Nyb2xsVG9wIDogMDtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBpc0N1cnJlbnRGaXhlZCA9IGZhbHNlO1xuICAgICAgICBpZiAod2luZG93LmdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkuZ2V0UHJvcGVydHlWYWx1ZSgncG9zaXRpb24nKSA9PT0gJ2ZpeGVkJykge1xuICAgICAgICAgICAgaXNDdXJyZW50Rml4ZWQgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcGFyZW50VmFsdWUgPSB0aGlzLmdldFNjcm9sbFRvcFBhcmVudChlbGVtZW50LnBhcmVudEVsZW1lbnQsIGlzRml4ZWQgfHwgaXNDdXJyZW50Rml4ZWQpO1xuXG4gICAgICAgIGlmIChpc0ZpeGVkKSB7XG4gICAgICAgICAgICByZXR1cm4gcGFyZW50VmFsdWUgKyBlbGVtZW50LnNjcm9sbFRvcDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBwYXJlbnRWYWx1ZSArIGVsZW1lbnQuc2Nyb2xsVG9wICogLTE7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyAjZW5kcmVnaW9uIFByaXZhdGUgTWV0aG9kc1xufVxuIl0sIm1hcHBpbmdzIjoiaTZzREFrQlk7QUFBQUEsY0FBQSxTQUFBQSxDQUFBLFNBQUFDLGNBQUEsV0FBQUEsY0FBQSxFQUFBRCxjQUFBLEdBbEJaLE9BQVNFLGVBQWUsS0FBUSxTQUFTLENBR3pDLE1BQU0sTUFBTyxDQUFBQyxXQUFXLENBQ3BCO0FBRU9DLGtCQUFrQkEsQ0FBQ0Msa0JBQTJDLENBQUVDLG9CQUE2QixFQUFBTixjQUFBLEdBQUFPLENBQUEsTUFBQVAsY0FBQSxHQUFBUSxDQUFBLE1BQ2hHLEdBQUlILGtCQUFrQixDQUFFLENBQUFMLGNBQUEsR0FBQVMsQ0FBQSxTQUFBVCxjQUFBLEdBQUFRLENBQUEsTUFDcEIsTUFBTyxDQUFBRixvQkFBb0IsRUFBQU4sY0FBQSxHQUFBUyxDQUFBLFNBQ3JCSixrQkFBa0IsQ0FBQ0ssYUFBYSxDQUFDQyxpQkFBaUIsQ0FBQ0MsWUFBWSxHQUFBWixjQUFBLEdBQUFTLENBQUEsU0FDL0RKLGtCQUFrQixDQUFDSyxhQUFhLENBQUNHLFlBQVksRSxDQUN0RCxJQUFNLENBQUFiLGNBQUEsR0FBQVMsQ0FBQSxTQUFBVCxjQUFBLEdBQUFRLENBQUEsTUFDSCxNQUFPLEVBQUMsQyxDQUVoQixDQUVPTSxpQkFBaUJBLENBQUNULGtCQUEyQyxDQUFFQyxvQkFBNkIsRUFBQU4sY0FBQSxHQUFBTyxDQUFBLE1BQUFQLGNBQUEsR0FBQVEsQ0FBQSxNQUMvRixHQUFJSCxrQkFBa0IsQ0FBRSxDQUFBTCxjQUFBLEdBQUFTLENBQUEsU0FBQVQsY0FBQSxHQUFBUSxDQUFBLE1BQ3BCLE1B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QSxHQUFBUSxDQUFBLE9BRUQsR0FBSSxDQUFBUixjQUFBLEdBQUFTLENBQUEsVUFBQThCLGlCQUFpQixHQUFLckMsZUFBZSxDQUFDeUIsSUFBSSxJQUFBM0IsY0FBQSxHQUFBUyxDQUFBLFVBQUlpRCxTQUFTLENBQUNFLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBSSxDQUFDLEVBQUUsQ0FBQTVELGNBQUEsR0FBQVMsQ0FBQSxVQUFBVCxjQUFBLEdBQUFRLENBQUEsT0FDOUUsTUFBTyxLQUFJLEMsQ0FDZCxLQUFBUixjQUFBLEdBQUFTLENBQUEsV0FBQVQsY0FBQSxHQUFBUSxDQUFBLE9BRUQsR0FBSSxDQUFBUixjQUFBLEdBQUFTLENBQUEsVUFBQThCLGlCQUFpQixHQUFLckMsZUFBZSxDQUFDMEIsTUFBTSxJQUFBNUIsY0FBQSxHQUFBUyxDQUFBLFVBQUlpRCxTQUFTLENBQUNFLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBSSxDQUFDLEVBQUUsQ0FBQTVELGNBQUEsR0FBQVMsQ0FBQSxVQUFBVCxjQUFBLEdBQUFRLENBQUEsT0FDbEYsTUFBTyxLQUFJLEMsQ0FDZCxLQUFBUixjQUFBLEdBQUFTLENBQUEsV0FBQVQsY0FBQSxHQUFBUSxDQUFBLE9BRUQsR0FBSSxDQUFBUixjQUFBLEdBQUFTLENBQUEsVUFBQThCLGlCQUFpQixHQUFLckMsZUFBZSxDQUFDMkIsTUFBTSxJQUFBN0IsY0FBQSxHQUFBUyxDQUFBLFVBQUlpRCxTQUFTLENBQUNFLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBSSxDQUFDLEVBQUUsQ0FBQTVELGNBQUEsR0FBQVMsQ0FBQSxVQUFBVCxjQUFBLEdBQUFRLENBQUEsT0FDbEYsTUFBTyxLQUFJLEMsQ0FDZCxLQUFBUixjQUFBLEdBQUFTLENBQUEsV0FBQVQsY0FBQSxHQUFBUSxDQUFBLE9BQ0QsR0FBSSxDQUFBUixjQUFBLEdBQUFTLENBQUEsVUFBQThCLGlCQUFpQixHQUFLckMsZUFBZSxDQUFDNEIsU0FBUyxJQUFBOUIsY0FBQSxHQUFBUyxDQUFBLFVBQUlpRCxTQUFTLENBQUNFLE9BQU8sQ0FBQyxXQUFXLENBQUMsRUFBSSxDQUFDLEVBQUUsQ0FBQTVELGNBQUEsR0FBQVMsQ0FBQSxVQUFBVCxjQUFBLEdBQUFRLENBQUEsT0FDeEYsTUFBTyxLQUFJLEMsQ0FDZCxLQUFBUixjQUFBLEdBQUFTLENBQUEsV0FBQVQsY0FBQSxHQUFBUSxDQUFBLE9BRUQsTUFBTyxNQUFLLENBQ2hCLENBRUE7OztPQUlPdUIsY0FBY0EsQ0FBQzhCLGdCQUF3QixFQUFBN0QsY0FBQSxHQUFBTyxDQUFBLE1BQzFDLEtBQU0sQ0FBQW1ELFNBQVMsRUFBQTFELGNBQUEsR0FBQVEsQ0FBQSxPQUFHcUQsZ0JBQWdCLENBQUNGLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBQzNELGNBQUEsR0FBQVEsQ0FBQSxPQUM5QyxNQUFPLENBQUFrRCxTQUFTLENBQUNFLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBSSxDQUFDLENBQ3pDLENBRUE7O09BR09yQyxpQkFBaUJBLENBQ3BCbEIsa0JBQTJDLENBQzNDYSxxQkFBOEMsQ0FDOUNDLFVBQWtCLENBQ2xCQyxXQUFtQixDQUNuQmQsb0JBQTZCLEVBQUFOLGNBQUEsR0FBQU8sQ0FBQSxPQUFBUCxjQUFBLEdBQUFRLENBQUEsT0FFN0I7QUFDQSxHQUFJVSxxQkFBcUIsR0FBS3NCLFNBQVMsQ0FBRSxDQUFBeEMsY0FBQSxHQUFBUyxDQUFBLFVBQUFULGNBQUEsR0FBQVEsQ0FBQSxPQUNyQyxNQUFPLENBQUFOLGVBQWUsQ0FBQ3VCLEtBQUssQyxDQUMvQixLQUFBekIsY0FBQSxHQUFBUyxDQUFBLFdBRUQsR0FBSSxDQUFBWSxnQkFBZ0IsRUFBQXJCLGNBQUEsR0FBQVEsQ0FBQSxPQUFvQk4sZUFBZSxDQUFDNEQsSUFBSSxFQUM1RCxLQUFNLENBQUFDLFlBQVksRUFBQS9ELGNBQUEsR0FBQVEsQ0FBQSxPQUFZRixvQkFBb0IsRUFBQU4sY0FBQSxHQUFBUyxDQUFBLFVBQzVDSixrQkFBa0IsQ0FBQ0ssYUFBYSxDQUFDQyxpQkFBaUIsQ0FBQ21DLHFCQUFxQixFQUFFLEdBQUE5QyxjQUFBLEdBQUFTLENBQUEsVUFDMUVKLGtCQUFrQixDQUFDSyxhQUFhLENBQUNvQyxxQkFBcUIsRUFBRSxHQUM5RCxLQUFNLENBQUFrQixXQUFXLEVBQUFoRSxjQUFBLEdBQUFRLENBQUEsT0FBWVUscUJBQXFCLENBQUNSLGFBQWEsQ0FBQ0MsaUJBQWlCLENBQUNtQyxxQkFBcUIsRUFBRSxFQUUxRyxLQUFNLENBQUFtQixTQUFTLEVBQUFqRSxjQUFBLEdBQUFRLENBQUEsT0FBWXVELFlBQVksQ0FBQ3BDLElBQUksQ0FBR3FDLFdBQVcsQ0FBQ2pCLEtBQUssQ0FBRzVCLFVBQVUsQ0FBRyxDQUFDLENBQUMsQ0FBRyxDQUFDLEVBQ3RGLEtBQU0sQ0FBQStDLFVBQVUsRUFBQWxFLGNBQUEsR0FBQVEsQ0FBQSxPQUFZdUQsWUFBWSxDQUFDdEMsS0FBSyxDQUFHdUMsV0FBVyxDQUFDakIsS0FBSyxDQUFHNUIsVUFBVSxDQUFHZ0QsTUFBTSxDQUFDQyxVQUFVLEVBQ25HLEtBQU0sQ0FBQUMsUUFBUSxFQUFBckUsY0FBQSxHQUFBUSxDQUFBLE9BQVl1RCxZQUFZLENBQUNyQyxHQUFHLENBQUdzQyxXQUFXLENBQUNSLE1BQU0sQ0FBR3BDLFdBQVcsQ0FBRyxDQUFDLEVBQ2pGLEtBQU0sQ0FBQWtELFdBQVcsRUFBQXRFLGNBQUEsR0FBQVEsQ0FBQSxPQUFZdUQsWUFBWSxDQUFDbkMsTUFBTSxDQUFHb0MsV0FBVyxDQUFDUixNQUFNLENBQUdwQyxXQUFXLENBQUcrQyxNQUFNLENBQUNJLFdBQVcsRUFFeEcsS0FBTSxDQUFBQyxhQUFhLEVBQUF4RSxjQUFBLEdBQUFRLENBQUEsUUFBWXVELFlBQVksQ0FBQ3BDLElBQUksQ0FBR3FDLFdBQVcsQ0FBQ2pCLEtBQUssQ0FBRyxDQUFDLENBQUcsQ0FBQyxFQUM1RSxLQUFNLENBQUEwQixjQUFjLEVBQUF6RSxjQUFBLEdBQUFRLENBQUEsUUFBWXVELFlBQVksQ0FBQ3RDLEtBQUssQ0FBR3VDLFdBQVcsQ0FBQ2pCLEtBQUssQ0FBRyxDQUFDLENBQUdvQixNQUFNLENBQUNDLFVBQVUsRUFDOUYsS0FBTSxDQUFBTSxZQUFZLEVBQUExRSxjQUFBLEdBQUFRLENBQUEsUUFBWXVELFlBQVksQ0FBQ3JDLEdBQUcsQ0FBR3NDLFdBQVcsQ0FBQ1IsTUFBTSxDQUFHLENBQUMsQ0FBRyxDQUFDLEVBQzNFLEtBQU0sQ0FBQW1CLGVBQWUsRUFBQTNFLGNBQUEsR0FBQVEsQ0FBQSxRQUFZdUQsWUFBWSxDQUFDbkMsTUFBTSxDQUFHb0MsV0FBVyxDQUFDUixNQUFNLENBQUcsQ0FBQyxDQUFHVyxNQUFNLENBQUNJLFdBQVcsRUFBQ3ZFLGNBQUEsR0FBQVEsQ0FBQSxRQUVuRyxHQUFJLENBQUFSLGNBQUEsR0FBQVMsQ0FBQSxVQUFBd0QsU0FBUyxJQUFBakUsY0FBQSxHQUFBUyxDQUFBLFVBQUk0RCxRQUFRLEVBQUUsQ0FBQXJFLGNBQUEsR0FBQVMsQ0FBQSxVQUFBVCxjQUFBLEdBQUFRLENBQUEsUUFDdkI7QUFDQWEsZ0JBQWdCLENBQUdBLGdCQUFnQixDQUFHbkIsZUFBZSxDQUFDMkIsTUFBTSxDLENBQy9ELEtBQUE3QixjQUFBLEdBQUFTLENBQUEsV0FBQVQsY0FBQSxHQUFBUSxDQUFBLFFBRUQsR0FBSSxDQUFBUixjQUFBLEdBQUFTLENBQUEsVUFBQXdELFNBQVMsSUFBQWpFLGNBQUEsR0FBQVMsQ0FBQSxVQUFJNkQsV0FBVyxFQUFFLENBQUF0RSxjQUFBLEdBQUFTLENBQUEsVUFBQVQsY0FBQSxHQUFBUSxDQUFBLFFBQzFCO0FBQ0FhLGdCQUFnQixDQUFHQSxnQkFBZ0IsQ0FBR25CLGVBQWUsQ0FBQzRCLFNBQVMsQyxDQUNsRSxLQUFBOUIsY0FBQSxHQUFBUyxDQUFBLFdBQUFULGNBQUEsR0FBQVEsQ0FBQSxRQUVELEdBQUksQ0FBQVIsY0FBQSxHQUFBUyxDQUFBLFVBQUF3RCxTQUFTLElBQUFqRSxjQUFBLEdBQUFTLENBQUEsVUFBSWlFLFlBQVksSUFBQTFFLGNBQUEsR0FBQVMsQ0FBQSxVQUFJa0UsZUFBZSxFQUFFLENBQUEzRSxjQUFBLEdBQUFTLENBQUEsVUFBQVQsY0FBQSxHQUFBUSxDQUFBLFFBQzlDO0FBQ0FhLGdCQUFnQixDQUFHQSxnQkFBZ0IsQ0FBR25CLGVBQWUsQ0FBQ3lCLElBQUksQyxDQUM3RCxLQUFBM0IsY0FBQSxHQUFBUyxDQUFBLFdBQUFULGNBQUEsR0FBQVEsQ0FBQSxRQUVELEdBQUksQ0FBQVIsY0FBQSxHQUFBUyxDQUFBLFVBQUF5RCxVQUFVLElBQUFsRSxjQUFBLEdBQUFTLENBQUEsVUFBSWlFLFlBQVksSUFBQTFFLGNBQUEsR0FBQVMsQ0FBQSxVQUFJa0UsZUFBZSxFQUFFLENBQUEzRSxjQUFBLEdBQUFTLENBQUEsVUFBQVQsY0FBQSxHQUFBUSxDQUFBLFFBQy9DO0FBQ0FhLGdCQUFnQixDQUFHQSxnQkFBZ0IsQ0FBR25CLGVBQWUsQ0FBQ3VCLEtBQUssQyxDQUM5RCxLQUFBekIsY0FBQSxHQUFBUyxDQUFBLFdBQUFULGNBQUEsR0FBQVEsQ0FBQSxRQUVELEdBQUksQ0FBQVIsY0FBQSxHQUFBUyxDQUFBLFVBQUE0RCxRQUFRLElBQUFyRSxjQUFBLEdBQUFTLENBQUEsVUFBSStELGFBQWEsSUFBQXhFLGNBQUEsR0FBQVMsQ0FBQSxVQUFJZ0UsY0FBYyxFQUFFLENBQUF6RSxjQUFBLEdBQUFTLENBQUEsVUFBQVQsY0FBQSxHQUFBUSxDQUFBLFFBQzdDO0FBQ0FhLGdCQUFnQixDQUFHQSxnQkFBZ0IsQ0FBR25CLGVBQWUsQ0FBQ3dCLEdBQUcsQyxDQUM1RCxLQUFBMUIsY0FBQSxHQUFBUyxDQUFBLFdBQUFULGNBQUEsR0FBQVEsQ0FBQSxRQUVELEdBQUksQ0FBQVIsY0FBQSxHQUFBUyxDQUFBLFVBQUE2RCxXQUFXLElBQUF0RSxjQUFBLEdBQUFTLENBQUEsVUFBSStELGFBQWEsSUFBQXhFLGNBQUEsR0FBQVMsQ0FBQSxVQUFJZ0UsY0FBYyxFQUFFLENBQUF6RSxjQUFBLEdBQUFTLENBQUEsVUFBQVQsY0FBQSxHQUFBUSxDQUFBLFFBQ2hEO0FBQ0FhLGdCQUFnQixDQUFHQSxnQkFBZ0IsQ0FBR25CLGVBQWUsQ0FBQzBCLE1BQU0sQyxDQUMvRCxLQUFBNUIsY0FBQSxHQUFBUyxDQUFBLFdBQUFULGNBQUEsR0FBQVEsQ0FBQSxRQUVELE1BQU8sQ0FBQWEsZ0JBQWdCLENBQzNCLENBRUE7QUFFQTtBQUVBOzs7O09BS1ErQixrQkFBa0JBLENBQUN3QixPQUFvQixFQUFBNUUsY0FBQSxHQUFBTyxDQUFBLE9BQUFQLGNBQUEsR0FBQVEsQ0FBQSxRQUMzQyxHQUFJb0UsT0FBTyxHQUFLLElBQUksQ0FBRSxDQUFBNUUsY0FBQSxHQUFBUyxDQUFBLFVBQUFULGNBQUEsR0FBQVEsQ0FBQSxRQUNsQixNQUFPLEVBQUMsQyxDQUNYLEtBQUFSLGNBQUEsR0FBQVMsQ0FBQSxXQUFBVCxjQUFBLEdBQUFRLENBQUEsUUFFRCxHQUFJLENBQUNvRSxPQUFPLENBQUN2QixZQUFZLENBQUUsQ0FBQXJELGNBQUEsR0FBQVMsQ0FBQSxVQUFBVCxjQUFBLEdBQUFRLENBQUEsUUFDdkIsTUFBTyxDQUFBb0UsT0FBTyxDQUFDNUIsU0FBUyxDLENBQzNCLEtBQUFoRCxjQUFBLEdBQUFTLENBQUEsV0FFRCxLQUFNLENBQUFvRSxXQUFXLEVBQUE3RSxjQUFBLEdBQUFRLENBQUEsUUFBRyxJQUFJLENBQUM0QyxrQkFBa0IsQ0FBQ3dCLE9BQU8sQ0FBQ3ZCLFlBQTJCLENBQUMsRUFDaEYsR0FBSSxDQUFBeUIsTUFBTSxFQUFBOUUsY0FBQSxHQUFBUSxDQUFBLFFBQUdvRSxPQUFPLENBQUM1QixTQUFTLEVBQUNoRCxjQUFBLEdBQUFRLENBQUEsUUFDL0IsTUFBTyxDQUFBcUUsV0FBVyxDQUFHQyxNQUFNLENBQy9CLENBRUE7Ozs7O09BTVF4QixrQkFBa0JBLENBQUNzQixPQUFvQixDQUFFRyxPQUFPLEVBQUEvRSxjQUFBLEdBQUFTLENBQUEsVUFBRyxLQUFLLEdBQUFULGNBQUEsR0FBQU8sQ0FBQSxPQUFBUCxjQUFBLEdBQUFRLENBQUEsUUFDNUQsR0FBSW9FLE9BQU8sR0FBSyxJQUFJLENBQUUsQ0FBQTVFLGNBQUEsR0FBQVMsQ0FBQSxVQUFBVCxjQUFBLEdBQUFRLENBQUEsUUFDbEIsTUFBTyxFQUFDLEMsQ0FDWCxLQUFBUixjQUFBLEdBQUFTLENBQUEsV0FFRDtBQUFBVCxjQUFBLEdBQUFRLENBQUEsUUFDQSxHQUFJLENBQUNvRSxPQUFPLENBQUNyQixhQUFhLENBQUUsQ0FBQXZELGNBQUEsR0FBQVMsQ0FBQSxVQUFBVCxjQUFBLEdBQUFRLENBQUEsUUFDeEIsTUFBTyxDQUFBdUUsT0FBTyxFQUFBL0UsY0FBQSxHQUFBUyxDQUFBLFVBQUdtRSxPQUFPLENBQUNJLFNBQVMsR0FBQWhGLGNBQUEsR0FBQVMsQ0FBQSxVQUFHLENBQUMsRSxDQUN6QyxLQUFBVCxjQUFBLEdBQUFTLENBQUEsV0FFRCxHQUFJLENBQUF3RSxjQUFjLEVBQUFqRixjQUFBLEdBQUFRLENBQUEsUUFBRyxLQUFLLEVBQUNSLGNBQUEsR0FBQVEsQ0FBQSxRQUMzQixHQUFJMkQsTUFBTSxDQUFDZSxnQkFBZ0IsQ0FBQ04sT0FBTyxDQUFDLENBQUNPLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxHQUFLLE9BQU8sQ0FBRSxDQUFBbkYsY0FBQSxHQUFBUyxDQUFBLFVBQUFULGNBQUEsR0FBQVEsQ0FBQSxRQUMzRXlFLGNBQWMsQ0FBRyxJQUFJLEMsQ0FDeEIsS0FBQWpGLGNBQUEsR0FBQVMsQ0FBQSxXQUVELEtBQU0sQ0FBQW9FLFdBQVcsRUFBQTdFLGNBQUEsR0FBQVEsQ0FBQSxRQUFHLElBQUksQ0FBQzhDLGtCQUFrQixDQUFDc0IsT0FBTyxDQUFDckIsYUFBYSxDQUFFLENBQUF2RCxjQUFBLEdBQUFTLENBQUEsVUFBQXNFLE9BQU8sSUFBQS9FLGNBQUEsR0FBQVMsQ0FBQSxVQUFJd0UsY0FBYyxFQUFDLEVBQUNqRixjQUFBLEdBQUFRLENBQUEsUUFFOUYsR0FBSXVFLE9BQU8sQ0FBRSxDQUFBL0UsY0FBQSxHQUFBUyxDQUFBLFVBQUFULGNBQUEsR0FBQVEsQ0FBQSxRQUNULE1BQU8sQ0FBQXFFLFdBQVcsQ0FBR0QsT0FBTyxDQUFDSSxTQUFTLEMsQ0FDekMsSUFBTSxDQUFBaEYsY0FBQSxHQUFBUyxDQUFBLFVBQUFULGNBQUEsR0FBQVEsQ0FBQSxRQUNILE1BQU8sQ0FBQXFFLFdBQVcsQ0FBR0QsT0FBTyxDQUFDSSxTQUFTLENBQUcsQ0FBQyxDQUFDLEMsQ0FFbkQsQyIsImlnbm9yZUxpc3QiOltdfQ==