@simpleangularcontrols/sac-bootstrap4 10.0.0-rc.20 → 10.0.0-rc.22

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 (367) hide show
  1. package/README.md +18 -18
  2. package/bundles/simpleangularcontrols-sac-bootstrap4.umd.js +3279 -3248
  3. package/bundles/simpleangularcontrols-sac-bootstrap4.umd.js.map +1 -1
  4. package/bundles/simpleangularcontrols-sac-bootstrap4.umd.min.js +1 -1
  5. package/bundles/simpleangularcontrols-sac-bootstrap4.umd.min.js.map +1 -1
  6. package/components/browser/browser.d.ts +45 -45
  7. package/components/browser/browser.module.d.ts +2 -2
  8. package/components/browser/browser.module.ngfactory.d.ts +3 -3
  9. package/components/browser/browser.ngfactory.d.ts +1 -1
  10. package/controls/buttons/button.d.ts +8 -8
  11. package/controls/buttons/button.module.d.ts +2 -2
  12. package/controls/buttons/button.module.ngfactory.d.ts +3 -3
  13. package/controls/buttons/button.ngfactory.d.ts +1 -1
  14. package/controls/checkbox/checkbox.d.ts +14 -14
  15. package/controls/checkbox/checkbox.module.d.ts +2 -2
  16. package/controls/checkbox/checkbox.module.ngfactory.d.ts +3 -3
  17. package/controls/checkbox/checkbox.ngfactory.d.ts +1 -1
  18. package/controls/checkbox/checkbox.scss.ngstyle.d.ts +1 -1
  19. package/controls/checkbox/checkbox.scss.shim.ngstyle.d.ts +1 -1
  20. package/controls/checkbox/radiobutton.d.ts +16 -16
  21. package/controls/checkbox/radiobutton.ngfactory.d.ts +1 -1
  22. package/controls/checkbox/radiobutton.scss.ngstyle.d.ts +1 -1
  23. package/controls/checkbox/radiobutton.scss.shim.ngstyle.d.ts +1 -1
  24. package/controls/checkbox/radiobuttons.d.ts +14 -14
  25. package/controls/checkbox/radiobuttons.ngfactory.d.ts +1 -1
  26. package/controls/confirm/confirm.d.ts +6 -6
  27. package/controls/confirm/confirm.module.d.ts +11 -11
  28. package/controls/confirm/confirm.module.ngfactory.d.ts +3 -3
  29. package/controls/confirm/confirm.ngfactory.d.ts +1 -1
  30. package/controls/confirm/confirm.service.d.ts +54 -54
  31. package/controls/confirm/confirm.service.ngfactory.d.ts +1 -1
  32. package/controls/contextmenu/contextmenu.d.ts +16 -16
  33. package/controls/contextmenu/contextmenu.module.d.ts +2 -2
  34. package/controls/contextmenu/contextmenu.module.ngfactory.d.ts +3 -3
  35. package/controls/contextmenu/contextmenu.ngfactory.d.ts +1 -1
  36. package/controls/contextmenu/contextmenuanchor.d.ts +12 -12
  37. package/controls/contextmenu/contextmenuanchor.ngfactory.d.ts +1 -1
  38. package/controls/contextmenu/contextmenucontainer.d.ts +12 -12
  39. package/controls/contextmenu/contextmenucontainer.ngfactory.d.ts +1 -1
  40. package/controls/contextmenu/contextmenuitembutton.d.ts +10 -10
  41. package/controls/contextmenu/contextmenuitembutton.ngfactory.d.ts +1 -1
  42. package/controls/contextmenu/contextmenuitemsplitter.d.ts +6 -6
  43. package/controls/contextmenu/contextmenuitemsplitter.ngfactory.d.ts +1 -1
  44. package/controls/datetime/date.d.ts +16 -16
  45. package/controls/datetime/date.ngfactory.d.ts +1 -1
  46. package/controls/datetime/dateselector.d.ts +6 -6
  47. package/controls/datetime/dateselector.ngfactory.d.ts +1 -1
  48. package/controls/datetime/datetime.d.ts +16 -16
  49. package/controls/datetime/datetime.module.d.ts +2 -2
  50. package/controls/datetime/datetime.module.ngfactory.d.ts +3 -3
  51. package/controls/datetime/datetime.ngfactory.d.ts +1 -1
  52. package/controls/datetime/time.d.ts +16 -16
  53. package/controls/datetime/time.ngfactory.d.ts +1 -1
  54. package/controls/dialog/dialog.d.ts +25 -25
  55. package/controls/dialog/dialog.module.d.ts +2 -2
  56. package/controls/dialog/dialog.module.ngfactory.d.ts +3 -3
  57. package/controls/dialog/dialog.ngfactory.d.ts +1 -1
  58. package/controls/form/form.d.ts +25 -25
  59. package/controls/form/form.module.d.ts +2 -2
  60. package/controls/form/form.module.ngfactory.d.ts +3 -3
  61. package/controls/form/form.ngfactory.d.ts +1 -1
  62. package/controls/form/inheritform.directive.d.ts +24 -24
  63. package/controls/form/inheritform.directive.ngfactory.d.ts +1 -1
  64. package/controls/grid/grid.d.ts +20 -20
  65. package/controls/grid/grid.module.d.ts +2 -2
  66. package/controls/grid/grid.module.ngfactory.d.ts +3 -3
  67. package/controls/grid/grid.ngfactory.d.ts +1 -1
  68. package/controls/grid/gridbutton.d.ts +10 -10
  69. package/controls/grid/gridbutton.ngfactory.d.ts +1 -1
  70. package/controls/grid/gridcolumn.d.ts +14 -14
  71. package/controls/grid/gridcolumn.ngfactory.d.ts +1 -1
  72. package/controls/grid/gridcolumnaction.d.ts +14 -14
  73. package/controls/grid/gridcolumnaction.ngfactory.d.ts +1 -1
  74. package/controls/grid/gridimage.d.ts +11 -11
  75. package/controls/grid/gridimage.ngfactory.d.ts +1 -1
  76. package/controls/grid/paging.d.ts +12 -12
  77. package/controls/grid/paging.ngfactory.d.ts +1 -1
  78. package/controls/input/input.d.ts +14 -14
  79. package/controls/input/input.module.d.ts +2 -2
  80. package/controls/input/input.module.ngfactory.d.ts +3 -3
  81. package/controls/input/input.ngfactory.d.ts +1 -1
  82. package/controls/input/inputarea.d.ts +14 -14
  83. package/controls/input/inputarea.ngfactory.d.ts +1 -1
  84. package/controls/input/inputcurrency.d.ts +14 -14
  85. package/controls/input/inputcurrency.ngfactory.d.ts +1 -1
  86. package/controls/input/inputdecimal.d.ts +14 -14
  87. package/controls/input/inputdecimal.ngfactory.d.ts +1 -1
  88. package/controls/input/inputemail.d.ts +14 -14
  89. package/controls/input/inputemail.ngfactory.d.ts +1 -1
  90. package/controls/input/inputinteger.d.ts +14 -14
  91. package/controls/input/inputinteger.ngfactory.d.ts +1 -1
  92. package/controls/input/inputpassword.d.ts +14 -14
  93. package/controls/input/inputpassword.ngfactory.d.ts +1 -1
  94. package/controls/input/inputsearch.d.ts +14 -14
  95. package/controls/input/inputsearch.ngfactory.d.ts +1 -1
  96. package/controls/layout/formlayout.directive.d.ts +3 -3
  97. package/controls/layout/formlayout.directive.ngfactory.d.ts +1 -1
  98. package/controls/layout/layout.module.d.ts +2 -2
  99. package/controls/layout/layout.module.ngfactory.d.ts +3 -3
  100. package/controls/layout/tocontrolheight.pipe.d.ts +9 -9
  101. package/controls/layout/tocontrolheight.pipe.ngfactory.d.ts +1 -1
  102. package/controls/layout/tocontrolwidthcss.pipe.d.ts +16 -16
  103. package/controls/layout/tocontrolwidthcss.pipe.ngfactory.d.ts +1 -1
  104. package/controls/layout/tolabelheight.pipe.d.ts +9 -9
  105. package/controls/layout/tolabelheight.pipe.ngfactory.d.ts +1 -1
  106. package/controls/layout/tolabelwidthcss.pipe.d.ts +10 -10
  107. package/controls/layout/tolabelwidthcss.pipe.ngfactory.d.ts +1 -1
  108. package/controls/list/dropdown.d.ts +28 -28
  109. package/controls/list/dropdown.module.d.ts +2 -2
  110. package/controls/list/dropdown.module.ngfactory.d.ts +3 -3
  111. package/controls/list/dropdown.ngfactory.d.ts +1 -1
  112. package/controls/list/list.module.d.ts +2 -2
  113. package/controls/list/list.module.ngfactory.d.ts +3 -3
  114. package/controls/list/listbox.d.ts +26 -26
  115. package/controls/list/listbox.ngfactory.d.ts +1 -1
  116. package/controls/multilanguage/multilanguage.module.d.ts +2 -2
  117. package/controls/multilanguage/multilanguage.module.ngfactory.d.ts +3 -3
  118. package/controls/multilanguage/multilanguageinput.d.ts +18 -18
  119. package/controls/multilanguage/multilanguageinput.ngfactory.d.ts +1 -1
  120. package/controls/multilanguage/multilanguageinputarea.d.ts +18 -18
  121. package/controls/multilanguage/multilanguageinputarea.ngfactory.d.ts +1 -1
  122. package/controls/multilanguage/multilanguagemenu.d.ts +16 -16
  123. package/controls/multilanguage/multilanguagemenu.ngfactory.d.ts +1 -1
  124. package/controls/multilanguage/multilanguagemenuanchor.d.ts +12 -12
  125. package/controls/multilanguage/multilanguagemenuanchor.ngfactory.d.ts +1 -1
  126. package/controls/multilanguage/multilanguagemenucontainer.d.ts +12 -12
  127. package/controls/multilanguage/multilanguagemenucontainer.ngfactory.d.ts +1 -1
  128. package/controls/multilanguage/multilanguagemenuitembutton.d.ts +11 -11
  129. package/controls/multilanguage/multilanguagemenuitembutton.ngfactory.d.ts +1 -1
  130. package/controls/static/formcontainer.d.ts +25 -25
  131. package/controls/static/formcontainer.ngfactory.d.ts +1 -1
  132. package/controls/static/staticlabel.d.ts +14 -14
  133. package/controls/static/staticlabel.module.d.ts +2 -2
  134. package/controls/static/staticlabel.module.ngfactory.d.ts +3 -3
  135. package/controls/static/staticlabel.ngfactory.d.ts +1 -1
  136. package/controls/tabs/tab.d.ts +17 -17
  137. package/controls/tabs/tab.ngfactory.d.ts +1 -1
  138. package/controls/tabs/tabitem.d.ts +6 -6
  139. package/controls/tabs/tabitem.ngfactory.d.ts +1 -1
  140. package/controls/tabs/tabs.module.d.ts +2 -2
  141. package/controls/tabs/tabs.module.ngfactory.d.ts +3 -3
  142. package/controls/tinymce/tinymce.d.ts +20 -20
  143. package/controls/tinymce/tinymce.module.d.ts +2 -2
  144. package/controls/tinymce/tinymce.module.ngfactory.d.ts +3 -3
  145. package/controls/tinymce/tinymce.ngfactory.d.ts +1 -1
  146. package/controls/tinymce/tinymce.scss.ngstyle.d.ts +1 -1
  147. package/controls/tinymce/tinymce.scss.shim.ngstyle.d.ts +1 -1
  148. package/controls/tooltip/tooltip.d.ts +34 -34
  149. package/controls/tooltip/tooltip.module.d.ts +2 -2
  150. package/controls/tooltip/tooltip.module.ngfactory.d.ts +3 -3
  151. package/controls/tooltip/tooltip.ngfactory.d.ts +1 -1
  152. package/controls/treeview/treeview.d.ts +14 -14
  153. package/controls/treeview/treeview.module.d.ts +2 -2
  154. package/controls/treeview/treeview.module.ngfactory.d.ts +3 -3
  155. package/controls/treeview/treeview.ngfactory.d.ts +1 -1
  156. package/controls/upload/dropzone.scss.ngstyle.d.ts +1 -1
  157. package/controls/upload/dropzone.scss.shim.ngstyle.d.ts +1 -1
  158. package/controls/upload/dropzonemultiple.d.ts +21 -21
  159. package/controls/upload/dropzonemultiple.ngfactory.d.ts +1 -1
  160. package/controls/upload/dropzonesingle.d.ts +21 -21
  161. package/controls/upload/dropzonesingle.ngfactory.d.ts +1 -1
  162. package/controls/upload/upload.d.ts +17 -17
  163. package/controls/upload/upload.module.d.ts +2 -2
  164. package/controls/upload/upload.module.ngfactory.d.ts +3 -3
  165. package/controls/upload/upload.ngfactory.d.ts +1 -1
  166. package/controls/upload/upload.scss.ngstyle.d.ts +1 -1
  167. package/controls/upload/upload.scss.shim.ngstyle.d.ts +1 -1
  168. package/controls/upload/uploadmultiple.d.ts +17 -17
  169. package/controls/upload/uploadmultiple.ngfactory.d.ts +1 -1
  170. package/controls/validation/validationsummary.d.ts +14 -14
  171. package/controls/validation/validationsummary.module.d.ts +2 -2
  172. package/controls/validation/validationsummary.module.ngfactory.d.ts +3 -3
  173. package/controls/validation/validationsummary.ngfactory.d.ts +1 -1
  174. package/controls/wizard/wizard.d.ts +17 -17
  175. package/controls/wizard/wizard.module.d.ts +2 -2
  176. package/controls/wizard/wizard.module.ngfactory.d.ts +3 -3
  177. package/controls/wizard/wizard.ngfactory.d.ts +1 -1
  178. package/controls/wizard/wizarditem.d.ts +6 -6
  179. package/controls/wizard/wizarditem.ngfactory.d.ts +1 -1
  180. package/esm2015/components/browser/browser.js +109 -109
  181. package/esm2015/components/browser/browser.module.js +28 -28
  182. package/esm2015/components/browser/browser.module.ngfactory.js +7 -7
  183. package/esm2015/components/browser/browser.ngfactory.js +7 -7
  184. package/esm2015/controls/buttons/button.js +16 -16
  185. package/esm2015/controls/buttons/button.module.js +15 -15
  186. package/esm2015/controls/buttons/button.module.ngfactory.js +7 -7
  187. package/esm2015/controls/buttons/button.ngfactory.js +7 -7
  188. package/esm2015/controls/checkbox/checkbox.js +43 -43
  189. package/esm2015/controls/checkbox/checkbox.module.js +29 -29
  190. package/esm2015/controls/checkbox/checkbox.module.ngfactory.js +7 -7
  191. package/esm2015/controls/checkbox/checkbox.ngfactory.js +7 -7
  192. package/esm2015/controls/checkbox/checkbox.scss.ngstyle.js +7 -7
  193. package/esm2015/controls/checkbox/checkbox.scss.shim.ngstyle.js +7 -7
  194. package/esm2015/controls/checkbox/radiobutton.js +32 -32
  195. package/esm2015/controls/checkbox/radiobutton.ngfactory.js +7 -7
  196. package/esm2015/controls/checkbox/radiobutton.scss.ngstyle.js +7 -7
  197. package/esm2015/controls/checkbox/radiobutton.scss.shim.ngstyle.js +7 -7
  198. package/esm2015/controls/checkbox/radiobuttons.js +42 -42
  199. package/esm2015/controls/checkbox/radiobuttons.ngfactory.js +7 -7
  200. package/esm2015/controls/confirm/confirm.js +14 -14
  201. package/esm2015/controls/confirm/confirm.module.js +31 -31
  202. package/esm2015/controls/confirm/confirm.module.ngfactory.js +7 -7
  203. package/esm2015/controls/confirm/confirm.ngfactory.js +7 -7
  204. package/esm2015/controls/confirm/confirm.service.js +102 -102
  205. package/esm2015/controls/confirm/confirm.service.ngfactory.js +7 -7
  206. package/esm2015/controls/contextmenu/contextmenu.js +34 -34
  207. package/esm2015/controls/contextmenu/contextmenu.module.js +28 -28
  208. package/esm2015/controls/contextmenu/contextmenu.module.ngfactory.js +7 -7
  209. package/esm2015/controls/contextmenu/contextmenu.ngfactory.js +7 -7
  210. package/esm2015/controls/contextmenu/contextmenuanchor.js +30 -30
  211. package/esm2015/controls/contextmenu/contextmenuanchor.ngfactory.js +7 -7
  212. package/esm2015/controls/contextmenu/contextmenucontainer.js +30 -30
  213. package/esm2015/controls/contextmenu/contextmenucontainer.ngfactory.js +7 -7
  214. package/esm2015/controls/contextmenu/contextmenuitembutton.js +28 -28
  215. package/esm2015/controls/contextmenu/contextmenuitembutton.ngfactory.js +7 -7
  216. package/esm2015/controls/contextmenu/contextmenuitemsplitter.js +20 -20
  217. package/esm2015/controls/contextmenu/contextmenuitemsplitter.ngfactory.js +7 -7
  218. package/esm2015/controls/datetime/date.js +55 -55
  219. package/esm2015/controls/datetime/date.ngfactory.js +7 -7
  220. package/esm2015/controls/datetime/dateselector.js +14 -14
  221. package/esm2015/controls/datetime/dateselector.ngfactory.js +7 -7
  222. package/esm2015/controls/datetime/datetime.js +46 -46
  223. package/esm2015/controls/datetime/datetime.module.js +34 -34
  224. package/esm2015/controls/datetime/datetime.module.ngfactory.js +7 -7
  225. package/esm2015/controls/datetime/datetime.ngfactory.js +7 -7
  226. package/esm2015/controls/datetime/time.js +46 -46
  227. package/esm2015/controls/datetime/time.ngfactory.js +7 -7
  228. package/esm2015/controls/dialog/dialog.js +44 -44
  229. package/esm2015/controls/dialog/dialog.module.js +15 -15
  230. package/esm2015/controls/dialog/dialog.module.ngfactory.js +7 -7
  231. package/esm2015/controls/dialog/dialog.ngfactory.js +7 -7
  232. package/esm2015/controls/form/form.js +41 -41
  233. package/esm2015/controls/form/form.module.js +15 -15
  234. package/esm2015/controls/form/form.module.ngfactory.js +7 -7
  235. package/esm2015/controls/form/form.ngfactory.js +7 -7
  236. package/esm2015/controls/form/inheritform.directive.js +57 -57
  237. package/esm2015/controls/form/inheritform.directive.ngfactory.js +7 -7
  238. package/esm2015/controls/grid/grid.js +44 -44
  239. package/esm2015/controls/grid/grid.module.js +33 -33
  240. package/esm2015/controls/grid/grid.module.ngfactory.js +7 -7
  241. package/esm2015/controls/grid/grid.ngfactory.js +7 -7
  242. package/esm2015/controls/grid/gridbutton.js +39 -39
  243. package/esm2015/controls/grid/gridbutton.ngfactory.js +7 -7
  244. package/esm2015/controls/grid/gridcolumn.js +34 -34
  245. package/esm2015/controls/grid/gridcolumn.ngfactory.js +7 -7
  246. package/esm2015/controls/grid/gridcolumnaction.js +35 -35
  247. package/esm2015/controls/grid/gridcolumnaction.ngfactory.js +7 -7
  248. package/esm2015/controls/grid/gridimage.js +28 -28
  249. package/esm2015/controls/grid/gridimage.ngfactory.js +7 -7
  250. package/esm2015/controls/grid/paging.js +34 -34
  251. package/esm2015/controls/grid/paging.ngfactory.js +7 -7
  252. package/esm2015/controls/input/input.js +38 -38
  253. package/esm2015/controls/input/input.module.js +44 -44
  254. package/esm2015/controls/input/input.module.ngfactory.js +7 -7
  255. package/esm2015/controls/input/input.ngfactory.js +7 -7
  256. package/esm2015/controls/input/inputarea.js +42 -42
  257. package/esm2015/controls/input/inputarea.ngfactory.js +7 -7
  258. package/esm2015/controls/input/inputcurrency.js +42 -42
  259. package/esm2015/controls/input/inputcurrency.ngfactory.js +7 -7
  260. package/esm2015/controls/input/inputdecimal.js +42 -42
  261. package/esm2015/controls/input/inputdecimal.ngfactory.js +7 -7
  262. package/esm2015/controls/input/inputemail.js +42 -42
  263. package/esm2015/controls/input/inputemail.ngfactory.js +7 -7
  264. package/esm2015/controls/input/inputinteger.js +42 -42
  265. package/esm2015/controls/input/inputinteger.ngfactory.js +7 -7
  266. package/esm2015/controls/input/inputpassword.js +42 -42
  267. package/esm2015/controls/input/inputpassword.ngfactory.js +7 -7
  268. package/esm2015/controls/input/inputsearch.js +42 -42
  269. package/esm2015/controls/input/inputsearch.ngfactory.js +7 -7
  270. package/esm2015/controls/layout/formlayout.directive.js +10 -10
  271. package/esm2015/controls/layout/formlayout.directive.ngfactory.js +7 -7
  272. package/esm2015/controls/layout/layout.module.js +29 -29
  273. package/esm2015/controls/layout/layout.module.ngfactory.js +7 -7
  274. package/esm2015/controls/layout/tocontrolheight.pipe.js +29 -29
  275. package/esm2015/controls/layout/tocontrolheight.pipe.ngfactory.js +7 -7
  276. package/esm2015/controls/layout/tocontrolwidthcss.pipe.js +50 -50
  277. package/esm2015/controls/layout/tocontrolwidthcss.pipe.ngfactory.js +7 -7
  278. package/esm2015/controls/layout/tolabelheight.pipe.js +29 -29
  279. package/esm2015/controls/layout/tolabelheight.pipe.ngfactory.js +7 -7
  280. package/esm2015/controls/layout/tolabelwidthcss.pipe.js +34 -34
  281. package/esm2015/controls/layout/tolabelwidthcss.pipe.ngfactory.js +7 -7
  282. package/esm2015/controls/list/dropdown.js +71 -71
  283. package/esm2015/controls/list/dropdown.module.js +19 -19
  284. package/esm2015/controls/list/dropdown.module.ngfactory.js +7 -7
  285. package/esm2015/controls/list/dropdown.ngfactory.js +7 -7
  286. package/esm2015/controls/list/list.module.js +19 -19
  287. package/esm2015/controls/list/list.module.ngfactory.js +7 -7
  288. package/esm2015/controls/list/listbox.js +67 -67
  289. package/esm2015/controls/list/listbox.ngfactory.js +7 -7
  290. package/esm2015/controls/multilanguage/multilanguage.module.js +31 -31
  291. package/esm2015/controls/multilanguage/multilanguage.module.ngfactory.js +7 -7
  292. package/esm2015/controls/multilanguage/multilanguageinput.js +48 -48
  293. package/esm2015/controls/multilanguage/multilanguageinput.ngfactory.js +7 -7
  294. package/esm2015/controls/multilanguage/multilanguageinputarea.js +48 -48
  295. package/esm2015/controls/multilanguage/multilanguageinputarea.ngfactory.js +7 -7
  296. package/esm2015/controls/multilanguage/multilanguagemenu.js +40 -40
  297. package/esm2015/controls/multilanguage/multilanguagemenu.ngfactory.js +7 -7
  298. package/esm2015/controls/multilanguage/multilanguagemenuanchor.js +30 -30
  299. package/esm2015/controls/multilanguage/multilanguagemenuanchor.ngfactory.js +7 -7
  300. package/esm2015/controls/multilanguage/multilanguagemenucontainer.js +30 -30
  301. package/esm2015/controls/multilanguage/multilanguagemenucontainer.ngfactory.js +7 -7
  302. package/esm2015/controls/multilanguage/multilanguagemenuitembutton.js +29 -29
  303. package/esm2015/controls/multilanguage/multilanguagemenuitembutton.ngfactory.js +7 -7
  304. package/esm2015/controls/static/formcontainer.js +53 -53
  305. package/esm2015/controls/static/formcontainer.ngfactory.js +7 -7
  306. package/esm2015/controls/static/staticlabel.js +42 -42
  307. package/esm2015/controls/static/staticlabel.module.js +20 -20
  308. package/esm2015/controls/static/staticlabel.module.ngfactory.js +7 -7
  309. package/esm2015/controls/static/staticlabel.ngfactory.js +7 -7
  310. package/esm2015/controls/tabs/tab.js +25 -25
  311. package/esm2015/controls/tabs/tab.ngfactory.js +7 -7
  312. package/esm2015/controls/tabs/tabitem.js +14 -14
  313. package/esm2015/controls/tabs/tabitem.ngfactory.js +7 -7
  314. package/esm2015/controls/tabs/tabs.module.js +16 -16
  315. package/esm2015/controls/tabs/tabs.module.ngfactory.js +7 -7
  316. package/esm2015/controls/tinymce/tinymce.js +54 -54
  317. package/esm2015/controls/tinymce/tinymce.module.js +29 -29
  318. package/esm2015/controls/tinymce/tinymce.module.ngfactory.js +7 -7
  319. package/esm2015/controls/tinymce/tinymce.ngfactory.js +7 -7
  320. package/esm2015/controls/tinymce/tinymce.scss.ngstyle.js +7 -7
  321. package/esm2015/controls/tinymce/tinymce.scss.shim.ngstyle.js +7 -7
  322. package/esm2015/controls/tooltip/tooltip.js +52 -52
  323. package/esm2015/controls/tooltip/tooltip.module.js +13 -13
  324. package/esm2015/controls/tooltip/tooltip.module.ngfactory.js +7 -7
  325. package/esm2015/controls/tooltip/tooltip.ngfactory.js +7 -7
  326. package/esm2015/controls/treeview/treeview.js +41 -41
  327. package/esm2015/controls/treeview/treeview.module.js +16 -16
  328. package/esm2015/controls/treeview/treeview.module.ngfactory.js +7 -7
  329. package/esm2015/controls/treeview/treeview.ngfactory.js +7 -7
  330. package/esm2015/controls/upload/dropzone.scss.ngstyle.js +7 -7
  331. package/esm2015/controls/upload/dropzone.scss.shim.ngstyle.js +7 -7
  332. package/esm2015/controls/upload/dropzonemultiple.js +55 -55
  333. package/esm2015/controls/upload/dropzonemultiple.ngfactory.js +7 -7
  334. package/esm2015/controls/upload/dropzonesingle.js +55 -55
  335. package/esm2015/controls/upload/dropzonesingle.ngfactory.js +7 -7
  336. package/esm2015/controls/upload/upload.js +47 -47
  337. package/esm2015/controls/upload/upload.module.js +34 -34
  338. package/esm2015/controls/upload/upload.module.ngfactory.js +7 -7
  339. package/esm2015/controls/upload/upload.ngfactory.js +7 -7
  340. package/esm2015/controls/upload/upload.scss.ngstyle.js +7 -7
  341. package/esm2015/controls/upload/upload.scss.shim.ngstyle.js +7 -7
  342. package/esm2015/controls/upload/uploadmultiple.js +47 -47
  343. package/esm2015/controls/upload/uploadmultiple.ngfactory.js +7 -7
  344. package/esm2015/controls/validation/validationsummary.js +37 -37
  345. package/esm2015/controls/validation/validationsummary.module.js +15 -15
  346. package/esm2015/controls/validation/validationsummary.module.ngfactory.js +7 -7
  347. package/esm2015/controls/validation/validationsummary.ngfactory.js +7 -7
  348. package/esm2015/controls/wizard/wizard.js +30 -30
  349. package/esm2015/controls/wizard/wizard.module.js +16 -16
  350. package/esm2015/controls/wizard/wizard.module.ngfactory.js +7 -7
  351. package/esm2015/controls/wizard/wizard.ngfactory.js +7 -7
  352. package/esm2015/controls/wizard/wizarditem.js +14 -14
  353. package/esm2015/controls/wizard/wizarditem.ngfactory.js +7 -7
  354. package/esm2015/public_api.js +82 -82
  355. package/esm2015/public_api.ngfactory.js +7 -7
  356. package/esm2015/simpleangularcontrols-sac-bootstrap4.js +10 -10
  357. package/esm2015/simpleangularcontrols-sac-bootstrap4.ngfactory.js +7 -7
  358. package/fesm2015/simpleangularcontrols-sac-bootstrap4.js +2604 -2604
  359. package/fesm2015/simpleangularcontrols-sac-bootstrap4.js.map +1 -1
  360. package/package.json +31 -31
  361. package/public_api.d.ts +76 -76
  362. package/public_api.ngfactory.d.ts +1 -1
  363. package/simpleangularcontrols-sac-bootstrap4-10.0.0-rc.22.tgz +0 -0
  364. package/simpleangularcontrols-sac-bootstrap4.d.ts +9 -9
  365. package/simpleangularcontrols-sac-bootstrap4.metadata.json +1 -1
  366. package/simpleangularcontrols-sac-bootstrap4.ngfactory.d.ts +1 -1
  367. package/simpleangularcontrols-sac-bootstrap4-10.0.0-rc.20.tgz +0 -0
@@ -1,44 +1,44 @@
1
- import { CommonModule } from '@angular/common';
2
- import { NgModule } from '@angular/core';
3
- import { SACBootstrap4LayoutModule } from '../layout/layout.module';
4
- import { SACBootstrap4TooltipModule } from '../tooltip/tooltip.module';
5
- import { SacInputComponent } from './input';
6
- import { SacInputAreaComponent } from './inputarea';
7
- import { SacInputCurrencyComponent } from './inputcurrency';
8
- import { SacInputDecimalComponent } from './inputdecimal';
9
- import { SacInputEmailComponent } from './inputemail';
10
- import { SacInputIntegerComponent } from './inputinteger';
11
- import { SacInputPasswordComponent } from './inputpassword';
12
- import { SacInputSearchComponent } from './inputsearch';
13
- export class SACBootstrap4InputModule {
14
- }
15
- SACBootstrap4InputModule.decorators = [
16
- { type: NgModule, args: [{
17
- declarations: [
18
- SacInputComponent,
19
- SacInputAreaComponent,
20
- SacInputCurrencyComponent,
21
- SacInputDecimalComponent,
22
- SacInputEmailComponent,
23
- SacInputIntegerComponent,
24
- SacInputPasswordComponent,
25
- SacInputSearchComponent,
26
- ],
27
- imports: [
28
- CommonModule,
29
- SACBootstrap4LayoutModule,
30
- SACBootstrap4TooltipModule,
31
- ],
32
- exports: [
33
- SacInputComponent,
34
- SacInputAreaComponent,
35
- SacInputCurrencyComponent,
36
- SacInputDecimalComponent,
37
- SacInputEmailComponent,
38
- SacInputIntegerComponent,
39
- SacInputPasswordComponent,
40
- SacInputSearchComponent,
41
- ],
42
- },] }
43
- ];
44
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IkM6L1Byb2pla3RlL3NpbXBsZWFuZ3VsYXJjb250cm9scy1uZzEwL2NoLmpuZXR3b3JrLnNhYy1jb250cm9scy9wcm9qZWN0cy9zYWMtYm9vdHN0cmFwNC9zcmMvIiwic291cmNlcyI6WyJjb250cm9scy9pbnB1dC9pbnB1dC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDcEUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDdkUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQzVDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNwRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDdEQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDNUQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBNkJ4RCxNQUFNLE9BQU8sd0JBQXdCOzs7WUEzQnBDLFFBQVEsU0FBQztnQkFDUixZQUFZLEVBQUU7b0JBQ1osaUJBQWlCO29CQUNqQixxQkFBcUI7b0JBQ3JCLHlCQUF5QjtvQkFDekIsd0JBQXdCO29CQUN4QixzQkFBc0I7b0JBQ3RCLHdCQUF3QjtvQkFDeEIseUJBQXlCO29CQUN6Qix1QkFBdUI7aUJBQ3hCO2dCQUNELE9BQU8sRUFBRTtvQkFDUCxZQUFZO29CQUNaLHlCQUF5QjtvQkFDekIsMEJBQTBCO2lCQUMzQjtnQkFDRCxPQUFPLEVBQUU7b0JBQ1AsaUJBQWlCO29CQUNqQixxQkFBcUI7b0JBQ3JCLHlCQUF5QjtvQkFDekIsd0JBQXdCO29CQUN4QixzQkFBc0I7b0JBQ3RCLHdCQUF3QjtvQkFDeEIseUJBQXlCO29CQUN6Qix1QkFBdUI7aUJBQ3hCO2FBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTQUNCb290c3RyYXA0TGF5b3V0TW9kdWxlIH0gZnJvbSAnLi4vbGF5b3V0L2xheW91dC5tb2R1bGUnO1xyXG5pbXBvcnQgeyBTQUNCb290c3RyYXA0VG9vbHRpcE1vZHVsZSB9IGZyb20gJy4uL3Rvb2x0aXAvdG9vbHRpcC5tb2R1bGUnO1xyXG5pbXBvcnQgeyBTYWNJbnB1dENvbXBvbmVudCB9IGZyb20gJy4vaW5wdXQnO1xyXG5pbXBvcnQgeyBTYWNJbnB1dEFyZWFDb21wb25lbnQgfSBmcm9tICcuL2lucHV0YXJlYSc7XHJcbmltcG9ydCB7IFNhY0lucHV0Q3VycmVuY3lDb21wb25lbnQgfSBmcm9tICcuL2lucHV0Y3VycmVuY3knO1xyXG5pbXBvcnQgeyBTYWNJbnB1dERlY2ltYWxDb21wb25lbnQgfSBmcm9tICcuL2lucHV0ZGVjaW1hbCc7XHJcbmltcG9ydCB7IFNhY0lucHV0RW1haWxDb21wb25lbnQgfSBmcm9tICcuL2lucHV0ZW1haWwnO1xyXG5pbXBvcnQgeyBTYWNJbnB1dEludGVnZXJDb21wb25lbnQgfSBmcm9tICcuL2lucHV0aW50ZWdlcic7XHJcbmltcG9ydCB7IFNhY0lucHV0UGFzc3dvcmRDb21wb25lbnQgfSBmcm9tICcuL2lucHV0cGFzc3dvcmQnO1xyXG5pbXBvcnQgeyBTYWNJbnB1dFNlYXJjaENvbXBvbmVudCB9IGZyb20gJy4vaW5wdXRzZWFyY2gnO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICBkZWNsYXJhdGlvbnM6IFtcclxuICAgIFNhY0lucHV0Q29tcG9uZW50LFxyXG4gICAgU2FjSW5wdXRBcmVhQ29tcG9uZW50LFxyXG4gICAgU2FjSW5wdXRDdXJyZW5jeUNvbXBvbmVudCxcclxuICAgIFNhY0lucHV0RGVjaW1hbENvbXBvbmVudCxcclxuICAgIFNhY0lucHV0RW1haWxDb21wb25lbnQsXHJcbiAgICBTYWNJbnB1dEludGVnZXJDb21wb25lbnQsXHJcbiAgICBTYWNJbnB1dFBhc3N3b3JkQ29tcG9uZW50LFxyXG4gICAgU2FjSW5wdXRTZWFyY2hDb21wb25lbnQsXHJcbiAgXSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBTQUNCb290c3RyYXA0TGF5b3V0TW9kdWxlLFxyXG4gICAgU0FDQm9vdHN0cmFwNFRvb2x0aXBNb2R1bGUsXHJcbiAgXSxcclxuICBleHBvcnRzOiBbXHJcbiAgICBTYWNJbnB1dENvbXBvbmVudCxcclxuICAgIFNhY0lucHV0QXJlYUNvbXBvbmVudCxcclxuICAgIFNhY0lucHV0Q3VycmVuY3lDb21wb25lbnQsXHJcbiAgICBTYWNJbnB1dERlY2ltYWxDb21wb25lbnQsXHJcbiAgICBTYWNJbnB1dEVtYWlsQ29tcG9uZW50LFxyXG4gICAgU2FjSW5wdXRJbnRlZ2VyQ29tcG9uZW50LFxyXG4gICAgU2FjSW5wdXRQYXNzd29yZENvbXBvbmVudCxcclxuICAgIFNhY0lucHV0U2VhcmNoQ29tcG9uZW50LFxyXG4gIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTQUNCb290c3RyYXA0SW5wdXRNb2R1bGUge31cclxuIl19
1
+ import { CommonModule } from '@angular/common';
2
+ import { NgModule } from '@angular/core';
3
+ import { SACBootstrap4LayoutModule } from '../layout/layout.module';
4
+ import { SACBootstrap4TooltipModule } from '../tooltip/tooltip.module';
5
+ import { SacInputComponent } from './input';
6
+ import { SacInputAreaComponent } from './inputarea';
7
+ import { SacInputCurrencyComponent } from './inputcurrency';
8
+ import { SacInputDecimalComponent } from './inputdecimal';
9
+ import { SacInputEmailComponent } from './inputemail';
10
+ import { SacInputIntegerComponent } from './inputinteger';
11
+ import { SacInputPasswordComponent } from './inputpassword';
12
+ import { SacInputSearchComponent } from './inputsearch';
13
+ export class SACBootstrap4InputModule {
14
+ }
15
+ SACBootstrap4InputModule.decorators = [
16
+ { type: NgModule, args: [{
17
+ declarations: [
18
+ SacInputComponent,
19
+ SacInputAreaComponent,
20
+ SacInputCurrencyComponent,
21
+ SacInputDecimalComponent,
22
+ SacInputEmailComponent,
23
+ SacInputIntegerComponent,
24
+ SacInputPasswordComponent,
25
+ SacInputSearchComponent,
26
+ ],
27
+ imports: [
28
+ CommonModule,
29
+ SACBootstrap4LayoutModule,
30
+ SACBootstrap4TooltipModule,
31
+ ],
32
+ exports: [
33
+ SacInputComponent,
34
+ SacInputAreaComponent,
35
+ SacInputCurrencyComponent,
36
+ SacInputDecimalComponent,
37
+ SacInputEmailComponent,
38
+ SacInputIntegerComponent,
39
+ SacInputPasswordComponent,
40
+ SacInputSearchComponent,
41
+ ],
42
+ },] }
43
+ ];
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6Ii9ob21lL3J1bm5lci93b3JrL3NpbXBsZWFuZ3VsYXJjb250cm9scy9zaW1wbGVhbmd1bGFyY29udHJvbHMvY2guam5ldHdvcmsuc2FjLWNvbnRyb2xzL3Byb2plY3RzL3NhYy1ib290c3RyYXA0L3NyYy8iLCJzb3VyY2VzIjpbImNvbnRyb2xzL2lucHV0L2lucHV0Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDNUMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3BELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzVELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzFELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN0RCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUE2QnhELE1BQU0sT0FBTyx3QkFBd0I7OztZQTNCcEMsUUFBUSxTQUFDO2dCQUNSLFlBQVksRUFBRTtvQkFDWixpQkFBaUI7b0JBQ2pCLHFCQUFxQjtvQkFDckIseUJBQXlCO29CQUN6Qix3QkFBd0I7b0JBQ3hCLHNCQUFzQjtvQkFDdEIsd0JBQXdCO29CQUN4Qix5QkFBeUI7b0JBQ3pCLHVCQUF1QjtpQkFDeEI7Z0JBQ0QsT0FBTyxFQUFFO29CQUNQLFlBQVk7b0JBQ1oseUJBQXlCO29CQUN6QiwwQkFBMEI7aUJBQzNCO2dCQUNELE9BQU8sRUFBRTtvQkFDUCxpQkFBaUI7b0JBQ2pCLHFCQUFxQjtvQkFDckIseUJBQXlCO29CQUN6Qix3QkFBd0I7b0JBQ3hCLHNCQUFzQjtvQkFDdEIsd0JBQXdCO29CQUN4Qix5QkFBeUI7b0JBQ3pCLHVCQUF1QjtpQkFDeEI7YUFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU0FDQm9vdHN0cmFwNExheW91dE1vZHVsZSB9IGZyb20gJy4uL2xheW91dC9sYXlvdXQubW9kdWxlJztcbmltcG9ydCB7IFNBQ0Jvb3RzdHJhcDRUb29sdGlwTW9kdWxlIH0gZnJvbSAnLi4vdG9vbHRpcC90b29sdGlwLm1vZHVsZSc7XG5pbXBvcnQgeyBTYWNJbnB1dENvbXBvbmVudCB9IGZyb20gJy4vaW5wdXQnO1xuaW1wb3J0IHsgU2FjSW5wdXRBcmVhQ29tcG9uZW50IH0gZnJvbSAnLi9pbnB1dGFyZWEnO1xuaW1wb3J0IHsgU2FjSW5wdXRDdXJyZW5jeUNvbXBvbmVudCB9IGZyb20gJy4vaW5wdXRjdXJyZW5jeSc7XG5pbXBvcnQgeyBTYWNJbnB1dERlY2ltYWxDb21wb25lbnQgfSBmcm9tICcuL2lucHV0ZGVjaW1hbCc7XG5pbXBvcnQgeyBTYWNJbnB1dEVtYWlsQ29tcG9uZW50IH0gZnJvbSAnLi9pbnB1dGVtYWlsJztcbmltcG9ydCB7IFNhY0lucHV0SW50ZWdlckNvbXBvbmVudCB9IGZyb20gJy4vaW5wdXRpbnRlZ2VyJztcbmltcG9ydCB7IFNhY0lucHV0UGFzc3dvcmRDb21wb25lbnQgfSBmcm9tICcuL2lucHV0cGFzc3dvcmQnO1xuaW1wb3J0IHsgU2FjSW5wdXRTZWFyY2hDb21wb25lbnQgfSBmcm9tICcuL2lucHV0c2VhcmNoJztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgU2FjSW5wdXRDb21wb25lbnQsXG4gICAgU2FjSW5wdXRBcmVhQ29tcG9uZW50LFxuICAgIFNhY0lucHV0Q3VycmVuY3lDb21wb25lbnQsXG4gICAgU2FjSW5wdXREZWNpbWFsQ29tcG9uZW50LFxuICAgIFNhY0lucHV0RW1haWxDb21wb25lbnQsXG4gICAgU2FjSW5wdXRJbnRlZ2VyQ29tcG9uZW50LFxuICAgIFNhY0lucHV0UGFzc3dvcmRDb21wb25lbnQsXG4gICAgU2FjSW5wdXRTZWFyY2hDb21wb25lbnQsXG4gIF0sXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgU0FDQm9vdHN0cmFwNExheW91dE1vZHVsZSxcbiAgICBTQUNCb290c3RyYXA0VG9vbHRpcE1vZHVsZSxcbiAgXSxcbiAgZXhwb3J0czogW1xuICAgIFNhY0lucHV0Q29tcG9uZW50LFxuICAgIFNhY0lucHV0QXJlYUNvbXBvbmVudCxcbiAgICBTYWNJbnB1dEN1cnJlbmN5Q29tcG9uZW50LFxuICAgIFNhY0lucHV0RGVjaW1hbENvbXBvbmVudCxcbiAgICBTYWNJbnB1dEVtYWlsQ29tcG9uZW50LFxuICAgIFNhY0lucHV0SW50ZWdlckNvbXBvbmVudCxcbiAgICBTYWNJbnB1dFBhc3N3b3JkQ29tcG9uZW50LFxuICAgIFNhY0lucHV0U2VhcmNoQ29tcG9uZW50LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBTQUNCb290c3RyYXA0SW5wdXRNb2R1bGUge31cbiJdfQ==
@@ -1,7 +1,7 @@
1
- /**
2
- * @fileoverview This file was generated by the Angular template compiler. Do not edit.
3
- *
4
- * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes,extraRequire}
5
- * tslint:disable
6
- */
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQubW9kdWxlLm5nZmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiJDOi9Qcm9qZWt0ZS9zaW1wbGVhbmd1bGFyY29udHJvbHMtbmcxMC9jaC5qbmV0d29yay5zYWMtY29udHJvbHMvcHJvamVjdHMvc2FjLWJvb3RzdHJhcDQvc3JjLyIsInNvdXJjZXMiOlsiY29udHJvbHMvaW5wdXQvaW5wdXQubW9kdWxlLm5nZmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgaTAgZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgKiBhcyBpMSBmcm9tICcuL2lucHV0Lm1vZHVsZSc7XG5pbXBvcnQgKiBhcyBpMiBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0ICogYXMgaTMgZnJvbSAnLi4vbGF5b3V0L2Zvcm1sYXlvdXQuZGlyZWN0aXZlJztcbmltcG9ydCAqIGFzIGk0IGZyb20gJy4uL3Rvb2x0aXAvdG9vbHRpcCc7XG5pbXBvcnQgKiBhcyBpNSBmcm9tICcuL2lucHV0JztcbmltcG9ydCAqIGFzIGk2IGZyb20gJy4vaW5wdXRhcmVhJztcbmltcG9ydCAqIGFzIGk3IGZyb20gJy4vaW5wdXRjdXJyZW5jeSc7XG5pbXBvcnQgKiBhcyBpOCBmcm9tICcuL2lucHV0ZGVjaW1hbCc7XG5pbXBvcnQgKiBhcyBpOSBmcm9tICcuL2lucHV0ZW1haWwnO1xuaW1wb3J0ICogYXMgaTEwIGZyb20gJy4vaW5wdXRpbnRlZ2VyJztcbmltcG9ydCAqIGFzIGkxMSBmcm9tICcuL2lucHV0cGFzc3dvcmQnO1xuaW1wb3J0ICogYXMgaTEyIGZyb20gJy4vaW5wdXRzZWFyY2gnO1xuaW1wb3J0ICogYXMgaTEzIGZyb20gJy4uL2xheW91dC90b2NvbnRyb2xoZWlnaHQucGlwZSc7XG5pbXBvcnQgKiBhcyBpMTQgZnJvbSAnLi4vbGF5b3V0L3RvY29udHJvbHdpZHRoY3NzLnBpcGUnO1xuaW1wb3J0ICogYXMgaTE1IGZyb20gJy4uL2xheW91dC90b2xhYmVsaGVpZ2h0LnBpcGUnO1xuaW1wb3J0ICogYXMgaTE2IGZyb20gJy4uL2xheW91dC90b2xhYmVsd2lkdGhjc3MucGlwZSc7XG5pbXBvcnQgKiBhcyBpMTcgZnJvbSAnLi4vbGF5b3V0L2xheW91dC5tb2R1bGUnO1xuaW1wb3J0ICogYXMgaTE4IGZyb20gJy4uL3Rvb2x0aXAvdG9vbHRpcC5tb2R1bGUnO1xuZXhwb3J0IGNvbnN0IFNBQ0Jvb3RzdHJhcDRJbnB1dE1vZHVsZU5nRmFjdG9yeTppMC5OZ01vZHVsZUZhY3Rvcnk8aTEuU0FDQm9vdHN0cmFwNElucHV0TW9kdWxlPiA9IChudWxsIGFzIGFueSk7XG52YXIgX2RlY2wwXzA6aTIuTmdDbGFzcyA9ICg8YW55PihudWxsIGFzIGFueSkpO1xudmFyIF9kZWNsMF8xOmkyLk5nQ29tcG9uZW50T3V0bGV0ID0gKDxhbnk+KG51bGwgYXMgYW55KSk7XG52YXIgX2RlY2wwXzI6aTIuTmdGb3JPZjxhbnksYW55PiA9ICg8YW55PihudWxsIGFzIGFueSkpO1xudmFyIF9kZWNsMF8zOmkyLk5nSWY8YW55PiA9ICg8YW55PihudWxsIGFzIGFueSkpO1xudmFyIF9kZWNsMF80OmkyLk5nVGVtcGxhdGVPdXRsZXQgPSAoPGFueT4obnVsbCBhcyBhbnkpKTtcbnZhciBfZGVjbDBfNTppMi5OZ1N0eWxlID0gKDxhbnk+KG51bGwgYXMgYW55KSk7XG52YXIgX2RlY2wwXzY6aTIuTmdTd2l0Y2ggPSAoPGFueT4obnVsbCBhcyBhbnkpKTtcbnZhciBfZGVjbDBfNzppMi5OZ1N3aXRjaENhc2UgPSAoPGFueT4obnVsbCBhcyBhbnkpKTtcbnZhciBfZGVjbDBfODppMi5OZ1N3aXRjaERlZmF1bHQgPSAoPGFueT4obnVsbCBhcyBhbnkpKTtcbnZhciBfZGVjbDBfOTppMi5OZ1BsdXJhbCA9ICg8YW55PihudWxsIGFzIGFueSkpO1xudmFyIF9kZWNsMF8xMDppMi5OZ1BsdXJhbENhc2UgPSAoPGFueT4obnVsbCBhcyBhbnkpKTtcbnZhciBfZGVjbDBfMTE6aTMuU2FjRm9ybUxheW91dERpcmVjdGl2ZSA9ICg8YW55PihudWxsIGFzIGFueSkpO1xudmFyIF9kZWNsMF8xMjppNC5TYWNUb29sdGlwQ29tcG9uZW50ID0gKDxhbnk+KG51bGwgYXMgYW55KSk7XG52YXIgX2RlY2wwXzEzOmk1LlNhY0lucHV0Q29tcG9uZW50ID0gKDxhbnk+KG51bGwgYXMgYW55KSk7XG52YXIgX2RlY2wwXzE0Omk2LlNhY0lucHV0QXJlYUNvbXBvbmVudCA9ICg8YW55PihudWxsIGFzIGFueSkpO1xudmFyIF9kZWNsMF8xNTppNy5TYWNJbnB1dEN1cnJlbmN5Q29tcG9uZW50ID0gKDxhbnk+KG51bGwgYXMgYW55KSk7XG52YXIgX2RlY2wwXzE2Omk4LlNhY0lucHV0RGVjaW1hbENvbXBvbmVudCA9ICg8YW55PihudWxsIGFzIGFueSkpO1xudmFyIF9kZWNsMF8xNzppOS5TYWNJbnB1dEVtYWlsQ29tcG9uZW50ID0gKDxhbnk+KG51bGwgYXMgYW55KSk7XG52YXIgX2RlY2wwXzE4OmkxMC5TYWNJbnB1dEludGVnZXJDb21wb25lbnQgPSAoPGFueT4obnVsbCBhcyBhbnkpKTtcbnZhciBfZGVjbDBfMTk6aTExLlNhY0lucHV0UGFzc3dvcmRDb21wb25lbnQgPSAoPGFueT4obnVsbCBhcyBhbnkpKTtcbnZhciBfZGVjbDBfMjA6aTEyLlNhY0lucHV0U2VhcmNoQ29tcG9uZW50ID0gKDxhbnk+KG51bGwgYXMgYW55KSk7XG52YXIgX2RlY2wwXzIxOmkyLkFzeW5jUGlwZSA9ICg8YW55PihudWxsIGFzIGFueSkpO1xudmFyIF9kZWNsMF8yMjppMi5VcHBlckNhc2VQaXBlID0gKDxhbnk+KG51bGwgYXMgYW55KSk7XG52YXIgX2RlY2wwXzIzOmkyLkxvd2VyQ2FzZVBpcGUgPSAoPGFueT4obnVsbCBhcyBhbnkpKTtcbnZhciBfZGVjbDBfMjQ6aTIuSnNvblBpcGUgPSAoPGFueT4obnVsbCBhcyBhbnkpKTtcbnZhciBfZGVjbDBfMjU6aTIuU2xpY2VQaXBlID0gKDxhbnk+KG51bGwgYXMgYW55KSk7XG52YXIgX2RlY2wwXzI2OmkyLkRlY2ltYWxQaXBlID0gKDxhbnk+KG51bGwgYXMgYW55KSk7XG52YXIgX2RlY2wwXzI3OmkyLlBlcmNlbnRQaXBlID0gKDxhbnk+KG51bGwgYXMgYW55KSk7XG52YXIgX2RlY2wwXzI4OmkyLlRpdGxlQ2FzZVBpcGUgPSAoPGFueT4obnVsbCBhcyBhbnkpKTtcbnZhciBfZGVjbDBfMjk6aTIuQ3VycmVuY3lQaXBlID0gKDxhbnk+KG51bGwgYXMgYW55KSk7XG52YXIgX2RlY2wwXzMwOmkyLkRhdGVQaXBlID0gKDxhbnk+KG51bGwgYXMgYW55KSk7XG52YXIgX2RlY2wwXzMxOmkyLkkxOG5QbHVyYWxQaXBlID0gKDxhbnk+KG51bGwgYXMgYW55KSk7XG52YXIgX2RlY2wwXzMyOmkyLkkxOG5TZWxlY3RQaXBlID0gKDxhbnk+KG51bGwgYXMgYW55KSk7XG52YXIgX2RlY2wwXzMzOmkyLktleVZhbHVlUGlwZSA9ICg8YW55PihudWxsIGFzIGFueSkpO1xudmFyIF9kZWNsMF8zNDppMTMuU2FjVG9Db250cm9sSGVpZ2h0UGlwZSA9ICg8YW55PihudWxsIGFzIGFueSkpO1xudmFyIF9kZWNsMF8zNTppMTQuU2FjVG9Db250cm9sV2lkdGhDc3NQaXBlID0gKDxhbnk+KG51bGwgYXMgYW55KSk7XG52YXIgX2RlY2wwXzM2OmkxNS5TYWNUb0xhYmVsSGVpZ2h0UGlwZSA9ICg8YW55PihudWxsIGFzIGFueSkpO1xudmFyIF9kZWNsMF8zNzppMTYuU2FjVG9MYWJlbFdpZHRoQ3NzUGlwZSA9ICg8YW55PihudWxsIGFzIGFueSkpO1xudmFyIF9kZWNsMF8zODppMi5Db21tb25Nb2R1bGUgPSAoPGFueT4obnVsbCBhcyBhbnkpKTtcbnZhciBfZGVjbDBfMzk6aTE3LlNBQ0Jvb3RzdHJhcDRMYXlvdXRNb2R1bGUgPSAoPGFueT4obnVsbCBhcyBhbnkpKTtcbnZhciBfZGVjbDBfNDA6aTE4LlNBQ0Jvb3RzdHJhcDRUb29sdGlwTW9kdWxlID0gKDxhbnk+KG51bGwgYXMgYW55KSk7XG52YXIgX2RlY2wwXzQxOmkwLlRlbXBsYXRlUmVmPGFueT4gPSAoPGFueT4obnVsbCBhcyBhbnkpKTtcbnZhciBfZGVjbDBfNDI6aTAuRWxlbWVudFJlZjxhbnk+ID0gKDxhbnk+KG51bGwgYXMgYW55KSk7XG5mdW5jdGlvbiBfVmlld19TYWNJbnB1dENvbXBvbmVudF9Ib3N0XzFfMCgpOnZvaWQge1xuICB2YXIgX2FueTphbnkgPSAobnVsbCBhcyBhbnkpO1xufVxuZnVuY3Rpb24gX1ZpZXdfU2FjSW5wdXRDb21wb25lbnRfMV8xKCk6dm9pZCB7XG4gIGlmICgoKF9kZWNsMF8xMy5oZWxwdGV4dG1vZGUgPT09ICd0b29sdGlwJykgJiYgX2RlY2wwXzEzLmhlbHB0ZXh0KSkge1xuICAgIHZhciBfYW55OmFueSA9IChudWxsIGFzIGFueSk7XG4gICAgY29uc3QgY3VyclZhbF8wOmFueSA9IF9kZWNsMF8xMy5oZWxwdGV4dDtcbiAgICBjdXJyVmFsXzA7XG4gICAgY29uc3QgY3VyclZhbF8xOmFueSA9IHRydWU7XG4gICAgY3VyclZhbF8xO1xuICAgIGNvbnN0IGN1cnJWYWxfMjphbnkgPSAnbWwtMSc7XG4gICAgY3VyclZhbF8yO1xuICAgIGNvbnN0IGN1cnJWYWxfMzphbnkgPSBfZGVjbDBfMTMuSGVscHRleHRUb29sdGlwSWNvbjtcbiAgICBjdXJyVmFsXzM7XG4gIH1cbn1cbmZ1bmN0aW9uIF9WaWV3X1NhY0lucHV0Q29tcG9uZW50XzFfMigpOnZvaWQge1xuICBpZiAoKChfZGVjbDBfMTMuaGVscHRleHRtb2RlID09PSAndGV4dCcpICYmIF9kZWNsMF8xMy5oZWxwdGV4dCkpIHtcbiAgICB2YXIgX2FueTphbnkgPSAobnVsbCBhcyBhbnkpO1xuICAgIGNvbnN0IGN1cnJWYWxfMDphbnkgPSBfZGVjbDBfMTMuaGVscHRleHQ7XG4gICAgY3VyclZhbF8wO1xuICB9XG59XG5mdW5jdGlvbiBfVmlld19TYWNJbnB1dENvbXBvbmVudF8xXzMoKTp2b2lkIHtcbiAgaWYgKCgoX2RlY2wwXzEzLmlzaW5saW5lZXJyb3JlbmFibGVkICYmIF9kZWNsMF8xMy5pbnZhbGlkKSAmJiAoX2RlY2wwXzEzLmRpcnR5IHx8IF9kZWNsMF8xMy50b3VjaGVkKSkpIHtcbiAgICB2YXIgX2FueTphbnkgPSAobnVsbCBhcyBhbnkpO1xuICAgIGNvbnN0IGN1cnJWYWxfMDphbnkgPSBfZGVjbDBfMjEudHJhbnNmb3JtKF9kZWNsMF8xMy5HZXRFcnJvck1lc3NhZ2UoKSk7XG4gICAgY3VyclZhbF8wO1xuICB9XG59XG5mdW5jdGlvbiBfVmlld19TYWNJbnB1dENvbXBvbmVudF8xXzQoKTp2b2lkIHtcbiAgaWYgKCgoKF9kZWNsMF8xMy5oZWxwdGV4dG1vZGUgPT09ICd0b29sdGlwJykgJiYgX2RlY2wwXzEzLmhlbHB0ZXh0KSAmJiBfZGVjbDBfMTMuZGlzYWJsZWxhYmVsKSkge1xuICAgIHZhciBfYW55OmFueSA9IChudWxsIGFzIGFueSk7XG4gICAgY29uc3QgY3VyclZhbF8wOmFueSA9ICdmb3JtLWNvbnRyb2wtcGxhaW50ZXh0IGFsaWduLXNlbGYtdG9wIG1sLTIgbXItMSB3LWF1dG8nO1xuICAgIGN1cnJWYWxfMDtcbiAgICBjb25zdCBjdXJyVmFsXzE6YW55ID0gW19kZWNsMF8zNC50cmFuc2Zvcm0oX2RlY2wwXzEzLmNvbXBvbmVudEhlaWdodCldO1xuICAgIGN1cnJWYWxfMTtcbiAgICBjb25zdCBjdXJyVmFsXzI6YW55ID0gX2RlY2wwXzEzLmhlbHB0ZXh0O1xuICAgIGN1cnJWYWxfMjtcbiAgICBjb25zdCBjdXJyVmFsXzM6YW55ID0gdHJ1ZTtcbiAgICBjdXJyVmFsXzM7XG4gICAgY29uc3QgY3VyclZhbF80OmFueSA9ICdtbC0xJztcbiAgICBjdXJyVmFsXzQ7XG4gICAgY29uc3QgY3VyclZhbF81OmFueSA9IF9kZWNsMF8xMy5IZWxwdGV4dFRvb2x0aXBJY29uO1xuICAgIGN1cnJWYWxfNTtcbiAgfVxufVxuZnVuY3Rpb24gX1ZpZXdfU2FjSW5wdXRDb21wb25lbnRfMV8wKCk6dm9pZCB7XG4gIHZhciBfYW55OmFueSA9IChudWxsIGFzIGFueSk7XG4gIGNvbnN0IGN1cnJWYWxfMDphbnkgPSBfZGVjbDBfMTMuZGlzYWJsZWxhYmVsO1xuICBjdXJyVmFsXzA7XG4gIGNvbnN0IGN1cnJWYWxfMTphbnkgPSAnY29sLTEyIGNvbC1mb3JtLWxhYmVsIGQtZmxleCc7XG4gIGN1cnJWYWxfMTtcbiAgY29uc3QgY3VyclZhbF8yOmFueSA9IFsoKF9kZWNsMF8xMy5kaXNhYmxlbGFiZWwgPT09IGZhbHNlKT8gX2RlY2wwXzM3LnRyYW5zZm9ybShfZGVjbDBfMTMubGFiZWxTaXplcyk6ICdzci1vbmx5JyksXG4gICAgICBfZGVjbDBfMzYudHJhbnNmb3JtKF9kZWNsMF8xMy5jb21wb25lbnRIZWlnaHQpXTtcbiAgY3VyclZhbF8yO1xuICBjb25zdCBjdXJyVmFsXzM6YW55ID0gaTAuybVpbmxpbmVJbnRlcnBvbGF0ZSgxLCcnLF9kZWNsMF8xMy5uYW1lLCcnKTtcbiAgY3VyclZhbF8zO1xuICBjb25zdCBjdXJyVmFsXzQ6YW55ID0gX2RlY2wwXzEzLmlzcmVxdWlyZWQ7XG4gIGN1cnJWYWxfNDtcbiAgY29uc3QgY3VyclZhbF81OmFueSA9IF9kZWNsMF8xMy5zcGxpdGxhYmVsYW5kaGVscHRleHQ7XG4gIGN1cnJWYWxfNTtcbiAgY29uc3QgY3VyclZhbF82OmFueSA9IF9kZWNsMF8xMy5sYWJlbDtcbiAgY3VyclZhbF82O1xuICBjb25zdCBjdXJyVmFsXzc6YW55ID0gKChfZGVjbDBfMTMuaGVscHRleHRtb2RlID09PSAndG9vbHRpcCcpICYmIF9kZWNsMF8xMy5oZWxwdGV4dCk7XG4gIGN1cnJWYWxfNztcbiAgY29uc3QgY3VyclZhbF84OmFueSA9ICdjb2wtMTInO1xuICBjdXJyVmFsXzg7XG4gIGNvbnN0IGN1cnJWYWxfOTphbnkgPSBbKChfZGVjbDBfMTMuZGlzYWJsZWxhYmVsID09PSBmYWxzZSk/IF9kZWNsMF8zNS50cmFuc2Zvcm0oX2RlY2wwXzEzLmxhYmVsU2l6ZXMpOiAnJyldO1xuICBjdXJyVmFsXzk7XG4gIGNvbnN0IGN1cnJWYWxfMTA6YW55ID0gKCgoX2RlY2wwXzEzLmhlbHB0ZXh0bW9kZSA9PT0gJ3Rvb2x0aXAnKSAmJiBfZGVjbDBfMTMuaGVscHRleHQpICYmIF9kZWNsMF8xMy5kaXNhYmxlbGFiZWwpO1xuICBjdXJyVmFsXzEwO1xuICBjb25zdCBjdXJyVmFsXzExOmFueSA9ICgoKF9kZWNsMF8xMy5oZWxwdGV4dG1vZGUgPT09ICd0b29sdGlwJykgJiYgX2RlY2wwXzEzLmhlbHB0ZXh0KSAmJiBfZGVjbDBfMTMuZGlzYWJsZWxhYmVsKTtcbiAgY3VyclZhbF8xMTtcbiAgY29uc3QgY3VyclZhbF8xMjphbnkgPSAnZm9ybS1jb250cm9sJztcbiAgY3VyclZhbF8xMjtcbiAgY29uc3QgY3VyclZhbF8xMzphbnkgPSBbX2RlY2wwXzM0LnRyYW5zZm9ybShfZGVjbDBfMTMuY29tcG9uZW50SGVpZ2h0KV07XG4gIGN1cnJWYWxfMTM7XG4gIGNvbnN0IGN1cnJWYWxfMTQ6YW55ID0gaTAuybVpbmxpbmVJbnRlcnBvbGF0ZSgxLCcnLF9kZWNsMF8xMy5uYW1lLCcnKTtcbiAgY3VyclZhbF8xNDtcbiAgY29uc3QgY3VyclZhbF8xNTphbnkgPSBpMC7JtWlubGluZUludGVycG9sYXRlKDEsJycsX2RlY2wwXzEzLm5hbWUsJycpO1xuICBjdXJyVmFsXzE1O1xuICBjb25zdCBjdXJyVmFsXzE2OmFueSA9IF9kZWNsMF8xMy52YWx1ZTtcbiAgY3VyclZhbF8xNjtcbiAgY29uc3QgY3VyclZhbF8xNzphbnkgPSBfZGVjbDBfMTMucGxhY2Vob2xkZXI7XG4gIGN1cnJWYWxfMTc7XG4gIGNvbnN0IGN1cnJWYWxfMTg6YW55ID0gX2RlY2wwXzEzLnJlYWRvbmx5O1xuICBjdXJyVmFsXzE4O1xuICBjb25zdCBjdXJyVmFsXzE5OmFueSA9IF9kZWNsMF8xMy5tYXhsZW5ndGg7XG4gIGN1cnJWYWxfMTk7XG4gIGNvbnN0IGN1cnJWYWxfMjA6YW55ID0gKF9kZWNsMF8xMy5pbnZhbGlkICYmIChfZGVjbDBfMTMuZGlydHkgfHwgX2RlY2wwXzEzLnRvdWNoZWQpKTtcbiAgY3VyclZhbF8yMDtcbiAgY29uc3QgY3VyclZhbF8yMTphbnkgPSBfZGVjbDBfMTMuaXNkaXNhYmxlZDtcbiAgY3VyclZhbF8yMTtcbiAgY29uc3QgY3VyclZhbF8yMjphbnkgPSAoKF9kZWNsMF8xMy5oZWxwdGV4dG1vZGUgPT09ICd0ZXh0JykgJiYgX2RlY2wwXzEzLmhlbHB0ZXh0KTtcbiAgY3VyclZhbF8yMjtcbiAgY29uc3QgY3VyclZhbF8yMzphbnkgPSAoKF9kZWNsMF8xMy5pc2lubGluZWVycm9yZW5hYmxlZCAmJiBfZGVjbDBfMTMuaW52YWxpZCkgJiYgKF9kZWNsMF8xMy5kaXJ0eSB8fCBfZGVjbDBfMTMudG91Y2hlZCkpO1xuICBjdXJyVmFsXzIzO1xuICBjb25zdCBjdXJyVmFsXzI0OmFueSA9ICgoKF9kZWNsMF8xMy5oZWxwdGV4dG1vZGUgPT09ICd0b29sdGlwJykgJiYgX2RlY2wwXzEzLmhlbHB0ZXh0KSAmJiBfZGVjbDBfMTMuZGlzYWJsZWxhYmVsKTtcbiAgY3VyclZhbF8yNDtcbiAgY29uc3QgcGRfMjU6YW55ID0gKCg8YW55Pl9kZWNsMF8xMy5vblRvdWNoKCkpICE9PSBmYWxzZSk7XG4gIGNvbnN0IHBkXzI2OmFueSA9ICgoPGFueT5fZGVjbDBfMTMuc2V0VmFsdWUoX2FueS50YXJnZXQudmFsdWUpKSAhPT0gZmFsc2UpO1xuICBjb25zdCBwZF8yNzphbnkgPSAoKDxhbnk+X2RlY2wwXzEzLm9uS2V5UHJlc3MoX2FueSkpICE9PSBmYWxzZSk7XG59XG5mdW5jdGlvbiBfVmlld19TYWNJbnB1dEFyZWFDb21wb25lbnRfSG9zdF8yXzAoKTp2b2lkIHtcbiAgdmFyIF9hbnk6YW55ID0gKG51bGwgYXMgYW55KTtcbn1cbmZ1bmN0aW9uIF9WaWV3X1NhY0lucHV0QXJlYUNvbXBvbmVudF8yXzEoKTp2b2lkIHtcbiAgaWYgKCgoX2RlY2wwXzE0LmhlbHB0ZXh0bW9kZSA9PT0gJ3Rvb2x0aXAnKSAmJiBfZGVjbDBfMTQuaGVscHRleHQpKSB7XG4gICAgdmFyIF9hbnk6YW55ID0gKG51bGwgYXMgYW55KTtcbiAgICBjb25zdCBjdXJyVmFsXzA6YW55ID0gX2RlY2wwXzE0LmhlbHB0ZXh0O1xuICAgIGN1cnJWYWxfMDtcbiAgICBjb25zdCBjdXJyVmFsXzE6YW55ID0gdHJ1ZTtcbiAgICBjdXJyVmFsXzE7XG4gICAgY29uc3QgY3VyclZhbF8yOmFueSA9ICdtbC0xJztcbiAgICBjdXJyVmFsXzI7XG4gICAgY29uc3QgY3VyclZhbF8zOmFueSA9IF9kZWNsMF8xNC5IZWxwdGV4dFRvb2x0aXBJY29uO1xuICAgIGN1cnJWYWxfMztcbiAgfVxufVxuZnVuY3Rpb24gX1ZpZXdfU2FjSW5wdXRBcmVhQ29tcG9uZW50XzJfMigpOnZvaWQge1xuICBpZiAoKChfZGVjbDBfMTQuaGVscHRleHRtb2RlID09PSAndGV4dCcpICYmIF9kZWNsMF8xNC5oZWxwdGV4dCkpIHtcbiAgICB2YXIgX2FueTphbnkgPSAobnVsbCBhcyBhbnkpO1xuICAgIGNvbnN0IGN1cnJWYWxfMDphbnkgPSBfZGVjbDBfMTQuaGVscHRleHQ7XG4gICAgY3VyclZhbF8wO1xuICB9XG59XG5mdW5jdGlvbiBfVmlld19TYWNJbnB1dEFyZWFDb21wb25lbnRfMl8zKCk6dm9pZCB7XG4gIGlmICgoKF9kZWNsMF8xNC5pc2lubGluZWVycm9yZW5hYmxlZCAmJiBfZGVjbDBfMTQuaW52YWxpZCkgJiYgKF9kZWNsMF8xNC5kaXJ0eSB8fCBfZGVjbDBfMTQudG91Y2hlZCkpKSB7XG4gICAgdmFyIF9hbnk6YW55ID0gKG51bGwgYXMgYW55KTtcbiAgICBjb25zdCBjdXJyVmFsXzA6YW55ID0gX2RlY2wwXzIxLnRyYW5zZm9ybShfZGVjbDBfMTQuR2V0RXJyb3JNZXNzYWdlKCkpO1xuICAgIGN1cnJWYWxfMDtcbiAgfVxufVxuZnVuY3Rpb24gX1ZpZXdfU2FjSW5wdXRBcmVhQ29tcG9uZW50XzJfNCgpOnZvaWQge1xuICBpZiAoKCgoX2RlY2wwXzE0LmhlbHB0ZXh0bW9kZSA9PT0gJ3Rvb2x0aXAnKSAmJiBfZGVjbDBfMTQuaGVscHRleHQpICYmIF9kZWNsMF8xNC5kaXNhYmxlbGFiZWwpKSB7XG4gICAgdmFyIF9hbnk6YW55ID0gKG51bGwgYXMgYW55KTtcbiAgICBjb25zdCBjdXJyVmFsXzA6YW55ID0gJ2Zvcm0tY29udHJvbC1wbGFpbnRleHQgYWxpZ24tc2VsZi10b3AgbWwtMiBtci0xIHctYXV0byc7XG4gICAgY3VyclZhbF8wO1xuICAgIGNvbnN0IGN1cnJWYWxfMTphbnkgPSBbX2RlY2wwXzM0LnRyYW5zZm9ybShfZGVjbDBfMTQuY29tcG9uZW50SGVpZ2h0KV07XG4gICAgY3VyclZhbF8xO1xuICAgIGNvbnN0IGN1cnJWYWxfMjphbnkgPSBfZGVjbDBfMTQuaGVscHRleHQ7XG4gICAgY3VyclZhbF8yO1xuICAgIGNvbnN0IGN1cnJWYWxfMzphbnkgPSB0cnVlO1xuICAgIGN1cnJWYWxfMztcbiAgICBjb25zdCBjdXJyVmFsXzQ6YW55ID0gJ21sLTEnO1xuICAgIGN1cnJWYWxfNDtcbiAgICBjb25zdCBjdXJyVmFsXzU6YW55ID0gX2RlY2wwXzE0LkhlbHB0ZXh0VG9vbHRpcEljb247XG4gICAgY3VyclZhbF81O1xuICB9XG59XG5mdW5jdGlvbiBfVmlld19TYWNJbnB1dEFyZWFDb21wb25lbnRfMl8wKCk6dm9pZCB7XG4gIHZhciBfYW55OmFueSA9IChudWxsIGFzIGFueSk7XG4gIGNvbnN0IGN1cnJWYWxfMDphbnkgPSAnY29sLTEyIGNvbC1mb3JtLWxhYmVsIGQtZmxleCc7XG4gIGN1cnJWYWxfMDtcbiAgY29uc3QgY3VyclZhbF8xOmFueSA9IFsoKF9kZWNsMF8xNC5kaXNhYmxlbGFiZWwgPT09IGZhbHNlKT8gX2RlY2wwXzM3LnRyYW5zZm9ybShfZGVjbDBfMTQubGFiZWxTaXplcyk6ICdzci1vbmx5JyksXG4gICAgICBfZGVjbDBfMzYudHJhbnNmb3JtKF9kZWNsMF8xNC5jb21wb25lbnRIZWlnaHQpXTtcbiAgY3VyclZhbF8xO1xuICBjb25zdCBjdXJyVmFsXzI6YW55ID0gaTAuybVpbmxpbmVJbnRlcnBvbGF0ZSgxLCcnLF9kZWNsMF8xNC5uYW1lLCcnKTtcbiAgY3VyclZhbF8yO1xuICBjb25zdCBjdXJyVmFsXzM6YW55ID0gX2RlY2wwXzE0LmlzcmVxdWlyZWQ7XG4gIGN1cnJWYWxfMztcbiAgY29uc3QgY3VyclZhbF80OmFueSA9IF9kZWNsMF8xNC5zcGxpdGxhYmVsYW5kaGVscHRleHQ7XG4gIGN1cnJWYWxfNDtcbiAgY29uc3QgY3VyclZhbF81OmFueSA9IF9kZWNsMF8xNC5sYWJlbDtcbiAgY3VyclZhbF81O1xuICBjb25zdCBjdXJyVmFsXzY6YW55ID0gKChfZGVjbDBfMTQuaGVscHRleHRtb2RlID09PSAndG9vbHRpcCcpICYmIF9kZWNsMF8xNC5oZWxwdGV4dCk7XG4gIGN1cnJWYWxfNjtcbiAgY29uc3QgY3VyclZhbF83OmFueSA9ICdjb2wtMTInO1xuICBjdXJyVmFsXzc7XG4gIGNvbnN0IGN1cnJWYWxfODphbnkgPSBbKChfZGVjbDBfMTQuZGlzYWJsZWxhYmVsID09PSBmYWxzZSk/IF9kZWNsMF8zNS50cmFuc2Zvcm0oX2RlY2wwXzE0LmxhYmVsU2l6ZXMpOiAnJyldO1xuICBjdXJyVmFsXzg7XG4gIGNvbnN0IGN1cnJWYWxfOTphbnkgPSAoKChfZGVjbDBfMTQuaGVscHRleHRtb2RlID09PSAndG9vbHRpcCcpICYmIF9kZWNsMF8xNC5oZWxwdGV4dCkgJiYgX2RlY2wwXzE0LmRpc2FibGVsYWJlbCk7XG4gIGN1cnJWYWxfOTtcbiAgY29uc3QgY3VyclZhbF8xMDphbnkgPSAoKChfZGVjbDBfMTQuaGVscHRleHRtb2RlID09PSAndG9vbHRpcCcpICYmIF9kZWNsMF8xNC5oZWxwdGV4dCkgJiYgX2RlY2wwXzE0LmRpc2FibGVsYWJlbCk7XG4gIGN1cnJWYWxfMTA7XG4gIGNvbnN0IGN1cnJWYWxfMTE6YW55ID0gJ2Zvcm0tY29udHJvbCc7XG4gIGN1cnJWYWxfMTE7XG4gIGNvbnN0IGN1cnJWYWxfMTI6YW55ID0gW19kZWNsMF8zNC50cmFuc2Zvcm0oX2RlY2wwXzE0LmNvbXBvbmVudEhlaWdodCldO1xuICBjdXJyVmFsXzEyO1xuICBjb25zdCBjdXJyVmFsXzEzOmFueSA9IGkwLsm1aW5saW5lSW50ZXJwb2xhdGUoMSwnJyxfZGVjbDBfMTQubmFtZSwnJyk7XG4gIGN1cnJWYWxfMTM7XG4gIGNvbnN0IGN1cnJWYWxfMTQ6YW55ID0gaTAuybVpbmxpbmVJbnRlcnBvbGF0ZSgxLCcnLF9kZWNsMF8xNC5uYW1lLCcnKTtcbiAgY3VyclZhbF8xNDtcbiAgY29uc3QgY3VyclZhbF8xNTphbnkgPSBfZGVjbDBfMTQudmFsdWU7XG4gIGN1cnJWYWxfMTU7XG4gIGNvbnN0IGN1cnJWYWxfMTY6YW55ID0gX2RlY2wwXzE0LnBsYWNlaG9sZGVyO1xuICBjdXJyVmFsXzE2O1xuICBjb25zdCBjdXJyVmFsXzE3OmFueSA9IF9kZWNsMF8xNC5yb3dzO1xuICBjdXJyVmFsXzE3O1xuICBjb25zdCBjdXJyVmFsXzE4OmFueSA9IChfZGVjbDBfMTQuaW52YWxpZCAmJiAoX2RlY2wwXzE0LmRpcnR5IHx8IF9kZWNsMF8xNC50b3VjaGVkKSk7XG4gIGN1cnJWYWxfMTg7XG4gIGNvbnN0IGN1cnJWYWxfMTk6YW55ID0gX2RlY2wwXzE0LmlzZGlzYWJsZWQ7XG4gIGN1cnJWYWxfMTk7XG4gIGNvbnN0IGN1cnJWYWxfMjA6YW55ID0gX2RlY2wwXzE0Lm1heGxlbmd0aDtcbiAgY3VyclZhbF8yMDtcbiAgY29uc3QgY3VyclZhbF8yMTphbnkgPSBfZGVjbDBfMTQucmVhZG9ubHk7XG4gIGN1cnJWYWxfMjE7XG4gIGNvbnN0IGN1cnJWYWxfMjI6YW55ID0gKChfZGVjbDBfMTQuaGVscHRleHRtb2RlID09PSAndGV4dCcpICYmIF9kZWNsMF8xNC5oZWxwdGV4dCk7XG4gIGN1cnJWYWxfMjI7XG4gIGNvbnN0IGN1cnJWYWxfMjM6YW55ID0gKChfZGVjbDBfMTQuaXNpbmxpbmVlcnJvcmVuYWJsZWQgJiYgX2RlY2wwXzE0LmludmFsaWQpICYmIChfZGVjbDBfMTQuZGlydHkgfHwgX2RlY2wwXzE0LnRvdWNoZWQpKTtcbiAgY3VyclZhbF8yMztcbiAgY29uc3QgY3VyclZhbF8yNDphbnkgPSAoKChfZGVjbDBfMTQuaGVscHRleHRtb2RlID09PSAndG9vbHRpcCcpICYmIF9kZWNsMF8xNC5oZWxwdGV4dCkgJiYgX2RlY2wwXzE0LmRpc2FibGVsYWJlbCk7XG4gIGN1cnJWYWxfMjQ7XG4gIGNvbnN0IHBkXzI1OmFueSA9ICgoPGFueT5fZGVjbDBfMTQub25Ub3VjaCgpKSAhPT0gZmFsc2UpO1xuICBjb25zdCBwZF8yNjphbnkgPSAoKDxhbnk+X2RlY2wwXzE0LnNldFZhbHVlKF9hbnkudGFyZ2V0LnZhbHVlKSkgIT09IGZhbHNlKTtcbiAgY29uc3QgcGRfMjc6YW55ID0gKCg8YW55Pl9kZWNsMF8xNC5vbktleVByZXNzKF9hbnkpKSAhPT0gZmFsc2UpO1xufVxuZnVuY3Rpb24gX1ZpZXdfU2FjSW5wdXRDdXJyZW5jeUNvbXBvbmVudF9Ib3N0XzNfMCgpOnZvaWQge1xuICB2YXIgX2FueTphbnkgPSAobnVsbCBhcyBhbnkpO1xufVxuZnVuY3Rpb24gX1ZpZXdfU2FjSW5wdXRDdXJyZW5jeUNvbXBvbmVudF8zXzEoKTp2b2lkIHtcbiAgaWYgKCgoX2RlY2wwXzE1LmhlbHB0ZXh0bW9kZSA9PT0gJ3Rvb2x0aXAnKSAmJiBfZGVjbDBfMTUuaGVscHRleHQpKSB7XG4gICAgdmFyIF9hbnk6YW55ID0gKG51bGwgYXMgYW55KTtcbiAgICBjb25zdCBjdXJyVmFsXzA6YW55ID0gX2RlY2wwXzE1LmhlbHB0ZXh0O1xuICAgIGN1cnJWYWxfMDtcbiAgICBjb25zdCBjdXJyVmFsXzE6YW55ID0gdHJ1ZTtcbiAgICBjdXJyVmFsXzE7XG4gICAgY29uc3QgY3VyclZhbF8yOmFueSA9ICdtbC0xJztcbiAgICBjdXJyVmFsXzI7XG4gICAgY29uc3QgY3VyclZhbF8zOmFueSA9IF9kZWNsMF8xNS5IZWxwdGV4dFRvb2x0aXBJY29uO1xuICAgIGN1cnJWYWxfMztcbiAgfVxufVxuZnVuY3Rpb24gX1ZpZXdfU2FjSW5wdXRDdXJyZW5jeUNvbXBvbmVudF8zXzIoKTp2b2lkIHtcbiAgaWYgKCgoX2RlY2wwXzE1LmlzaW5saW5lZXJyb3JlbmFibGVkICYmIF9kZWNsMF8xNS5pbnZhbGlkKSAmJiAoX2RlY2wwXzE1LmRpcnR5IHx8IF9kZWNsMF8xNS50b3VjaGVkKSkpIHtcbiAgICB2YXIgX2FueTphbnkgPSAobnVsbCBhcyBhbnkpO1xuICAgIGNvbnN0IGN1cnJWYWxfMDphbnkgPSBfZGVjbDBfMjEudHJhbnNmb3JtKF9kZWNsMF8xNS5HZXRFcnJvck1lc3NhZ2UoKSk7XG4gICAgY3VyclZhbF8wO1xuICB9XG59XG5mdW5jdGlvbiBfVmlld19TYWNJbnB1dEN1cnJlbmN5Q29tcG9uZW50XzNfMygpOnZvaWQge1xuICBpZiAoKChfZGVjbDBfMTUuaGVscHRleHRtb2RlID09PSAndGV4dCcpICYmIF9kZWNsMF8xNS5oZWxwdGV4dCkpIHtcbiAgICB2YXIgX2FueTphbnkgPSAobnVsbCBhcyBhbnkpO1xuICAgIGNvbnN0IGN1cnJWYWxfMDphbnkgPSBfZGVjbDBfMTUuaGVscHRleHQ7XG4gICAgY3VyclZhbF8wO1xuICB9XG59XG5mdW5jdGlvbiBfVmlld19TYWNJbnB1dEN1cnJlbmN5Q29tcG9uZW50XzNfNCgpOnZvaWQge1xuICBpZiAoKCgoX2RlY2wwXzE1LmhlbHB0ZXh0bW9kZSA9PT0gJ3Rvb2x0aXAnKSAmJiBfZGVjbDBfMTUuaGVscHRleHQpICYmIF9kZWNsMF8xNS5kaXNhYmxlbGFiZWwpKSB7XG4gICAgdmFyIF9hbnk6YW55ID0gKG51bGwgYXMgYW55KTtcbiAgICBjb25zdCBjdXJyVmFsXzA6YW55ID0gJ2Zvcm0tY29udHJvbC1wbGFpbnRleHQgYWxpZ24tc2VsZi10b3AgbWwtMiBtci0xIHctYXV0byc7XG4gICAgY3VyclZhbF8wO1xuICAgIGNvbnN0IGN1cnJWYWxfMTphbnkgPSBbX2RlY2wwXzM0LnRyYW5zZm9ybShfZGVjbDBfMTUuY29tcG9uZW50SGVpZ2h0KV07XG4gICAgY3VyclZhbF8xO1xuICAgIGNvbnN0IGN1cnJWYWxfMjphbnkgPSBfZGVjbDBfMTUuaGVscHRleHQ7XG4gICAgY3VyclZhbF8yO1xuICAgIGNvbnN0IGN1cnJWYWxfMzphbnkgPSB0cnVlO1xuICAgIGN1cnJWYWxfMztcbiAgICBjb25zdCBjdXJyVmFsXzQ6YW55ID0gJ21sLTEnO1xuICAgIGN1cnJWYWxfNDtcbiAgICBjb25zdCBjdXJyVmFsXzU6YW55ID0gX2RlY2wwXzE1LkhlbHB0ZXh0VG9vbHRpcEljb247XG4gICAgY3VyclZhbF81O1xuICB9XG59XG5mdW5jdGlvbiBfVmlld19TYWNJbnB1dEN1cnJlbmN5Q29tcG9uZW50XzNfMCgpOnZvaWQge1xuICB2YXIgX2FueTphbnkgPSAobnVsbCBhcyBhbnkpO1xuICBjb25zdCBjdXJyVmFsXzA6YW55ID0gX2RlY2wwXzE1LmRpc2FibGVsYWJlbDtcbiAgY3VyclZhbF8wO1xuICBjb25zdCBjdXJyVmFsXzE6YW55ID0gJ2NvbC0xMiBjb2wtZm9ybS1sYWJlbCBkLWZsZXgnO1xuICBjdXJyVmFsXzE7XG4gIGNvbnN0IGN1cnJWYWxfMjphbnkgPSBbKChfZGVjbDBfMTUuZGlzYWJsZWxhYmVsID09PSBmYWxzZSk/IF9kZWNsMF8zNy50cmFuc2Zvcm0oX2RlY2wwXzE1LmxhYmVsU2l6ZXMpOiAnc3Itb25seScpLFxuICAgICAgX2RlY2wwXzM2LnRyYW5zZm9ybShfZGVjbDBfMTUuY29tcG9uZW50SGVpZ2h0KV07XG4gIGN1cnJWYWxfMjtcbiAgY29uc3QgY3VyclZhbF8zOmFueSA9IGkwLsm1aW5saW5lSW50ZXJwb2xhdGUoMSwnJyxfZGVjbDBfMTUubmFtZSwnJyk7XG4gIGN1cnJWYWxfMztcbiAgY29uc3QgY3VyclZhbF80OmFueSA9IF9kZWNsMF8xNS5pc3JlcXVpcmVkO1xuICBjdXJyVmFsXzQ7XG4gIGNvbnN0IGN1cnJWYWxfNTphbnkgPSBfZGVjbDBfMTUuc3BsaXRsYWJlbGFuZGhlbHB0ZXh0O1xuICBjdXJyVmFsXzU7XG4gIGNvbnN0IGN1cnJWYWxfNjphbnkgPSBfZGVjbDBfMTUubGFiZWw7XG4gIGN1cnJWYWxfNjtcbiAgY29uc3QgY3VyclZhbF83OmFueSA9ICgoX2RlY2wwXzE1LmhlbHB0ZXh0bW9kZSA9PT0gJ3Rvb2x0aXAnKSAmJiBfZGVjbDBfMTUuaGVscHRleHQpO1xuICBjdXJyVmFsXzc7XG4gIGNvbnN0IGN1cnJWYWxfODphbnkgPSAnY29sLTEyJztcbiAgY3VyclZhbF84O1xuICBjb25zdCBjdXJyVmFsXzk6YW55ID0gWygoX2RlY2wwXzE1LmRpc2FibGVsYWJlbCA9PT0gZmFsc2UpPyBfZGVjbDBfMzUudHJhbnNmb3JtKF9kZWNsMF8xNS5sYWJlbFNpemVzKTogJycpXTtcbiAgY3VyclZhbF85O1xuICBjb25zdCBjdXJyVmFsXzEwOmFueSA9ICgoKF9kZWNsMF8xNS5oZWxwdGV4dG1vZGUgPT09ICd0b29sdGlwJykgJiYgX2RlY2wwXzE1LmhlbHB0ZXh0KSAmJiBfZGVjbDBfMTUuZGlzYWJsZWxhYmVsKTtcbiAgY3VyclZhbF8xMDtcbiAgY29uc3QgY3VyclZhbF8xMTphbnkgPSAoKChfZGVjbDBfMTUuaGVscHRleHRtb2RlID09PSAndG9vbHRpcCcpICYmIF9kZWNsMF8xNS5oZWxwdGV4dCkgJiYgX2RlY2wwXzE1LmRpc2FibGVsYWJlbCk7XG4gIGN1cnJWYWxfMTE7XG4gIGNvbnN0IGN1cnJWYWxfMTI6YW55ID0gKF9kZWNsMF8xNS5jb21wb25lbnRIZWlnaHQgPT09IF9kZWNsMF8xNS5Db250cm9sSGVpZ2h0LlNtYWxsKTtcbiAgY3VyclZhbF8xMjtcbiAgY29uc3QgY3VyclZhbF8xMzphbnkgPSAoX2RlY2wwXzE1LmNvbXBvbmVudEhlaWdodCA9PT0gX2RlY2wwXzE1LkNvbnRyb2xIZWlnaHQuTGFyZ2UpO1xuICBjdXJyVmFsXzEzO1xuICBjb25zdCBjdXJyVmFsXzE0OmFueSA9ICgoX2RlY2wwXzE1LmlzaW5saW5lZXJyb3JlbmFibGVkICYmIF9kZWNsMF8xNS5pbnZhbGlkKSAmJiAoX2RlY2wwXzE1LmRpcnR5IHx8IF9kZWNsMF8xNS50b3VjaGVkKSk7XG4gIGN1cnJWYWxfMTQ7XG4gIGNvbnN0IGN1cnJWYWxfMTU6YW55ID0gJ2Zvcm0tY29udHJvbCc7XG4gIGN1cnJWYWxfMTU7XG4gIGNvbnN0IGN1cnJWYWxfMTY6YW55ID0gW19kZWNsMF8zNC50cmFuc2Zvcm0oX2RlY2wwXzE1LmNvbXBvbmVudEhlaWdodCldO1xuICBjdXJyVmFsXzE2O1xuICBjb25zdCBjdXJyVmFsXzE3OmFueSA9IGkwLsm1aW5saW5lSW50ZXJwb2xhdGUoMSwnJyxfZGVjbDBfMTUubmFtZSwnJyk7XG4gIGN1cnJWYWxfMTc7XG4gIGNvbnN0IGN1cnJWYWxfMTg6YW55ID0gaTAuybVpbmxpbmVJbnRlcnBvbGF0ZSgxLCcnLF9kZWNsMF8xNS5uYW1lLCcnKTtcbiAgY3VyclZhbF8xODtcbiAgY29uc3QgY3VyclZhbF8xOTphbnkgPSBfZGVjbDBfMTUudmFsdWU7XG4gIGN1cnJWYWxfMTk7XG4gIGNvbnN0IGN1cnJWYWxfMjA6YW55ID0gX2RlY2wwXzE1LnBsYWNlaG9sZGVyO1xuICBjdXJyVmFsXzIwO1xuICBjb25zdCBjdXJyVmFsXzIxOmFueSA9IF9kZWNsMF8xNS5pc2Rpc2FibGVkO1xuICBjdXJyVmFsXzIxO1xuICBjb25zdCBjdXJyVmFsXzIyOmFueSA9IF9kZWNsMF8xNS5yZWFkb25seTtcbiAgY3VyclZhbF8yMjtcbiAgY29uc3QgY3VyclZhbF8yMzphbnkgPSAoX2RlY2wwXzE1LmludmFsaWQgJiYgKF9kZWNsMF8xNS5kaXJ0eSB8fCBfZGVjbDBfMTUudG91Y2hlZCkpO1xuICBjdXJyVmFsXzIzO1xuICBjb25zdCBjdXJyVmFsXzI0OmFueSA9IF9kZWNsMF8xNS5jdXJyZW5jeTtcbiAgY3VyclZhbF8yNDtcbiAgY29uc3QgY3VyclZhbF8yNTphbnkgPSAoKF9kZWNsMF8xNS5pc2lubGluZWVycm9yZW5hYmxlZCAmJiBfZGVjbDBfMTUuaW52YWxpZCkgJiYgKF9kZWNsMF8xNS5kaXJ0eSB8fCBfZGVjbDBfMTUudG91Y2hlZCkpO1xuICBjdXJyVmFsXzI1O1xuICBjb25zdCBjdXJyVmFsXzI2OmFueSA9ICgoX2RlY2wwXzE1LmhlbHB0ZXh0bW9kZSA9PT0gJ3RleHQnKSAmJiBfZGVjbDBfMTUuaGVscHRleHQpO1xuICBjdXJyVmFsXzI2O1xuICBjb25zdCBjdXJyVmFsXzI3OmFueSA9ICgoKF9kZWNsMF8xNS5oZWxwdGV4dG1vZGUgPT09ICd0b29sdGlwJykgJiYgX2RlY2wwXzE1LmhlbHB0ZXh0KSAmJiBfZGVjbDBfMTUuZGlzYWJsZWxhYmVsKTtcbiAgY3VyclZhbF8yNztcbiAgY29uc3QgcGRfMjg6YW55ID0gKCg8YW55Pl9kZWNsMF8xNS5vblRvdWNoKCkpICE9PSBmYWxzZSk7XG4gIGNvbnN0IHBkXzI5OmFueSA9ICgoPGFueT5fZGVjbDBfMTUuc2V0VmFsdWUoX2FueS50YXJnZXQudmFsdWUpKSAhPT0gZmFsc2UpO1xuICBjb25zdCBwZF8zMDphbnkgPSAoKDxhbnk+X2RlY2wwXzE1Lm9uS2V5UHJlc3MoX2FueSkpICE9PSBmYWxzZSk7XG59XG5mdW5jdGlvbiBfVmlld19TYWNJbnB1dERlY2ltYWxDb21wb25lbnRfSG9zdF80XzAoKTp2b2lkIHtcbiAgdmFyIF9hbnk6YW55ID0gKG51bGwgYXMgYW55KTtcbn1cbmZ1bmN0aW9uIF9WaWV3X1NhY0lucHV0RGVjaW1hbENvbXBvbmVudF80XzEoKTp2b2lkIHtcbiAgaWYgKCgoX2RlY2wwXzE2LmhlbHB0ZXh0bW9kZSA9PT0gJ3Rvb2x0aXAnKSAmJiBfZGVjbDBfMTYuaGVscHRleHQpKSB7XG4gICAgdmFyIF9hbnk6YW55ID0gKG51bGwgYXMgYW55KTtcbiAgICBjb25zdCBjdXJyVmFsXzA6YW55ID0gX2RlY2wwXzE2LmhlbHB0ZXh0O1xuICAgIGN1cnJWYWxfMDtcbiAgICBjb25zdCBjdXJyVmFsXzE6YW55ID0gdHJ1ZTtcbiAgICBjdXJyVmFsXzE7XG4gICAgY29uc3QgY3VyclZhbF8yOmFueSA9ICdtbC0xJztcbiAgICBjdXJyVmFsXzI7XG4gICAgY29uc3QgY3VyclZhbF8zOmFueSA9IF9kZWNsMF8xNi5IZWxwdGV4dFRvb2x0aXBJY29uO1xuICAgIGN1cnJWYWxfMztcbiAgfVxufVxuZnVuY3Rpb24gX1ZpZXdfU2FjSW5wdXREZWNpbWFsQ29tcG9uZW50XzRfMigpOnZvaWQge1xuICBpZiAoKChfZGVjbDBfMTYuaGVscHRleHRtb2RlID09PSAndGV4dCcpICYmIF9kZWNsMF8xNi5oZWxwdGV4dCkpIHtcbiAgICB2YXIgX2FueTphbnkgPSAobnVsbCBhcyBhbnkpO1xuICAgIGNvbnN0IGN1cnJWYWxfMDphbnkgPSBfZGVjbDBfMTYuaGVscHRleHQ7XG4gICAgY3VyclZhbF8wO1xuICB9XG59XG5mdW5jdGlvbiBfVmlld19TYWNJbnB1dERlY2ltYWxDb21wb25lbnRfNF8zKCk6dm9pZCB7XG4gIGlmICgoKF9kZWNsMF8xNi5pc2lubGluZWVycm9yZW5hYmxlZCAmJiBfZGVjbDBfMTYuaW52YWxpZCkgJiYgKF9kZWNsMF8xNi5kaXJ0eSB8fCBfZGVjbDBfMTYudG91Y2hlZCkpKSB7XG4gICAgdmFyIF9hbnk6YW55ID0gKG51bGwgYXMgYW55KTtcbiAgICBjb25zdCBjdXJyVmFsXzA6YW55ID0gX2RlY2wwXzIxLnRyYW5zZm9ybShfZGVjbDBfMTYuR2V0RXJyb3JNZXNzYWdlKCkpO1xuICAgIGN1cnJWYWxfMDtcbiAgfVxufVxuZnVuY3Rpb24gX1ZpZXdfU2FjSW5wdXREZWNpbWFsQ29tcG9uZW50XzRfNCgpOnZvaWQge1xuICBpZiAoKCgoX2RlY2wwXzE2LmhlbHB0ZXh0bW9kZSA9PT0gJ3Rvb2x0aXAnKSAmJiBfZGVjbDBfMTYuaGVscHRleHQpICYmIF9kZWNsMF8xNi5kaXNhYmxlbGFiZWwpKSB7XG4gICAgdmFyIF9hbnk6YW55ID0gKG51bGwgYXMgYW55KTtcbiAgICBjb25zdCBjdXJyVmFsXzA6YW55ID0gJ2Zvcm0tY29udHJvbC1wbGFpbnRleHQgYWxpZ24tc2VsZi10b3AgbWwtMiBtci0xIHctYXV0byc7XG4gICAgY3VyclZhbF8wO1xuICAgIGNvbnN0IGN1cnJWYWxfMTphbnkgPSBbX2RlY2wwXzM0LnRyYW5zZm9ybShfZGVjbDBfMTYuY29tcG9uZW50SGVpZ2h0KV07XG4gICAgY3VyclZhbF8xO1xuICAgIGNvbnN0IGN1cnJWYWxfMjphbnkgPSBfZGVjbDBfMTYuaGVscHRleHQ7XG4gICAgY3VyclZhbF8yO1xuICAgIGNvbnN0IGN1cnJWYWxfMzphbnkgPSB0cnVlO1xuICAgIGN1cnJWYWxfMztcbiAgICBjb25zdCBjdXJyVmFsXzQ6YW55ID0gJ21sLTEnO1xuICAgIGN1cnJWYWxfNDtcbiAgICBjb25zdCBjdXJyVmFsXzU6YW55ID0gX2RlY2wwXzE2LkhlbHB0ZXh0VG9vbHRpcEljb247XG4gICAgY3VyclZhbF81O1xuICB9XG59XG5mdW5jdGlvbiBfVmlld19TYWNJbnB1dERlY2ltYWxDb21wb25lbnRfNF8wKCk6dm9pZCB7XG4gIHZhciBfYW55OmFueSA9IChudWxsIGFzIGFueSk7XG4gIGNvbnN0IGN1cnJWYWxfMDphbnkgPSBfZGVjbDBfMTYuZGlzYWJsZWxhYmVsO1xuICBjdXJyVmFsXzA7XG4gIGNvbnN0IGN1cnJWYWxfMTphbnkgPSAnY29sLTEyIGNvbC1mb3JtLWxhYmVsIGQtZmxleCc7XG4gIGN1cnJWYWxfMTtcbiAgY29uc3QgY3VyclZhbF8yOmFueSA9IFsoKF9kZWNsMF8xNi5kaXNhYmxlbGFiZWwgPT09IGZhbHNlKT8gX2RlY2wwXzM3LnRyYW5zZm9ybShfZGVjbDBfMTYubGFiZWxTaXplcyk6ICdzci1vbmx5JyksXG4gICAgICBfZGVjbDBfMzYudHJhbnNmb3JtKF9kZWNsMF8xNi5jb21wb25lbnRIZWlnaHQpXTtcbiAgY3VyclZhbF8yO1xuICBjb25zdCBjdXJyVmFsXzM6YW55ID0gaTAuybVpbmxpbmVJbnRlcnBvbGF0ZSgxLCcnLF9kZWNsMF8xNi5uYW1lLCcnKTtcbiAgY3VyclZhbF8zO1xuICBjb25zdCBjdXJyVmFsXzQ6YW55ID0gX2RlY2wwXzE2LmlzcmVxdWlyZWQ7XG4gIGN1cnJWYWxfNDtcbiAgY29uc3QgY3VyclZhbF81OmFueSA9IF9kZWNsMF8xNi5zcGxpdGxhYmVsYW5kaGVscHRleHQ7XG4gIGN1cnJWYWxfNTtcbiAgY29uc3QgY3VyclZhbF82OmFueSA9IF9kZWNsMF8xNi5sYWJlbDtcbiAgY3VyclZhbF82O1xuICBjb25zdCBjdXJyVmFsXzc6YW55ID0gKChfZGVjbDBfMTYuaGVscHRleHRtb2RlID09PSAndG9vbHRpcCcpICYmIF9kZWNsMF8xNi5oZWxwdGV4dCk7XG4gIGN1cnJWYWxfNztcbiAgY29uc3QgY3VyclZhbF84OmFueSA9ICdjb2wtMTInO1xuICBjdXJyVmFsXzg7XG4gIGNvbnN0IGN1cnJWYWxfOTphbnkgPSBbKChfZGVjbDBfMTYuZGlzYWJsZWxhYmVsID09PSBmYWxzZSk/IF9kZWNsMF8zNS50cmFuc2Zvcm0oX2RlY2wwXzE2LmxhYmVsU2l6ZXMpOiAnJyldO1xuICBjdXJyVmFsXzk7XG4gIGNvbnN0IGN1cnJWYWxfMTA6YW55ID0gKCgoX2RlY2wwXzE2LmhlbHB0ZXh0bW9kZSA9PT0gJ3Rvb2x0aXAnKSAmJiBfZGVjbDBfMTYuaGVscHRleHQpICYmIF9kZWNsMF8xNi5kaXNhYmxlbGFiZWwpO1xuICBjdXJyVmFsXzEwO1xuICBjb25zdCBjdXJyVmFsXzExOmFueSA9ICgoKF9kZWNsMF8xNi5oZWxwdGV4dG1vZGUgPT09ICd0b29sdGlwJykgJiYgX2RlY2wwXzE2LmhlbHB0ZXh0KSAmJiBfZGVjbDBfMTYuZGlzYWJsZWxhYmVsKTtcbiAgY3VyclZhbF8xMTtcbiAgY29uc3QgY3VyclZhbF8xMjphbnkgPSAnZm9ybS1jb250cm9sJztcbiAgY3VyclZhbF8xMjtcbiAgY29uc3QgY3VyclZhbF8xMzphbnkgPSBbX2RlY2wwXzM0LnRyYW5zZm9ybShfZGVjbDBfMTYuY29tcG9uZW50SGVpZ2h0KV07XG4gIGN1cnJWYWxfMTM7XG4gIGNvbnN0IGN1cnJWYWxfMTQ6YW55ID0gaTAuybVpbmxpbmVJbnRlcnBvbGF0ZSgxLCcnLF9kZWNsMF8xNi5uYW1lLCcnKTtcbiAgY3VyclZhbF8xNDtcbiAgY29uc3QgY3VyclZhbF8xNTphbnkgPSBpMC7JtWlubGluZUludGVycG9sYXRlKDEsJycsX2RlY2wwXzE2Lm5hbWUsJycpO1xuICBjdXJyVmFsXzE1O1xuICBjb25zdCBjdXJyVmFsXzE2OmFueSA9IF9kZWNsMF8xNi52YWx1ZTtcbiAgY3VyclZhbF8xNjtcbiAgY29uc3QgY3VyclZhbF8xNzphbnkgPSBfZGVjbDBfMTYucGxhY2Vob2xkZXI7XG4gIGN1cnJWYWxfMTc7XG4gIGNvbnN0IGN1cnJWYWxfMTg6YW55ID0gX2RlY2wwXzE2LnJlYWRvbmx5O1xuICBjdXJyVmFsXzE4O1xuICBjb25zdCBjdXJyVmFsXzE5OmFueSA9IF9kZWNsMF8xNi5pc2Rpc2FibGVkO1xuICBjdXJyVmFsXzE5O1xuICBjb25zdCBjdXJyVmFsXzIwOmFueSA9IChfZGVjbDBfMTYuaW52YWxpZCAmJiAoX2RlY2wwXzE2LmRpcnR5IHx8IF9kZWNsMF8xNi50b3VjaGVkKSk7XG4gIGN1cnJWYWxfMjA7XG4gIGNvbnN0IGN1cnJWYWxfMjE6YW55ID0gKChfZGVjbDBfMTYuaGVscHRleHRtb2RlID09PSAndGV4dCcpICYmIF9kZWNsMF8xNi5oZWxwdGV4dCk7XG4gIGN1cnJWYWxfMjE7XG4gIGNvbnN0IGN1cnJWYWxfMjI6YW55ID0gKChfZGVjbDBfMTYuaXNpbmxpbmVlcnJvcmVuYWJsZWQgJiYgX2RlY2wwXzE2LmludmFsaWQpICYmIChfZGVjbDBfMTYuZGlydHkgfHwgX2RlY2wwXzE2LnRvdWNoZWQpKTtcbiAgY3VyclZhbF8yMjtcbiAgY29uc3QgY3VyclZhbF8yMzphbnkgPSAoKChfZGVjbDBfMTYuaGVscHRleHRtb2RlID09PSAndG9vbHRpcCcpICYmIF9kZWNsMF8xNi5oZWxwdGV4dCkgJiYgX2RlY2wwXzE2LmRpc2FibGVsYWJlbCk7XG4gIGN1cnJWYWxfMjM7XG4gIGNvbnN0IHBkXzI0OmFueSA9ICgoPGFueT5fZGVjbDBfMTYub25Ub3VjaCgpKSAhPT0gZmFsc2UpO1xuICBjb25zdCBwZF8yNTphbnkgPSAoKDxhbnk+X2RlY2wwXzE2LnNldFZhbHVlKF9hbnkudGFyZ2V0LnZhbHVlKSkgIT09IGZhbHNlKTtcbiAgY29uc3QgcGRfMjY6YW55ID0gKCg8YW55Pl9kZWNsMF8xNi5vbktleVByZXNzKF9hbnkpKSAhPT0gZmFsc2UpO1xufVxuZnVuY3Rpb24gX1ZpZXdfU2FjSW5wdXRFbWFpbENvbXBvbmVudF9Ib3N0XzVfMCgpOnZvaWQge1xuICB2YXIgX2FueTphbnkgPSAobnVsbCBhcyBhbnkpO1xufVxuZnVuY3Rpb24gX1ZpZXdfU2FjSW5wdXRFbWFpbENvbXBvbmVudF81XzEoKTp2b2lkIHtcbiAgaWYgKCgoX2RlY2wwXzE3LmhlbHB0ZXh0bW9kZSA9PT0gJ3Rvb2x0aXAnKSAmJiBfZGVjbDBfMTcuaGVscHRleHQpKSB7XG4gICAgdmFyIF9hbnk6YW55ID0gKG51bGwgYXMgYW55KTtcbiAgICBjb25zdCBjdXJyVmFsXzA6YW55ID0gX2RlY2wwXzE3LmhlbHB0ZXh0O1xuICAgIGN1cnJWYWxfMDtcbiAgICBjb25zdCBjdXJyVmFsXzE6YW55ID0gdHJ1ZTtcbiAgICBjdXJyVmFsXzE7XG4gICAgY29uc3QgY3VyclZhbF8yOmFueSA9ICdtbC0xJztcbiAgICBjdXJyVmFsXzI7XG4gICAgY29uc3QgY3VyclZhbF8zOmFueSA9IF9kZWNsMF8xNy5IZWxwdGV4dFRvb2x0aXBJY29uO1xuICAgIGN1cnJWYWxfMztcbiAgfVxufVxuZnVuY3Rpb24gX1ZpZXdfU2FjSW5wdXRFbWFpbENvbXBvbmVudF81XzIoKTp2b2lkIHtcbiAgaWYgKCgoX2RlY2wwXzE3LmlzaW5saW5lZXJyb3JlbmFibGVkICYmIF9kZWNsMF8xNy5pbnZhbGlkKSAmJiAoX2RlY2wwXzE3LmRpcnR5IHx8IF9kZWNsMF8xNy50b3VjaGVkKSkpIHtcbiAgICB2YXIgX2FueTphbnkgPSAobnVsbCBhcyBhbnkpO1xuICAgIGNvbnN0IGN1cnJWYWxfMDphbnkgPSBfZGVjbDBfMjEudHJhbnNmb3JtKF9kZWNsMF8xNy5HZXRFcnJvck1lc3NhZ2UoKSk7XG4gICAgY3VyclZhbF8wO1xuICB9XG59XG5mdW5jdGlvbiBfVmlld19TYWNJbnB1dEVtYWlsQ29tcG9uZW50XzVfMygpOnZvaWQge1xuICBpZiAoKChfZGVjbDBfMTcuaGVscHRleHRtb2RlID09PSAndGV4dCcpICYmIF9kZWNsMF8xNy5oZWxwdGV4dCkpIHtcbiAgICB2YXIgX2FueTphbnkgPSAobnVsbCBhcyBhbnkpO1xuICAgIGNvbnN0IGN1cnJWYWxfMDphbnkgPSBfZGVjbDBfMTcuaGVscHRleHQ7XG4gICAgY3VyclZhbF8wO1xuICB9XG59XG5mdW5jdGlvbiBfVmlld19TYWNJbnB1dEVtYWlsQ29tcG9uZW50XzVfNCgpOnZvaWQge1xuICBpZiAoKCgoX2RlY2wwXzE3LmhlbHB0ZXh0bW9kZSA9PT0gJ3Rvb2x0aXAnKSAmJiBfZGVjbDBfMTcuaGVscHRleHQpICYmIF9kZWNsMF8xNy5kaXNhYmxlbGFiZWwpKSB7XG4gICAgdmFyIF9hbnk6YW55ID0gKG51bGwgYXMgYW55KTtcbiAgICBjb25zdCBjdXJyVmFsXzA6YW55ID0gJ2Zvcm0tY29udHJvbC1wbGFpbnRleHQgYWxpZ24tc2VsZi10b3AgbWwtMiBtci0xIHctYXV0byc7XG4gICAgY3VyclZhbF8wO1xuICAgIGNvbnN0IGN1cnJWYWxfMTphbnkgPSBbX2RlY2wwXzM0LnRyYW5zZm9ybShfZGVjbDBfMTcuY29tcG9uZW50SGVpZ2h0KV07XG4gICAgY3VyclZhbF8xO1xuICAgIGNvbnN0IGN1cnJWYWxfMjphbnkgPSBfZGVjbDBfMTcuaGVscHRleHQ7XG4gICAgY3VyclZhbF8yO1xuICAgIGNvbnN0IGN1cnJWYWxfMzphbnkgPSB0cnVlO1xuICAgIGN1cnJWYWxfMztcbiAgICBjb25zdCBjdXJyVmFsXzQ6YW55ID0gJ21sLTEnO1xuICAgIGN1cnJWYWxfNDtcbiAgICBjb25zdCBjdXJyVmFsXzU6YW55ID0gX2RlY2wwXzE3LkhlbHB0ZXh0VG9vbHRpcEljb247XG4gICAgY3VyclZhbF81O1xuICB9XG59XG5mdW5jdGlvbiBfVmlld19TYWNJbnB1dEVtYWlsQ29tcG9uZW50XzVfMCgpOnZvaWQge1xuICB2YXIgX2FueTphbnkgPSAobnVsbCBhcyBhbnkpO1xuICBjb25zdCBjdXJyVmFsXzA6YW55ID0gJ2NvbC0xMiBjb2wtZm9ybS1sYWJlbCBkLWZsZXgnO1xuICBjdXJyVmFsXzA7XG4gIGNvbnN0IGN1cnJWYWxfMTphbnkgPSBbKChfZGVjbDBfMTcuZGlzYWJsZWxhYmVsID09PSBmYWxzZSk/IF9kZWNsMF8zNy50cmFuc2Zvcm0oX2RlY2wwXzE3LmxhYmVsU2l6ZXMpOiAnc3Itb25seScpLFxuICAgICAgX2RlY2wwXzM2LnRyYW5zZm9ybShfZGVjbDBfMTcuY29tcG9uZW50SGVpZ2h0KV07XG4gIGN1cnJWYWxfMTtcbiAgY29uc3QgY3VyclZhbF8yOmFueSA9IGkwLsm1aW5saW5lSW50ZXJwb2xhdGUoMSwnJyxfZGVjbDBfMTcubmFtZSwnJyk7XG4gIGN1cnJWYWxfMjtcbiAgY29uc3QgY3VyclZhbF8zOmFueSA9IF9kZWNsMF8xNy5pc3JlcXVpcmVkO1xuICBjdXJyVmFsXzM7XG4gIGNvbnN0IGN1cnJWYWxfNDphbnkgPSBfZGVjbDBfMTcuc3BsaXRsYWJlbGFuZGhlbHB0ZXh0O1xuICBjdXJyVmFsXzQ7XG4gIGNvbnN0IGN1cnJWYWxfNTphbnkgPSBfZGVjbDBfMTcubGFiZWw7XG4gIGN1cnJWYWxfNTtcbiAgY29uc3QgY3VyclZhbF82OmFueSA9ICgoX2RlY2wwXzE3LmhlbHB0ZXh0bW9kZSA9PT0gJ3Rvb2x0aXAnKSAmJiBfZGVjbDBfMTcuaGVscHRleHQpO1xuICBjdXJyVmFsXzY7XG4gIGNvbnN0IGN1cnJWYWxfNzphbnkgPSAnY29sLTEyJztcbiAgY3VyclZhbF83O1xuICBjb25zdCBjdXJyVmFsXzg6YW55ID0gWygoX2RlY2wwXzE3LmRpc2FibGVsYWJlbCA9PT0gZmFsc2UpPyBfZGVjbDBfMzUudHJhbnNmb3JtKF9kZWNsMF8xNy5sYWJlbFNpemVzKTogJycpXTtcbiAgY3VyclZhbF84O1xuICBjb25zdCBjdXJyVmFsXzk6YW55ID0gKCgoX2RlY2wwXzE3LmhlbHB0ZXh0bW9kZSA9PT0gJ3Rvb2x0aXAnKSAmJiBfZGVjbDBfMTcuaGVscHRleHQpICYmIF9kZWNsMF8xNy5kaXNhYmxlbGFiZWwpO1xuICBjdXJyVmFsXzk7XG4gIGNvbnN0IGN1cnJWYWxfMTA6YW55ID0gKCgoX2RlY2wwXzE3LmhlbHB0ZXh0bW9kZSA9PT0gJ3Rvb2x0aXAnKSAmJiBfZGVjbDBfMTcuaGVscHRleHQpICYmIF9kZWNsMF8xNy5kaXNhYmxlbGFiZWwpO1xuICBjdXJyVmFsXzEwO1xuICBjb25zdCBjdXJyVmFsXzExOmFueSA9IChfZGVjbDBfMTcuY29tcG9uZW50SGVpZ2h0ID09PSBfZGVjbDBfMTcuQ29udHJvbEhlaWdodC5TbWFsbCk7XG4gIGN1cnJWYWxfMTE7XG4gIGNvbnN0IGN1cnJWYWxfMTI6YW55ID0gKF9kZWNsMF8xNy5jb21wb25lbnRIZWlnaHQgPT09IF9kZWNsMF8xNy5Db250cm9sSGVpZ2h0LkxhcmdlKTtcbiAgY3VyclZhbF8xMjtcbiAgY29uc3QgY3VyclZhbF8xMzphbnkgPSAoKF9kZWNsMF8xNy5pc2lubGluZWVycm9yZW5hYmxlZCAmJiBfZGVjbDBfMTcuaW52YWxpZCkgJiYgKF9kZWNsMF8xNy5kaXJ0eSB8fCBfZGVjbDBfMTcudG91Y2hlZCkpO1xuICBjdXJyVmFsXzEzO1xuICBjb25zdCBjdXJyVmFsXzE0OmFueSA9ICdmb3JtLWNvbnRyb2wnO1xuICBjdXJyVmFsXzE0O1xuICBjb25zdCBjdXJyVmFsXzE1OmFueSA9IFtfZGVjbDBfMzQudHJhbnNmb3JtKF9kZWNsMF8xNy5jb21wb25lbnRIZWlnaHQpXTtcbiAgY3VyclZhbF8xNTtcbiAgY29uc3QgY3VyclZhbF8xNjphbnkgPSBpMC7JtWlubGluZUludGVycG9sYXRlKDEsJycsX2RlY2wwXzE3Lm5hbWUsJycpO1xuICBjdXJyVmFsXzE2O1xuICBjb25zdCBjdXJyVmFsXzE3OmFueSA9IGkwLsm1aW5saW5lSW50ZXJwb2xhdGUoMSwnJyxfZGVjbDBfMTcubmFtZSwnJyk7XG4gIGN1cnJWYWxfMTc7XG4gIGNvbnN0IGN1cnJWYWxfMTg6YW55ID0gX2RlY2wwXzE3LnZhbHVlO1xuICBjdXJyVmFsXzE4O1xuICBjb25zdCBjdXJyVmFsXzE5OmFueSA9IF9kZWNsMF8xNy5wbGFjZWhvbGRlcjtcbiAgY3VyclZhbF8xOTtcbiAgY29uc3QgY3VyclZhbF8yMDphbnkgPSBfZGVjbDBfMTcubWF4bGVuZ3RoO1xuICBjdXJyVmFsXzIwO1xuICBjb25zdCBjdXJyVmFsXzIxOmFueSA9IChfZGVjbDBfMTcuaW52YWxpZCAmJiAoX2RlY2wwXzE3LmRpcnR5IHx8IF9kZWNsMF8xNy50b3VjaGVkKSk7XG4gIGN1cnJWYWxfMjE7XG4gIGNvbnN0IGN1cnJWYWxfMjI6YW55ID0gX2RlY2wwXzE3LmlzZGlzYWJsZWQ7XG4gIGN1cnJWYWxfMjI7XG4gIGNvbnN0IGN1cnJWYWxfMjM6YW55ID0gX2RlY2wwXzE3LnJlYWRvbmx5O1xuICBjdXJyVmFsXzIzO1xuICBjb25zdCBjdXJyVmFsXzI0OmFueSA9ICgoX2RlY2wwXzE3LmlzaW5saW5lZXJyb3JlbmFibGVkICYmIF9kZWNsMF8xNy5pbnZhbGlkKSAmJiAoX2RlY2wwXzE3LmRpcnR5IHx8IF9kZWNsMF8xNy50b3VjaGVkKSk7XG4gIGN1cnJWYWxfMjQ7XG4gIGNvbnN0IGN1cnJWYWxfMjU6YW55ID0gKChfZGVjbDBfMTcuaGVscHRleHRtb2RlID09PSAndGV4dCcpICYmIF9kZWNsMF8xNy5oZWxwdGV4dCk7XG4gIGN1cnJWYWxfMjU7XG4gIGNvbnN0IGN1cnJWYWxfMjY6YW55ID0gKCgoX2RlY2wwXzE3LmhlbHB0ZXh0bW9kZSA9PT0gJ3Rvb2x0aXAnKSAmJiBfZGVjbDBfMTcuaGVscHRleHQpICYmIF9kZWNsMF8xNy5kaXNhYmxlbGFiZWwpO1xuICBjdXJyVmFsXzI2O1xuICBjb25zdCBwZF8yNzphbnkgPSAoKDxhbnk+X2RlY2wwXzE3Lm9uVG91Y2goKSkgIT09IGZhbHNlKTtcbiAgY29uc3QgcGRfMjg6YW55ID0gKCg8YW55Pl9kZWNsMF8xNy5zZXRWYWx1ZShfYW55LnRhcmdldC52YWx1ZSkpICE9PSBmYWxzZSk7XG59XG5mdW5jdGlvbiBfVmlld19TYWNJbnB1dEludGVnZXJDb21wb25lbnRfSG9zdF82XzAoKTp2b2lkIHtcbiAgdmFyIF9hbnk6YW55ID0gKG51bGwgYXMgYW55KTtcbn1cbmZ1bmN0aW9uIF9WaWV3X1NhY0lucHV0SW50ZWdlckNvbXBvbmVudF82XzEoKTp2b2lkIHtcbiAgaWYgKCgoX2RlY2wwXzE4LmhlbHB0ZXh0bW9kZSA9PT0gJ3Rvb2x0aXAnKSAmJiBfZGVjbDBfMTguaGVscHRleHQpKSB7XG4gICAgdmFyIF9hbnk6YW55ID0gKG51bGwgYXMgYW55KTtcbiAgICBjb25zdCBjdXJyVmFsXzA6YW55ID0gX2RlY2wwXzE4LmhlbHB0ZXh0O1xuICAgIGN1cnJWYWxfMDtcbiAgICBjb25zdCBjdXJyVmFsXzE6YW55ID0gdHJ1ZTtcbiAgICBjdXJyVmFsXzE7XG4gICAgY29uc3QgY3VyclZhbF8yOmFueSA9ICdtbC0xJztcbiAgICBjdXJyVmFsXzI7XG4gICAgY29uc3QgY3VyclZhbF8zOmFueSA9IF9kZWNsMF8xOC5IZWxwdGV4dFRvb2x0aXBJY29uO1xuICAgIGN1cnJWYWxfMztcbiAgfVxufVxuZnVuY3Rpb24gX1ZpZXdfU2FjSW5wdXRJbnRlZ2VyQ29tcG9uZW50XzZfMigpOnZvaWQge1xuICBpZiAoKChfZGVjbDBfMTguaGVscHRleHRtb2RlID09PSAndGV4dCcpICYmIF9kZWNsMF8xOC5oZWxwdGV4dCkpIHtcbiAgICB2YXIgX2FueTphbnkgPSAobnVsbCBhcyBhbnkpO1xuICAgIGNvbnN0IGN1cnJWYWxfMDphbnkgPSBfZGVjbDBfMTguaGVscHRleHQ7XG4gICAgY3VyclZhbF8wO1xuICB9XG59XG5mdW5jdGlvbiBfVmlld19TYWNJbnB1dEludGVnZXJDb21wb25lbnRfNl8zKCk6dm9pZCB7XG4gIGlmICgoKF9kZWNsMF8xOC5pc2lubGluZWVycm9yZW5hYmxlZCAmJiBfZGVjbDBfMTguaW52YWxpZCkgJiYgKF9kZWNsMF8xOC5kaXJ0eSB8fCBfZGVjbDBfMTgudG91Y2hlZCkpKSB7XG4gICAgdmFyIF9hbnk6YW55ID0gKG51bGwgYXMgYW55KTtcbiAgICBjb25zdCBjdXJyVmFsXzA6YW55ID0gX2RlY2wwXzIxLnRyYW5zZm9ybShfZGVjbDBfMTguR2V0RXJyb3JNZXNzYWdlKCkpO1xuICAgIGN1cnJWYWxfMDtcbiAgfVxufVxuZnVuY3Rpb24gX1ZpZXdfU2FjSW5wdXRJbnRlZ2VyQ29tcG9uZW50XzZfNCgpOnZvaWQge1xuICBpZiAoKCgoX2RlY2wwXzE4LmhlbHB0ZXh0bW9kZSA9PT0gJ3Rvb2x0aXAnKSAmJiBfZGVjbDBfMTguaGVscHRleHQpICYmIF9kZWNsMF8xOC5kaXNhYmxlbGFiZWwpKSB7XG4gICAgdmFyIF9hbnk6YW55ID0gKG51bGwgYXMgYW55KTtcbiAgICBjb25zdCBjdXJyVmFsXzA6YW55ID0gJ2Zvcm0tY29udHJvbC1wbGFpbnRleHQgYWxpZ24tc2VsZi10b3AgbWwtMiBtci0xIHctYXV0byc7XG4gICAgY3VyclZhbF8wO1xuICAgIGNvbnN0IGN1cnJWYWxfMTphbnkgPSBbX2RlY2wwXzM0LnRyYW5zZm9ybShfZGVjbDBfMTguY29tcG9uZW50SGVpZ2h0KV07XG4gICAgY3VyclZhbF8xO1xuICAgIGNvbnN0IGN1cnJWYWxfMjphbnkgPSBfZGVjbDBfMTguaGVscHRleHQ7XG4gICAgY3VyclZhbF8yO1xuICAgIGNvbnN0IGN1cnJWYWxfMzphbnkgPSB0cnVlO1xuICAgIGN1cnJWYWxfMztcbiAgICBjb25zdCBjdXJyVmFsXzQ6YW55ID0gJ21sLTEnO1xuICAgIGN1cnJWYWxfNDtcbiAgICBjb25zdCBjdXJyVmFsXzU6YW55ID0gX2RlY2wwXzE4LkhlbHB0ZXh0VG9vbHRpcEljb247XG4gICAgY3VyclZhbF81O1xuICB9XG59XG5mdW5jdGlvbiBfVmlld19TYWNJbnB1dEludGVnZXJDb21wb25lbnRfNl8wKCk6dm9pZCB7XG4gIHZhciBfYW55OmFueSA9IChudWxsIGFzIGFueSk7XG4gIGNvbnN0IGN1cnJWYWxfMDphbnkgPSAnY29sLTEyIGNvbC1mb3JtLWxhYmVsIGQtZmxleCc7XG4gIGN1cnJWYWxfMDtcbiAgY29uc3QgY3VyclZhbF8xOmFueSA9IFsoKF9kZWNsMF8xOC5kaXNhYmxlbGFiZWwgPT09IGZhbHNlKT8gX2RlY2wwXzM3LnRyYW5zZm9ybShfZGVjbDBfMTgubGFiZWxTaXplcyk6ICdzci1vbmx5JyksXG4gICAgICBfZGVjbDBfMzYudHJhbnNmb3JtKF9kZWNsMF8xOC5jb21wb25lbnRIZWlnaHQpXTtcbiAgY3VyclZhbF8xO1xuICBjb25zdCBjdXJyVmFsXzI6YW55ID0gaTAuybVpbmxpbmVJbnRlcnBvbGF0ZSgxLCcnLF9kZWNsMF8xOC5uYW1lLCcnKTtcbiAgY3VyclZhbF8yO1xuICBjb25zdCBjdXJyVmFsXzM6YW55ID0gX2RlY2wwXzE4LmlzcmVxdWlyZWQ7XG4gIGN1cnJWYWxfMztcbiAgY29uc3QgY3VyclZhbF80OmFueSA9IF9kZWNsMF8xOC5zcGxpdGxhYmVsYW5kaGVscHRleHQ7XG4gIGN1cnJWYWxfNDtcbiAgY29uc3QgY3VyclZhbF81OmFueSA9IF9kZWNsMF8xOC5sYWJlbDtcbiAgY3VyclZhbF81O1xuICBjb25zdCBjdXJyVmFsXzY6YW55ID0gKChfZGVjbDBfMTguaGVscHRleHRtb2RlID09PSAndG9vbHRpcCcpICYmIF9kZWNsMF8xOC5oZWxwdGV4dCk7XG4gIGN1cnJWYWxfNjtcbiAgY29uc3QgY3VyclZhbF83OmFueSA9ICdjb2wtMTInO1xuICBjdXJyVmFsXzc7XG4gIGNvbnN0IGN1cnJWYWxfODphbnkgPSBbKChfZGVjbDBfMTguZGlzYWJsZWxhYmVsID09PSBmYWxzZSk/IF9kZWNsMF8zNS50cmFuc2Zvcm0oX2RlY2wwXzE4LmxhYmVsU2l6ZXMpOiAnJyldO1xuICBjdXJyVmFsXzg7XG4gIGNvbnN0IGN1cnJWYWxfOTphbnkgPSAoKChfZGVjbDBfMTguaGVscHRleHRtb2RlID09PSAndG9vbHRpcCcpICYmIF9kZWNsMF8xOC5oZWxwdGV4dCkgJiYgX2RlY2wwXzE4LmRpc2FibGVsYWJlbCk7XG4gIGN1cnJWYWxfOTtcbiAgY29uc3QgY3VyclZhbF8xMDphbnkgPSAoKChfZGVjbDBfMTguaGVscHRleHRtb2RlID09PSAndG9vbHRpcCcpICYmIF9kZWNsMF8xOC5oZWxwdGV4dCkgJiYgX2RlY2wwXzE4LmRpc2FibGVsYWJlbCk7XG4gIGN1cnJWYWxfMTA7XG4gIGNvbnN0IGN1cnJWYWxfMTE6YW55ID0gJ2Zvcm0tY29udHJvbCc7XG4gIGN1cnJWYWxfMTE7XG4gIGNvbnN0IGN1cnJWYWxfMTI6YW55ID0gW19kZWNsMF8zNC50cmFuc2Zvcm0oX2RlY2wwXzE4LmNvbXBvbmVudEhlaWdodCldO1xuICBjdXJyVmFsXzEyO1xuICBjb25zdCBjdXJyVmFsXzEzOmFueSA9IGkwLsm1aW5saW5lSW50ZXJwb2xhdGUoMSwnJyxfZGVjbDBfMTgubmFtZSwnJyk7XG4gIGN1cnJWYWxfMTM7XG4gIGNvbnN0IGN1cnJWYWxfMTQ6YW55ID0gaTAuybVpbmxpbmVJbnRlcnBvbGF0ZSgxLCcnLF9kZWNsMF8xOC5uYW1lLCcnKTtcbiAgY3VyclZhbF8xNDtcbiAgY29uc3QgY3VyclZhbF8xNTphbnkgPSBfZGVjbDBfMTgudmFsdWU7XG4gIGN1cnJWYWxfMTU7XG4gIGNvbnN0IGN1cnJWYWxfMTY6YW55ID0gX2RlY2wwXzE4LnBsYWNlaG9sZGVyO1xuICBjdXJyVmFsXzE2O1xuICBjb25zdCBjdXJyVmFsXzE3OmFueSA9IF9kZWNsMF8xOC5pc2Rpc2FibGVkO1xuICBjdXJyVmFsXzE3O1xuICBjb25zdCBjdXJyVmFsXzE4OmFueSA9IF9kZWNsMF8xOC5yZWFkb25seTtcbiAgY3VyclZhbF8xODtcbiAgY29uc3QgY3VyclZhbF8xOTphbnkgPSAoX2RlY2wwXzE4LmludmFsaWQgJiYgKF9kZWNsMF8xOC5kaXJ0eSB8fCBfZGVjbDBfMTgudG91Y2hlZCkpO1xuICBjdXJyVmFsXzE5O1xuICBjb25zdCBjdXJyVmFsXzIwOmFueSA9ICgoX2RlY2wwXzE4LmhlbHB0ZXh0bW9kZSA9PT0gJ3RleHQnKSAmJiBfZGVjbDBfMTguaGVscHRleHQpO1xuICBjdXJyVmFsXzIwO1xuICBjb25zdCBjdXJyVmFsXzIxOmFueSA9ICgoX2RlY2wwXzE4LmlzaW5saW5lZXJyb3JlbmFibGVkICYmIF9kZWNsMF8xOC5pbnZhbGlkKSAmJiAoX2RlY2wwXzE4LmRpcnR5IHx8IF9kZWNsMF8xOC50b3VjaGVkKSk7XG4gIGN1cnJWYWxfMjE7XG4gIGNvbnN0IGN1cnJWYWxfMjI6YW55ID0gKCgoX2RlY2wwXzE4LmhlbHB0ZXh0bW9kZSA9PT0gJ3Rvb2x0aXAnKSAmJiBfZGVjbDBfMTguaGVscHRleHQpICYmIF9kZWNsMF8xOC5kaXNhYmxlbGFiZWwpO1xuICBjdXJyVmFsXzIyO1xuICBjb25zdCBwZF8yMzphbnkgPSAoKDxhbnk+X2RlY2wwXzE4Lm9uVG91Y2goKSkgIT09IGZhbHNlKTtcbiAgY29uc3QgcGRfMjQ6YW55ID0gKCg8YW55Pl9kZWNsMF8xOC5zZXRWYWx1ZShfYW55LnRhcmdldC52YWx1ZSkpICE9PSBmYWxzZSk7XG4gIGNvbnN0IHBkXzI1OmFueSA9ICgoPGFueT5fZGVjbDBfMTgub25LZXlQcmVzcyhfYW55KSkgIT09IGZhbHNlKTtcbn1cbmZ1bmN0aW9uIF9WaWV3X1NhY0lucHV0UGFzc3dvcmRDb21wb25lbnRfSG9zdF83XzAoKTp2b2lkIHtcbiAgdmFyIF9hbnk6YW55ID0gKG51bGwgYXMgYW55KTtcbn1cbmZ1bmN0aW9uIF9WaWV3X1NhY0lucHV0UGFzc3dvcmRDb21wb25lbnRfN18xKCk6dm9pZCB7XG4gIGlmICgoKF9kZWNsMF8xOS5oZWxwdGV4dG1vZGUgPT09ICd0b29sdGlwJykgJiYgX2RlY2wwXzE5LmhlbHB0ZXh0KSkge1xuICAgIHZhciBfYW55OmFueSA9IChudWxsIGFzIGFueSk7XG4gICAgY29uc3QgY3VyclZhbF8wOmFueSA9IF9kZWNsMF8xOS5oZWxwdGV4dDtcbiAgICBjdXJyVmFsXzA7XG4gICAgY29uc3QgY3VyclZhbF8xOmFueSA9IHRydWU7XG4gICAgY3VyclZhbF8xO1xuICAgIGNvbnN0IGN1cnJWYWxfMjphbnkgPSAnbWwtMSc7XG4gICAgY3VyclZhbF8yO1xuICAgIGNvbnN0IGN1cnJWYWxfMzphbnkgPSBfZGVjbDBfMTkuSGVscHRleHRUb29sdGlwSWNvbjtcbiAgICBjdXJyVmFsXzM7XG4gIH1cbn1cbmZ1bmN0aW9uIF9WaWV3X1NhY0lucHV0UGFzc3dvcmRDb21wb25lbnRfN18yKCk6dm9pZCB7XG4gIGlmICgoKF9kZWNsMF8xOS5oZWxwdGV4dG1vZGUgPT09ICd0ZXh0JykgJiYgX2RlY2wwXzE5LmhlbHB0ZXh0KSkge1xuICAgIHZhciBfYW55OmFueSA9IChudWxsIGFzIGFueSk7XG4gICAgY29uc3QgY3VyclZhbF8wOmFueSA9IF9kZWNsMF8xOS5oZWxwdGV4dDtcbiAgICBjdXJyVmFsXzA7XG4gIH1cbn1cbmZ1bmN0aW9uIF9WaWV3X1NhY0lucHV0UGFzc3dvcmRDb21wb25lbnRfN18zKCk6dm9pZCB7XG4gIGlmICgoKF9kZWNsMF8xOS5pc2lubGluZWVycm9yZW5hYmxlZCAmJiBfZGVjbDBfMTkuaW52YWxpZCkgJiYgKF9kZWNsMF8xOS5kaXJ0eSB8fCBfZGVjbDBfMTkudG91Y2hlZCkpKSB7XG4gICAgdmFyIF9hbnk6YW55ID0gKG51bGwgYXMgYW55KTtcbiAgICBjb25zdCBjdXJyVmFsXzA6YW55ID0gX2RlY2wwXzIxLnRyYW5zZm9ybShfZGVjbDBfMTkuR2V0RXJyb3JNZXNzYWdlKCkpO1xuICAgIGN1cnJWYWxfMDtcbiAgfVxufVxuZnVuY3Rpb24gX1ZpZXdfU2FjSW5wdXRQYXNzd29yZENvbXBvbmVudF83XzQoKTp2b2lkIHtcbiAgaWYgKCgoKF9kZWNsMF8xOS5oZWxwdGV4dG1vZGUgPT09ICd0b29sdGlwJykgJiYgX2RlY2wwXzE5LmhlbHB0ZXh0KSAmJiBfZGVjbDBfMTkuZGlzYWJsZWxhYmVsKSkge1xuICAgIHZhciBfYW55OmFueSA9IChudWxsIGFzIGFueSk7XG4gICAgY29uc3QgY3VyclZhbF8wOmFueSA9ICdmb3JtLWNvbnRyb2wtcGxhaW50ZXh0IGFsaWduLXNlbGYtdG9wIG1sLTIgbXItMSB3LWF1dG8nO1xuICAgIGN1cnJWYWxfMDtcbiAgICBjb25zdCBjdXJyVmFsXzE6YW55ID0gW19kZWNsMF8zNC50cmFuc2Zvcm0oX2RlY2wwXzE5LmNvbXBvbmVudEhlaWdodCldO1xuICAgIGN1cnJWYWxfMTtcbiAgICBjb25zdCBjdXJyVmFsXzI6YW55ID0gX2RlY2wwXzE5LmhlbHB0ZXh0O1xuICAgIGN1cnJWYWxfMjtcbiAgICBjb25zdCBjdXJyVmFsXzM6YW55ID0gdHJ1ZTtcbiAgICBjdXJyVmFsXzM7XG4gICAgY29uc3QgY3VyclZhbF80OmFueSA9ICdtbC0xJztcbiAgICBjdXJyVmFsXzQ7XG4gICAgY29uc3QgY3VyclZhbF81OmFueSA9IF9kZWNsMF8xOS5IZWxwdGV4dFRvb2x0aXBJY29uO1xuICAgIGN1cnJWYWxfNTtcbiAgfVxufVxuZnVuY3Rpb24gX1ZpZXdfU2FjSW5wdXRQYXNzd29yZENvbXBvbmVudF83XzAoKTp2b2lkIHtcbiAgdmFyIF9hbnk6YW55ID0gKG51bGwgYXMgYW55KTtcbiAgY29uc3QgY3VyclZhbF8wOmFueSA9ICdjb2wtMTIgY29sLWZvcm0tbGFiZWwgZC1mbGV4JztcbiAgY3VyclZhbF8wO1xuICBjb25zdCBjdXJyVmFsXzE6YW55ID0gWygoX2RlY2wwXzE5LmRpc2FibGVsYWJlbCA9PT0gZmFsc2UpPyBfZGVjbDBfMzcudHJhbnNmb3JtKF9kZWNsMF8xOS5sYWJlbFNpemVzKTogJ3NyLW9ubHknKSxcbiAgICAgIF9kZWNsMF8zNi50cmFuc2Zvcm0oX2RlY2wwXzE5LmNvbXBvbmVudEhlaWdodCldO1xuICBjdXJyVmFsXzE7XG4gIGNvbnN0IGN1cnJWYWxfMjphbnkgPSBpMC7JtWlubGluZUludGVycG9sYXRlKDEsJycsX2RlY2wwXzE5Lm5hbWUsJycpO1xuICBjdXJyVmFsXzI7XG4gIGNvbnN0IGN1cnJWYWxfMzphbnkgPSBfZGVjbDBfMTkuaXNyZXF1aXJlZDtcbiAgY3VyclZhbF8zO1xuICBjb25zdCBjdXJyVmFsXzQ6YW55ID0gX2RlY2wwXzE5LnNwbGl0bGFiZWxhbmRoZWxwdGV4dDtcbiAgY3VyclZhbF80O1xuICBjb25zdCBjdXJyVmFsXzU6YW55ID0gX2RlY2wwXzE5LmxhYmVsO1xuICBjdXJyVmFsXzU7XG4gIGNvbnN0IGN1cnJWYWxfNjphbnkgPSAoKF9kZWNsMF8xOS5oZWxwdGV4dG1vZGUgPT09ICd0b29sdGlwJykgJiYgX2RlY2wwXzE5LmhlbHB0ZXh0KTtcbiAgY3VyclZhbF82O1xuICBjb25zdCBjdXJyVmFsXzc6YW55ID0gJ2NvbC0xMic7XG4gIGN1cnJWYWxfNztcbiAgY29uc3QgY3VyclZhbF84OmFueSA9IFsoKF9kZWNsMF8xOS5kaXNhYmxlbGFiZWwgPT09IGZhbHNlKT8gX2RlY2wwXzM1LnRyYW5zZm9ybShfZGVjbDBfMTkubGFiZWxTaXplcyk6ICcnKV07XG4gIGN1cnJWYWxfODtcbiAgY29uc3QgY3VyclZhbF85OmFueSA9ICgoKF9kZWNsMF8xOS5oZWxwdGV4dG1vZGUgPT09ICd0b29sdGlwJykgJiYgX2RlY2wwXzE5LmhlbHB0ZXh0KSAmJiBfZGVjbDBfMTkuZGlzYWJsZWxhYmVsKTtcbiAgY3VyclZhbF85O1xuICBjb25zdCBjdXJyVmFsXzEwOmFueSA9ICgoKF9kZWNsMF8xOS5oZWxwdGV4dG1vZGUgPT09ICd0b29sdGlwJykgJiYgX2RlY2wwXzE5LmhlbHB0ZXh0KSAmJiBfZGVjbDBfMTkuZGlzYWJsZWxhYmVsKTtcbiAgY3VyclZhbF8xMDtcbiAgY29uc3QgY3VyclZhbF8xMTphbnkgPSAnZm9ybS1jb250cm9sJztcbiAgY3VyclZhbF8xMTtcbiAgY29uc3QgY3VyclZhbF8xMjphbnkgPSBbX2RlY2wwXzM0LnRyYW5zZm9ybShfZGVjbDBfMTkuY29tcG9uZW50SGVpZ2h0KV07XG4gIGN1cnJWYWxfMTI7XG4gIGNvbnN0IGN1cnJWYWxfMTM6YW55ID0gaTAuybVpbmxpbmVJbnRlcnBvbGF0ZSgxLCcnLF9kZWNsMF8xOS5uYW1lLCcnKTtcbiAgY3VyclZhbF8xMztcbiAgY29uc3QgY3VyclZhbF8xNDphbnkgPSBpMC7JtWlubGluZUludGVycG9sYXRlKDEsJycsX2RlY2wwXzE5Lm5hbWUsJycpO1xuICBjdXJyVmFsXzE0O1xuICBjb25zdCBjdXJyVmFsXzE1OmFueSA9IF9kZWNsMF8xOS5wbGFjZWhvbGRlcjtcbiAgY3VyclZhbF8xNTtcbiAgY29uc3QgY3VyclZhbF8xNjphbnkgPSBfZGVjbDBfMTkudmFsdWU7XG4gIGN1cnJWYWxfMTY7XG4gIGNvbnN0IGN1cnJWYWxfMTc6YW55ID0gX2RlY2wwXzE5Lm1heGxlbmd0aDtcbiAgY3VyclZhbF8xNztcbiAgY29uc3QgY3VyclZhbF8xODphbnkgPSAoX2RlY2wwXzE5LmludmFsaWQgJiYgKF9kZWNsMF8xOS5kaXJ0eSB8fCBfZGVjbDBfMTkudG91Y2hlZCkpO1xuICBjdXJyVmFsXzE4O1xuICBjb25zdCBjdXJyVmFsXzE5OmFueSA9IF9kZWNsMF8xOS5pc2Rpc2FibGVkO1xuICBjdXJyVmFsXzE5O1xuICBjb25zdCBjdXJyVmFsXzIwOmFueSA9IF9kZWNsMF8xOS5yZWFkb25seTtcbiAgY3VyclZhbF8yMDtcbiAgY29uc3QgY3VyclZhbF8yMTphbnkgPSAoKF9kZWNsMF8xOS5oZWxwdGV4dG1vZGUgPT09ICd0ZXh0JykgJiYgX2RlY2wwXzE5LmhlbHB0ZXh0KTtcbiAgY3VyclZhbF8yMTtcbiAgY29uc3QgY3VyclZhbF8yMjphbnkgPSAoKF9kZWNsMF8xOS5pc2lubGluZWVycm9yZW5hYmxlZCAmJiBfZGVjbDBfMTkuaW52YWxpZCkgJiYgKF9kZWNsMF8xOS5kaXJ0eSB8fCBfZGVjbDBfMTkudG91Y2hlZCkpO1xuICBjdXJyVmFsXzIyO1xuICBjb25zdCBjdXJyVmFsXzIzOmFueSA9ICgoKF9kZWNsMF8xOS5oZWxwdGV4dG1vZGUgPT09ICd0b29sdGlwJykgJiYgX2RlY2wwXzE5LmhlbHB0ZXh0KSAmJiBfZGVjbDBfMTkuZGlzYWJsZWxhYmVsKTtcbiAgY3VyclZhbF8yMztcbiAgY29uc3QgcGRfMjQ6YW55ID0gKCg8YW55Pl9kZWNsMF8xOS5vblRvdWNoKCkpICE9PSBmYWxzZSk7XG4gIGNvbnN0IHBkXzI1OmFueSA9ICgoPGFueT5fZGVjbDBfMTkuc2V0VmFsdWUoX2FueS50YXJnZXQudmFsdWUpKSAhPT0gZmFsc2UpO1xufVxuZnVuY3Rpb24gX1ZpZXdfU2FjSW5wdXRTZWFyY2hDb21wb25lbnRfSG9zdF84XzAoKTp2b2lkIHtcbiAgdmFyIF9hbnk6YW55ID0gKG51bGwgYXMgYW55KTtcbn1cbmZ1bmN0aW9uIF9WaWV3X1NhY0lucHV0U2VhcmNoQ29tcG9uZW50XzhfMSgpOnZvaWQge1xuICBpZiAoKChfZGVjbDBfMjAuaGVscHRleHRtb2RlID09PSAndG9vbHRpcCcpICYmIF9kZWNsMF8yMC5oZWxwdGV4dCkpIHtcbiAgICB2YXIgX2FueTphbnkgPSAobnVsbCBhcyBhbnkpO1xuICAgIGNvbnN0IGN1cnJWYWxfMDphbnkgPSBfZGVjbDBfMjAuaGVscHRleHQ7XG4gICAgY3VyclZhbF8wO1xuICAgIGNvbnN0IGN1cnJWYWxfMTphbnkgPSB0cnVlO1xuICAgIGN1cnJWYWxfMTtcbiAgICBjb25zdCBjdXJyVmFsXzI6YW55ID0gJ21sLTEnO1xuICAgIGN1cnJWYWxfMjtcbiAgICBjb25zdCBjdXJyVmFsXzM6YW55ID0gX2RlY2wwXzIwLkhlbHB0ZXh0VG9vbHRpcEljb247XG4gICAgY3VyclZhbF8zO1xuICB9XG59XG5mdW5jdGlvbiBfVmlld19TYWNJbnB1dFNlYXJjaENvbXBvbmVudF84XzIoKTp2b2lkIHtcbiAgaWYgKCgoX2RlY2wwXzIwLmJ1dHRvbm1vZGUgPT09ICdpY29uJykgfHwgKF9kZWNsMF8yMC5idXR0b25tb2RlID09PSAnbWl4ZWQnKSkpIHtcbiAgICB2YXIgX2FueTphbnkgPSAobnVsbCBhcyBhbnkpO1xuICAgIGNvbnN0IGN1cnJWYWxfMDphbnkgPSBfZGVjbDBfMjAuaWNvbm5hbWU7XG4gICAgY3VyclZhbF8wO1xuICAgIGNvbnN0IGN1cnJWYWxfMTphbnkgPSAoX2RlY2wwXzIwLmJ1dHRvbm1vZGUgPT09ICdtaXhlZCcpO1xuICAgIGN1cnJWYWxfMTtcbiAgfVxufVxuZnVuY3Rpb24gX1ZpZXdfU2FjSW5wdXRTZWFyY2hDb21wb25lbnRfOF8zKCk6dm9pZCB7XG4gIGlmICgoKF9kZWNsMF8yMC5idXR0b25tb2RlID09PSAndGV4dCcpIHx8IChfZGVjbDBfMjAuYnV0dG9ubW9kZSA9PT0gJ21peGVkJykpKSB7XG4gICAgdmFyIF9hbnk6YW55ID0gKG51bGwgYXMgYW55KTtcbiAgICBjb25zdCBjdXJyVmFsXzA6YW55ID0gX2RlY2wwXzIwLmJ1dHRvbnRleHQ7XG4gICAgY3VyclZhbF8wO1xuICB9XG59XG5mdW5jdGlvbiBfVmlld19TYWNJbnB1dFNlYXJjaENvbXBvbmVudF84XzQoKTp2b2lkIHtcbiAgaWYgKCgoX2RlY2wwXzIwLmhlbHB0ZXh0bW9kZSA9PT0gJ3RleHQnKSAmJiBfZGVjbDBfMjAuaGVscHRleHQpKSB7XG4gICAgdmFyIF9hbnk6YW55ID0gKG51bGwgYXMgYW55KTtcbiAgICBjb25zdCBjdXJyVmFsXzA6YW55ID0gX2RlY2wwXzIwLmhlbHB0ZXh0O1xuICAgIGN1cnJWYWxfMDtcbiAgfVxufVxuZnVuY3Rpb24gX1ZpZXdfU2FjSW5wdXRTZWFyY2hDb21wb25lbnRfOF81KCk6dm9pZCB7XG4gIGlmICgoKChfZGVjbDBfMjAuaGVscHRleHRtb2RlID09PSAndG9vbHRpcCcpICYmIF9kZWNsMF8yMC5oZWxwdGV4dCkgJiYgX2RlY2wwXzIwLmRpc2FibGVsYWJlbCkpIHtcbiAgICB2YXIgX2FueTphbnkgPSAobnVsbCBhcyBhbnkpO1xuICAgIGNvbnN0IGN1cnJWYWxfMDphbnkgPSAnZm9ybS1jb250cm9sLXBsYWludGV4dCBhbGlnbi1zZWxmLXRvcCBtbC0yIG1yLTEgdy1hdXRvJztcbiAgICBjdXJyVmFsXzA7XG4gICAgY29uc3QgY3VyclZhbF8xOmFueSA9IFtfZGVjbDBfMzQudHJhbnNmb3JtKF9kZWNsMF8yMC5jb21wb25lbnRIZWlnaHQpXTtcbiAgICBjdXJyVmFsXzE7XG4gICAgY29uc3QgY3VyclZhbF8yOmFueSA9IF9kZWNsMF8yMC5oZWxwdGV4dDtcbiAgICBjdXJyVmFsXzI7XG4gICAgY29uc3QgY3VyclZhbF8zOmFueSA9IHRydWU7XG4gICAgY3VyclZhbF8zO1xuICAgIGNvbnN0IGN1cnJWYWxfNDphbnkgPSAnbWwtMSc7XG4gICAgY3VyclZhbF80O1xuICAgIGNvbnN0IGN1cnJWYWxfNTphbnkgPSBfZGVjbDBfMjAuSGVscHRleHRUb29sdGlwSWNvbjtcbiAgICBjdXJyVmFsXzU7XG4gIH1cbn1cbmZ1bmN0aW9uIF9WaWV3X1NhY0lucHV0U2VhcmNoQ29tcG9uZW50XzhfMCgpOnZvaWQge1xuICB2YXIgX2FueTphbnkgPSAobnVsbCBhcyBhbnkpO1xuICBjb25zdCBjdXJyVmFsXzA6YW55ID0gX2RlY2wwXzIwLmRpc2FibGVsYWJlbDtcbiAgY3VyclZhbF8wO1xuICBjb25zdCBjdXJyVmFsXzE6YW55ID0gJ2NvbC0xMiBjb2wtZm9ybS1sYWJlbCBkLWZsZXgnO1xuICBjdXJyVmFsXzE7XG4gIGNvbnN0IGN1cnJWYWxfMjphbnkgPSBbKChfZGVjbDBfMjAuZGlzYWJsZWxhYmVsID09PSBmYWxzZSk/IF9kZWNsMF8zNy50cmFuc2Zvcm0oX2RlY2wwXzIwLmxhYmVsU2l6ZXMpOiAnc3Itb25seScpLFxuICAgICAgX2RlY2wwXzM2LnRyYW5zZm9ybShfZGVjbDBfMjAuY29tcG9uZW50SGVpZ2h0KV07XG4gIGN1cnJWYWxfMjtcbiAgY29uc3QgY3VyclZhbF8zOmFueSA9IGkwLsm1aW5saW5lSW50ZXJwb2xhdGUoMSwnJyxfZGVjbDBfMjAubmFtZSwnX2xhYmVsJyk7XG4gIGN1cnJWYWxfMztcbiAgY29uc3QgY3VyclZhbF80OmFueSA9IGkwLsm1aW5saW5lSW50ZXJwb2xhdGUoMSwnJyxfZGVjbDBfMjAubmFtZSwnJyk7XG4gIGN1cnJWYWxfNDtcbiAgY29uc3QgY3VyclZhbF81OmFueSA9IF9kZWNsMF8yMC5pc3JlcXVpcmVkO1xuICBjdXJyVmFsXzU7XG4gIGNvbnN0IGN1cnJWYWxfNjphbnkgPSBfZGVjbDBfMjAuc3BsaXRsYWJlbGFuZGhlbHB0ZXh0O1xuICBjdXJyVmFsXzY7XG4gIGNvbnN0IGN1cnJWYWxfNzphbnkgPSBfZGVjbDBfMjAubGFiZWw7XG4gIGN1cnJWYWxfNztcbiAgY29uc3QgY3VyclZhbF84OmFueSA9ICgoX2RlY2wwXzIwLmhlbHB0ZXh0bW9kZSA9PT0gJ3Rvb2x0aXAnKSAmJiBfZGVjbDBfMjAuaGVscHRleHQpO1xuICBjdXJyVmFsXzg7XG4gIGNvbnN0IGN1cnJWYWxfOTphbnkgPSAnY29sLTEyJztcbiAgY3VyclZhbF85O1xuICBjb25zdCBjdXJyVmFsXzEwOmFueSA9IFsoKF9kZWNsMF8yMC5kaXNhYmxlbGFiZWwgPT09IGZhbHNlKT8gX2RlY2wwXzM1LnRyYW5zZm9ybShfZGVjbDBfMjAubGFiZWxTaXplcyk6ICcnKV07XG4gIGN1cnJWYWxfMTA7XG4gIGNvbnN0IGN1cnJWYWxfMTE6YW55ID0gKCgoX2RlY2wwXzIwLmhlbHB0ZXh0bW9kZSA9PT0gJ3Rvb2x0aXAnKSAmJiBfZGVjbDBfMjAuaGVscHRleHQpICYmIF9kZWNsMF8yMC5kaXNhYmxlbGFiZWwpO1xuICBjdXJyVmFsXzExO1xuICBjb25zdCBjdXJyVmFsXzEyOmFueSA9ICgoKF9kZWNsMF8yMC5oZWxwdGV4dG1vZGUgPT09ICd0b29sdGlwJykgJiYgX2RlY2wwXzIwLmhlbHB0ZXh0KSAmJiBfZGVjbDBfMjAuZGlzYWJsZWxhYmVsKTtcbiAgY3VyclZhbF8xMjtcbiAgY29uc3QgY3VyclZhbF8xMzphbnkgPSAoX2RlY2wwXzIwLmNvbXBvbmVudEhlaWdodCA9PT0gX2RlY2wwXzIwLkNvbnRyb2xIZWlnaHQuU21hbGwpO1xuICBjdXJyVmFsXzEzO1xuICBjb25zdCBjdXJyVmFsXzE0OmFueSA9IChfZGVjbDBfMjAuY29tcG9uZW50SGVpZ2h0ID09PSBfZGVjbDBfMjAuQ29udHJvbEhlaWdodC5MYXJnZSk7XG4gIGN1cnJWYWxfMTQ7XG4gIGNvbnN0IGN1cnJWYWxfMTU6YW55ID0gJ2Zvcm0tY29udHJvbCc7XG4gIGN1cnJWYWxfMTU7XG4gIGNvbnN0IGN1cnJWYWxfMTY6YW55ID0gW19kZWNsMF8zNC50cmFuc2Zvcm0oX2RlY2wwXzIwLmNvbXBvbmVudEhlaWdodCldO1xuICBjdXJyVmFsXzE2O1xuICBjb25zdCBjdXJyVmFsXzE3OmFueSA9IGkwLsm1aW5saW5lSW50ZXJwb2xhdGUoMSwnJyxfZGVjbDBfMjAubmFtZSwnJyk7XG4gIGN1cnJWYWxfMTc7XG4gIGNvbnN0IGN1cnJWYWxfMTg6YW55ID0gaTAuybVpbmxpbmVJbnRlcnBvbGF0ZSgxLCcnLF9kZWNsMF8yMC5uYW1lLCcnKTtcbiAgY3VyclZhbF8xODtcbiAgY29uc3QgY3VyclZhbF8xOTphbnkgPSBfZGVjbDBfMjAudmFsdWU7XG4gIGN1cnJWYWxfMTk7XG4gIGNvbnN0IGN1cnJWYWxfMjA6YW55ID0gX2RlY2wwXzIwLnBsYWNlaG9sZGVyO1xuICBjdXJyVmFsXzIwO1xuICBjb25zdCBjdXJyVmFsXzIxOmFueSA9IF9kZWNsMF8yMC5tYXhsZW5ndGg7XG4gIGN1cnJWYWxfMjE7XG4gIGNvbnN0IGN1cnJWYWxfMjI6YW55ID0gKF9kZWNsMF8yMC5pbnZhbGlkICYmIChfZGVjbDBfMjAuZGlydHkgfHwgX2RlY2wwXzIwLnRvdWNoZWQpKTtcbiAgY3VyclZhbF8yMjtcbiAgY29uc3QgY3VyclZhbF8yMzphbnkgPSBfZGVjbDBfMjAuaXNkaXNhYmxlZDtcbiAgY3VyclZhbF8yMztcbiAgY29uc3QgY3VyclZhbF8yNDphbnkgPSBfZGVjbDBfMjAucmVhZG9ubHk7XG4gIGN1cnJWYWxfMjQ7XG4gIGNvbnN0IGN1cnJWYWxfMjU6YW55ID0gaTAuybVpbmxpbmVJbnRlcnBvbGF0ZSgxLCcnLF9kZWNsMF8yMC5uYW1lLCdfc2VhcmNoJyk7XG4gIGN1cnJWYWxfMjU7XG4gIGNvbnN0IGN1cnJWYWxfMjY6YW55ID0gKChfZGVjbDBfMjAuYnV0dG9ubW9kZSA9PT0gJ2ljb24nKSB8fCAoX2RlY2wwXzIwLmJ1dHRvbm1vZGUgPT09ICdtaXhlZCcpKTtcbiAgY3VyclZhbF8yNjtcbiAgY29uc3QgY3VyclZhbF8yNzphbnkgPSAoKF9kZWNsMF8yMC5idXR0b25tb2RlID09PSAndGV4dCcpIHx8IChfZGVjbDBfMjAuYnV0dG9ubW9kZSA9PT0gJ21peGVkJykpO1xuICBjdXJyVmFsXzI3O1xuICBjb25zdCBjdXJyVmFsXzI4OmFueSA9ICgoX2RlY2wwXzIwLmhlbHB0ZXh0bW9kZSA9PT0gJ3RleHQnKSAmJiBfZGVjbDBfMjAuaGVscHRleHQpO1xuICBjdXJyVmFsXzI4O1xuICBjb25zdCBjdXJyVmFsXzI5OmFueSA9ICgoKF9kZWNsMF8yMC5oZWxwdGV4dG1vZGUgPT09ICd0b29sdGlwJykgJiYgX2RlY2wwXzIwLmhlbHB0ZXh0KSAmJiBfZGVjbDBfMjAuZGlzYWJsZWxhYmVsKTtcbiAgY3VyclZhbF8yOTtcbiAgY29uc3QgcGRfMzA6YW55ID0gKCg8YW55Pl9kZWNsMF8yMC5vblRvdWNoKCkpICE9PSBmYWxzZSk7XG4gIGNvbnN0IHBkXzMxOmFueSA9ICgoPGFueT5fZGVjbDBfMjAuc2V0VmFsdWUoX2FueS50YXJnZXQudmFsdWUpKSAhPT0gZmFsc2UpO1xuICBjb25zdCBwZF8zMjphbnkgPSAoKDxhbnk+X2RlY2wwXzIwLnNlYXJjaENsaWNrKCkpICE9PSBmYWxzZSk7XG59XG4iXX0=
1
+ /**
2
+ * @fileoverview This file was generated by the Angular template compiler. Do not edit.
3
+ *
4
+ * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes,extraRequire}
5
+ * tslint:disable
6
+ */
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQubW9kdWxlLm5nZmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIvaG9tZS9ydW5uZXIvd29yay9zaW1wbGVhbmd1bGFyY29udHJvbHMvc2ltcGxlYW5ndWxhcmNvbnRyb2xzL2NoLmpuZXR3b3JrLnNhYy1jb250cm9scy9wcm9qZWN0cy9zYWMtYm9vdHN0cmFwNC9zcmMvIiwic291cmNlcyI6WyJjb250cm9scy9pbnB1dC9pbnB1dC5tb2R1bGUubmdmYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBpMCBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCAqIGFzIGkxIGZyb20gJy4vaW5wdXQubW9kdWxlJztcbmltcG9ydCAqIGFzIGkyIGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgKiBhcyBpMyBmcm9tICcuLi9sYXlvdXQvZm9ybWxheW91dC5kaXJlY3RpdmUnO1xuaW1wb3J0ICogYXMgaTQgZnJvbSAnLi4vdG9vbHRpcC90b29sdGlwJztcbmltcG9ydCAqIGFzIGk1IGZyb20gJy4vaW5wdXQnO1xuaW1wb3J0ICogYXMgaTYgZnJvbSAnLi9pbnB1dGFyZWEnO1xuaW1wb3J0ICogYXMgaTcgZnJvbSAnLi9pbnB1dGN1cnJlbmN5JztcbmltcG9ydCAqIGFzIGk4IGZyb20gJy4vaW5wdXRkZWNpbWFsJztcbmltcG9ydCAqIGFzIGk5IGZyb20gJy4vaW5wdXRlbWFpbCc7XG5pbXBvcnQgKiBhcyBpMTAgZnJvbSAnLi9pbnB1dGludGVnZXInO1xuaW1wb3J0ICogYXMgaTExIGZyb20gJy4vaW5wdXRwYXNzd29yZCc7XG5pbXBvcnQgKiBhcyBpMTIgZnJvbSAnLi9pbnB1dHNlYXJjaCc7XG5pbXBvcnQgKiBhcyBpMTMgZnJvbSAnLi4vbGF5b3V0L3RvY29udHJvbGhlaWdodC5waXBlJztcbmltcG9ydCAqIGFzIGkxNCBmcm9tICcuLi9sYXlvdXQvdG9jb250cm9sd2lkdGhjc3MucGlwZSc7XG5pbXBvcnQgKiBhcyBpMTUgZnJvbSAnLi4vbGF5b3V0L3RvbGFiZWxoZWlnaHQucGlwZSc7XG5pbXBvcnQgKiBhcyBpMTYgZnJvbSAnLi4vbGF5b3V0L3RvbGFiZWx3aWR0aGNzcy5waXBlJztcbmltcG9ydCAqIGFzIGkxNyBmcm9tICcuLi9sYXlvdXQvbGF5b3V0Lm1vZHVsZSc7XG5pbXBvcnQgKiBhcyBpMTggZnJvbSAnLi4vdG9vbHRpcC90b29sdGlwLm1vZHVsZSc7XG5leHBvcnQgY29uc3QgU0FDQm9vdHN0cmFwNElucHV0TW9kdWxlTmdGYWN0b3J5OmkwLk5nTW9kdWxlRmFjdG9yeTxpMS5TQUNCb290c3RyYXA0SW5wdXRNb2R1bGU+ID0gKG51bGwgYXMgYW55KTtcbnZhciBfZGVjbDBfMDppMi5OZ0NsYXNzID0gKDxhbnk+KG51bGwgYXMgYW55KSk7XG52YXIgX2RlY2wwXzE6aTIuTmdDb21wb25lbnRPdXRsZXQgPSAoPGFueT4obnVsbCBhcyBhbnkpKTtcbnZhciBfZGVjbDBfMjppMi5OZ0Zvck9mPGFueSxhbnk+ID0gKDxhbnk+KG51bGwgYXMgYW55KSk7XG52YXIgX2RlY2wwXzM6aTIuTmdJZjxhbnk+ID0gKDxhbnk+KG51bGwgYXMgYW55KSk7XG52YXIgX2RlY2wwXzQ6aTIuTmdUZW1wbGF0ZU91dGxldCA9ICg8YW55PihudWxsIGFzIGFueSkpO1xudmFyIF9kZWNsMF81OmkyLk5nU3R5bGUgPSAoPGFueT4obnVsbCBhcyBhbnkpKTtcbnZhciBfZGVjbDBfNjppMi5OZ1N3aXRjaCA9ICg8YW55PihudWxsIGFzIGFueSkpO1xudmFyIF9kZWNsMF83OmkyLk5nU3dpdGNoQ2FzZSA9ICg8YW55PihudWxsIGFzIGFueSkpO1xudmFyIF9kZWNsMF84OmkyLk5nU3dpdGNoRGVmYXVsdCA9ICg8YW55PihudWxsIGFzIGFueSkpO1xudmFyIF9kZWNsMF85OmkyLk5nUGx1cmFsID0gKDxhbnk+KG51bGwgYXMgYW55KSk7XG52YXIgX2RlY2wwXzEwOmkyLk5nUGx1cmFsQ2FzZSA9ICg8YW55PihudWxsIGFzIGFueSkpO1xudmFyIF9kZWNsMF8xMTppMy5TYWNGb3JtTGF5b3V0RGlyZWN0aXZlID0gKDxhbnk+KG51bGwgYXMgYW55KSk7XG52YXIgX2RlY2wwXzEyOmk0LlNhY1Rvb2x0aXBDb21wb25lbnQgPSAoPGFueT4obnVsbCBhcyBhbnkpKTtcbnZhciBfZGVjbDBfMTM6aTUuU2FjSW5wdXRDb21wb25lbnQgPSAoPGFueT4obnVsbCBhcyBhbnkpKTtcbnZhciBfZGVjbDBfMTQ6aTYuU2FjSW5wdXRBcmVhQ29tcG9uZW50ID0gKDxhbnk+KG51bGwgYXMgYW55KSk7XG52YXIgX2RlY2wwXzE1Omk3LlNhY0lucHV0Q3VycmVuY3lDb21wb25lbnQgPSAoPGFueT4obnVsbCBhcyBhbnkpKTtcbnZhciBfZGVjbDBfMTY6aTguU2FjSW5wdXREZWNpbWFsQ29tcG9uZW50ID0gKDxhbnk+KG51bGwgYXMgYW55KSk7XG52YXIgX2RlY2wwXzE3Omk5LlNhY0lucHV0RW1haWxDb21wb25lbnQgPSAoPGFueT4obnVsbCBhcyBhbnkpKTtcbnZhciBfZGVjbDBfMTg6aTEwLlNhY0lucHV0SW50ZWdlckNvbXBvbmVudCA9ICg8YW55PihudWxsIGFzIGFueSkpO1xudmFyIF9kZWNsMF8xOTppMTEuU2FjSW5wdXRQYXNzd29yZENvbXBvbmVudCA9ICg8YW55PihudWxsIGFzIGFueSkpO1xudmFyIF9kZWNsMF8yMDppMTIuU2FjSW5wdXRTZWFyY2hDb21wb25lbnQgPSAoPGFueT4obnVsbCBhcyBhbnkpKTtcbnZhciBfZGVjbDBfMjE6aTIuQXN5bmNQaXBlID0gKDxhbnk+KG51bGwgYXMgYW55KSk7XG52YXIgX2RlY2wwXzIyOmkyLlVwcGVyQ2FzZVBpcGUgPSAoPGFueT4obnVsbCBhcyBhbnkpKTtcbnZhciBfZGVjbDBfMjM6aTIuTG93ZXJDYXNlUGlwZSA9ICg8YW55PihudWxsIGFzIGFueSkpO1xudmFyIF9kZWNsMF8yNDppMi5Kc29uUGlwZSA9ICg8YW55PihudWxsIGFzIGFueSkpO1xudmFyIF9kZWNsMF8yNTppMi5TbGljZVBpcGUgPSAoPGFueT4obnVsbCBhcyBhbnkpKTtcbnZhciBfZGVjbDBfMjY6aTIuRGVjaW1hbFBpcGUgPSAoPGFueT4obnVsbCBhcyBhbnkpKTtcbnZhciBfZGVjbDBfMjc6aTIuUGVyY2VudFBpcGUgPSAoPGFueT4obnVsbCBhcyBhbnkpKTtcbnZhciBfZGVjbDBfMjg6aTIuVGl0bGVDYXNlUGlwZSA9ICg8YW55PihudWxsIGFzIGFueSkpO1xudmFyIF9kZWNsMF8yOTppMi5DdXJyZW5jeVBpcGUgPSAoPGFueT4obnVsbCBhcyBhbnkpKTtcbnZhciBfZGVjbDBfMzA6aTIuRGF0ZVBpcGUgPSAoPGFueT4obnVsbCBhcyBhbnkpKTtcbnZhciBfZGVjbDBfMzE6aTIuSTE4blBsdXJhbFBpcGUgPSAoPGFueT4obnVsbCBhcyBhbnkpKTtcbnZhciBfZGVjbDBfMzI6aTIuSTE4blNlbGVjdFBpcGUgPSAoPGFueT4obnVsbCBhcyBhbnkpKTtcbnZhciBfZGVjbDBfMzM6aTIuS2V5VmFsdWVQaXBlID0gKDxhbnk+KG51bGwgYXMgYW55KSk7XG52YXIgX2RlY2wwXzM0OmkxMy5TYWNUb0NvbnRyb2xIZWlnaHRQaXBlID0gKDxhbnk+KG51bGwgYXMgYW55KSk7XG52YXIgX2RlY2wwXzM1OmkxNC5TYWNUb0NvbnRyb2xXaWR0aENzc1BpcGUgPSAoPGFueT4obnVsbCBhcyBhbnkpKTtcbnZhciBfZGVjbDBfMzY6aTE1LlNhY1RvTGFiZWxIZWlnaHRQaXBlID0gKDxhbnk+KG51bGwgYXMgYW55KSk7XG52YXIgX2RlY2wwXzM3OmkxNi5TYWNUb0xhYmVsV2lkdGhDc3NQaXBlID0gKDxhbnk+KG51bGwgYXMgYW55KSk7XG52YXIgX2RlY2wwXzM4OmkyLkNvbW1vbk1vZHVsZSA9ICg8YW55PihudWxsIGFzIGFueSkpO1xudmFyIF9kZWNsMF8zOTppMTcuU0FDQm9vdHN0cmFwNExheW91dE1vZHVsZSA9ICg8YW55PihudWxsIGFzIGFueSkpO1xudmFyIF9kZWNsMF80MDppMTguU0FDQm9vdHN0cmFwNFRvb2x0aXBNb2R1bGUgPSAoPGFueT4obnVsbCBhcyBhbnkpKTtcbnZhciBfZGVjbDBfNDE6aTAuVGVtcGxhdGVSZWY8YW55PiA9ICg8YW55PihudWxsIGFzIGFueSkpO1xudmFyIF9kZWNsMF80MjppMC5FbGVtZW50UmVmPGFueT4gPSAoPGFueT4obnVsbCBhcyBhbnkpKTtcbmZ1bmN0aW9uIF9WaWV3X1NhY0lucHV0Q29tcG9uZW50X0hvc3RfMV8wKCk6dm9pZCB7XG4gIHZhciBfYW55OmFueSA9IChudWxsIGFzIGFueSk7XG59XG5mdW5jdGlvbiBfVmlld19TYWNJbnB1dENvbXBvbmVudF8xXzEoKTp2b2lkIHtcbiAgaWYgKCgoX2RlY2wwXzEzLmhlbHB0ZXh0bW9kZSA9PT0gJ3Rvb2x0aXAnKSAmJiBfZGVjbDBfMTMuaGVscHRleHQpKSB7XG4gICAgdmFyIF9hbnk6YW55ID0gKG51bGwgYXMgYW55KTtcbiAgICBjb25zdCBjdXJyVmFsXzA6YW55ID0gX2RlY2wwXzEzLmhlbHB0ZXh0O1xuICAgIGN1cnJWYWxfMDtcbiAgICBjb25zdCBjdXJyVmFsXzE6YW55ID0gdHJ1ZTtcbiAgICBjdXJyVmFsXzE7XG4gICAgY29uc3QgY3VyclZhbF8yOmFueSA9ICdtbC0xJztcbiAgICBjdXJyVmFsXzI7XG4gICAgY29uc3QgY3VyclZhbF8zOmFueSA9IF9kZWNsMF8xMy5IZWxwdGV4dFRvb2x0aXBJY29uO1xuICAgIGN1cnJWYWxfMztcbiAgfVxufVxuZnVuY3Rpb24gX1ZpZXdfU2FjSW5wdXRDb21wb25lbnRfMV8yKCk6dm9pZCB7XG4gIGlmICgoKF9kZWNsMF8xMy5oZWxwdGV4dG1vZGUgPT09ICd0ZXh0JykgJiYgX2RlY2wwXzEzLmhlbHB0ZXh0KSkge1xuICAgIHZhciBfYW55OmFueSA9IChudWxsIGFzIGFueSk7XG4gICAgY29uc3QgY3VyclZhbF8wOmFueSA9IF9kZWNsMF8xMy5oZWxwdGV4dDtcbiAgICBjdXJyVmFsXzA7XG4gIH1cbn1cbmZ1bmN0aW9uIF9WaWV3X1NhY0lucHV0Q29tcG9uZW50XzFfMygpOnZvaWQge1xuICBpZiAoKChfZGVjbDBfMTMuaXNpbmxpbmVlcnJvcmVuYWJsZWQgJiYgX2RlY2wwXzEzLmludmFsaWQpICYmIChfZGVjbDBfMTMuZGlydHkgfHwgX2RlY2wwXzEzLnRvdWNoZWQpKSkge1xuICAgIHZhciBfYW55OmFueSA9IChudWxsIGFzIGFueSk7XG4gICAgY29uc3QgY3VyclZhbF8wOmFueSA9IF9kZWNsMF8yMS50cmFuc2Zvcm0oX2RlY2wwXzEzLkdldEVycm9yTWVzc2FnZSgpKTtcbiAgICBjdXJyVmFsXzA7XG4gIH1cbn1cbmZ1bmN0aW9uIF9WaWV3X1NhY0lucHV0Q29tcG9uZW50XzFfNCgpOnZvaWQge1xuICBpZiAoKCgoX2RlY2wwXzEzLmhlbHB0ZXh0bW9kZSA9PT0gJ3Rvb2x0aXAnKSAmJiBfZGVjbDBfMTMuaGVscHRleHQpICYmIF9kZWNsMF8xMy5kaXNhYmxlbGFiZWwpKSB7XG4gICAgdmFyIF9hbnk6YW55ID0gKG51bGwgYXMgYW55KTtcbiAgICBjb25zdCBjdXJyVmFsXzA6YW55ID0gJ2Zvcm0tY29udHJvbC1wbGFpbnRleHQgYWxpZ24tc2VsZi10b3AgbWwtMiBtci0xIHctYXV0byc7XG4gICAgY3VyclZhbF8wO1xuICAgIGNvbnN0IGN1cnJWYWxfMTphbnkgPSBbX2RlY2wwXzM0LnRyYW5zZm9ybShfZGVjbDBfMTMuY29tcG9uZW50SGVpZ2h0KV07XG4gICAgY3VyclZhbF8xO1xuICAgIGNvbnN0IGN1cnJWYWxfMjphbnkgPSBfZGVjbDBfMTMuaGVscHRleHQ7XG4gICAgY3VyclZhbF8yO1xuICAgIGNvbnN0IGN1cnJWYWxfMzphbnkgPSB0cnVlO1xuICAgIGN1cnJWYWxfMztcbiAgICBjb25zdCBjdXJyVmFsXzQ6YW55ID0gJ21sLTEnO1xuICAgIGN1cnJWYWxfNDtcbiAgICBjb25zdCBjdXJyVmFsXzU6YW55ID0gX2RlY2wwXzEzLkhlbHB0ZXh0VG9vbHRpcEljb247XG4gICAgY3VyclZhbF81O1xuICB9XG59XG5mdW5jdGlvbiBfVmlld19TYWNJbnB1dENvbXBvbmVudF8xXzAoKTp2b2lkIHtcbiAgdmFyIF9hbnk6YW55ID0gKG51bGwgYXMgYW55KTtcbiAgY29uc3QgY3VyclZhbF8wOmFueSA9IF9kZWNsMF8xMy5kaXNhYmxlbGFiZWw7XG4gIGN1cnJWYWxfMDtcbiAgY29uc3QgY3VyclZhbF8xOmFueSA9ICdjb2wtMTIgY29sLWZvcm0tbGFiZWwgZC1mbGV4JztcbiAgY3VyclZhbF8xO1xuICBjb25zdCBjdXJyVmFsXzI6YW55ID0gWygoX2RlY2wwXzEzLmRpc2FibGVsYWJlbCA9PT0gZmFsc2UpPyBfZGVjbDBfMzcudHJhbnNmb3JtKF9kZWNsMF8xMy5sYWJlbFNpemVzKTogJ3NyLW9ubHknKSxcbiAgICAgIF9kZWNsMF8zNi50cmFuc2Zvcm0oX2RlY2wwXzEzLmNvbXBvbmVudEhlaWdodCldO1xuICBjdXJyVmFsXzI7XG4gIGNvbnN0IGN1cnJWYWxfMzphbnkgPSBpMC7JtWlubGluZUludGVycG9sYXRlKDEsJycsX2RlY2wwXzEzLm5hbWUsJycpO1xuICBjdXJyVmFsXzM7XG4gIGNvbnN0IGN1cnJWYWxfNDphbnkgPSBfZGVjbDBfMTMuaXNyZXF1aXJlZDtcbiAgY3VyclZhbF80O1xuICBjb25zdCBjdXJyVmFsXzU6YW55ID0gX2RlY2wwXzEzLnNwbGl0bGFiZWxhbmRoZWxwdGV4dDtcbiAgY3VyclZhbF81O1xuICBjb25zdCBjdXJyVmFsXzY6YW55ID0gX2RlY2wwXzEzLmxhYmVsO1xuICBjdXJyVmFsXzY7XG4gIGNvbnN0IGN1cnJWYWxfNzphbnkgPSAoKF9kZWNsMF8xMy5oZWxwdGV4dG1vZGUgPT09ICd0b29sdGlwJykgJiYgX2RlY2wwXzEzLmhlbHB0ZXh0KTtcbiAgY3VyclZhbF83O1xuICBjb25zdCBjdXJyVmFsXzg6YW55ID0gJ2NvbC0xMic7XG4gIGN1cnJWYWxfODtcbiAgY29uc3QgY3VyclZhbF85OmFueSA9IFsoKF9kZWNsMF8xMy5kaXNhYmxlbGFiZWwgPT09IGZhbHNlKT8gX2RlY2wwXzM1LnRyYW5zZm9ybShfZGVjbDBfMTMubGFiZWxTaXplcyk6ICcnKV07XG4gIGN1cnJWYWxfOTtcbiAgY29uc3QgY3VyclZhbF8xMDphbnkgPSAoKChfZGVjbDBfMTMuaGVscHRleHRtb2RlID09PSAndG9vbHRpcCcpICYmIF9kZWNsMF8xMy5oZWxwdGV4dCkgJiYgX2RlY2wwXzEzLmRpc2FibGVsYWJlbCk7XG4gIGN1cnJWYWxfMTA7XG4gIGNvbnN0IGN1cnJWYWxfMTE6YW55ID0gKCgoX2RlY2wwXzEzLmhlbHB0ZXh0bW9kZSA9PT0gJ3Rvb2x0aXAnKSAmJiBfZGVjbDBfMTMuaGVscHRleHQpICYmIF9kZWNsMF8xMy5kaXNhYmxlbGFiZWwpO1xuICBjdXJyVmFsXzExO1xuICBjb25zdCBjdXJyVmFsXzEyOmFueSA9ICdmb3JtLWNvbnRyb2wnO1xuICBjdXJyVmFsXzEyO1xuICBjb25zdCBjdXJyVmFsXzEzOmFueSA9IFtfZGVjbDBfMzQudHJhbnNmb3JtKF9kZWNsMF8xMy5jb21wb25lbnRIZWlnaHQpXTtcbiAgY3VyclZhbF8xMztcbiAgY29uc3QgY3VyclZhbF8xNDphbnkgPSBpMC7JtWlubGluZUludGVycG9sYXRlKDEsJycsX2RlY2wwXzEzLm5hbWUsJycpO1xuICBjdXJyVmFsXzE0O1xuICBjb25zdCBjdXJyVmFsXzE1OmFueSA9IGkwLsm1aW5saW5lSW50ZXJwb2xhdGUoMSwnJyxfZGVjbDBfMTMubmFtZSwnJyk7XG4gIGN1cnJWYWxfMTU7XG4gIGNvbnN0IGN1cnJWYWxfMTY6YW55ID0gX2RlY2wwXzEzLnZhbHVlO1xuICBjdXJyVmFsXzE2O1xuICBjb25zdCBjdXJyVmFsXzE3OmFueSA9IF9kZWNsMF8xMy5wbGFjZWhvbGRlcjtcbiAgY3VyclZhbF8xNztcbiAgY29uc3QgY3VyclZhbF8xODphbnkgPSBfZGVjbDBfMTMucmVhZG9ubHk7XG4gIGN1cnJWYWxfMTg7XG4gIGNvbnN0IGN1cnJWYWxfMTk6YW55ID0gX2RlY2wwXzEzLm1heHRleHRsZW5ndGg7XG4gIGN1cnJWYWxfMTk7XG4gIGNvbnN0IGN1cnJWYWxfMjA6YW55ID0gKF9kZWNsMF8xMy5pbnZhbGlkICYmIChfZGVjbDBfMTMuZGlydHkgfHwgX2RlY2wwXzEzLnRvdWNoZWQpKTtcbiAgY3VyclZhbF8yMDtcbiAgY29uc3QgY3VyclZhbF8yMTphbnkgPSBfZGVjbDBfMTMuaXNkaXNhYmxlZDtcbiAgY3VyclZhbF8yMTtcbiAgY29uc3QgY3VyclZhbF8yMjphbnkgPSAoKF9kZWNsMF8xMy5oZWxwdGV4dG1vZGUgPT09ICd0ZXh0JykgJiYgX2RlY2wwXzEzLmhlbHB0ZXh0KTtcbiAgY3VyclZhbF8yMjtcbiAgY29uc3QgY3VyclZhbF8yMzphbnkgPSAoKF9kZWNsMF8xMy5pc2lubGluZWVycm9yZW5hYmxlZCAmJiBfZGVjbDBfMTMuaW52YWxpZCkgJiYgKF9kZWNsMF8xMy5kaXJ0eSB8fCBfZGVjbDBfMTMudG91Y2hlZCkpO1xuICBjdXJyVmFsXzIzO1xuICBjb25zdCBjdXJyVmFsXzI0OmFueSA9ICgoKF9kZWNsMF8xMy5oZWxwdGV4dG1vZGUgPT09ICd0b29sdGlwJykgJiYgX2RlY2wwXzEzLmhlbHB0ZXh0KSAmJiBfZGVjbDBfMTMuZGlzYWJsZWxhYmVsKTtcbiAgY3VyclZhbF8yNDtcbiAgY29uc3QgcGRfMjU6YW55ID0gKCg8YW55Pl9kZWNsMF8xMy5vblRvdWNoKCkpICE9PSBmYWxzZSk7XG4gIGNvbnN0IHBkXzI2OmFueSA9ICgoPGFueT5fZGVjbDBfMTMuc2V0VmFsdWUoX2FueS50YXJnZXQudmFsdWUpKSAhPT0gZmFsc2UpO1xuICBjb25zdCBwZF8yNzphbnkgPSAoKDxhbnk+X2RlY2wwXzEzLm9uS2V5UHJlc3MoX2FueSkpICE9PSBmYWxzZSk7XG59XG5mdW5jdGlvbiBfVmlld19TYWNJbnB1dEFyZWFDb21wb25lbnRfSG9zdF8yXzAoKTp2b2lkIHtcbiAgdmFyIF9hbnk6YW55ID0gKG51bGwgYXMgYW55KTtcbn1cbmZ1bmN0aW9uIF9WaWV3X1NhY0lucHV0QXJlYUNvbXBvbmVudF8yXzEoKTp2b2lkIHtcbiAgaWYgKCgoX2RlY2wwXzE0LmhlbHB0ZXh0bW9kZSA9PT0gJ3Rvb2x0aXAnKSAmJiBfZGVjbDBfMTQuaGVscHRleHQpKSB7XG4gICAgdmFyIF9hbnk6YW55ID0gKG51bGwgYXMgYW55KTtcbiAgICBjb25zdCBjdXJyVmFsXzA6YW55ID0gX2RlY2wwXzE0LmhlbHB0ZXh0O1xuICAgIGN1cnJWYWxfMDtcbiAgICBjb25zdCBjdXJyVmFsXzE6YW55ID0gdHJ1ZTtcbiAgICBjdXJyVmFsXzE7XG4gICAgY29uc3QgY3VyclZhbF8yOmFueSA9ICdtbC0xJztcbiAgICBjdXJyVmFsXzI7XG4gICAgY29uc3QgY3VyclZhbF8zOmFueSA9IF9kZWNsMF8xNC5IZWxwdGV4dFRvb2x0aXBJY29uO1xuICAgIGN1cnJWYWxfMztcbiAgfVxufVxuZnVuY3Rpb24gX1ZpZXdfU2FjSW5wdXRBcmVhQ29tcG9uZW50XzJfMigpOnZvaWQge1xuICBpZiAoKChfZGVjbDBfMTQuaGVscHRleHRtb2RlID09PSAndGV4dCcpICYmIF9kZWNsMF8xNC5oZWxwdGV4dCkpIHtcbiAgICB2YXIgX2FueTphbnkgPSAobnVsbCBhcyBhbnkpO1xuICAgIGNvbnN0IGN1cnJWYWxfMDphbnkgPSBfZGVjbDBfMTQuaGVscHRleHQ7XG4gICAgY3VyclZhbF8wO1xuICB9XG59XG5mdW5jdGlvbiBfVmlld19TYWNJbnB1dEFyZWFDb21wb25lbnRfMl8zKCk6dm9pZCB7XG4gIGlmICgoKF9kZWNsMF8xNC5pc2lubGluZWVycm9yZW5hYmxlZCAmJiBfZGVjbDBfMTQuaW52YWxpZCkgJiYgKF9kZWNsMF8xNC5kaXJ0eSB8fCBfZGVjbDBfMTQudG91Y2hlZCkpKSB7XG4gICAgdmFyIF9hbnk6YW55ID0gKG51bGwgYXMgYW55KTtcbiAgICBjb25zdCBjdXJyVmFsXzA6YW55ID0gX2RlY2wwXzIxLnRyYW5zZm9ybShfZGVjbDBfMTQuR2V0RXJyb3JNZXNzYWdlKCkpO1xuICAgIGN1cnJWYWxfMDtcbiAgfVxufVxuZnVuY3Rpb24gX1ZpZXdfU2FjSW5wdXRBcmVhQ29tcG9uZW50XzJfNCgpOnZvaWQge1xuICBpZiAoKCgoX2RlY2wwXzE0LmhlbHB0ZXh0bW9kZSA9PT0gJ3Rvb2x0aXAnKSAmJiBfZGVjbDBfMTQuaGVscHRleHQpICYmIF9kZWNsMF8xNC5kaXNhYmxlbGFiZWwpKSB7XG4gICAgdmFyIF9hbnk6YW55ID0gKG51bGwgYXMgYW55KTtcbiAgICBjb25zdCBjdXJyVmFsXzA6YW55ID0gJ2Zvcm0tY29udHJvbC1wbGFpbnRleHQgYWxpZ24tc2VsZi10b3AgbWwtMiBtci0xIHctYXV0byc7XG4gICAgY3VyclZhbF8wO1xuICAgIGNvbnN0IGN1cnJWYWxfMTphbnkgPSBbX2RlY2wwXzM0LnRyYW5zZm9ybShfZGVjbDBfMTQuY29tcG9uZW50SGVpZ2h0KV07XG4gICAgY3VyclZhbF8xO1xuICAgIGNvbnN0IGN1cnJWYWxfMjphbnkgPSBfZGVjbDBfMTQuaGVscHRleHQ7XG4gICAgY3VyclZhbF8yO1xuICAgIGNvbnN0IGN1cnJWYWxfMzphbnkgPSB0cnVlO1xuICAgIGN1cnJWYWxfMztcbiAgICBjb25zdCBjdXJyVmFsXzQ6YW55ID0gJ21sLTEnO1xuICAgIGN1cnJWYWxfNDtcbiAgICBjb25zdCBjdXJyVmFsXzU6YW55ID0gX2RlY2wwXzE0LkhlbHB0ZXh0VG9vbHRpcEljb247XG4gICAgY3VyclZhbF81O1xuICB9XG59XG5mdW5jdGlvbiBfVmlld19TYWNJbnB1dEFyZWFDb21wb25lbnRfMl8wKCk6dm9pZCB7XG4gIHZhciBfYW55OmFueSA9IChudWxsIGFzIGFueSk7XG4gIGNvbnN0IGN1cnJWYWxfMDphbnkgPSAnY29sLTEyIGNvbC1mb3JtLWxhYmVsIGQtZmxleCc7XG4gIGN1cnJWYWxfMDtcbiAgY29uc3QgY3VyclZhbF8xOmFueSA9IFsoKF9kZWNsMF8xNC5kaXNhYmxlbGFiZWwgPT09IGZhbHNlKT8gX2RlY2wwXzM3LnRyYW5zZm9ybShfZGVjbDBfMTQubGFiZWxTaXplcyk6ICdzci1vbmx5JyksXG4gICAgICBfZGVjbDBfMzYudHJhbnNmb3JtKF9kZWNsMF8xNC5jb21wb25lbnRIZWlnaHQpXTtcbiAgY3VyclZhbF8xO1xuICBjb25zdCBjdXJyVmFsXzI6YW55ID0gaTAuybVpbmxpbmVJbnRlcnBvbGF0ZSgxLCcnLF9kZWNsMF8xNC5uYW1lLCcnKTtcbiAgY3VyclZhbF8yO1xuICBjb25zdCBjdXJyVmFsXzM6YW55ID0gX2RlY2wwXzE0LmlzcmVxdWlyZWQ7XG4gIGN1cnJWYWxfMztcbiAgY29uc3QgY3VyclZhbF80OmFueSA9IF9kZWNsMF8xNC5zcGxpdGxhYmVsYW5kaGVscHRleHQ7XG4gIGN1cnJWYWxfNDtcbiAgY29uc3QgY3VyclZhbF81OmFueSA9IF9kZWNsMF8xNC5sYWJlbDtcbiAgY3VyclZhbF81O1xuICBjb25zdCBjdXJyVmFsXzY6YW55ID0gKChfZGVjbDBfMTQuaGVscHRleHRtb2RlID09PSAndG9vbHRpcCcpICYmIF9kZWNsMF8xNC5oZWxwdGV4dCk7XG4gIGN1cnJWYWxfNjtcbiAgY29uc3QgY3VyclZhbF83OmFueSA9ICdjb2wtMTInO1xuICBjdXJyVmFsXzc7XG4gIGNvbnN0IGN1cnJWYWxfODphbnkgPSBbKChfZGVjbDBfMTQuZGlzYWJsZWxhYmVsID09PSBmYWxzZSk/IF9kZWNsMF8zNS50cmFuc2Zvcm0oX2RlY2wwXzE0LmxhYmVsU2l6ZXMpOiAnJyldO1xuICBjdXJyVmFsXzg7XG4gIGNvbnN0IGN1cnJWYWxfOTphbnkgPSAoKChfZGVjbDBfMTQuaGVscHRleHRtb2RlID09PSAndG9vbHRpcCcpICYmIF9kZWNsMF8xNC5oZWxwdGV4dCkgJiYgX2RlY2wwXzE0LmRpc2FibGVsYWJlbCk7XG4gIGN1cnJWYWxfOTtcbiAgY29uc3QgY3VyclZhbF8xMDphbnkgPSAoKChfZGVjbDBfMTQuaGVscHRleHRtb2RlID09PSAndG9vbHRpcCcpICYmIF9kZWNsMF8xNC5oZWxwdGV4dCkgJiYgX2RlY2wwXzE0LmRpc2FibGVsYWJlbCk7XG4gIGN1cnJWYWxfMTA7XG4gIGNvbnN0IGN1cnJWYWxfMTE6YW55ID0gJ2Zvcm0tY29udHJvbCc7XG4gIGN1cnJWYWxfMTE7XG4gIGNvbnN0IGN1cnJWYWxfMTI6YW55ID0gW19kZWNsMF8zNC50cmFuc2Zvcm0oX2RlY2wwXzE0LmNvbXBvbmVudEhlaWdodCldO1xuICBjdXJyVmFsXzEyO1xuICBjb25zdCBjdXJyVmFsXzEzOmFueSA9IGkwLsm1aW5saW5lSW50ZXJwb2xhdGUoMSwnJyxfZGVjbDBfMTQubmFtZSwnJyk7XG4gIGN1cnJWYWxfMTM7XG4gIGNvbnN0IGN1cnJWYWxfMTQ6YW55ID0gaTAuybVpbmxpbmVJbnRlcnBvbGF0ZSgxLCcnLF9kZWNsMF8xNC5uYW1lLCcnKTtcbiAgY3VyclZhbF8xNDtcbiAgY29uc3QgY3VyclZhbF8xNTphbnkgPSBfZGVjbDBfMTQudmFsdWU7XG4gIGN1cnJWYWxfMTU7XG4gIGNvbnN0IGN1cnJWYWxfMTY6YW55ID0gX2RlY2wwXzE0LnBsYWNlaG9sZGVyO1xuICBjdXJyVmFsXzE2O1xuICBjb25zdCBjdXJyVmFsXzE3OmFueSA9IF9kZWNsMF8xNC5yb3dzO1xuICBjdXJyVmFsXzE3O1xuICBjb25zdCBjdXJyVmFsXzE4OmFueSA9IChfZGVjbDBfMTQuaW52YWxpZCAmJiAoX2RlY2wwXzE0LmRpcnR5IHx8IF9kZWNsMF8xNC50b3VjaGVkKSk7XG4gIGN1cnJWYWxfMTg7XG4gIGNvbnN0IGN1cnJWYWxfMTk6YW55ID0gX2RlY2wwXzE0LmlzZGlzYWJsZWQ7XG4gIGN1cnJWYWxfMTk7XG4gIGNvbnN0IGN1cnJWYWxfMjA6YW55ID0gX2RlY2wwXzE0Lm1heHRleHRsZW5ndGg7XG4gIGN1cnJWYWxfMjA7XG4gIGNvbnN0IGN1cnJWYWxfMjE6YW55ID0gX2RlY2wwXzE0LnJlYWRvbmx5O1xuICBjdXJyVmFsXzIxO1xuICBjb25zdCBjdXJyVmFsXzIyOmFueSA9ICgoX2RlY2wwXzE0LmhlbHB0ZXh0bW9kZSA9PT0gJ3RleHQnKSAmJiBfZGVjbDBfMTQuaGVscHRleHQpO1xuICBjdXJyVmFsXzIyO1xuICBjb25zdCBjdXJyVmFsXzIzOmFueSA9ICgoX2RlY2wwXzE0LmlzaW5saW5lZXJyb3JlbmFibGVkICYmIF9kZWNsMF8xNC5pbnZhbGlkKSAmJiAoX2RlY2wwXzE0LmRpcnR5IHx8IF9kZWNsMF8xNC50b3VjaGVkKSk7XG4gIGN1cnJWYWxfMjM7XG4gIGNvbnN0IGN1cnJWYWxfMjQ6YW55ID0gKCgoX2RlY2wwXzE0LmhlbHB0ZXh0bW9kZSA9PT0gJ3Rvb2x0aXAnKSAmJiBfZGVjbDBfMTQuaGVscHRleHQpICYmIF9kZWNsMF8xNC5kaXNhYmxlbGFiZWwpO1xuICBjdXJyVmFsXzI0O1xuICBjb25zdCBwZF8yNTphbnkgPSAoKDxhbnk+X2RlY2wwXzE0Lm9uVG91Y2goKSkgIT09IGZhbHNlKTtcbiAgY29uc3QgcGRfMjY6YW55ID0gKCg8YW55Pl9kZWNsMF8xNC5zZXRWYWx1ZShfYW55LnRhcmdldC52YWx1ZSkpICE9PSBmYWxzZSk7XG4gIGNvbnN0IHBkXzI3OmFueSA9ICgoPGFueT5fZGVjbDBfMTQub25LZXlQcmVzcyhfYW55KSkgIT09IGZhbHNlKTtcbn1cbmZ1bmN0aW9uIF9WaWV3X1NhY0lucHV0Q3VycmVuY3lDb21wb25lbnRfSG9zdF8zXzAoKTp2b2lkIHtcbiAgdmFyIF9hbnk6YW55ID0gKG51bGwgYXMgYW55KTtcbn1cbmZ1bmN0aW9uIF9WaWV3X1NhY0lucHV0Q3VycmVuY3lDb21wb25lbnRfM18xKCk6dm9pZCB7XG4gIGlmICgoKF9kZWNsMF8xNS5oZWxwdGV4dG1vZGUgPT09ICd0b29sdGlwJykgJiYgX2RlY2wwXzE1LmhlbHB0ZXh0KSkge1xuICAgIHZhciBfYW55OmFueSA9IChudWxsIGFzIGFueSk7XG4gICAgY29uc3QgY3VyclZhbF8wOmFueSA9IF9kZWNsMF8xNS5oZWxwdGV4dDtcbiAgICBjdXJyVmFsXzA7XG4gICAgY29uc3QgY3VyclZhbF8xOmFueSA9IHRydWU7XG4gICAgY3VyclZhbF8xO1xuICAgIGNvbnN0IGN1cnJWYWxfMjphbnkgPSAnbWwtMSc7XG4gICAgY3VyclZhbF8yO1xuICAgIGNvbnN0IGN1cnJWYWxfMzphbnkgPSBfZGVjbDBfMTUuSGVscHRleHRUb29sdGlwSWNvbjtcbiAgICBjdXJyVmFsXzM7XG4gIH1cbn1cbmZ1bmN0aW9uIF9WaWV3X1NhY0lucHV0Q3VycmVuY3lDb21wb25lbnRfM18yKCk6dm9pZCB7XG4gIGlmICgoKF9kZWNsMF8xNS5pc2lubGluZWVycm9yZW5hYmxlZCAmJiBfZGVjbDBfMTUuaW52YWxpZCkgJiYgKF9kZWNsMF8xNS5kaXJ0eSB8fCBfZGVjbDBfMTUudG91Y2hlZCkpKSB7XG4gICAgdmFyIF9hbnk6YW55ID0gKG51bGwgYXMgYW55KTtcbiAgICBjb25zdCBjdXJyVmFsXzA6YW55ID0gX2RlY2wwXzIxLnRyYW5zZm9ybShfZGVjbDBfMTUuR2V0RXJyb3JNZXNzYWdlKCkpO1xuICAgIGN1cnJWYWxfMDtcbiAgfVxufVxuZnVuY3Rpb24gX1ZpZXdfU2FjSW5wdXRDdXJyZW5jeUNvbXBvbmVudF8zXzMoKTp2b2lkIHtcbiAgaWYgKCgoX2RlY2wwXzE1LmhlbHB0ZXh0bW9kZSA9PT0gJ3RleHQnKSAmJiBfZGVjbDBfMTUuaGVscHRleHQpKSB7XG4gICAgdmFyIF9hbnk6YW55ID0gKG51bGwgYXMgYW55KTtcbiAgICBjb25zdCBjdXJyVmFsXzA6YW55ID0gX2RlY2wwXzE1LmhlbHB0ZXh0O1xuICAgIGN1cnJWYWxfMDtcbiAgfVxufVxuZnVuY3Rpb24gX1ZpZXdfU2FjSW5wdXRDdXJyZW5jeUNvbXBvbmVudF8zXzQoKTp2b2lkIHtcbiAgaWYgKCgoKF9kZWNsMF8xNS5oZWxwdGV4dG1vZGUgPT09ICd0b29sdGlwJykgJiYgX2RlY2wwXzE1LmhlbHB0ZXh0KSAmJiBfZGVjbDBfMTUuZGlzYWJsZWxhYmVsKSkge1xuICAgIHZhciBfYW55OmFueSA9IChudWxsIGFzIGFueSk7XG4gICAgY29uc3QgY3VyclZhbF8wOmFueSA9ICdmb3JtLWNvbnRyb2wtcGxhaW50ZXh0IGFsaWduLXNlbGYtdG9wIG1sLTIgbXItMSB3LWF1dG8nO1xuICAgIGN1cnJWYWxfMDtcbiAgICBjb25zdCBjdXJyVmFsXzE6YW55ID0gW19kZWNsMF8zNC50cmFuc2Zvcm0oX2RlY2wwXzE1LmNvbXBvbmVudEhlaWdodCldO1xuICAgIGN1cnJWYWxfMTtcbiAgICBjb25zdCBjdXJyVmFsXzI6YW55ID0gX2RlY2wwXzE1LmhlbHB0ZXh0O1xuICAgIGN1cnJWYWxfMjtcbiAgICBjb25zdCBjdXJyVmFsXzM6YW55ID0gdHJ1ZTtcbiAgICBjdXJyVmFsXzM7XG4gICAgY29uc3QgY3VyclZhbF80OmFueSA9ICdtbC0xJztcbiAgICBjdXJyVmFsXzQ7XG4gICAgY29uc3QgY3VyclZhbF81OmFueSA9IF9kZWNsMF8xNS5IZWxwdGV4dFRvb2x0aXBJY29uO1xuICAgIGN1cnJWYWxfNTtcbiAgfVxufVxuZnVuY3Rpb24gX1ZpZXdfU2FjSW5wdXRDdXJyZW5jeUNvbXBvbmVudF8zXzAoKTp2b2lkIHtcbiAgdmFyIF9hbnk6YW55ID0gKG51bGwgYXMgYW55KTtcbiAgY29uc3QgY3VyclZhbF8wOmFueSA9IF9kZWNsMF8xNS5kaXNhYmxlbGFiZWw7XG4gIGN1cnJWYWxfMDtcbiAgY29uc3QgY3VyclZhbF8xOmFueSA9ICdjb2wtMTIgY29sLWZvcm0tbGFiZWwgZC1mbGV4JztcbiAgY3VyclZhbF8xO1xuICBjb25zdCBjdXJyVmFsXzI6YW55ID0gWygoX2RlY2wwXzE1LmRpc2FibGVsYWJlbCA9PT0gZmFsc2UpPyBfZGVjbDBfMzcudHJhbnNmb3JtKF9kZWNsMF8xNS5sYWJlbFNpemVzKTogJ3NyLW9ubHknKSxcbiAgICAgIF9kZWNsMF8zNi50cmFuc2Zvcm0oX2RlY2wwXzE1LmNvbXBvbmVudEhlaWdodCldO1xuICBjdXJyVmFsXzI7XG4gIGNvbnN0IGN1cnJWYWxfMzphbnkgPSBpMC7JtWlubGluZUludGVycG9sYXRlKDEsJycsX2RlY2wwXzE1Lm5hbWUsJycpO1xuICBjdXJyVmFsXzM7XG4gIGNvbnN0IGN1cnJWYWxfNDphbnkgPSBfZGVjbDBfMTUuaXNyZXF1aXJlZDtcbiAgY3VyclZhbF80O1xuICBjb25zdCBjdXJyVmFsXzU6YW55ID0gX2RlY2wwXzE1LnNwbGl0bGFiZWxhbmRoZWxwdGV4dDtcbiAgY3VyclZhbF81O1xuICBjb25zdCBjdXJyVmFsXzY6YW55ID0gX2RlY2wwXzE1LmxhYmVsO1xuICBjdXJyVmFsXzY7XG4gIGNvbnN0IGN1cnJWYWxfNzphbnkgPSAoKF9kZWNsMF8xNS5oZWxwdGV4dG1vZGUgPT09ICd0b29sdGlwJykgJiYgX2RlY2wwXzE1LmhlbHB0ZXh0KTtcbiAgY3VyclZhbF83O1xuICBjb25zdCBjdXJyVmFsXzg6YW55ID0gJ2NvbC0xMic7XG4gIGN1cnJWYWxfODtcbiAgY29uc3QgY3VyclZhbF85OmFueSA9IFsoKF9kZWNsMF8xNS5kaXNhYmxlbGFiZWwgPT09IGZhbHNlKT8gX2RlY2wwXzM1LnRyYW5zZm9ybShfZGVjbDBfMTUubGFiZWxTaXplcyk6ICcnKV07XG4gIGN1cnJWYWxfOTtcbiAgY29uc3QgY3VyclZhbF8xMDphbnkgPSAoKChfZGVjbDBfMTUuaGVscHRleHRtb2RlID09PSAndG9vbHRpcCcpICYmIF9kZWNsMF8xNS5oZWxwdGV4dCkgJiYgX2RlY2wwXzE1LmRpc2FibGVsYWJlbCk7XG4gIGN1cnJWYWxfMTA7XG4gIGNvbnN0IGN1cnJWYWxfMTE6YW55ID0gKCgoX2RlY2wwXzE1LmhlbHB0ZXh0bW9kZSA9PT0gJ3Rvb2x0aXAnKSAmJiBfZGVjbDBfMTUuaGVscHRleHQpICYmIF9kZWNsMF8xNS5kaXNhYmxlbGFiZWwpO1xuICBjdXJyVmFsXzExO1xuICBjb25zdCBjdXJyVmFsXzEyOmFueSA9IChfZGVjbDBfMTUuY29tcG9uZW50SGVpZ2h0ID09PSBfZGVjbDBfMTUuQ29udHJvbEhlaWdodC5TbWFsbCk7XG4gIGN1cnJWYWxfMTI7XG4gIGNvbnN0IGN1cnJWYWxfMTM6YW55ID0gKF9kZWNsMF8xNS5jb21wb25lbnRIZWlnaHQgPT09IF9kZWNsMF8xNS5Db250cm9sSGVpZ2h0LkxhcmdlKTtcbiAgY3VyclZhbF8xMztcbiAgY29uc3QgY3VyclZhbF8xNDphbnkgPSAoKF9kZWNsMF8xNS5pc2lubGluZWVycm9yZW5hYmxlZCAmJiBfZGVjbDBfMTUuaW52YWxpZCkgJiYgKF9kZWNsMF8xNS5kaXJ0eSB8fCBfZGVjbDBfMTUudG91Y2hlZCkpO1xuICBjdXJyVmFsXzE0O1xuICBjb25zdCBjdXJyVmFsXzE1OmFueSA9ICdmb3JtLWNvbnRyb2wnO1xuICBjdXJyVmFsXzE1O1xuICBjb25zdCBjdXJyVmFsXzE2OmFueSA9IFtfZGVjbDBfMzQudHJhbnNmb3JtKF9kZWNsMF8xNS5jb21wb25lbnRIZWlnaHQpXTtcbiAgY3VyclZhbF8xNjtcbiAgY29uc3QgY3VyclZhbF8xNzphbnkgPSBpMC7JtWlubGluZUludGVycG9sYXRlKDEsJycsX2RlY2wwXzE1Lm5hbWUsJycpO1xuICBjdXJyVmFsXzE3O1xuICBjb25zdCBjdXJyVmFsXzE4OmFueSA9IGkwLsm1aW5saW5lSW50ZXJwb2xhdGUoMSwnJyxfZGVjbDBfMTUubmFtZSwnJyk7XG4gIGN1cnJWYWxfMTg7XG4gIGNvbnN0IGN1cnJWYWxfMTk6YW55ID0gX2RlY2wwXzE1LnZhbHVlO1xuICBjdXJyVmFsXzE5O1xuICBjb25zdCBjdXJyVmFsXzIwOmFueSA9IF9kZWNsMF8xNS5wbGFjZWhvbGRlcjtcbiAgY3VyclZhbF8yMDtcbiAgY29uc3QgY3VyclZhbF8yMTphbnkgPSBfZGVjbDBfMTUuaXNkaXNhYmxlZDtcbiAgY3VyclZhbF8yMTtcbiAgY29uc3QgY3VyclZhbF8yMjphbnkgPSBfZGVjbDBfMTUucmVhZG9ubHk7XG4gIGN1cnJWYWxfMjI7XG4gIGNvbnN0IGN1cnJWYWxfMjM6YW55ID0gKF9kZWNsMF8xNS5pbnZhbGlkICYmIChfZGVjbDBfMTUuZGlydHkgfHwgX2RlY2wwXzE1LnRvdWNoZWQpKTtcbiAgY3VyclZhbF8yMztcbiAgY29uc3QgY3VyclZhbF8yNDphbnkgPSBfZGVjbDBfMTUuY3VycmVuY3k7XG4gIGN1cnJWYWxfMjQ7XG4gIGNvbnN0IGN1cnJWYWxfMjU6YW55ID0gKChfZGVjbDBfMTUuaXNpbmxpbmVlcnJvcmVuYWJsZWQgJiYgX2RlY2wwXzE1LmludmFsaWQpICYmIChfZGVjbDBfMTUuZGlydHkgfHwgX2RlY2wwXzE1LnRvdWNoZWQpKTtcbiAgY3VyclZhbF8yNTtcbiAgY29uc3QgY3VyclZhbF8yNjphbnkgPSAoKF9kZWNsMF8xNS5oZWxwdGV4dG1vZGUgPT09ICd0ZXh0JykgJiYgX2RlY2wwXzE1LmhlbHB0ZXh0KTtcbiAgY3VyclZhbF8yNjtcbiAgY29uc3QgY3VyclZhbF8yNzphbnkgPSAoKChfZGVjbDBfMTUuaGVscHRleHRtb2RlID09PSAndG9vbHRpcCcpICYmIF9kZWNsMF8xNS5oZWxwdGV4dCkgJiYgX2RlY2wwXzE1LmRpc2FibGVsYWJlbCk7XG4gIGN1cnJWYWxfMjc7XG4gIGNvbnN0IHBkXzI4OmFueSA9ICgoPGFueT5fZGVjbDBfMTUub25Ub3VjaCgpKSAhPT0gZmFsc2UpO1xuICBjb25zdCBwZF8yOTphbnkgPSAoKDxhbnk+X2RlY2wwXzE1LnNldFZhbHVlKF9hbnkudGFyZ2V0LnZhbHVlKSkgIT09IGZhbHNlKTtcbiAgY29uc3QgcGRfMzA6YW55ID0gKCg8YW55Pl9kZWNsMF8xNS5vbktleVByZXNzKF9hbnkpKSAhPT0gZmFsc2UpO1xufVxuZnVuY3Rpb24gX1ZpZXdfU2FjSW5wdXREZWNpbWFsQ29tcG9uZW50X0hvc3RfNF8wKCk6dm9pZCB7XG4gIHZhciBfYW55OmFueSA9IChudWxsIGFzIGFueSk7XG59XG5mdW5jdGlvbiBfVmlld19TYWNJbnB1dERlY2ltYWxDb21wb25lbnRfNF8xKCk6dm9pZCB7XG4gIGlmICgoKF9kZWNsMF8xNi5oZWxwdGV4dG1vZGUgPT09ICd0b29sdGlwJykgJiYgX2RlY2wwXzE2LmhlbHB0ZXh0KSkge1xuICAgIHZhciBfYW55OmFueSA9IChudWxsIGFzIGFueSk7XG4gICAgY29uc3QgY3VyclZhbF8wOmFueSA9IF9kZWNsMF8xNi5oZWxwdGV4dDtcbiAgICBjdXJyVmFsXzA7XG4gICAgY29uc3QgY3VyclZhbF8xOmFueSA9IHRydWU7XG4gICAgY3VyclZhbF8xO1xuICAgIGNvbnN0IGN1cnJWYWxfMjphbnkgPSAnbWwtMSc7XG4gICAgY3VyclZhbF8yO1xuICAgIGNvbnN0IGN1cnJWYWxfMzphbnkgPSBfZGVjbDBfMTYuSGVscHRleHRUb29sdGlwSWNvbjtcbiAgICBjdXJyVmFsXzM7XG4gIH1cbn1cbmZ1bmN0aW9uIF9WaWV3X1NhY0lucHV0RGVjaW1hbENvbXBvbmVudF80XzIoKTp2b2lkIHtcbiAgaWYgKCgoX2RlY2wwXzE2LmhlbHB0ZXh0bW9kZSA9PT0gJ3RleHQnKSAmJiBfZGVjbDBfMTYuaGVscHRleHQpKSB7XG4gICAgdmFyIF9hbnk6YW55ID0gKG51bGwgYXMgYW55KTtcbiAgICBjb25zdCBjdXJyVmFsXzA6YW55ID0gX2RlY2wwXzE2LmhlbHB0ZXh0O1xuICAgIGN1cnJWYWxfMDtcbiAgfVxufVxuZnVuY3Rpb24gX1ZpZXdfU2FjSW5wdXREZWNpbWFsQ29tcG9uZW50XzRfMygpOnZvaWQge1xuICBpZiAoKChfZGVjbDBfMTYuaXNpbmxpbmVlcnJvcmVuYWJsZWQgJiYgX2RlY2wwXzE2LmludmFsaWQpICYmIChfZGVjbDBfMTYuZGlydHkgfHwgX2RlY2wwXzE2LnRvdWNoZWQpKSkge1xuICAgIHZhciBfYW55OmFueSA9IChudWxsIGFzIGFueSk7XG4gICAgY29uc3QgY3VyclZhbF8wOmFueSA9IF9kZWNsMF8yMS50cmFuc2Zvcm0oX2RlY2wwXzE2LkdldEVycm9yTWVzc2FnZSgpKTtcbiAgICBjdXJyVmFsXzA7XG4gIH1cbn1cbmZ1bmN0aW9uIF9WaWV3X1NhY0lucHV0RGVjaW1hbENvbXBvbmVudF80XzQoKTp2b2lkIHtcbiAgaWYgKCgoKF9kZWNsMF8xNi5oZWxwdGV4dG1vZGUgPT09ICd0b29sdGlwJykgJiYgX2RlY2wwXzE2LmhlbHB0ZXh0KSAmJiBfZGVjbDBfMTYuZGlzYWJsZWxhYmVsKSkge1xuICAgIHZhciBfYW55OmFueSA9IChudWxsIGFzIGFueSk7XG4gICAgY29uc3QgY3VyclZhbF8wOmFueSA9ICdmb3JtLWNvbnRyb2wtcGxhaW50ZXh0IGFsaWduLXNlbGYtdG9wIG1sLTIgbXItMSB3LWF1dG8nO1xuICAgIGN1cnJWYWxfMDtcbiAgICBjb25zdCBjdXJyVmFsXzE6YW55ID0gW19kZWNsMF8zNC50cmFuc2Zvcm0oX2RlY2wwXzE2LmNvbXBvbmVudEhlaWdodCldO1xuICAgIGN1cnJWYWxfMTtcbiAgICBjb25zdCBjdXJyVmFsXzI6YW55ID0gX2RlY2wwXzE2LmhlbHB0ZXh0O1xuICAgIGN1cnJWYWxfMjtcbiAgICBjb25zdCBjdXJyVmFsXzM6YW55ID0gdHJ1ZTtcbiAgICBjdXJyVmFsXzM7XG4gICAgY29uc3QgY3VyclZhbF80OmFueSA9ICdtbC0xJztcbiAgICBjdXJyVmFsXzQ7XG4gICAgY29uc3QgY3VyclZhbF81OmFueSA9IF9kZWNsMF8xNi5IZWxwdGV4dFRvb2x0aXBJY29uO1xuICAgIGN1cnJWYWxfNTtcbiAgfVxufVxuZnVuY3Rpb24gX1ZpZXdfU2FjSW5wdXREZWNpbWFsQ29tcG9uZW50XzRfMCgpOnZvaWQge1xuICB2YXIgX2FueTphbnkgPSAobnVsbCBhcyBhbnkpO1xuICBjb25zdCBjdXJyVmFsXzA6YW55ID0gX2RlY2wwXzE2LmRpc2FibGVsYWJlbDtcbiAgY3VyclZhbF8wO1xuICBjb25zdCBjdXJyVmFsXzE6YW55ID0gJ2NvbC0xMiBjb2wtZm9ybS1sYWJlbCBkLWZsZXgnO1xuICBjdXJyVmFsXzE7XG4gIGNvbnN0IGN1cnJWYWxfMjphbnkgPSBbKChfZGVjbDBfMTYuZGlzYWJsZWxhYmVsID09PSBmYWxzZSk/IF9kZWNsMF8zNy50cmFuc2Zvcm0oX2RlY2wwXzE2LmxhYmVsU2l6ZXMpOiAnc3Itb25seScpLFxuICAgICAgX2RlY2wwXzM2LnRyYW5zZm9ybShfZGVjbDBfMTYuY29tcG9uZW50SGVpZ2h0KV07XG4gIGN1cnJWYWxfMjtcbiAgY29uc3QgY3VyclZhbF8zOmFueSA9IGkwLsm1aW5saW5lSW50ZXJwb2xhdGUoMSwnJyxfZGVjbDBfMTYubmFtZSwnJyk7XG4gIGN1cnJWYWxfMztcbiAgY29uc3QgY3VyclZhbF80OmFueSA9IF9kZWNsMF8xNi5pc3JlcXVpcmVkO1xuICBjdXJyVmFsXzQ7XG4gIGNvbnN0IGN1cnJWYWxfNTphbnkgPSBfZGVjbDBfMTYuc3BsaXRsYWJlbGFuZGhlbHB0ZXh0O1xuICBjdXJyVmFsXzU7XG4gIGNvbnN0IGN1cnJWYWxfNjphbnkgPSBfZGVjbDBfMTYubGFiZWw7XG4gIGN1cnJWYWxfNjtcbiAgY29uc3QgY3VyclZhbF83OmFueSA9ICgoX2RlY2wwXzE2LmhlbHB0ZXh0bW9kZSA9PT0gJ3Rvb2x0aXAnKSAmJiBfZGVjbDBfMTYuaGVscHRleHQpO1xuICBjdXJyVmFsXzc7XG4gIGNvbnN0IGN1cnJWYWxfODphbnkgPSAnY29sLTEyJztcbiAgY3VyclZhbF84O1xuICBjb25zdCBjdXJyVmFsXzk6YW55ID0gWygoX2RlY2wwXzE2LmRpc2FibGVsYWJlbCA9PT0gZmFsc2UpPyBfZGVjbDBfMzUudHJhbnNmb3JtKF9kZWNsMF8xNi5sYWJlbFNpemVzKTogJycpXTtcbiAgY3VyclZhbF85O1xuICBjb25zdCBjdXJyVmFsXzEwOmFueSA9ICgoKF9kZWNsMF8xNi5oZWxwdGV4dG1vZGUgPT09ICd0b29sdGlwJykgJiYgX2RlY2wwXzE2LmhlbHB0ZXh0KSAmJiBfZGVjbDBfMTYuZGlzYWJsZWxhYmVsKTtcbiAgY3VyclZhbF8xMDtcbiAgY29uc3QgY3VyclZhbF8xMTphbnkgPSAoKChfZGVjbDBfMTYuaGVscHRleHRtb2RlID09PSAndG9vbHRpcCcpICYmIF9kZWNsMF8xNi5oZWxwdGV4dCkgJiYgX2RlY2wwXzE2LmRpc2FibGVsYWJlbCk7XG4gIGN1cnJWYWxfMTE7XG4gIGNvbnN0IGN1cnJWYWxfMTI6YW55ID0gJ2Zvcm0tY29udHJvbCc7XG4gIGN1cnJWYWxfMTI7XG4gIGNvbnN0IGN1cnJWYWxfMTM6YW55ID0gW19kZWNsMF8zNC50cmFuc2Zvcm0oX2RlY2wwXzE2LmNvbXBvbmVudEhlaWdodCldO1xuICBjdXJyVmFsXzEzO1xuICBjb25zdCBjdXJyVmFsXzE0OmFueSA9IGkwLsm1aW5saW5lSW50ZXJwb2xhdGUoMSwnJyxfZGVjbDBfMTYubmFtZSwnJyk7XG4gIGN1cnJWYWxfMTQ7XG4gIGNvbnN0IGN1cnJWYWxfMTU6YW55ID0gaTAuybVpbmxpbmVJbnRlcnBvbGF0ZSgxLCcnLF9kZWNsMF8xNi5uYW1lLCcnKTtcbiAgY3VyclZhbF8xNTtcbiAgY29uc3QgY3VyclZhbF8xNjphbnkgPSBfZGVjbDBfMTYudmFsdWU7XG4gIGN1cnJWYWxfMTY7XG4gIGNvbnN0IGN1cnJWYWxfMTc6YW55ID0gX2RlY2wwXzE2LnBsYWNlaG9sZGVyO1xuICBjdXJyVmFsXzE3O1xuICBjb25zdCBjdXJyVmFsXzE4OmFueSA9IF9kZWNsMF8xNi5yZWFkb25seTtcbiAgY3VyclZhbF8xODtcbiAgY29uc3QgY3VyclZhbF8xOTphbnkgPSBfZGVjbDBfMTYuaXNkaXNhYmxlZDtcbiAgY3VyclZhbF8xOTtcbiAgY29uc3QgY3VyclZhbF8yMDphbnkgPSAoX2RlY2wwXzE2LmludmFsaWQgJiYgKF9kZWNsMF8xNi5kaXJ0eSB8fCBfZGVjbDBfMTYudG91Y2hlZCkpO1xuICBjdXJyVmFsXzIwO1xuICBjb25zdCBjdXJyVmFsXzIxOmFueSA9ICgoX2RlY2wwXzE2LmhlbHB0ZXh0bW9kZSA9PT0gJ3RleHQnKSAmJiBfZGVjbDBfMTYuaGVscHRleHQpO1xuICBjdXJyVmFsXzIxO1xuICBjb25zdCBjdXJyVmFsXzIyOmFueSA9ICgoX2RlY2wwXzE2LmlzaW5saW5lZXJyb3JlbmFibGVkICYmIF9kZWNsMF8xNi5pbnZhbGlkKSAmJiAoX2RlY2wwXzE2LmRpcnR5IHx8IF9kZWNsMF8xNi50b3VjaGVkKSk7XG4gIGN1cnJWYWxfMjI7XG4gIGNvbnN0IGN1cnJWYWxfMjM6YW55ID0gKCgoX2RlY2wwXzE2LmhlbHB0ZXh0bW9kZSA9PT0gJ3Rvb2x0aXAnKSAmJiBfZGVjbDBfMTYuaGVscHRleHQpICYmIF9kZWNsMF8xNi5kaXNhYmxlbGFiZWwpO1xuICBjdXJyVmFsXzIzO1xuICBjb25zdCBwZF8yNDphbnkgPSAoKDxhbnk+X2RlY2wwXzE2Lm9uVG91Y2goKSkgIT09IGZhbHNlKTtcbiAgY29uc3QgcGRfMjU6YW55ID0gKCg8YW55Pl9kZWNsMF8xNi5zZXRWYWx1ZShfYW55LnRhcmdldC52YWx1ZSkpICE9PSBmYWxzZSk7XG4gIGNvbnN0IHBkXzI2OmFueSA9ICgoPGFueT5fZGVjbDBfMTYub25LZXlQcmVzcyhfYW55KSkgIT09IGZhbHNlKTtcbn1cbmZ1bmN0aW9uIF9WaWV3X1NhY0lucHV0RW1haWxDb21wb25lbnRfSG9zdF81XzAoKTp2b2lkIHtcbiAgdmFyIF9hbnk6YW55ID0gKG51bGwgYXMgYW55KTtcbn1cbmZ1bmN0aW9uIF9WaWV3X1NhY0lucHV0RW1haWxDb21wb25lbnRfNV8xKCk6dm9pZCB7XG4gIGlmICgoKF9kZWNsMF8xNy5oZWxwdGV4dG1vZGUgPT09ICd0b29sdGlwJykgJiYgX2RlY2wwXzE3LmhlbHB0ZXh0KSkge1xuICAgIHZhciBfYW55OmFueSA9IChudWxsIGFzIGFueSk7XG4gICAgY29uc3QgY3VyclZhbF8wOmFueSA9IF9kZWNsMF8xNy5oZWxwdGV4dDtcbiAgICBjdXJyVmFsXzA7XG4gICAgY29uc3QgY3VyclZhbF8xOmFueSA9IHRydWU7XG4gICAgY3VyclZhbF8xO1xuICAgIGNvbnN0IGN1cnJWYWxfMjphbnkgPSAnbWwtMSc7XG4gICAgY3VyclZhbF8yO1xuICAgIGNvbnN0IGN1cnJWYWxfMzphbnkgPSBfZGVjbDBfMTcuSGVscHRleHRUb29sdGlwSWNvbjtcbiAgICBjdXJyVmFsXzM7XG4gIH1cbn1cbmZ1bmN0aW9uIF9WaWV3X1NhY0lucHV0RW1haWxDb21wb25lbnRfNV8yKCk6dm9pZCB7XG4gIGlmICgoKF9kZWNsMF8xNy5pc2lubGluZWVycm9yZW5hYmxlZCAmJiBfZGVjbDBfMTcuaW52YWxpZCkgJiYgKF9kZWNsMF8xNy5kaXJ0eSB8fCBfZGVjbDBfMTcudG91Y2hlZCkpKSB7XG4gICAgdmFyIF9hbnk6YW55ID0gKG51bGwgYXMgYW55KTtcbiAgICBjb25zdCBjdXJyVmFsXzA6YW55ID0gX2RlY2wwXzIxLnRyYW5zZm9ybShfZGVjbDBfMTcuR2V0RXJyb3JNZXNzYWdlKCkpO1xuICAgIGN1cnJWYWxfMDtcbiAgfVxufVxuZnVuY3Rpb24gX1ZpZXdfU2FjSW5wdXRFbWFpbENvbXBvbmVudF81XzMoKTp2b2lkIHtcbiAgaWYgKCgoX2RlY2wwXzE3LmhlbHB0ZXh0bW9kZSA9PT0gJ3RleHQnKSAmJiBfZGVjbDBfMTcuaGVscHRleHQpKSB7XG4gICAgdmFyIF9hbnk6YW55ID0gKG51bGwgYXMgYW55KTtcbiAgICBjb25zdCBjdXJyVmFsXzA6YW55ID0gX2RlY2wwXzE3LmhlbHB0ZXh0O1xuICAgIGN1cnJWYWxfMDtcbiAgfVxufVxuZnVuY3Rpb24gX1ZpZXdfU2FjSW5wdXRFbWFpbENvbXBvbmVudF81XzQoKTp2b2lkIHtcbiAgaWYgKCgoKF9kZWNsMF8xNy5oZWxwdGV4dG1vZGUgPT09ICd0b29sdGlwJykgJiYgX2RlY2wwXzE3LmhlbHB0ZXh0KSAmJiBfZGVjbDBfMTcuZGlzYWJsZWxhYmVsKSkge1xuICAgIHZhciBfYW55OmFueSA9IChudWxsIGFzIGFueSk7XG4gICAgY29uc3QgY3VyclZhbF8wOmFueSA9ICdmb3JtLWNvbnRyb2wtcGxhaW50ZXh0IGFsaWduLXNlbGYtdG9wIG1sLTIgbXItMSB3LWF1dG8nO1xuICAgIGN1cnJWYWxfMDtcbiAgICBjb25zdCBjdXJyVmFsXzE6YW55ID0gW19kZWNsMF8zNC50cmFuc2Zvcm0oX2RlY2wwXzE3LmNvbXBvbmVudEhlaWdodCldO1xuICAgIGN1cnJWYWxfMTtcbiAgICBjb25zdCBjdXJyVmFsXzI6YW55ID0gX2RlY2wwXzE3LmhlbHB0ZXh0O1xuICAgIGN1cnJWYWxfMjtcbiAgICBjb25zdCBjdXJyVmFsXzM6YW55ID0gdHJ1ZTtcbiAgICBjdXJyVmFsXzM7XG4gICAgY29uc3QgY3VyclZhbF80OmFueSA9ICdtbC0xJztcbiAgICBjdXJyVmFsXzQ7XG4gICAgY29uc3QgY3VyclZhbF81OmFueSA9IF9kZWNsMF8xNy5IZWxwdGV4dFRvb2x0aXBJY29uO1xuICAgIGN1cnJWYWxfNTtcbiAgfVxufVxuZnVuY3Rpb24gX1ZpZXdfU2FjSW5wdXRFbWFpbENvbXBvbmVudF81XzAoKTp2b2lkIHtcbiAgdmFyIF9hbnk6YW55ID0gKG51bGwgYXMgYW55KTtcbiAgY29uc3QgY3VyclZhbF8wOmFueSA9ICdjb2wtMTIgY29sLWZvcm0tbGFiZWwgZC1mbGV4JztcbiAgY3VyclZhbF8wO1xuICBjb25zdCBjdXJyVmFsXzE6YW55ID0gWygoX2RlY2wwXzE3LmRpc2FibGVsYWJlbCA9PT0gZmFsc2UpPyBfZGVjbDBfMzcudHJhbnNmb3JtKF9kZWNsMF8xNy5sYWJlbFNpemVzKTogJ3NyLW9ubHknKSxcbiAgICAgIF9kZWNsMF8zNi50cmFuc2Zvcm0oX2RlY2wwXzE3LmNvbXBvbmVudEhlaWdodCldO1xuICBjdXJyVmFsXzE7XG4gIGNvbnN0IGN1cnJWYWxfMjphbnkgPSBpMC7JtWlubGluZUludGVycG9sYXRlKDEsJycsX2RlY2wwXzE3Lm5hbWUsJycpO1xuICBjdXJyVmFsXzI7XG4gIGNvbnN0IGN1cnJWYWxfMzphbnkgPSBfZGVjbDBfMTcuaXNyZXF1aXJlZDtcbiAgY3VyclZhbF8zO1xuICBjb25zdCBjdXJyVmFsXzQ6YW55ID0gX2RlY2wwXzE3LnNwbGl0bGFiZWxhbmRoZWxwdGV4dDtcbiAgY3VyclZhbF80O1xuICBjb25zdCBjdXJyVmFsXzU6YW55ID0gX2RlY2wwXzE3LmxhYmVsO1xuICBjdXJyVmFsXzU7XG4gIGNvbnN0IGN1cnJWYWxfNjphbnkgPSAoKF9kZWNsMF8xNy5oZWxwdGV4dG1vZGUgPT09ICd0b29sdGlwJykgJiYgX2RlY2wwXzE3LmhlbHB0ZXh0KTtcbiAgY3VyclZhbF82O1xuICBjb25zdCBjdXJyVmFsXzc6YW55ID0gJ2NvbC0xMic7XG4gIGN1cnJWYWxfNztcbiAgY29uc3QgY3VyclZhbF84OmFueSA9IFsoKF9kZWNsMF8xNy5kaXNhYmxlbGFiZWwgPT09IGZhbHNlKT8gX2RlY2wwXzM1LnRyYW5zZm9ybShfZGVjbDBfMTcubGFiZWxTaXplcyk6ICcnKV07XG4gIGN1cnJWYWxfODtcbiAgY29uc3QgY3VyclZhbF85OmFueSA9ICgoKF9kZWNsMF8xNy5oZWxwdGV4dG1vZGUgPT09ICd0b29sdGlwJykgJiYgX2RlY2wwXzE3LmhlbHB0ZXh0KSAmJiBfZGVjbDBfMTcuZGlzYWJsZWxhYmVsKTtcbiAgY3VyclZhbF85O1xuICBjb25zdCBjdXJyVmFsXzEwOmFueSA9ICgoKF9kZWNsMF8xNy5oZWxwdGV4dG1vZGUgPT09ICd0b29sdGlwJykgJiYgX2RlY2wwXzE3LmhlbHB0ZXh0KSAmJiBfZGVjbDBfMTcuZGlzYWJsZWxhYmVsKTtcbiAgY3VyclZhbF8xMDtcbiAgY29uc3QgY3VyclZhbF8xMTphbnkgPSAoX2RlY2wwXzE3LmNvbXBvbmVudEhlaWdodCA9PT0gX2RlY2wwXzE3LkNvbnRyb2xIZWlnaHQuU21hbGwpO1xuICBjdXJyVmFsXzExO1xuICBjb25zdCBjdXJyVmFsXzEyOmFueSA9IChfZGVjbDBfMTcuY29tcG9uZW50SGVpZ2h0ID09PSBfZGVjbDBfMTcuQ29udHJvbEhlaWdodC5MYXJnZSk7XG4gIGN1cnJWYWxfMTI7XG4gIGNvbnN0IGN1cnJWYWxfMTM6YW55ID0gKChfZGVjbDBfMTcuaXNpbmxpbmVlcnJvcmVuYWJsZWQgJiYgX2RlY2wwXzE3LmludmFsaWQpICYmIChfZGVjbDBfMTcuZGlydHkgfHwgX2RlY2wwXzE3LnRvdWNoZWQpKTtcbiAgY3VyclZhbF8xMztcbiAgY29uc3QgY3VyclZhbF8xNDphbnkgPSAnZm9ybS1jb250cm9sJztcbiAgY3VyclZhbF8xNDtcbiAgY29uc3QgY3VyclZhbF8xNTphbnkgPSBbX2RlY2wwXzM0LnRyYW5zZm9ybShfZGVjbDBfMTcuY29tcG9uZW50SGVpZ2h0KV07XG4gIGN1cnJWYWxfMTU7XG4gIGNvbnN0IGN1cnJWYWxfMTY6YW55ID0gaTAuybVpbmxpbmVJbnRlcnBvbGF0ZSgxLCcnLF9kZWNsMF8xNy5uYW1lLCcnKTtcbiAgY3VyclZhbF8xNjtcbiAgY29uc3QgY3VyclZhbF8xNzphbnkgPSBpMC7JtWlubGluZUludGVycG9sYXRlKDEsJycsX2RlY2wwXzE3Lm5hbWUsJycpO1xuICBjdXJyVmFsXzE3O1xuICBjb25zdCBjdXJyVmFsXzE4OmFueSA9IF9kZWNsMF8xNy52YWx1ZTtcbiAgY3VyclZhbF8xODtcbiAgY29uc3QgY3VyclZhbF8xOTphbnkgPSBfZGVjbDBfMTcucGxhY2Vob2xkZXI7XG4gIGN1cnJWYWxfMTk7XG4gIGNvbnN0IGN1cnJWYWxfMjA6YW55ID0gX2RlY2wwXzE3Lm1heHRleHRsZW5ndGg7XG4gIGN1cnJWYWxfMjA7XG4gIGNvbnN0IGN1cnJWYWxfMjE6YW55ID0gKF9kZWNsMF8xNy5pbnZhbGlkICYmIChfZGVjbDBfMTcuZGlydHkgfHwgX2RlY2wwXzE3LnRvdWNoZWQpKTtcbiAgY3VyclZhbF8yMTtcbiAgY29uc3QgY3VyclZhbF8yMjphbnkgPSBfZGVjbDBfMTcuaXNkaXNhYmxlZDtcbiAgY3VyclZhbF8yMjtcbiAgY29uc3QgY3VyclZhbF8yMzphbnkgPSBfZGVjbDBfMTcucmVhZG9ubHk7XG4gIGN1cnJWYWxfMjM7XG4gIGNvbnN0IGN1cnJWYWxfMjQ6YW55ID0gKChfZGVjbDBfMTcuaXNpbmxpbmVlcnJvcmVuYWJsZWQgJiYgX2RlY2wwXzE3LmludmFsaWQpICYmIChfZGVjbDBfMTcuZGlydHkgfHwgX2RlY2wwXzE3LnRvdWNoZWQpKTtcbiAgY3VyclZhbF8yNDtcbiAgY29uc3QgY3VyclZhbF8yNTphbnkgPSAoKF9kZWNsMF8xNy5oZWxwdGV4dG1vZGUgPT09ICd0ZXh0JykgJiYgX2RlY2wwXzE3LmhlbHB0ZXh0KTtcbiAgY3VyclZhbF8yNTtcbiAgY29uc3QgY3VyclZhbF8yNjphbnkgPSAoKChfZGVjbDBfMTcuaGVscHRleHRtb2RlID09PSAndG9vbHRpcCcpICYmIF9kZWNsMF8xNy5oZWxwdGV4dCkgJiYgX2RlY2wwXzE3LmRpc2FibGVsYWJlbCk7XG4gIGN1cnJWYWxfMjY7XG4gIGNvbnN0IHBkXzI3OmFueSA9ICgoPGFueT5fZGVjbDBfMTcub25Ub3VjaCgpKSAhPT0gZmFsc2UpO1xuICBjb25zdCBwZF8yODphbnkgPSAoKDxhbnk+X2RlY2wwXzE3LnNldFZhbHVlKF9hbnkudGFyZ2V0LnZhbHVlKSkgIT09IGZhbHNlKTtcbn1cbmZ1bmN0aW9uIF9WaWV3X1NhY0lucHV0SW50ZWdlckNvbXBvbmVudF9Ib3N0XzZfMCgpOnZvaWQge1xuICB2YXIgX2FueTphbnkgPSAobnVsbCBhcyBhbnkpO1xufVxuZnVuY3Rpb24gX1ZpZXdfU2FjSW5wdXRJbnRlZ2VyQ29tcG9uZW50XzZfMSgpOnZvaWQge1xuICBpZiAoKChfZGVjbDBfMTguaGVscHRleHRtb2RlID09PSAndG9vbHRpcCcpICYmIF9kZWNsMF8xOC5oZWxwdGV4dCkpIHtcbiAgICB2YXIgX2FueTphbnkgPSAobnVsbCBhcyBhbnkpO1xuICAgIGNvbnN0IGN1cnJWYWxfMDphbnkgPSBfZGVjbDBfMTguaGVscHRleHQ7XG4gICAgY3VyclZhbF8wO1xuICAgIGNvbnN0IGN1cnJWYWxfMTphbnkgPSB0cnVlO1xuICAgIGN1cnJWYWxfMTtcbiAgICBjb25zdCBjdXJyVmFsXzI6YW55ID0gJ21sLTEnO1xuICAgIGN1cnJWYWxfMjtcbiAgICBjb25zdCBjdXJyVmFsXzM6YW55ID0gX2RlY2wwXzE4LkhlbHB0ZXh0VG9vbHRpcEljb247XG4gICAgY3VyclZhbF8zO1xuICB9XG59XG5mdW5jdGlvbiBfVmlld19TYWNJbnB1dEludGVnZXJDb21wb25lbnRfNl8yKCk6dm9pZCB7XG4gIGlmICgoKF9kZWNsMF8xOC5oZWxwdGV4dG1vZGUgPT09ICd0ZXh0JykgJiYgX2RlY2wwXzE4LmhlbHB0ZXh0KSkge1xuICAgIHZhciBfYW55OmFueSA9IChudWxsIGFzIGFueSk7XG4gICAgY29uc3QgY3VyclZhbF8wOmFueSA9IF9kZWNsMF8xOC5oZWxwdGV4dDtcbiAgICBjdXJyVmFsXzA7XG4gIH1cbn1cbmZ1bmN0aW9uIF9WaWV3X1NhY0lucHV0SW50ZWdlckNvbXBvbmVudF82XzMoKTp2b2lkIHtcbiAgaWYgKCgoX2RlY2wwXzE4LmlzaW5saW5lZXJyb3JlbmFibGVkICYmIF9kZWNsMF8xOC5pbnZhbGlkKSAmJiAoX2RlY2wwXzE4LmRpcnR5IHx8IF9kZWNsMF8xOC50b3VjaGVkKSkpIHtcbiAgICB2YXIgX2FueTphbnkgPSAobnVsbCBhcyBhbnkpO1xuICAgIGNvbnN0IGN1cnJWYWxfMDphbnkgPSBfZGVjbDBfMjEudHJhbnNmb3JtKF9kZWNsMF8xOC5HZXRFcnJvck1lc3NhZ2UoKSk7XG4gICAgY3VyclZhbF8wO1xuICB9XG59XG5mdW5jdGlvbiBfVmlld19TYWNJbnB1dEludGVnZXJDb21wb25lbnRfNl80KCk6dm9pZCB7XG4gIGlmICgoKChfZGVjbDBfMTguaGVscHRleHRtb2RlID09PSAndG9vbHRpcCcpICYmIF9kZWNsMF8xOC5oZWxwdGV4dCkgJiYgX2RlY2wwXzE4LmRpc2FibGVsYWJlbCkpIHtcbiAgICB2YXIgX2FueTphbnkgPSAobnVsbCBhcyBhbnkpO1xuICAgIGNvbnN0IGN1cnJWYWxfMDphbnkgPSAnZm9ybS1jb250cm9sLXBsYWludGV4dCBhbGlnbi1zZWxmLXRvcCBtbC0yIG1yLTEgdy1hdXRvJztcbiAgICBjdXJyVmFsXzA7XG4gICAgY29uc3QgY3VyclZhbF8xOmFueSA9IFtfZGVjbDBfMzQudHJhbnNmb3JtKF9kZWNsMF8xOC5jb21wb25lbnRIZWlnaHQpXTtcbiAgICBjdXJyVmFsXzE7XG4gICAgY29uc3QgY3VyclZhbF8yOmFueSA9IF9kZWNsMF8xOC5oZWxwdGV4dDtcbiAgICBjdXJyVmFsXzI7XG4gICAgY29uc3QgY3VyclZhbF8zOmFueSA9IHRydWU7XG4gICAgY3VyclZhbF8zO1xuICAgIGNvbnN0IGN1cnJWYWxfNDphbnkgPSAnbWwtMSc7XG4gICAgY3VyclZhbF80O1xuICAgIGNvbnN0IGN1cnJWYWxfNTphbnkgPSBfZGVjbDBfMTguSGVscHRleHRUb29sdGlwSWNvbjtcbiAgICBjdXJyVmFsXzU7XG4gIH1cbn1cbmZ1bmN0aW9uIF9WaWV3X1NhY0lucHV0SW50ZWdlckNvbXBvbmVudF82XzAoKTp2b2lkIHtcbiAgdmFyIF9hbnk6YW55ID0gKG51bGwgYXMgYW55KTtcbiAgY29uc3QgY3VyclZhbF8wOmFueSA9ICdjb2wtMTIgY29sLWZvcm0tbGFiZWwgZC1mbGV4JztcbiAgY3VyclZhbF8wO1xuICBjb25zdCBjdXJyVmFsXzE6YW55ID0gWygoX2RlY2wwXzE4LmRpc2FibGVsYWJlbCA9PT0gZmFsc2UpPyBfZGVjbDBfMzcudHJhbnNmb3JtKF9kZWNsMF8xOC5sYWJlbFNpemVzKTogJ3NyLW9ubHknKSxcbiAgICAgIF9kZWNsMF8zNi50cmFuc2Zvcm0oX2RlY2wwXzE4LmNvbXBvbmVudEhlaWdodCldO1xuICBjdXJyVmFsXzE7XG4gIGNvbnN0IGN1cnJWYWxfMjphbnkgPSBpMC7JtWlubGluZUludGVycG9sYXRlKDEsJycsX2RlY2wwXzE4Lm5hbWUsJycpO1xuICBjdXJyVmFsXzI7XG4gIGNvbnN0IGN1cnJWYWxfMzphbnkgPSBfZGVjbDBfMTguaXNyZXF1aXJlZDtcbiAgY3VyclZhbF8zO1xuICBjb25zdCBjdXJyVmFsXzQ6YW55ID0gX2RlY2wwXzE4LnNwbGl0bGFiZWxhbmRoZWxwdGV4dDtcbiAgY3VyclZhbF80O1xuICBjb25zdCBjdXJyVmFsXzU6YW55ID0gX2RlY2wwXzE4LmxhYmVsO1xuICBjdXJyVmFsXzU7XG4gIGNvbnN0IGN1cnJWYWxfNjphbnkgPSAoKF9kZWNsMF8xOC5oZWxwdGV4dG1vZGUgPT09ICd0b29sdGlwJykgJiYgX2RlY2wwXzE4LmhlbHB0ZXh0KTtcbiAgY3VyclZhbF82O1xuICBjb25zdCBjdXJyVmFsXzc6YW55ID0gJ2NvbC0xMic7XG4gIGN1cnJWYWxfNztcbiAgY29uc3QgY3VyclZhbF84OmFueSA9IFsoKF9kZWNsMF8xOC5kaXNhYmxlbGFiZWwgPT09IGZhbHNlKT8gX2RlY2wwXzM1LnRyYW5zZm9ybShfZGVjbDBfMTgubGFiZWxTaXplcyk6ICcnKV07XG4gIGN1cnJWYWxfODtcbiAgY29uc3QgY3VyclZhbF85OmFueSA9ICgoKF9kZWNsMF8xOC5oZWxwdGV4dG1vZGUgPT09ICd0b29sdGlwJykgJiYgX2RlY2wwXzE4LmhlbHB0ZXh0KSAmJiBfZGVjbDBfMTguZGlzYWJsZWxhYmVsKTtcbiAgY3VyclZhbF85O1xuICBjb25zdCBjdXJyVmFsXzEwOmFueSA9ICgoKF9kZWNsMF8xOC5oZWxwdGV4dG1vZGUgPT09ICd0b29sdGlwJykgJiYgX2RlY2wwXzE4LmhlbHB0ZXh0KSAmJiBfZGVjbDBfMTguZGlzYWJsZWxhYmVsKTtcbiAgY3VyclZhbF8xMDtcbiAgY29uc3QgY3VyclZhbF8xMTphbnkgPSAnZm9ybS1jb250cm9sJztcbiAgY3VyclZhbF8xMTtcbiAgY29uc3QgY3VyclZhbF8xMjphbnkgPSBbX2RlY2wwXzM0LnRyYW5zZm9ybShfZGVjbDBfMTguY29tcG9uZW50SGVpZ2h0KV07XG4gIGN1cnJWYWxfMTI7XG4gIGNvbnN0IGN1cnJWYWxfMTM6YW55ID0gaTAuybVpbmxpbmVJbnRlcnBvbGF0ZSgxLCcnLF9kZWNsMF8xOC5uYW1lLCcnKTtcbiAgY3VyclZhbF8xMztcbiAgY29uc3QgY3VyclZhbF8xNDphbnkgPSBpMC7JtWlubGluZUludGVycG9sYXRlKDEsJycsX2RlY2wwXzE4Lm5hbWUsJycpO1xuICBjdXJyVmFsXzE0O1xuICBjb25zdCBjdXJyVmFsXzE1OmFueSA9IF9kZWNsMF8xOC52YWx1ZTtcbiAgY3VyclZhbF8xNTtcbiAgY29uc3QgY3VyclZhbF8xNjphbnkgPSBfZGVjbDBfMTgucGxhY2Vob2xkZXI7XG4gIGN1cnJWYWxfMTY7XG4gIGNvbnN0IGN1cnJWYWxfMTc6YW55ID0gX2RlY2wwXzE4LmlzZGlzYWJsZWQ7XG4gIGN1cnJWYWxfMTc7XG4gIGNvbnN0IGN1cnJWYWxfMTg6YW55ID0gX2RlY2wwXzE4LnJlYWRvbmx5O1xuICBjdXJyVmFsXzE4O1xuICBjb25zdCBjdXJyVmFsXzE5OmFueSA9IChfZGVjbDBfMTguaW52YWxpZCAmJiAoX2RlY2wwXzE4LmRpcnR5IHx8IF9kZWNsMF8xOC50b3VjaGVkKSk7XG4gIGN1cnJWYWxfMTk7XG4gIGNvbnN0IGN1cnJWYWxfMjA6YW55ID0gKChfZGVjbDBfMTguaGVscHRleHRtb2RlID09PSAndGV4dCcpICYmIF9kZWNsMF8xOC5oZWxwdGV4dCk7XG4gIGN1cnJWYWxfMjA7XG4gIGNvbnN0IGN1cnJWYWxfMjE6YW55ID0gKChfZGVjbDBfMTguaXNpbmxpbmVlcnJvcmVuYWJsZWQgJiYgX2RlY2wwXzE4LmludmFsaWQpICYmIChfZGVjbDBfMTguZGlydHkgfHwgX2RlY2wwXzE4LnRvdWNoZWQpKTtcbiAgY3VyclZhbF8yMTtcbiAgY29uc3QgY3VyclZhbF8yMjphbnkgPSAoKChfZGVjbDBfMTguaGVscHRleHRtb2RlID09PSAndG9vbHRpcCcpICYmIF9kZWNsMF8xOC5oZWxwdGV4dCkgJiYgX2RlY2wwXzE4LmRpc2FibGVsYWJlbCk7XG4gIGN1cnJWYWxfMjI7XG4gIGNvbnN0IHBkXzIzOmFueSA9ICgoPGFueT5fZGVjbDBfMTgub25Ub3VjaCgpKSAhPT0gZmFsc2UpO1xuICBjb25zdCBwZF8yNDphbnkgPSAoKDxhbnk+X2RlY2wwXzE4LnNldFZhbHVlKF9hbnkudGFyZ2V0LnZhbHVlKSkgIT09IGZhbHNlKTtcbiAgY29uc3QgcGRfMjU6YW55ID0gKCg8YW55Pl9kZWNsMF8xOC5vbktleVByZXNzKF9hbnkpKSAhPT0gZmFsc2UpO1xufVxuZnVuY3Rpb24gX1ZpZXdfU2FjSW5wdXRQYXNzd29yZENvbXBvbmVudF9Ib3N0XzdfMCgpOnZvaWQge1xuICB2YXIgX2FueTphbnkgPSAobnVsbCBhcyBhbnkpO1xufVxuZnVuY3Rpb24gX1ZpZXdfU2FjSW5wdXRQYXNzd29yZENvbXBvbmVudF83XzEoKTp2b2lkIHtcbiAgaWYgKCgoX2RlY2wwXzE5LmhlbHB0ZXh0bW9kZSA9PT0gJ3Rvb2x0aXAnKSAmJiBfZGVjbDBfMTkuaGVscHRleHQpKSB7XG4gICAgdmFyIF9hbnk6YW55ID0gKG51bGwgYXMgYW55KTtcbiAgICBjb25zdCBjdXJyVmFsXzA6YW55ID0gX2RlY2wwXzE5LmhlbHB0ZXh0O1xuICAgIGN1cnJWYWxfMDtcbiAgICBjb25zdCBjdXJyVmFsXzE6YW55ID0gdHJ1ZTtcbiAgICBjdXJyVmFsXzE7XG4gICAgY29uc3QgY3VyclZhbF8yOmFueSA9ICdtbC0xJztcbiAgICBjdXJyVmFsXzI7XG4gICAgY29uc3QgY3VyclZhbF8zOmFueSA9IF9kZWNsMF8xOS5IZWxwdGV4dFRvb2x0aXBJY29uO1xuICAgIGN1cnJWYWxfMztcbiAgfVxufVxuZnVuY3Rpb24gX1ZpZXdfU2FjSW5wdXRQYXNzd29yZENvbXBvbmVudF83XzIoKTp2b2lkIHtcbiAgaWYgKCgoX2RlY2wwXzE5LmhlbHB0ZXh0bW9kZSA9PT0gJ3RleHQnKSAmJiBfZGVjbDBfMTkuaGVscHRleHQpKSB7XG4gICAgdmFyIF9hbnk6YW55ID0gKG51bGwgYXMgYW55KTtcbiAgICBjb25zdCBjdXJyVmFsXzA6YW55ID0gX2RlY2wwXzE5LmhlbHB0ZXh0O1xuICAgIGN1cnJWYWxfMDtcbiAgfVxufVxuZnVuY3Rpb24gX1ZpZXdfU2FjSW5wdXRQYXNzd29yZENvbXBvbmVudF83XzMoKTp2b2lkIHtcbiAgaWYgKCgoX2RlY2wwXzE5LmlzaW5saW5lZXJyb3JlbmFibGVkICYmIF9kZWNsMF8xOS5pbnZhbGlkKSAmJiAoX2RlY2wwXzE5LmRpcnR5IHx8IF9kZWNsMF8xOS50b3VjaGVkKSkpIHtcbiAgICB2YXIgX2FueTphbnkgPSAobnVsbCBhcyBhbnkpO1xuICAgIGNvbnN0IGN1cnJWYWxfMDphbnkgPSBfZGVjbDBfMjEudHJhbnNmb3JtKF9kZWNsMF8xOS5HZXRFcnJvck1lc3NhZ2UoKSk7XG4gICAgY3VyclZhbF8wO1xuICB9XG59XG5mdW5jdGlvbiBfVmlld19TYWNJbnB1dFBhc3N3b3JkQ29tcG9uZW50XzdfNCgpOnZvaWQge1xuICBpZiAoKCgoX2RlY2wwXzE5LmhlbHB0ZXh0bW9kZSA9PT0gJ3Rvb2x0aXAnKSAmJiBfZGVjbDBfMTkuaGVscHRleHQpICYmIF9kZWNsMF8xOS5kaXNhYmxlbGFiZWwpKSB7XG4gICAgdmFyIF9hbnk6YW55ID0gKG51bGwgYXMgYW55KTtcbiAgICBjb25zdCBjdXJyVmFsXzA6YW55ID0gJ2Zvcm0tY29udHJvbC1wbGFpbnRleHQgYWxpZ24tc2VsZi10b3AgbWwtMiBtci0xIHctYXV0byc7XG4gICAgY3VyclZhbF8wO1xuICAgIGNvbnN0IGN1cnJWYWxfMTphbnkgPSBbX2RlY2wwXzM0LnRyYW5zZm9ybShfZGVjbDBfMTkuY29tcG9uZW50SGVpZ2h0KV07XG4gICAgY3VyclZhbF8xO1xuICAgIGNvbnN0IGN1cnJWYWxfMjphbnkgPSBfZGVjbDBfMTkuaGVscHRleHQ7XG4gICAgY3VyclZhbF8yO1xuICAgIGNvbnN0IGN1cnJWYWxfMzphbnkgPSB0cnVlO1xuICAgIGN1cnJWYWxfMztcbiAgICBjb25zdCBjdXJyVmFsXzQ6YW55ID0gJ21sLTEnO1xuICAgIGN1cnJWYWxfNDtcbiAgICBjb25zdCBjdXJyVmFsXzU6YW55ID0gX2RlY2wwXzE5LkhlbHB0ZXh0VG9vbHRpcEljb247XG4gICAgY3VyclZhbF81O1xuICB9XG59XG5mdW5jdGlvbiBfVmlld19TYWNJbnB1dFBhc3N3b3JkQ29tcG9uZW50XzdfMCgpOnZvaWQge1xuICB2YXIgX2FueTphbnkgPSAobnVsbCBhcyBhbnkpO1xuICBjb25zdCBjdXJyVmFsXzA6YW55ID0gJ2NvbC0xMiBjb2wtZm9ybS1sYWJlbCBkLWZsZXgnO1xuICBjdXJyVmFsXzA7XG4gIGNvbnN0IGN1cnJWYWxfMTphbnkgPSBbKChfZGVjbDBfMTkuZGlzYWJsZWxhYmVsID09PSBmYWxzZSk/IF9kZWNsMF8zNy50cmFuc2Zvcm0oX2RlY2wwXzE5LmxhYmVsU2l6ZXMpOiAnc3Itb25seScpLFxuICAgICAgX2RlY2wwXzM2LnRyYW5zZm9ybShfZGVjbDBfMTkuY29tcG9uZW50SGVpZ2h0KV07XG4gIGN1cnJWYWxfMTtcbiAgY29uc3QgY3VyclZhbF8yOmFueSA9IGkwLsm1aW5saW5lSW50ZXJwb2xhdGUoMSwnJyxfZGVjbDBfMTkubmFtZSwnJyk7XG4gIGN1cnJWYWxfMjtcbiAgY29uc3QgY3VyclZhbF8zOmFueSA9IF9kZWNsMF8xOS5pc3JlcXVpcmVkO1xuICBjdXJyVmFsXzM7XG4gIGNvbnN0IGN1cnJWYWxfNDphbnkgPSBfZGVjbDBfMTkuc3BsaXRsYWJlbGFuZGhlbHB0ZXh0O1xuICBjdXJyVmFsXzQ7XG4gIGNvbnN0IGN1cnJWYWxfNTphbnkgPSBfZGVjbDBfMTkubGFiZWw7XG4gIGN1cnJWYWxfNTtcbiAgY29uc3QgY3VyclZhbF82OmFueSA9ICgoX2RlY2wwXzE5LmhlbHB0ZXh0bW9kZSA9PT0gJ3Rvb2x0aXAnKSAmJiBfZGVjbDBfMTkuaGVscHRleHQpO1xuICBjdXJyVmFsXzY7XG4gIGNvbnN0IGN1cnJWYWxfNzphbnkgPSAnY29sLTEyJztcbiAgY3VyclZhbF83O1xuICBjb25zdCBjdXJyVmFsXzg6YW55ID0gWygoX2RlY2wwXzE5LmRpc2FibGVsYWJlbCA9PT0gZmFsc2UpPyBfZGVjbDBfMzUudHJhbnNmb3JtKF9kZWNsMF8xOS5sYWJlbFNpemVzKTogJycpXTtcbiAgY3VyclZhbF84O1xuICBjb25zdCBjdXJyVmFsXzk6YW55ID0gKCgoX2RlY2wwXzE5LmhlbHB0ZXh0bW9kZSA9PT0gJ3Rvb2x0aXAnKSAmJiBfZGVjbDBfMTkuaGVscHRleHQpICYmIF9kZWNsMF8xOS5kaXNhYmxlbGFiZWwpO1xuICBjdXJyVmFsXzk7XG4gIGNvbnN0IGN1cnJWYWxfMTA6YW55ID0gKCgoX2RlY2wwXzE5LmhlbHB0ZXh0bW9kZSA9PT0gJ3Rvb2x0aXAnKSAmJiBfZGVjbDBfMTkuaGVscHRleHQpICYmIF9kZWNsMF8xOS5kaXNhYmxlbGFiZWwpO1xuICBjdXJyVmFsXzEwO1xuICBjb25zdCBjdXJyVmFsXzExOmFueSA9ICdmb3JtLWNvbnRyb2wnO1xuICBjdXJyVmFsXzExO1xuICBjb25zdCBjdXJyVmFsXzEyOmFueSA9IFtfZGVjbDBfMzQudHJhbnNmb3JtKF9kZWNsMF8xOS5jb21wb25lbnRIZWlnaHQpXTtcbiAgY3VyclZhbF8xMjtcbiAgY29uc3QgY3VyclZhbF8xMzphbnkgPSBpMC7JtWlubGluZUludGVycG9sYXRlKDEsJycsX2RlY2wwXzE5Lm5hbWUsJycpO1xuICBjdXJyVmFsXzEzO1xuICBjb25zdCBjdXJyVmFsXzE0OmFueSA9IGkwLsm1aW5saW5lSW50ZXJwb2xhdGUoMSwnJyxfZGVjbDBfMTkubmFtZSwnJyk7XG4gIGN1cnJWYWxfMTQ7XG4gIGNvbnN0IGN1cnJWYWxfMTU6YW55ID0gX2RlY2wwXzE5LnBsYWNlaG9sZGVyO1xuICBjdXJyVmFsXzE1O1xuICBjb25zdCBjdXJyVmFsXzE2OmFueSA9IF9kZWNsMF8xOS52YWx1ZTtcbiAgY3VyclZhbF8xNjtcbiAgY29uc3QgY3VyclZhbF8xNzphbnkgPSBfZGVjbDBfMTkubWF4dGV4dGxlbmd0aDtcbiAgY3VyclZhbF8xNztcbiAgY29uc3QgY3VyclZhbF8xODphbnkgPSAoX2RlY2wwXzE5LmludmFsaWQgJiYgKF9kZWNsMF8xOS5kaXJ0eSB8fCBfZGVjbDBfMTkudG91Y2hlZCkpO1xuICBjdXJyVmFsXzE4O1xuICBjb25zdCBjdXJyVmFsXzE5OmFueSA9IF9kZWNsMF8xOS5pc2Rpc2FibGVkO1xuICBjdXJyVmFsXzE5O1xuICBjb25zdCBjdXJyVmFsXzIwOmFueSA9IF9kZWNsMF8xOS5yZWFkb25seTtcbiAgY3VyclZhbF8yMDtcbiAgY29uc3QgY3VyclZhbF8yMTphbnkgPSAoKF9kZWNsMF8xOS5oZWxwdGV4dG1vZGUgPT09ICd0ZXh0JykgJiYgX2RlY2wwXzE5LmhlbHB0ZXh0KTtcbiAgY3VyclZhbF8yMTtcbiAgY29uc3QgY3VyclZhbF8yMjphbnkgPSAoKF9kZWNsMF8xOS5pc2lubGluZWVycm9yZW5hYmxlZCAmJiBfZGVjbDBfMTkuaW52YWxpZCkgJiYgKF9kZWNsMF8xOS5kaXJ0eSB8fCBfZGVjbDBfMTkudG91Y2hlZCkpO1xuICBjdXJyVmFsXzIyO1xuICBjb25zdCBjdXJyVmFsXzIzOmFueSA9ICgoKF9kZWNsMF8xOS5oZWxwdGV4dG1vZGUgPT09ICd0b29sdGlwJykgJiYgX2RlY2wwXzE5LmhlbHB0ZXh0KSAmJiBfZGVjbDBfMTkuZGlzYWJsZWxhYmVsKTtcbiAgY3VyclZhbF8yMztcbiAgY29uc3QgcGRfMjQ6YW55ID0gKCg8YW55Pl9kZWNsMF8xOS5vblRvdWNoKCkpICE9PSBmYWxzZSk7XG4gIGNvbnN0IHBkXzI1OmFueSA9ICgoPGFueT5fZGVjbDBfMTkuc2V0VmFsdWUoX2FueS50YXJnZXQudmFsdWUpKSAhPT0gZmFsc2UpO1xufVxuZnVuY3Rpb24gX1ZpZXdfU2FjSW5wdXRTZWFyY2hDb21wb25lbnRfSG9zdF84XzAoKTp2b2lkIHtcbiAgdmFyIF9hbnk6YW55ID0gKG51bGwgYXMgYW55KTtcbn1cbmZ1bmN0aW9uIF9WaWV3X1NhY0lucHV0U2VhcmNoQ29tcG9uZW50XzhfMSgpOnZvaWQge1xuICBpZiAoKChfZGVjbDBfMjAuaGVscHRleHRtb2RlID09PSAndG9vbHRpcCcpICYmIF9kZWNsMF8yMC5oZWxwdGV4dCkpIHtcbiAgICB2YXIgX2FueTphbnkgPSAobnVsbCBhcyBhbnkpO1xuICAgIGNvbnN0IGN1cnJWYWxfMDphbnkgPSBfZGVjbDBfMjAuaGVscHRleHQ7XG4gICAgY3VyclZhbF8wO1xuICAgIGNvbnN0IGN1cnJWYWxfMTphbnkgPSB0cnVlO1xuICAgIGN1cnJWYWxfMTtcbiAgICBjb25zdCBjdXJyVmFsXzI6YW55ID0gJ21sLTEnO1xuICAgIGN1cnJWYWxfMjtcbiAgICBjb25zdCBjdXJyVmFsXzM6YW55ID0gX2RlY2wwXzIwLkhlbHB0ZXh0VG9vbHRpcEljb247XG4gICAgY3VyclZhbF8zO1xuICB9XG59XG5mdW5jdGlvbiBfVmlld19TYWNJbnB1dFNlYXJjaENvbXBvbmVudF84XzIoKTp2b2lkIHtcbiAgaWYgKCgoX2RlY2wwXzIwLmJ1dHRvbm1vZGUgPT09ICdpY29uJykgfHwgKF9kZWNsMF8yMC5idXR0b25tb2RlID09PSAnbWl4ZWQnKSkpIHtcbiAgICB2YXIgX2FueTphbnkgPSAobnVsbCBhcyBhbnkpO1xuICAgIGNvbnN0IGN1cnJWYWxfMDphbnkgPSBfZGVjbDBfMjAuaWNvbm5hbWU7XG4gICAgY3VyclZhbF8wO1xuICAgIGNvbnN0IGN1cnJWYWxfMTphbnkgPSAoX2RlY2wwXzIwLmJ1dHRvbm1vZGUgPT09ICdtaXhlZCcpO1xuICAgIGN1cnJWYWxfMTtcbiAgfVxufVxuZnVuY3Rpb24gX1ZpZXdfU2FjSW5wdXRTZWFyY2hDb21wb25lbnRfOF8zKCk6dm9pZCB7XG4gIGlmICgoKF9kZWNsMF8yMC5idXR0b25tb2RlID09PSAndGV4dCcpIHx8IChfZGVjbDBfMjAuYnV0dG9ubW9kZSA9PT0gJ21peGVkJykpKSB7XG4gICAgdmFyIF9hbnk6YW55ID0gKG51bGwgYXMgYW55KTtcbiAgICBjb25zdCBjdXJyVmFsXzA6YW55ID0gX2RlY2wwXzIwLmJ1dHRvbnRleHQ7XG4gICAgY3VyclZhbF8wO1xuICB9XG59XG5mdW5jdGlvbiBfVmlld19TYWNJbnB1dFNlYXJjaENvbXBvbmVudF84XzQoKTp2b2lkIHtcbiAgaWYgKCgoX2RlY2wwXzIwLmhlbHB0ZXh0bW9kZSA9PT0gJ3RleHQnKSAmJiBfZGVjbDBfMjAuaGVscHRleHQpKSB7XG4gICAgdmFyIF9hbnk6YW55ID0gKG51bGwgYXMgYW55KTtcbiAgICBjb25zdCBjdXJyVmFsXzA6YW55ID0gX2RlY2wwXzIwLmhlbHB0ZXh0O1xuICAgIGN1cnJWYWxfMDtcbiAgfVxufVxuZnVuY3Rpb24gX1ZpZXdfU2FjSW5wdXRTZWFyY2hDb21wb25lbnRfOF81KCk6dm9pZCB7XG4gIGlmICgoKChfZGVjbDBfMjAuaGVscHRleHRtb2RlID09PSAndG9vbHRpcCcpICYmIF9kZWNsMF8yMC5oZWxwdGV4dCkgJiYgX2RlY2wwXzIwLmRpc2FibGVsYWJlbCkpIHtcbiAgICB2YXIgX2FueTphbnkgPSAobnVsbCBhcyBhbnkpO1xuICAgIGNvbnN0IGN1cnJWYWxfMDphbnkgPSAnZm9ybS1jb250cm9sLXBsYWludGV4dCBhbGlnbi1zZWxmLXRvcCBtbC0yIG1yLTEgdy1hdXRvJztcbiAgICBjdXJyVmFsXzA7XG4gICAgY29uc3QgY3VyclZhbF8xOmFueSA9IFtfZGVjbDBfMzQudHJhbnNmb3JtKF9kZWNsMF8yMC5jb21wb25lbnRIZWlnaHQpXTtcbiAgICBjdXJyVmFsXzE7XG4gICAgY29uc3QgY3VyclZhbF8yOmFueSA9IF9kZWNsMF8yMC5oZWxwdGV4dDtcbiAgICBjdXJyVmFsXzI7XG4gICAgY29uc3QgY3VyclZhbF8zOmFueSA9IHRydWU7XG4gICAgY3VyclZhbF8zO1xuICAgIGNvbnN0IGN1cnJWYWxfNDphbnkgPSAnbWwtMSc7XG4gICAgY3VyclZhbF80O1xuICAgIGNvbnN0IGN1cnJWYWxfNTphbnkgPSBfZGVjbDBfMjAuSGVscHRleHRUb29sdGlwSWNvbjtcbiAgICBjdXJyVmFsXzU7XG4gIH1cbn1cbmZ1bmN0aW9uIF9WaWV3X1NhY0lucHV0U2VhcmNoQ29tcG9uZW50XzhfMCgpOnZvaWQge1xuICB2YXIgX2FueTphbnkgPSAobnVsbCBhcyBhbnkpO1xuICBjb25zdCBjdXJyVmFsXzA6YW55ID0gX2RlY2wwXzIwLmRpc2FibGVsYWJlbDtcbiAgY3VyclZhbF8wO1xuICBjb25zdCBjdXJyVmFsXzE6YW55ID0gJ2NvbC0xMiBjb2wtZm9ybS1sYWJlbCBkLWZsZXgnO1xuICBjdXJyVmFsXzE7XG4gIGNvbnN0IGN1cnJWYWxfMjphbnkgPSBbKChfZGVjbDBfMjAuZGlzYWJsZWxhYmVsID09PSBmYWxzZSk/IF9kZWNsMF8zNy50cmFuc2Zvcm0oX2RlY2wwXzIwLmxhYmVsU2l6ZXMpOiAnc3Itb25seScpLFxuICAgICAgX2RlY2wwXzM2LnRyYW5zZm9ybShfZGVjbDBfMjAuY29tcG9uZW50SGVpZ2h0KV07XG4gIGN1cnJWYWxfMjtcbiAgY29uc3QgY3VyclZhbF8zOmFueSA9IGkwLsm1aW5saW5lSW50ZXJwb2xhdGUoMSwnJyxfZGVjbDBfMjAubmFtZSwnX2xhYmVsJyk7XG4gIGN1cnJWYWxfMztcbiAgY29uc3QgY3VyclZhbF80OmFueSA9IGkwLsm1aW5saW5lSW50ZXJwb2xhdGUoMSwnJyxfZGVjbDBfMjAubmFtZSwnJyk7XG4gIGN1cnJWYWxfNDtcbiAgY29uc3QgY3VyclZhbF81OmFueSA9IF9kZWNsMF8yMC5pc3JlcXVpcmVkO1xuICBjdXJyVmFsXzU7XG4gIGNvbnN0IGN1cnJWYWxfNjphbnkgPSBfZGVjbDBfMjAuc3BsaXRsYWJlbGFuZGhlbHB0ZXh0O1xuICBjdXJyVmFsXzY7XG4gIGNvbnN0IGN1cnJWYWxfNzphbnkgPSBfZGVjbDBfMjAubGFiZWw7XG4gIGN1cnJWYWxfNztcbiAgY29uc3QgY3VyclZhbF84OmFueSA9ICgoX2RlY2wwXzIwLmhlbHB0ZXh0bW9kZSA9PT0gJ3Rvb2x0aXAnKSAmJiBfZGVjbDBfMjAuaGVscHRleHQpO1xuICBjdXJyVmFsXzg7XG4gIGNvbnN0IGN1cnJWYWxfOTphbnkgPSAnY29sLTEyJztcbiAgY3VyclZhbF85O1xuICBjb25zdCBjdXJyVmFsXzEwOmFueSA9IFsoKF9kZWNsMF8yMC5kaXNhYmxlbGFiZWwgPT09IGZhbHNlKT8gX2RlY2wwXzM1LnRyYW5zZm9ybShfZGVjbDBfMjAubGFiZWxTaXplcyk6ICcnKV07XG4gIGN1cnJWYWxfMTA7XG4gIGNvbnN0IGN1cnJWYWxfMTE6YW55ID0gKCgoX2RlY2wwXzIwLmhlbHB0ZXh0bW9kZSA9PT0gJ3Rvb2x0aXAnKSAmJiBfZGVjbDBfMjAuaGVscHRleHQpICYmIF9kZWNsMF8yMC5kaXNhYmxlbGFiZWwpO1xuICBjdXJyVmFsXzExO1xuICBjb25zdCBjdXJyVmFsXzEyOmFueSA9ICgoKF9kZWNsMF8yMC5oZWxwdGV4dG1vZGUgPT09ICd0b29sdGlwJykgJiYgX2RlY2wwXzIwLmhlbHB0ZXh0KSAmJiBfZGVjbDBfMjAuZGlzYWJsZWxhYmVsKTtcbiAgY3VyclZhbF8xMjtcbiAgY29uc3QgY3VyclZhbF8xMzphbnkgPSAoX2RlY2wwXzIwLmNvbXBvbmVudEhlaWdodCA9PT0gX2RlY2wwXzIwLkNvbnRyb2xIZWlnaHQuU21hbGwpO1xuICBjdXJyVmFsXzEzO1xuICBjb25zdCBjdXJyVmFsXzE0OmFueSA9IChfZGVjbDBfMjAuY29tcG9uZW50SGVpZ2h0ID09PSBfZGVjbDBfMjAuQ29udHJvbEhlaWdodC5MYXJnZSk7XG4gIGN1cnJWYWxfMTQ7XG4gIGNvbnN0IGN1cnJWYWxfMTU6YW55ID0gJ2Zvcm0tY29udHJvbCc7XG4gIGN1cnJWYWxfMTU7XG4gIGNvbnN0IGN1cnJWYWxfMTY6YW55ID0gW19kZWNsMF8zNC50cmFuc2Zvcm0oX2RlY2wwXzIwLmNvbXBvbmVudEhlaWdodCldO1xuICBjdXJyVmFsXzE2O1xuICBjb25zdCBjdXJyVmFsXzE3OmFueSA9IGkwLsm1aW5saW5lSW50ZXJwb2xhdGUoMSwnJyxfZGVjbDBfMjAubmFtZSwnJyk7XG4gIGN1cnJWYWxfMTc7XG4gIGNvbnN0IGN1cnJWYWxfMTg6YW55ID0gaTAuybVpbmxpbmVJbnRlcnBvbGF0ZSgxLCcnLF9kZWNsMF8yMC5uYW1lLCcnKTtcbiAgY3VyclZhbF8xODtcbiAgY29uc3QgY3VyclZhbF8xOTphbnkgPSBfZGVjbDBfMjAudmFsdWU7XG4gIGN1cnJWYWxfMTk7XG4gIGNvbnN0IGN1cnJWYWxfMjA6YW55ID0gX2RlY2wwXzIwLnBsYWNlaG9sZGVyO1xuICBjdXJyVmFsXzIwO1xuICBjb25zdCBjdXJyVmFsXzIxOmFueSA9IF9kZWNsMF8yMC5tYXh0ZXh0bGVuZ3RoO1xuICBjdXJyVmFsXzIxO1xuICBjb25zdCBjdXJyVmFsXzIyOmFueSA9IChfZGVjbDBfMjAuaW52YWxpZCAmJiAoX2RlY2wwXzIwLmRpcnR5IHx8IF9kZWNsMF8yMC50b3VjaGVkKSk7XG4gIGN1cnJWYWxfMjI7XG4gIGNvbnN0IGN1cnJWYWxfMjM6YW55ID0gX2RlY2wwXzIwLmlzZGlzYWJsZWQ7XG4gIGN1cnJWYWxfMjM7XG4gIGNvbnN0IGN1cnJWYWxfMjQ6YW55ID0gX2RlY2wwXzIwLnJlYWRvbmx5O1xuICBjdXJyVmFsXzI0O1xuICBjb25zdCBjdXJyVmFsXzI1OmFueSA9IGkwLsm1aW5saW5lSW50ZXJwb2xhdGUoMSwnJyxfZGVjbDBfMjAubmFtZSwnX3NlYXJjaCcpO1xuICBjdXJyVmFsXzI1O1xuICBjb25zdCBjdXJyVmFsXzI2OmFueSA9ICgoX2RlY2wwXzIwLmJ1dHRvbm1vZGUgPT09ICdpY29uJykgfHwgKF9kZWNsMF8yMC5idXR0b25tb2RlID09PSAnbWl4ZWQnKSk7XG4gIGN1cnJWYWxfMjY7XG4gIGNvbnN0IGN1cnJWYWxfMjc6YW55ID0gKChfZGVjbDBfMjAuYnV0dG9ubW9kZSA9PT0gJ3RleHQnKSB8fCAoX2RlY2wwXzIwLmJ1dHRvbm1vZGUgPT09ICdtaXhlZCcpKTtcbiAgY3VyclZhbF8yNztcbiAgY29uc3QgY3VyclZhbF8yODphbnkgPSAoKF9kZWNsMF8yMC5oZWxwdGV4dG1vZGUgPT09ICd0ZXh0JykgJiYgX2RlY2wwXzIwLmhlbHB0ZXh0KTtcbiAgY3VyclZhbF8yODtcbiAgY29uc3QgY3VyclZhbF8yOTphbnkgPSAoKChfZGVjbDBfMjAuaGVscHRleHRtb2RlID09PSAndG9vbHRpcCcpICYmIF9kZWNsMF8yMC5oZWxwdGV4dCkgJiYgX2RlY2wwXzIwLmRpc2FibGVsYWJlbCk7XG4gIGN1cnJWYWxfMjk7XG4gIGNvbnN0IHBkXzMwOmFueSA9ICgoPGFueT5fZGVjbDBfMjAub25Ub3VjaCgpKSAhPT0gZmFsc2UpO1xuICBjb25zdCBwZF8zMTphbnkgPSAoKDxhbnk+X2RlY2wwXzIwLnNldFZhbHVlKF9hbnkudGFyZ2V0LnZhbHVlKSkgIT09IGZhbHNlKTtcbiAgY29uc3QgcGRfMzI6YW55ID0gKCg8YW55Pl9kZWNsMF8yMC5zZWFyY2hDbGljaygpKSAhPT0gZmFsc2UpO1xufVxuIl19
@@ -1,7 +1,7 @@
1
- /**
2
- * @fileoverview This file was generated by the Angular template compiler. Do not edit.
3
- *
4
- * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes,extraRequire}
5
- * tslint:disable
6
- */
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQubmdmYWN0b3J5LmpzIiwic291cmNlUm9vdCI6IkM6L1Byb2pla3RlL3NpbXBsZWFuZ3VsYXJjb250cm9scy1uZzEwL2NoLmpuZXR3b3JrLnNhYy1jb250cm9scy9wcm9qZWN0cy9zYWMtYm9vdHN0cmFwNC9zcmMvIiwic291cmNlcyI6WyJjb250cm9scy9pbnB1dC9pbnB1dC5uZ2ZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGkwIGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaTAuQ29tcG9uZW50RmFjdG9yeTtcbiJdfQ==
1
+ /**
2
+ * @fileoverview This file was generated by the Angular template compiler. Do not edit.
3
+ *
4
+ * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes,extraRequire}
5
+ * tslint:disable
6
+ */
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQubmdmYWN0b3J5LmpzIiwic291cmNlUm9vdCI6Ii9ob21lL3J1bm5lci93b3JrL3NpbXBsZWFuZ3VsYXJjb250cm9scy9zaW1wbGVhbmd1bGFyY29udHJvbHMvY2guam5ldHdvcmsuc2FjLWNvbnRyb2xzL3Byb2plY3RzL3NhYy1ib290c3RyYXA0L3NyYy8iLCJzb3VyY2VzIjpbImNvbnRyb2xzL2lucHV0L2lucHV0Lm5nZmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgaTAgZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pMC5Db21wb25lbnRGYWN0b3J5O1xuIl19
@@ -1,42 +1,42 @@
1
- import { Component, forwardRef, Host, Injector, Optional } from '@angular/core';
2
- import { NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';
3
- import { SacInputAreaCommon } from '@simpleangularcontrols/sac-common';
4
- import { SacFormLayoutDirective } from '../layout/formlayout.directive';
5
- /**
6
- * Input Box für lange Texte
7
- */
8
- export class SacInputAreaComponent extends SacInputAreaCommon {
9
- // #region Constructors
10
- /**
11
- * Constructor
12
- * @param formLayout SacFormLayout to define scoped layout settings
13
- * @param injector Injector for injecting services
14
- */
15
- constructor(formLayout, injector) {
16
- super(formLayout, injector);
17
- }
18
- }
19
- SacInputAreaComponent.decorators = [
20
- { type: Component, args: [{
21
- selector: 'sac-inputarea',
22
- template: "<div class=\"form-group row\">\r\n <label\r\n for=\"{{ name }}\"\r\n class=\"col-12 col-form-label d-flex\"\r\n [ngClass]=\"[disablelabel === false ? (this.labelSizes | toLabelWidthCss) : 'sr-only', componentHeight | toLabelHeight]\"\r\n [class.required]=\"isrequired\">\r\n <div\r\n class=\"text flex-grow-0\"\r\n [class.flex-sm-grow-1]=\"splitlabelandhelptext\">\r\n {{ label }}\r\n </div>\r\n <sac-tooltip\r\n *ngIf=\"helptextmode === 'tooltip' && helptext\"\r\n [tooltiptext]=\"helptext\"\r\n [inlinemode]=\"true\">\r\n <span\r\n [ngClass]=\"HelptextTooltipIcon\"\r\n class=\"ml-1\">\r\n </span>\r\n </sac-tooltip>\r\n </label>\r\n <div\r\n class=\"col-12\"\r\n [ngClass]=\"[disablelabel === false ? (this.labelSizes | toControlWidthCss) : '']\"\r\n [class.d-flex]=\"helptextmode === 'tooltip' && helptext && disablelabel\">\r\n <div [class.flex-grow-1]=\"helptextmode === 'tooltip' && helptext && disablelabel\">\r\n <textarea\r\n id=\"{{ name }}\"\r\n name=\"{{ name }}\"\r\n type=\"\"\r\n class=\"form-control\"\r\n [value]=\"value\"\r\n [attr.placeholder]=\"placeholder\"\r\n (blur)=\"onTouch()\"\r\n (input)=\"setValue($event.target.value)\"\r\n (keypress)=\"onKeyPress($event)\"\r\n [attr.rows]=\"rows\"\r\n [class.is-invalid]=\"invalid && (dirty || touched)\"\r\n [ngClass]=\"[componentHeight | toControlHeight]\"\r\n [disabled]=\"isdisabled\"\r\n [attr.maxlength]=\"maxlength\"\r\n [readonly]=\"readonly\"></textarea>\r\n <small\r\n *ngIf=\"helptextmode === 'text' && helptext\"\r\n class=\"form-text text-muted\">\r\n {{ helptext }}\r\n </small>\r\n <div\r\n *ngIf=\"isinlineerrorenabled && invalid && (dirty || touched)\"\r\n class=\"invalid-feedback\">\r\n {{ GetErrorMessage() | async }}\r\n </div>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"helptextmode === 'tooltip' && helptext && disablelabel\"\r\n class=\"form-control-plaintext align-self-top ml-2 mr-1 w-auto\"\r\n [ngClass]=\"[componentHeight | toControlHeight]\">\r\n <sac-tooltip\r\n [tooltiptext]=\"helptext\"\r\n [inlinemode]=\"true\">\r\n <span\r\n [ngClass]=\"HelptextTooltipIcon\"\r\n class=\"ml-1\">\r\n </span>\r\n </sac-tooltip>\r\n </div>\r\n </div>\r\n</div>\r\n",
23
- // Value Access Provider registrieren, damit Wert via Model geschrieben und gelesen werden kann
24
- providers: [
25
- {
26
- provide: NG_VALUE_ACCESSOR,
27
- multi: true,
28
- useExisting: forwardRef(() => SacInputAreaComponent),
29
- },
30
- {
31
- provide: NG_VALIDATORS,
32
- multi: true,
33
- useExisting: forwardRef(() => SacInputAreaComponent),
34
- },
35
- ]
36
- },] }
37
- ];
38
- SacInputAreaComponent.ctorParameters = () => [
39
- { type: SacFormLayoutDirective, decorators: [{ type: Host }, { type: Optional }] },
40
- { type: Injector }
41
- ];
42
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXRhcmVhLmpzIiwic291cmNlUm9vdCI6IkM6L1Byb2pla3RlL3NpbXBsZWFuZ3VsYXJjb250cm9scy1uZzEwL2NoLmpuZXR3b3JrLnNhYy1jb250cm9scy9wcm9qZWN0cy9zYWMtYm9vdHN0cmFwNC9zcmMvIiwic291cmNlcyI6WyJjb250cm9scy9pbnB1dC9pbnB1dGFyZWEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEYsT0FBTyxFQUFFLGFBQWEsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRXhFOztHQUVHO0FBa0JILE1BQU0sT0FBTyxxQkFBc0IsU0FBUSxrQkFBa0I7SUFDM0QsdUJBQXVCO0lBRXZCOzs7O09BSUc7SUFDSCxZQUNzQixVQUFrQyxFQUN0RCxRQUFrQjtRQUVsQixLQUFLLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQzlCLENBQUM7OztZQTlCRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGVBQWU7Z0JBQ3pCLCsxRkFBK0I7Z0JBQy9CLCtGQUErRjtnQkFDL0YsU0FBUyxFQUFFO29CQUNUO3dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7d0JBQzFCLEtBQUssRUFBRSxJQUFJO3dCQUNYLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMscUJBQXFCLENBQUM7cUJBQ3JEO29CQUNEO3dCQUNFLE9BQU8sRUFBRSxhQUFhO3dCQUN0QixLQUFLLEVBQUUsSUFBSTt3QkFDWCxXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHFCQUFxQixDQUFDO3FCQUNyRDtpQkFDRjthQUNGOzs7WUFyQlEsc0JBQXNCLHVCQStCMUIsSUFBSSxZQUFJLFFBQVE7WUFsQ2lCLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGZvcndhcmRSZWYsIEhvc3QsIEluamVjdG9yLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBOR19WQUxJREFUT1JTLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgU2FjSW5wdXRBcmVhQ29tbW9uIH0gZnJvbSAnQHNpbXBsZWFuZ3VsYXJjb250cm9scy9zYWMtY29tbW9uJztcclxuaW1wb3J0IHsgU2FjRm9ybUxheW91dERpcmVjdGl2ZSB9IGZyb20gJy4uL2xheW91dC9mb3JtbGF5b3V0LmRpcmVjdGl2ZSc7XHJcblxyXG4vKipcclxuICogSW5wdXQgQm94IGbDvHIgbGFuZ2UgVGV4dGVcclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc2FjLWlucHV0YXJlYScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2lucHV0YXJlYS5odG1sJyxcclxuICAvLyBWYWx1ZSBBY2Nlc3MgUHJvdmlkZXIgcmVnaXN0cmllcmVuLCBkYW1pdCBXZXJ0IHZpYSBNb2RlbCBnZXNjaHJpZWJlbiB1bmQgZ2VsZXNlbiB3ZXJkZW4ga2FublxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgbXVsdGk6IHRydWUsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFNhY0lucHV0QXJlYUNvbXBvbmVudCksXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxJREFUT1JTLFxyXG4gICAgICBtdWx0aTogdHJ1ZSxcclxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gU2FjSW5wdXRBcmVhQ29tcG9uZW50KSxcclxuICAgIH0sXHJcbiAgXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFNhY0lucHV0QXJlYUNvbXBvbmVudCBleHRlbmRzIFNhY0lucHV0QXJlYUNvbW1vbiB7XHJcbiAgLy8gI3JlZ2lvbiBDb25zdHJ1Y3RvcnNcclxuXHJcbiAgLyoqXHJcbiAgICogQ29uc3RydWN0b3JcclxuICAgKiBAcGFyYW0gZm9ybUxheW91dCBTYWNGb3JtTGF5b3V0IHRvIGRlZmluZSBzY29wZWQgbGF5b3V0IHNldHRpbmdzXHJcbiAgICogQHBhcmFtIGluamVjdG9yIEluamVjdG9yIGZvciBpbmplY3Rpbmcgc2VydmljZXNcclxuICAgKi9cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIEBIb3N0KCkgQE9wdGlvbmFsKCkgZm9ybUxheW91dDogU2FjRm9ybUxheW91dERpcmVjdGl2ZSxcclxuICAgIGluamVjdG9yOiBJbmplY3RvclxyXG4gICkge1xyXG4gICAgc3VwZXIoZm9ybUxheW91dCwgaW5qZWN0b3IpO1xyXG4gIH1cclxuXHJcbiAgLy8gI2VuZHJlZ2lvbiBDb25zdHJ1Y3RvcnNcclxufVxyXG4iXX0=
1
+ import { Component, forwardRef, Host, Injector, Optional } from '@angular/core';
2
+ import { NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';
3
+ import { SacInputAreaCommon } from '@simpleangularcontrols/sac-common';
4
+ import { SacFormLayoutDirective } from '../layout/formlayout.directive';
5
+ /**
6
+ * Input Box für lange Texte
7
+ */
8
+ export class SacInputAreaComponent extends SacInputAreaCommon {
9
+ // #region Constructors
10
+ /**
11
+ * Constructor
12
+ * @param formLayout SacFormLayout to define scoped layout settings
13
+ * @param injector Injector for injecting services
14
+ */
15
+ constructor(formLayout, injector) {
16
+ super(formLayout, injector);
17
+ }
18
+ }
19
+ SacInputAreaComponent.decorators = [
20
+ { type: Component, args: [{
21
+ selector: 'sac-inputarea',
22
+ template: "<div class=\"form-group row\">\n <label\n for=\"{{ name }}\"\n class=\"col-12 col-form-label d-flex\"\n [ngClass]=\"[disablelabel === false ? (this.labelSizes | toLabelWidthCss) : 'sr-only', componentHeight | toLabelHeight]\"\n [class.required]=\"isrequired\">\n <div\n class=\"text flex-grow-0\"\n [class.flex-sm-grow-1]=\"splitlabelandhelptext\">\n {{ label }}\n </div>\n <sac-tooltip\n *ngIf=\"helptextmode === 'tooltip' && helptext\"\n [tooltiptext]=\"helptext\"\n [inlinemode]=\"true\">\n <span\n [ngClass]=\"HelptextTooltipIcon\"\n class=\"ml-1\">\n </span>\n </sac-tooltip>\n </label>\n <div\n class=\"col-12\"\n [ngClass]=\"[disablelabel === false ? (this.labelSizes | toControlWidthCss) : '']\"\n [class.d-flex]=\"helptextmode === 'tooltip' && helptext && disablelabel\">\n <div [class.flex-grow-1]=\"helptextmode === 'tooltip' && helptext && disablelabel\">\n <textarea\n id=\"{{ name }}\"\n name=\"{{ name }}\"\n type=\"\"\n class=\"form-control\"\n [value]=\"value\"\n [attr.placeholder]=\"placeholder\"\n (blur)=\"onTouch()\"\n (input)=\"setValue($event.target.value)\"\n (keypress)=\"onKeyPress($event)\"\n [attr.rows]=\"rows\"\n [class.is-invalid]=\"invalid && (dirty || touched)\"\n [ngClass]=\"[componentHeight | toControlHeight]\"\n [disabled]=\"isdisabled\"\n [attr.maxlength]=\"maxtextlength\"\n [readonly]=\"readonly\"></textarea>\n <small\n *ngIf=\"helptextmode === 'text' && helptext\"\n class=\"form-text text-muted\">\n {{ helptext }}\n </small>\n <div\n *ngIf=\"isinlineerrorenabled && invalid && (dirty || touched)\"\n class=\"invalid-feedback\">\n {{ GetErrorMessage() | async }}\n </div>\n </div>\n\n <div\n *ngIf=\"helptextmode === 'tooltip' && helptext && disablelabel\"\n class=\"form-control-plaintext align-self-top ml-2 mr-1 w-auto\"\n [ngClass]=\"[componentHeight | toControlHeight]\">\n <sac-tooltip\n [tooltiptext]=\"helptext\"\n [inlinemode]=\"true\">\n <span\n [ngClass]=\"HelptextTooltipIcon\"\n class=\"ml-1\">\n </span>\n </sac-tooltip>\n </div>\n </div>\n</div>\n",
23
+ // Value Access Provider registrieren, damit Wert via Model geschrieben und gelesen werden kann
24
+ providers: [
25
+ {
26
+ provide: NG_VALUE_ACCESSOR,
27
+ multi: true,
28
+ useExisting: forwardRef(() => SacInputAreaComponent),
29
+ },
30
+ {
31
+ provide: NG_VALIDATORS,
32
+ multi: true,
33
+ useExisting: forwardRef(() => SacInputAreaComponent),
34
+ },
35
+ ]
36
+ },] }
37
+ ];
38
+ SacInputAreaComponent.ctorParameters = () => [
39
+ { type: SacFormLayoutDirective, decorators: [{ type: Host }, { type: Optional }] },
40
+ { type: Injector }
41
+ ];
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXRhcmVhLmpzIiwic291cmNlUm9vdCI6Ii9ob21lL3J1bm5lci93b3JrL3NpbXBsZWFuZ3VsYXJjb250cm9scy9zaW1wbGVhbmd1bGFyY29udHJvbHMvY2guam5ldHdvcmsuc2FjLWNvbnRyb2xzL3Byb2plY3RzL3NhYy1ib290c3RyYXA0L3NyYy8iLCJzb3VyY2VzIjpbImNvbnRyb2xzL2lucHV0L2lucHV0YXJlYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRixPQUFPLEVBQUUsYUFBYSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDdkUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFeEU7O0dBRUc7QUFrQkgsTUFBTSxPQUFPLHFCQUFzQixTQUFRLGtCQUFrQjtJQUMzRCx1QkFBdUI7SUFFdkI7Ozs7T0FJRztJQUNILFlBQ3NCLFVBQWtDLEVBQ3RELFFBQWtCO1FBRWxCLEtBQUssQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDOUIsQ0FBQzs7O1lBOUJGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsZUFBZTtnQkFDekIseXRGQUErQjtnQkFDL0IsK0ZBQStGO2dCQUMvRixTQUFTLEVBQUU7b0JBQ1Q7d0JBQ0UsT0FBTyxFQUFFLGlCQUFpQjt3QkFDMUIsS0FBSyxFQUFFLElBQUk7d0JBQ1gsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQztxQkFDckQ7b0JBQ0Q7d0JBQ0UsT0FBTyxFQUFFLGFBQWE7d0JBQ3RCLEtBQUssRUFBRSxJQUFJO3dCQUNYLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMscUJBQXFCLENBQUM7cUJBQ3JEO2lCQUNGO2FBQ0Y7OztZQXJCUSxzQkFBc0IsdUJBK0IxQixJQUFJLFlBQUksUUFBUTtZQWxDaUIsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgZm9yd2FyZFJlZiwgSG9zdCwgSW5qZWN0b3IsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOR19WQUxJREFUT1JTLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFNhY0lucHV0QXJlYUNvbW1vbiB9IGZyb20gJ0BzaW1wbGVhbmd1bGFyY29udHJvbHMvc2FjLWNvbW1vbic7XG5pbXBvcnQgeyBTYWNGb3JtTGF5b3V0RGlyZWN0aXZlIH0gZnJvbSAnLi4vbGF5b3V0L2Zvcm1sYXlvdXQuZGlyZWN0aXZlJztcblxuLyoqXG4gKiBJbnB1dCBCb3ggZsO8ciBsYW5nZSBUZXh0ZVxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzYWMtaW5wdXRhcmVhJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2lucHV0YXJlYS5odG1sJyxcbiAgLy8gVmFsdWUgQWNjZXNzIFByb3ZpZGVyIHJlZ2lzdHJpZXJlbiwgZGFtaXQgV2VydCB2aWEgTW9kZWwgZ2VzY2hyaWViZW4gdW5kIGdlbGVzZW4gd2VyZGVuIGthbm5cbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFNhY0lucHV0QXJlYUNvbXBvbmVudCksXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxJREFUT1JTLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBTYWNJbnB1dEFyZWFDb21wb25lbnQpLFxuICAgIH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIFNhY0lucHV0QXJlYUNvbXBvbmVudCBleHRlbmRzIFNhY0lucHV0QXJlYUNvbW1vbiB7XG4gIC8vICNyZWdpb24gQ29uc3RydWN0b3JzXG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdG9yXG4gICAqIEBwYXJhbSBmb3JtTGF5b3V0IFNhY0Zvcm1MYXlvdXQgdG8gZGVmaW5lIHNjb3BlZCBsYXlvdXQgc2V0dGluZ3NcbiAgICogQHBhcmFtIGluamVjdG9yIEluamVjdG9yIGZvciBpbmplY3Rpbmcgc2VydmljZXNcbiAgICovXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBIb3N0KCkgQE9wdGlvbmFsKCkgZm9ybUxheW91dDogU2FjRm9ybUxheW91dERpcmVjdGl2ZSxcbiAgICBpbmplY3RvcjogSW5qZWN0b3JcbiAgKSB7XG4gICAgc3VwZXIoZm9ybUxheW91dCwgaW5qZWN0b3IpO1xuICB9XG5cbiAgLy8gI2VuZHJlZ2lvbiBDb25zdHJ1Y3RvcnNcbn1cbiJdfQ==
@@ -1,7 +1,7 @@
1
- /**
2
- * @fileoverview This file was generated by the Angular template compiler. Do not edit.
3
- *
4
- * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes,extraRequire}
5
- * tslint:disable
6
- */
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXRhcmVhLm5nZmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiJDOi9Qcm9qZWt0ZS9zaW1wbGVhbmd1bGFyY29udHJvbHMtbmcxMC9jaC5qbmV0d29yay5zYWMtY29udHJvbHMvcHJvamVjdHMvc2FjLWJvb3RzdHJhcDQvc3JjLyIsInNvdXJjZXMiOlsiY29udHJvbHMvaW5wdXQvaW5wdXRhcmVhLm5nZmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgaTAgZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pMC5Db21wb25lbnRGYWN0b3J5O1xuIl19
1
+ /**
2
+ * @fileoverview This file was generated by the Angular template compiler. Do not edit.
3
+ *
4
+ * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes,extraRequire}
5
+ * tslint:disable
6
+ */
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXRhcmVhLm5nZmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIvaG9tZS9ydW5uZXIvd29yay9zaW1wbGVhbmd1bGFyY29udHJvbHMvc2ltcGxlYW5ndWxhcmNvbnRyb2xzL2NoLmpuZXR3b3JrLnNhYy1jb250cm9scy9wcm9qZWN0cy9zYWMtYm9vdHN0cmFwNC9zcmMvIiwic291cmNlcyI6WyJjb250cm9scy9pbnB1dC9pbnB1dGFyZWEubmdmYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBpMCBmcm9tICdAYW5ndWxhci9jb3JlJztcbmkwLkNvbXBvbmVudEZhY3Rvcnk7XG4iXX0=