@simpleangularcontrols/sac-common 10.0.0-rc.1

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 (514) hide show
  1. package/README.md +16 -0
  2. package/bundles/simpleangularcontrols-sac-common.umd.js +12054 -0
  3. package/bundles/simpleangularcontrols-sac-common.umd.js.map +1 -0
  4. package/bundles/simpleangularcontrols-sac-common.umd.min.js +2 -0
  5. package/bundles/simpleangularcontrols-sac-common.umd.min.js.map +1 -0
  6. package/common/basedatetimecontrol.d.ts +83 -0
  7. package/common/basedatetimecontrol.ngfactory.d.ts +1 -0
  8. package/common/baseinputcontrol.d.ts +42 -0
  9. package/common/baseinputcontrol.ngfactory.d.ts +1 -0
  10. package/common/baselistcontrol.d.ts +43 -0
  11. package/common/baselistcontrol.ngfactory.d.ts +1 -0
  12. package/common/basemodelcontrol.d.ts +252 -0
  13. package/common/basemodelcontrol.ngfactory.d.ts +1 -0
  14. package/common/baseselectcontrol.d.ts +14 -0
  15. package/common/baseselectcontrol.ngfactory.d.ts +1 -0
  16. package/common/baseuploadcontrol.d.ts +284 -0
  17. package/common/baseuploadcontrol.ngfactory.d.ts +1 -0
  18. package/components/browser/browser.d.ts +267 -0
  19. package/components/browser/browser.ngfactory.d.ts +1 -0
  20. package/components/browser/models/browserfile.d.ts +17 -0
  21. package/components/browser/models/browserfile.ngfactory.d.ts +1 -0
  22. package/components/browser/models/browserfiledeleterequest.d.ts +18 -0
  23. package/components/browser/models/browserfiledeleterequest.ngfactory.d.ts +1 -0
  24. package/components/browser/models/browserfilerenamerequest.d.ts +22 -0
  25. package/components/browser/models/browserfilerenamerequest.ngfactory.d.ts +1 -0
  26. package/components/browser/models/browserfileresponse.d.ts +10 -0
  27. package/components/browser/models/browserfileresponse.ngfactory.d.ts +1 -0
  28. package/components/browser/models/browserfilesaverequest.d.ts +22 -0
  29. package/components/browser/models/browserfilesaverequest.ngfactory.d.ts +1 -0
  30. package/components/browser/models/browsernode.d.ts +34 -0
  31. package/components/browser/models/browsernode.ngfactory.d.ts +1 -0
  32. package/components/browser/models/browsernodedeleterequest.d.ts +14 -0
  33. package/components/browser/models/browsernodedeleterequest.ngfactory.d.ts +1 -0
  34. package/components/browser/models/browsernodenewrequest.d.ts +18 -0
  35. package/components/browser/models/browsernodenewrequest.ngfactory.d.ts +1 -0
  36. package/components/browser/models/browsernoderenamerequest.d.ts +18 -0
  37. package/components/browser/models/browsernoderenamerequest.ngfactory.d.ts +1 -0
  38. package/components/browser/models/browsernoderequest.d.ts +18 -0
  39. package/components/browser/models/browsernoderequest.ngfactory.d.ts +1 -0
  40. package/components/browser/models/browsernoderesponse.d.ts +10 -0
  41. package/components/browser/models/browsernoderesponse.ngfactory.d.ts +1 -0
  42. package/controls/buttons/button.d.ts +70 -0
  43. package/controls/buttons/button.ngfactory.d.ts +1 -0
  44. package/controls/checkbox/checkbox.d.ts +23 -0
  45. package/controls/checkbox/checkbox.ngfactory.d.ts +1 -0
  46. package/controls/checkbox/radiobutton.d.ts +79 -0
  47. package/controls/checkbox/radiobutton.ngfactory.d.ts +1 -0
  48. package/controls/checkbox/radiobuttons.d.ts +60 -0
  49. package/controls/checkbox/radiobuttons.ngfactory.d.ts +1 -0
  50. package/controls/confirm/confirm.button.d.ts +25 -0
  51. package/controls/confirm/confirm.button.ngfactory.d.ts +1 -0
  52. package/controls/confirm/confirm.d.ts +49 -0
  53. package/controls/confirm/confirm.ngfactory.d.ts +1 -0
  54. package/controls/confirm/confirm.service.d.ts +63 -0
  55. package/controls/confirm/confirm.service.ngfactory.d.ts +1 -0
  56. package/controls/contextmenu/contextmenu.d.ts +113 -0
  57. package/controls/contextmenu/contextmenu.ngfactory.d.ts +1 -0
  58. package/controls/contextmenu/contextmenuanchor.d.ts +15 -0
  59. package/controls/contextmenu/contextmenuanchor.ngfactory.d.ts +1 -0
  60. package/controls/contextmenu/contextmenucontainer.d.ts +15 -0
  61. package/controls/contextmenu/contextmenucontainer.ngfactory.d.ts +1 -0
  62. package/controls/contextmenu/contextmenuitem.d.ts +5 -0
  63. package/controls/contextmenu/contextmenuitem.ngfactory.d.ts +1 -0
  64. package/controls/contextmenu/contextmenuitembutton.d.ts +66 -0
  65. package/controls/contextmenu/contextmenuitembutton.ngfactory.d.ts +1 -0
  66. package/controls/datetime/date.d.ts +120 -0
  67. package/controls/datetime/date.ngfactory.d.ts +1 -0
  68. package/controls/datetime/dateselector.d.ts +161 -0
  69. package/controls/datetime/dateselector.ngfactory.d.ts +1 -0
  70. package/controls/datetime/datetime.d.ts +135 -0
  71. package/controls/datetime/datetime.ngfactory.d.ts +1 -0
  72. package/controls/datetime/time.d.ts +115 -0
  73. package/controls/datetime/time.ngfactory.d.ts +1 -0
  74. package/controls/dialog/dialog.d.ts +105 -0
  75. package/controls/dialog/dialog.ngfactory.d.ts +1 -0
  76. package/controls/form/form.d.ts +47 -0
  77. package/controls/form/form.ngfactory.d.ts +1 -0
  78. package/controls/grid/grid.d.ts +125 -0
  79. package/controls/grid/grid.ngfactory.d.ts +1 -0
  80. package/controls/grid/gridbutton.d.ts +33 -0
  81. package/controls/grid/gridbutton.ngfactory.d.ts +1 -0
  82. package/controls/grid/gridcolumn.d.ts +28 -0
  83. package/controls/grid/gridcolumn.ngfactory.d.ts +1 -0
  84. package/controls/grid/gridcolumnaction.d.ts +15 -0
  85. package/controls/grid/gridcolumnaction.ngfactory.d.ts +1 -0
  86. package/controls/grid/gridcolumnbase.d.ts +86 -0
  87. package/controls/grid/gridcolumnbase.ngfactory.d.ts +1 -0
  88. package/controls/grid/gridimage.d.ts +9 -0
  89. package/controls/grid/gridimage.ngfactory.d.ts +1 -0
  90. package/controls/grid/model.d.ts +83 -0
  91. package/controls/grid/model.ngfactory.d.ts +1 -0
  92. package/controls/grid/paging.d.ts +147 -0
  93. package/controls/grid/paging.ngfactory.d.ts +1 -0
  94. package/controls/input/input.d.ts +35 -0
  95. package/controls/input/input.ngfactory.d.ts +1 -0
  96. package/controls/input/inputarea.d.ts +26 -0
  97. package/controls/input/inputarea.ngfactory.d.ts +1 -0
  98. package/controls/input/inputcurrency.d.ts +11 -0
  99. package/controls/input/inputcurrency.ngfactory.d.ts +1 -0
  100. package/controls/input/inputdecimal.d.ts +59 -0
  101. package/controls/input/inputdecimal.ngfactory.d.ts +1 -0
  102. package/controls/input/inputemail.d.ts +19 -0
  103. package/controls/input/inputemail.ngfactory.d.ts +1 -0
  104. package/controls/input/inputinteger.d.ts +59 -0
  105. package/controls/input/inputinteger.ngfactory.d.ts +1 -0
  106. package/controls/input/inputpassword.d.ts +23 -0
  107. package/controls/input/inputpassword.ngfactory.d.ts +1 -0
  108. package/controls/input/inputsearch.d.ts +23 -0
  109. package/controls/input/inputsearch.ngfactory.d.ts +1 -0
  110. package/controls/layout/formlayout.d.ts +46 -0
  111. package/controls/layout/formlayout.ngfactory.d.ts +1 -0
  112. package/controls/list/dropdown.d.ts +138 -0
  113. package/controls/list/dropdown.ngfactory.d.ts +1 -0
  114. package/controls/list/list.module.d.ts +2 -0
  115. package/controls/list/list.module.ngfactory.d.ts +3 -0
  116. package/controls/list/listbox.d.ts +86 -0
  117. package/controls/list/listbox.ngfactory.d.ts +1 -0
  118. package/controls/multilanguage/multilanguageinput.d.ts +102 -0
  119. package/controls/multilanguage/multilanguageinput.ngfactory.d.ts +1 -0
  120. package/controls/multilanguage/multilanguageinputarea.d.ts +107 -0
  121. package/controls/multilanguage/multilanguageinputarea.ngfactory.d.ts +1 -0
  122. package/controls/static/formcontainer.d.ts +31 -0
  123. package/controls/static/formcontainer.ngfactory.d.ts +1 -0
  124. package/controls/static/staticlabel.d.ts +18 -0
  125. package/controls/static/staticlabel.ngfactory.d.ts +1 -0
  126. package/controls/tabs/tab.d.ts +45 -0
  127. package/controls/tabs/tab.ngfactory.d.ts +1 -0
  128. package/controls/tabs/tabitem.d.ts +30 -0
  129. package/controls/tabs/tabitem.ngfactory.d.ts +1 -0
  130. package/controls/tinymce/tinymce.d.ts +149 -0
  131. package/controls/tinymce/tinymce.ngfactory.d.ts +1 -0
  132. package/controls/tinymce/tinymcedialogsettings.d.ts +27 -0
  133. package/controls/tinymce/tinymcedialogsettings.ngfactory.d.ts +1 -0
  134. package/controls/tinymce/tinymcedialogsettingsmeta.d.ts +9 -0
  135. package/controls/tinymce/tinymcedialogsettingsmeta.ngfactory.d.ts +1 -0
  136. package/controls/tinymce/tinymceinstance.d.ts +10 -0
  137. package/controls/tinymce/tinymceinstance.ngfactory.d.ts +1 -0
  138. package/controls/tooltip/tooltip.d.ts +138 -0
  139. package/controls/tooltip/tooltip.ngfactory.d.ts +1 -0
  140. package/controls/treeview/ngtreeitemaction.d.ts +40 -0
  141. package/controls/treeview/ngtreeitemaction.ngfactory.d.ts +1 -0
  142. package/controls/treeview/treeview.d.ts +185 -0
  143. package/controls/treeview/treeview.ngfactory.d.ts +1 -0
  144. package/controls/treeview/treeviewchild.d.ts +12 -0
  145. package/controls/treeview/treeviewchild.ngfactory.d.ts +1 -0
  146. package/controls/upload/dropzonemultiple.d.ts +70 -0
  147. package/controls/upload/dropzonemultiple.ngfactory.d.ts +1 -0
  148. package/controls/upload/dropzonesingle.d.ts +47 -0
  149. package/controls/upload/dropzonesingle.ngfactory.d.ts +1 -0
  150. package/controls/upload/uploadmultiple.d.ts +50 -0
  151. package/controls/upload/uploadmultiple.ngfactory.d.ts +1 -0
  152. package/controls/upload/uploadsingle.d.ts +27 -0
  153. package/controls/upload/uploadsingle.ngfactory.d.ts +1 -0
  154. package/controls/validation/validationsummary.d.ts +60 -0
  155. package/controls/validation/validationsummary.ngfactory.d.ts +1 -0
  156. package/controls/wizard/wizard.d.ts +73 -0
  157. package/controls/wizard/wizard.ngfactory.d.ts +1 -0
  158. package/controls/wizard/wizarditem.d.ts +25 -0
  159. package/controls/wizard/wizarditem.ngfactory.d.ts +1 -0
  160. package/enums/ButtonRoleType.d.ts +1 -0
  161. package/enums/ButtonRoleType.ngfactory.d.ts +1 -0
  162. package/enums/ControlHeight.d.ts +17 -0
  163. package/enums/ControlHeight.ngfactory.d.ts +1 -0
  164. package/enums/IconType.d.ts +7 -0
  165. package/enums/IconType.ngfactory.d.ts +1 -0
  166. package/esm2015/common/basedatetimecontrol.js +164 -0
  167. package/esm2015/common/basedatetimecontrol.ngfactory.js +7 -0
  168. package/esm2015/common/baseinputcontrol.js +78 -0
  169. package/esm2015/common/baseinputcontrol.ngfactory.js +7 -0
  170. package/esm2015/common/baselistcontrol.js +55 -0
  171. package/esm2015/common/baselistcontrol.ngfactory.js +7 -0
  172. package/esm2015/common/basemodelcontrol.js +483 -0
  173. package/esm2015/common/basemodelcontrol.ngfactory.js +7 -0
  174. package/esm2015/common/baseselectcontrol.js +26 -0
  175. package/esm2015/common/baseselectcontrol.ngfactory.js +7 -0
  176. package/esm2015/common/baseuploadcontrol.js +457 -0
  177. package/esm2015/common/baseuploadcontrol.ngfactory.js +7 -0
  178. package/esm2015/components/browser/browser.js +545 -0
  179. package/esm2015/components/browser/browser.ngfactory.js +7 -0
  180. package/esm2015/components/browser/models/browserfile.js +1 -0
  181. package/esm2015/components/browser/models/browserfile.ngfactory.js +7 -0
  182. package/esm2015/components/browser/models/browserfiledeleterequest.js +13 -0
  183. package/esm2015/components/browser/models/browserfiledeleterequest.ngfactory.js +7 -0
  184. package/esm2015/components/browser/models/browserfilerenamerequest.js +13 -0
  185. package/esm2015/components/browser/models/browserfilerenamerequest.ngfactory.js +7 -0
  186. package/esm2015/components/browser/models/browserfileresponse.js +1 -0
  187. package/esm2015/components/browser/models/browserfileresponse.ngfactory.js +7 -0
  188. package/esm2015/components/browser/models/browserfilesaverequest.js +13 -0
  189. package/esm2015/components/browser/models/browserfilesaverequest.ngfactory.js +7 -0
  190. package/esm2015/components/browser/models/browsernode.js +1 -0
  191. package/esm2015/components/browser/models/browsernode.ngfactory.js +7 -0
  192. package/esm2015/components/browser/models/browsernodedeleterequest.js +13 -0
  193. package/esm2015/components/browser/models/browsernodedeleterequest.ngfactory.js +7 -0
  194. package/esm2015/components/browser/models/browsernodenewrequest.js +13 -0
  195. package/esm2015/components/browser/models/browsernodenewrequest.ngfactory.js +7 -0
  196. package/esm2015/components/browser/models/browsernoderenamerequest.js +13 -0
  197. package/esm2015/components/browser/models/browsernoderenamerequest.ngfactory.js +7 -0
  198. package/esm2015/components/browser/models/browsernoderequest.js +13 -0
  199. package/esm2015/components/browser/models/browsernoderequest.ngfactory.js +7 -0
  200. package/esm2015/components/browser/models/browsernoderesponse.js +1 -0
  201. package/esm2015/components/browser/models/browsernoderesponse.ngfactory.js +7 -0
  202. package/esm2015/controls/buttons/button.js +141 -0
  203. package/esm2015/controls/buttons/button.ngfactory.js +7 -0
  204. package/esm2015/controls/checkbox/checkbox.js +33 -0
  205. package/esm2015/controls/checkbox/checkbox.ngfactory.js +7 -0
  206. package/esm2015/controls/checkbox/radiobutton.js +115 -0
  207. package/esm2015/controls/checkbox/radiobutton.ngfactory.js +7 -0
  208. package/esm2015/controls/checkbox/radiobuttons.js +113 -0
  209. package/esm2015/controls/checkbox/radiobuttons.ngfactory.js +7 -0
  210. package/esm2015/controls/confirm/confirm.button.js +32 -0
  211. package/esm2015/controls/confirm/confirm.button.ngfactory.js +7 -0
  212. package/esm2015/controls/confirm/confirm.js +75 -0
  213. package/esm2015/controls/confirm/confirm.ngfactory.js +7 -0
  214. package/esm2015/controls/confirm/confirm.service.js +87 -0
  215. package/esm2015/controls/confirm/confirm.service.ngfactory.js +7 -0
  216. package/esm2015/controls/contextmenu/contextmenu.js +194 -0
  217. package/esm2015/controls/contextmenu/contextmenu.ngfactory.js +7 -0
  218. package/esm2015/controls/contextmenu/contextmenuanchor.js +22 -0
  219. package/esm2015/controls/contextmenu/contextmenuanchor.ngfactory.js +7 -0
  220. package/esm2015/controls/contextmenu/contextmenucontainer.js +22 -0
  221. package/esm2015/controls/contextmenu/contextmenucontainer.ngfactory.js +7 -0
  222. package/esm2015/controls/contextmenu/contextmenuitem.js +10 -0
  223. package/esm2015/controls/contextmenu/contextmenuitem.ngfactory.js +7 -0
  224. package/esm2015/controls/contextmenu/contextmenuitembutton.js +97 -0
  225. package/esm2015/controls/contextmenu/contextmenuitembutton.ngfactory.js +7 -0
  226. package/esm2015/controls/datetime/date.js +212 -0
  227. package/esm2015/controls/datetime/date.ngfactory.js +7 -0
  228. package/esm2015/controls/datetime/dateselector.js +458 -0
  229. package/esm2015/controls/datetime/dateselector.ngfactory.js +7 -0
  230. package/esm2015/controls/datetime/datetime.js +229 -0
  231. package/esm2015/controls/datetime/datetime.ngfactory.js +7 -0
  232. package/esm2015/controls/datetime/time.js +212 -0
  233. package/esm2015/controls/datetime/time.ngfactory.js +7 -0
  234. package/esm2015/controls/dialog/dialog.js +207 -0
  235. package/esm2015/controls/dialog/dialog.ngfactory.js +7 -0
  236. package/esm2015/controls/form/form.js +110 -0
  237. package/esm2015/controls/form/form.ngfactory.js +7 -0
  238. package/esm2015/controls/grid/grid.js +144 -0
  239. package/esm2015/controls/grid/grid.ngfactory.js +7 -0
  240. package/esm2015/controls/grid/gridbutton.js +54 -0
  241. package/esm2015/controls/grid/gridbutton.ngfactory.js +7 -0
  242. package/esm2015/controls/grid/gridcolumn.js +49 -0
  243. package/esm2015/controls/grid/gridcolumn.ngfactory.js +7 -0
  244. package/esm2015/controls/grid/gridcolumnaction.js +26 -0
  245. package/esm2015/controls/grid/gridcolumnaction.ngfactory.js +7 -0
  246. package/esm2015/controls/grid/gridcolumnbase.js +126 -0
  247. package/esm2015/controls/grid/gridcolumnbase.ngfactory.js +7 -0
  248. package/esm2015/controls/grid/gridimage.js +13 -0
  249. package/esm2015/controls/grid/gridimage.ngfactory.js +7 -0
  250. package/esm2015/controls/grid/model.js +79 -0
  251. package/esm2015/controls/grid/model.ngfactory.js +7 -0
  252. package/esm2015/controls/grid/paging.js +254 -0
  253. package/esm2015/controls/grid/paging.ngfactory.js +7 -0
  254. package/esm2015/controls/input/input.js +66 -0
  255. package/esm2015/controls/input/input.ngfactory.js +7 -0
  256. package/esm2015/controls/input/inputarea.js +54 -0
  257. package/esm2015/controls/input/inputarea.ngfactory.js +7 -0
  258. package/esm2015/controls/input/inputcurrency.js +31 -0
  259. package/esm2015/controls/input/inputcurrency.ngfactory.js +7 -0
  260. package/esm2015/controls/input/inputdecimal.js +146 -0
  261. package/esm2015/controls/input/inputdecimal.ngfactory.js +7 -0
  262. package/esm2015/controls/input/inputemail.js +41 -0
  263. package/esm2015/controls/input/inputemail.ngfactory.js +7 -0
  264. package/esm2015/controls/input/inputinteger.js +130 -0
  265. package/esm2015/controls/input/inputinteger.ngfactory.js +7 -0
  266. package/esm2015/controls/input/inputpassword.js +46 -0
  267. package/esm2015/controls/input/inputpassword.ngfactory.js +7 -0
  268. package/esm2015/controls/input/inputsearch.js +37 -0
  269. package/esm2015/controls/input/inputsearch.ngfactory.js +7 -0
  270. package/esm2015/controls/layout/formlayout.js +70 -0
  271. package/esm2015/controls/layout/formlayout.ngfactory.js +7 -0
  272. package/esm2015/controls/list/dropdown.js +270 -0
  273. package/esm2015/controls/list/dropdown.ngfactory.js +7 -0
  274. package/esm2015/controls/list/list.module.js +11 -0
  275. package/esm2015/controls/list/list.module.ngfactory.js +7 -0
  276. package/esm2015/controls/list/listbox.js +187 -0
  277. package/esm2015/controls/list/listbox.ngfactory.js +7 -0
  278. package/esm2015/controls/multilanguage/multilanguageinput.js +230 -0
  279. package/esm2015/controls/multilanguage/multilanguageinput.ngfactory.js +7 -0
  280. package/esm2015/controls/multilanguage/multilanguageinputarea.js +231 -0
  281. package/esm2015/controls/multilanguage/multilanguageinputarea.ngfactory.js +7 -0
  282. package/esm2015/controls/static/formcontainer.js +50 -0
  283. package/esm2015/controls/static/formcontainer.ngfactory.js +7 -0
  284. package/esm2015/controls/static/staticlabel.js +31 -0
  285. package/esm2015/controls/static/staticlabel.ngfactory.js +7 -0
  286. package/esm2015/controls/tabs/tab.js +72 -0
  287. package/esm2015/controls/tabs/tab.ngfactory.js +7 -0
  288. package/esm2015/controls/tabs/tabitem.js +32 -0
  289. package/esm2015/controls/tabs/tabitem.ngfactory.js +7 -0
  290. package/esm2015/controls/tinymce/tinymce.js +238 -0
  291. package/esm2015/controls/tinymce/tinymce.ngfactory.js +7 -0
  292. package/esm2015/controls/tinymce/tinymcedialogsettings.js +13 -0
  293. package/esm2015/controls/tinymce/tinymcedialogsettings.ngfactory.js +7 -0
  294. package/esm2015/controls/tinymce/tinymcedialogsettingsmeta.js +4 -0
  295. package/esm2015/controls/tinymce/tinymcedialogsettingsmeta.ngfactory.js +7 -0
  296. package/esm2015/controls/tinymce/tinymceinstance.js +1 -0
  297. package/esm2015/controls/tinymce/tinymceinstance.ngfactory.js +7 -0
  298. package/esm2015/controls/tooltip/tooltip.js +361 -0
  299. package/esm2015/controls/tooltip/tooltip.ngfactory.js +7 -0
  300. package/esm2015/controls/treeview/ngtreeitemaction.js +60 -0
  301. package/esm2015/controls/treeview/ngtreeitemaction.ngfactory.js +7 -0
  302. package/esm2015/controls/treeview/treeview.js +322 -0
  303. package/esm2015/controls/treeview/treeview.ngfactory.js +7 -0
  304. package/esm2015/controls/treeview/treeviewchild.js +18 -0
  305. package/esm2015/controls/treeview/treeviewchild.ngfactory.js +7 -0
  306. package/esm2015/controls/upload/dropzonemultiple.js +163 -0
  307. package/esm2015/controls/upload/dropzonemultiple.ngfactory.js +7 -0
  308. package/esm2015/controls/upload/dropzonesingle.js +108 -0
  309. package/esm2015/controls/upload/dropzonesingle.ngfactory.js +7 -0
  310. package/esm2015/controls/upload/uploadmultiple.js +121 -0
  311. package/esm2015/controls/upload/uploadmultiple.ngfactory.js +7 -0
  312. package/esm2015/controls/upload/uploadsingle.js +55 -0
  313. package/esm2015/controls/upload/uploadsingle.ngfactory.js +7 -0
  314. package/esm2015/controls/validation/validationsummary.js +133 -0
  315. package/esm2015/controls/validation/validationsummary.ngfactory.js +7 -0
  316. package/esm2015/controls/wizard/wizard.js +139 -0
  317. package/esm2015/controls/wizard/wizard.ngfactory.js +7 -0
  318. package/esm2015/controls/wizard/wizarditem.js +27 -0
  319. package/esm2015/controls/wizard/wizarditem.ngfactory.js +7 -0
  320. package/esm2015/enums/ButtonRoleType.js +1 -0
  321. package/esm2015/enums/ButtonRoleType.ngfactory.js +7 -0
  322. package/esm2015/enums/ControlHeight.js +19 -0
  323. package/esm2015/enums/ControlHeight.ngfactory.js +7 -0
  324. package/esm2015/enums/IconType.js +9 -0
  325. package/esm2015/enums/IconType.ngfactory.js +7 -0
  326. package/esm2015/interfaces/ISacConfigurationService.js +1 -0
  327. package/esm2015/interfaces/ISacConfigurationService.ngfactory.js +7 -0
  328. package/esm2015/interfaces/ISacFileBrowserService.js +1 -0
  329. package/esm2015/interfaces/ISacFileBrowserService.ngfactory.js +7 -0
  330. package/esm2015/interfaces/ISacIconService.js +1 -0
  331. package/esm2015/interfaces/ISacIconService.ngfactory.js +7 -0
  332. package/esm2015/interfaces/ISacLabelSizes.js +1 -0
  333. package/esm2015/interfaces/ISacLabelSizes.ngfactory.js +7 -0
  334. package/esm2015/interfaces/ISacLanguageService.js +1 -0
  335. package/esm2015/interfaces/ISacLanguageService.ngfactory.js +7 -0
  336. package/esm2015/interfaces/ISacLocalisationService.js +1 -0
  337. package/esm2015/interfaces/ISacLocalisationService.ngfactory.js +7 -0
  338. package/esm2015/interfaces/ISacValidationKeyService.js +1 -0
  339. package/esm2015/interfaces/ISacValidationKeyService.ngfactory.js +7 -0
  340. package/esm2015/interfaces/iabstractcontrollabel.js +1 -0
  341. package/esm2015/interfaces/iabstractcontrollabel.ngfactory.js +7 -0
  342. package/esm2015/interfaces/iconfirmcomponent.js +1 -0
  343. package/esm2015/interfaces/iconfirmcomponent.ngfactory.js +7 -0
  344. package/esm2015/interfaces/idatetimecontrol.js +1 -0
  345. package/esm2015/interfaces/idatetimecontrol.ngfactory.js +7 -0
  346. package/esm2015/interfaces/iuploadcontrol.js +1 -0
  347. package/esm2015/interfaces/iuploadcontrol.ngfactory.js +7 -0
  348. package/esm2015/models/languagemodel.js +13 -0
  349. package/esm2015/models/languagemodel.ngfactory.js +7 -0
  350. package/esm2015/public_api.js +101 -0
  351. package/esm2015/public_api.ngfactory.js +7 -0
  352. package/esm2015/services/index.js +7 -0
  353. package/esm2015/services/index.ngfactory.js +7 -0
  354. package/esm2015/services/sac-configuration.service.js +77 -0
  355. package/esm2015/services/sac-configuration.service.ngfactory.js +7 -0
  356. package/esm2015/services/sac-filebrowser.service.js +203 -0
  357. package/esm2015/services/sac-filebrowser.service.ngfactory.js +7 -0
  358. package/esm2015/services/sac-icon.service.js +155 -0
  359. package/esm2015/services/sac-icon.service.ngfactory.js +7 -0
  360. package/esm2015/services/sac-language.service.js +43 -0
  361. package/esm2015/services/sac-language.service.ngfactory.js +7 -0
  362. package/esm2015/services/sac-localisation.service.js +460 -0
  363. package/esm2015/services/sac-localisation.service.ngfactory.js +7 -0
  364. package/esm2015/services/sac-validationkey.service.js +156 -0
  365. package/esm2015/services/sac-validationkey.service.ngfactory.js +7 -0
  366. package/esm2015/simpleangularcontrols-sac-common.js +11 -0
  367. package/esm2015/simpleangularcontrols-sac-common.ngfactory.js +7 -0
  368. package/esm2015/utilities/convertion.js +32 -0
  369. package/esm2015/utilities/convertion.ngfactory.js +7 -0
  370. package/esm2015/utilities/datatypes.js +9 -0
  371. package/esm2015/utilities/datatypes.ngfactory.js +7 -0
  372. package/esm2015/utilities/enums.js +16 -0
  373. package/esm2015/utilities/enums.ngfactory.js +7 -0
  374. package/esm2015/utilities/guid.js +16 -0
  375. package/esm2015/utilities/guid.ngfactory.js +7 -0
  376. package/esm2015/utilities/interpolation.js +50 -0
  377. package/esm2015/utilities/interpolation.ngfactory.js +7 -0
  378. package/esm2015/utilities/positioning.js +301 -0
  379. package/esm2015/utilities/positioning.ngfactory.js +7 -0
  380. package/esm2015/validation/email.validator.js +13 -0
  381. package/esm2015/validation/email.validator.ngfactory.js +7 -0
  382. package/esm2015/validation/index.js +3 -0
  383. package/esm2015/validation/index.ngfactory.js +7 -0
  384. package/esm2015/validation/invaliddate.validator.js +14 -0
  385. package/esm2015/validation/invaliddate.validator.ngfactory.js +7 -0
  386. package/esm2015/validation/isDateValid.js +15 -0
  387. package/esm2015/validation/isDateValid.ngfactory.js +7 -0
  388. package/esm2015/validation/maxdate.validator.js +21 -0
  389. package/esm2015/validation/maxdate.validator.ngfactory.js +7 -0
  390. package/esm2015/validation/maxtime.validator.js +21 -0
  391. package/esm2015/validation/maxtime.validator.ngfactory.js +7 -0
  392. package/esm2015/validation/maxvalue.validator.js +16 -0
  393. package/esm2015/validation/maxvalue.validator.ngfactory.js +7 -0
  394. package/esm2015/validation/mindate.validator.js +21 -0
  395. package/esm2015/validation/mindate.validator.ngfactory.js +7 -0
  396. package/esm2015/validation/minfiles.validator.js +19 -0
  397. package/esm2015/validation/minfiles.validator.ngfactory.js +7 -0
  398. package/esm2015/validation/minlength.validator.js +21 -0
  399. package/esm2015/validation/minlength.validator.ngfactory.js +7 -0
  400. package/esm2015/validation/mintime.validator.js +21 -0
  401. package/esm2015/validation/mintime.validator.ngfactory.js +7 -0
  402. package/esm2015/validation/minvalue.validator.js +16 -0
  403. package/esm2015/validation/minvalue.validator.ngfactory.js +7 -0
  404. package/esm2015/validation/multilanguagerequired.validator.js +22 -0
  405. package/esm2015/validation/multilanguagerequired.validator.ngfactory.js +7 -0
  406. package/esm2015/validation/multilanguagerequiredany.validator.js +22 -0
  407. package/esm2015/validation/multilanguagerequiredany.validator.ngfactory.js +7 -0
  408. package/esm2015/validation/pattern.validator.js +16 -0
  409. package/esm2015/validation/pattern.validator.ngfactory.js +7 -0
  410. package/esm2015/validation/required.validator.js +13 -0
  411. package/esm2015/validation/required.validator.ngfactory.js +7 -0
  412. package/esm2015/validation/validation.class.js +189 -0
  413. package/esm2015/validation/validation.class.ngfactory.js +7 -0
  414. package/esm2015/validation/validationerrorcreator.js +11 -0
  415. package/esm2015/validation/validationerrorcreator.ngfactory.js +7 -0
  416. package/esm2015/validation/validationerroritem.js +27 -0
  417. package/esm2015/validation/validationerroritem.ngfactory.js +7 -0
  418. package/fesm2015/simpleangularcontrols-sac-common.js +10319 -0
  419. package/fesm2015/simpleangularcontrols-sac-common.js.map +1 -0
  420. package/interfaces/ISacConfigurationService.d.ts +38 -0
  421. package/interfaces/ISacConfigurationService.ngfactory.d.ts +1 -0
  422. package/interfaces/ISacFileBrowserService.d.ts +65 -0
  423. package/interfaces/ISacFileBrowserService.ngfactory.d.ts +1 -0
  424. package/interfaces/ISacIconService.d.ts +89 -0
  425. package/interfaces/ISacIconService.ngfactory.d.ts +1 -0
  426. package/interfaces/ISacLabelSizes.d.ts +26 -0
  427. package/interfaces/ISacLabelSizes.ngfactory.d.ts +1 -0
  428. package/interfaces/ISacLanguageService.d.ts +12 -0
  429. package/interfaces/ISacLanguageService.ngfactory.d.ts +1 -0
  430. package/interfaces/ISacLocalisationService.d.ts +10 -0
  431. package/interfaces/ISacLocalisationService.ngfactory.d.ts +1 -0
  432. package/interfaces/ISacValidationKeyService.d.ts +52 -0
  433. package/interfaces/ISacValidationKeyService.ngfactory.d.ts +1 -0
  434. package/interfaces/iabstractcontrollabel.d.ts +6 -0
  435. package/interfaces/iabstractcontrollabel.ngfactory.d.ts +1 -0
  436. package/interfaces/iconfirmcomponent.d.ts +18 -0
  437. package/interfaces/iconfirmcomponent.ngfactory.d.ts +1 -0
  438. package/interfaces/idatetimecontrol.d.ts +7 -0
  439. package/interfaces/idatetimecontrol.ngfactory.d.ts +1 -0
  440. package/interfaces/iuploadcontrol.d.ts +9 -0
  441. package/interfaces/iuploadcontrol.ngfactory.d.ts +1 -0
  442. package/models/languagemodel.d.ts +22 -0
  443. package/models/languagemodel.ngfactory.d.ts +1 -0
  444. package/package.json +28 -0
  445. package/public_api.d.ts +79 -0
  446. package/public_api.ngfactory.d.ts +1 -0
  447. package/services/index.d.ts +6 -0
  448. package/services/index.ngfactory.d.ts +1 -0
  449. package/services/sac-configuration.service.d.ts +81 -0
  450. package/services/sac-configuration.service.ngfactory.d.ts +1 -0
  451. package/services/sac-filebrowser.service.d.ts +140 -0
  452. package/services/sac-filebrowser.service.ngfactory.d.ts +1 -0
  453. package/services/sac-icon.service.d.ts +184 -0
  454. package/services/sac-icon.service.ngfactory.d.ts +1 -0
  455. package/services/sac-language.service.d.ts +26 -0
  456. package/services/sac-language.service.ngfactory.d.ts +1 -0
  457. package/services/sac-localisation.service.d.ts +137 -0
  458. package/services/sac-localisation.service.ngfactory.d.ts +1 -0
  459. package/services/sac-validationkey.service.d.ts +55 -0
  460. package/services/sac-validationkey.service.ngfactory.d.ts +1 -0
  461. package/simpleangularcontrols-sac-common-10.0.0-rc.1.tgz +0 -0
  462. package/simpleangularcontrols-sac-common.d.ts +10 -0
  463. package/simpleangularcontrols-sac-common.metadata.json +1 -0
  464. package/simpleangularcontrols-sac-common.ngfactory.d.ts +1 -0
  465. package/utilities/convertion.d.ts +15 -0
  466. package/utilities/convertion.ngfactory.d.ts +1 -0
  467. package/utilities/datatypes.d.ts +6 -0
  468. package/utilities/datatypes.ngfactory.d.ts +1 -0
  469. package/utilities/enums.d.ts +10 -0
  470. package/utilities/enums.ngfactory.d.ts +1 -0
  471. package/utilities/guid.d.ts +4 -0
  472. package/utilities/guid.ngfactory.d.ts +1 -0
  473. package/utilities/interpolation.d.ts +21 -0
  474. package/utilities/interpolation.ngfactory.d.ts +1 -0
  475. package/utilities/positioning.d.ts +82 -0
  476. package/utilities/positioning.ngfactory.d.ts +1 -0
  477. package/validation/email.validator.d.ts +2 -0
  478. package/validation/email.validator.ngfactory.d.ts +1 -0
  479. package/validation/index.d.ts +2 -0
  480. package/validation/index.ngfactory.d.ts +1 -0
  481. package/validation/invaliddate.validator.d.ts +2 -0
  482. package/validation/invaliddate.validator.ngfactory.d.ts +1 -0
  483. package/validation/isDateValid.d.ts +5 -0
  484. package/validation/isDateValid.ngfactory.d.ts +1 -0
  485. package/validation/maxdate.validator.d.ts +2 -0
  486. package/validation/maxdate.validator.ngfactory.d.ts +1 -0
  487. package/validation/maxtime.validator.d.ts +2 -0
  488. package/validation/maxtime.validator.ngfactory.d.ts +1 -0
  489. package/validation/maxvalue.validator.d.ts +2 -0
  490. package/validation/maxvalue.validator.ngfactory.d.ts +1 -0
  491. package/validation/mindate.validator.d.ts +2 -0
  492. package/validation/mindate.validator.ngfactory.d.ts +1 -0
  493. package/validation/minfiles.validator.d.ts +2 -0
  494. package/validation/minfiles.validator.ngfactory.d.ts +1 -0
  495. package/validation/minlength.validator.d.ts +2 -0
  496. package/validation/minlength.validator.ngfactory.d.ts +1 -0
  497. package/validation/mintime.validator.d.ts +2 -0
  498. package/validation/mintime.validator.ngfactory.d.ts +1 -0
  499. package/validation/minvalue.validator.d.ts +2 -0
  500. package/validation/minvalue.validator.ngfactory.d.ts +1 -0
  501. package/validation/multilanguagerequired.validator.d.ts +3 -0
  502. package/validation/multilanguagerequired.validator.ngfactory.d.ts +1 -0
  503. package/validation/multilanguagerequiredany.validator.d.ts +3 -0
  504. package/validation/multilanguagerequiredany.validator.ngfactory.d.ts +1 -0
  505. package/validation/pattern.validator.d.ts +2 -0
  506. package/validation/pattern.validator.ngfactory.d.ts +1 -0
  507. package/validation/required.validator.d.ts +2 -0
  508. package/validation/required.validator.ngfactory.d.ts +1 -0
  509. package/validation/validation.class.d.ts +139 -0
  510. package/validation/validation.class.ngfactory.d.ts +1 -0
  511. package/validation/validationerrorcreator.d.ts +1 -0
  512. package/validation/validationerrorcreator.ngfactory.d.ts +1 -0
  513. package/validation/validationerroritem.d.ts +33 -0
  514. package/validation/validationerroritem.ngfactory.d.ts +1 -0
@@ -0,0 +1,460 @@
1
+ import { Inject, Injectable, InjectionToken } from '@angular/core';
2
+ import { Observable } from 'rxjs';
3
+ import { Interpolation } from '../utilities/interpolation';
4
+ import { SACVALIDATIONKEY_SERVICE } from './sac-validationkey.service';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "./sac-validationkey.service";
7
+ // #region Classes
8
+ /**
9
+ * abstract class for localisation in components
10
+ * */
11
+ export class SacAbstractLocalisationService {
12
+ }
13
+ SacAbstractLocalisationService.ɵprov = i0.ɵɵdefineInjectable({ factory: function SacAbstractLocalisationService_Factory() { return new SacAbstractLocalisationService(); }, token: SacAbstractLocalisationService, providedIn: "root" });
14
+ SacAbstractLocalisationService.decorators = [
15
+ { type: Injectable, args: [{ providedIn: 'root' },] }
16
+ ];
17
+ /**
18
+ * default localisation service
19
+ * */
20
+ export class SacDefaultLocalisationService extends SacAbstractLocalisationService {
21
+ // #endregion Properties
22
+ // #region Constructors
23
+ /**
24
+ * Konstruktor
25
+ * */
26
+ constructor(validationKeyService) {
27
+ super();
28
+ this.validationKeyService = validationKeyService;
29
+ // #region Properties
30
+ /**
31
+ * Language Resources für Controls Library
32
+ */
33
+ this.data = new Map();
34
+ // Set Languages
35
+ this.data.set('de', new Map());
36
+ // Validation
37
+ this.data
38
+ .get('de')
39
+ .set(validationKeyService.ValidationErrorRequired, this.VALIDATION_ERROR_REQUIRED.get('de'));
40
+ this.data
41
+ .get('de')
42
+ .set(validationKeyService.ValidationErrorSummaryRequired, this.VALIDATION_ERROR_SUMMARY_REQUIRED.get('de'));
43
+ this.data
44
+ .get('de')
45
+ .set(validationKeyService.ValidationErrorMinValue, this.VALIDATION_ERROR_MINVALUE.get('de'));
46
+ this.data
47
+ .get('de')
48
+ .set(validationKeyService.ValidationErrorSummaryMinValue, this.VALIDATION_ERROR_SUMMARY_MINVALUE.get('de'));
49
+ this.data
50
+ .get('de')
51
+ .set(validationKeyService.ValidationErrorPattern, this.VALIDATION_ERROR_PATTERN.get('de'));
52
+ this.data
53
+ .get('de')
54
+ .set(validationKeyService.ValidationErrorSummaryPattern, this.VALIDATION_ERROR_SUMMARY_PATTERN.get('de'));
55
+ this.data
56
+ .get('de')
57
+ .set(validationKeyService.ValidationErrorMaxValue, this.VALIDATION_ERROR_MAXVALUE.get('de'));
58
+ this.data
59
+ .get('de')
60
+ .set(validationKeyService.ValidationErrorSummaryMaxValue, this.VALIDATION_ERROR_SUMMARY_MAXVALUE.get('de'));
61
+ this.data
62
+ .get('de')
63
+ .set(validationKeyService.ValidationErrorEmail, this.VALIDATION_ERROR_EMAIL.get('de'));
64
+ this.data
65
+ .get('de')
66
+ .set(validationKeyService.ValidationErrorSummaryEmail, this.VALIDATION_ERROR_SUMMARY_EMAIL.get('de'));
67
+ this.data
68
+ .get('de')
69
+ .set(validationKeyService.ValidationErrorMinLength, this.VALIDATION_ERROR_MINLENGTH.get('de'));
70
+ this.data
71
+ .get('de')
72
+ .set(validationKeyService.ValidationErrorSummaryMinLength, this.VALIDATION_ERROR_SUMMARY_MINLENGTH.get('de'));
73
+ this.data
74
+ .get('de')
75
+ .set(validationKeyService.ValidationErrorMinDate, this.VALIDATION_ERROR_MINDATE.get('de'));
76
+ this.data
77
+ .get('de')
78
+ .set(validationKeyService.ValidationErrorSummaryMinDate, this.VALIDATION_ERROR_SUMMARY_MINDATE.get('de'));
79
+ this.data
80
+ .get('de')
81
+ .set(validationKeyService.ValidationErrorMaxDate, this.VALIDATION_ERROR_MAXDATE.get('de'));
82
+ this.data
83
+ .get('de')
84
+ .set(validationKeyService.ValidationErrorSummaryMaxDate, this.VALIDATION_ERROR_SUMMARY_MAXDATE.get('de'));
85
+ this.data
86
+ .get('de')
87
+ .set(validationKeyService.ValidationErrorMinTime, this.VALIDATION_ERROR_MINTIME.get('de'));
88
+ this.data
89
+ .get('de')
90
+ .set(validationKeyService.ValidationErrorSummaryMinTime, this.VALIDATION_ERROR_SUMMARY_MINTIME.get('de'));
91
+ this.data
92
+ .get('de')
93
+ .set(validationKeyService.ValidationErrorMaxTime, this.VALIDATION_ERROR_MAXTIME.get('de'));
94
+ this.data
95
+ .get('de')
96
+ .set(validationKeyService.ValidationErrorSummaryMaxTime, this.VALIDATION_ERROR_SUMMARY_MAXTIME.get('de'));
97
+ this.data
98
+ .get('de')
99
+ .set(validationKeyService.ValidationErrorDatetimeFormat, this.VALIDATION_ERROR_DATETIMEFORMAT.get('de'));
100
+ this.data
101
+ .get('de')
102
+ .set(validationKeyService.ValidationErrorSummaryDatetimeFormat, this.VALIDATION_ERROR_SUMMARY_DATETIMEFORMAT.get('de'));
103
+ this.data
104
+ .get('de')
105
+ .set(validationKeyService.ValidationErrorFilesMin, this.VALIDATION_ERROR_FILESMIN.get('de'));
106
+ this.data
107
+ .get('de')
108
+ .set(validationKeyService.ValidationErrorSummaryFilesMin, this.VALIDATION_ERROR_SUMMARY_FILESMIN.get('de'));
109
+ this.data
110
+ .get('de')
111
+ .set(validationKeyService.ValidationErrorMultilanguageRequiredAny, this.VALIDATION_ERROR_MULTILANGUAGEREQUIREDANY.get('de'));
112
+ this.data
113
+ .get('de')
114
+ .set(validationKeyService.ValidationErrorSummaryMultilanguageRequiredAny, this.VALIDATION_ERROR_SUMMARY_MULTILANGUAGEREQUIREDANY.get('de'));
115
+ this.data
116
+ .get('de')
117
+ .set(validationKeyService.ValidationErrorMultilanguageRequired, this.VALIDATION_ERROR_MULTILANGUAGEREQUIRED.get('de'));
118
+ this.data
119
+ .get('de')
120
+ .set(validationKeyService.ValidationErrorSummaryMultilanguageRequired, this.VALIDATION_ERROR_SUMMARY_MULTILANGUAGEREQUIRED.get('de'));
121
+ // Grid Component
122
+ this.data
123
+ .get('de')
124
+ .set(validationKeyService.PagingPageOf, this.PAGING_PAGEOFTEXT.get('de'));
125
+ this.data
126
+ .get('de')
127
+ .set(validationKeyService.PagingEntries, this.PAGING_PAGEENTRIESTEXT.get('de'));
128
+ // Upload Component
129
+ this.data
130
+ .get('de')
131
+ .set(validationKeyService.UploadNoFilesSelected, this.UPLOAD_NO_FILE_SELECTED.get('de'));
132
+ this.data
133
+ .get('de')
134
+ .set(validationKeyService.UploadButtonUpload, this.UPLOAD_BUTTON_UPLOAD.get('de'));
135
+ this.data
136
+ .get('de')
137
+ .set(validationKeyService.UploadButtonBrowse, this.UPLOAD_BUTTON_BROWSE.get('de'));
138
+ // TinyMCE Component
139
+ this.data
140
+ .get('de')
141
+ .set(validationKeyService.TinyMceFileselectOk, this.TINYMCE_FILESELECT_OK.get('de'));
142
+ this.data
143
+ .get('de')
144
+ .set(validationKeyService.TinyMceFileselectCancel, this.TINYMCE_FILESELECT_CANCEL.get('de'));
145
+ this.data
146
+ .get('de')
147
+ .set(validationKeyService.TinyMceFileselectDialogtitle, this.TINYMCE_FILESELECT_DIALOGTITLE.get('de'));
148
+ // Confirm Dialog Component
149
+ this.data
150
+ .get('de')
151
+ .set(validationKeyService.ConfirmDefaultButtonYes, this.CONFIRM_BUTTON_YES.get('de'));
152
+ this.data
153
+ .get('de')
154
+ .set(validationKeyService.ConfirmDefaultButtonNo, this.CONFIRM_BUTTON_NO.get('de'));
155
+ // Browser Component
156
+ this.data
157
+ .get('de')
158
+ .set(validationKeyService.FilebrowserGridNoFiles, this.FILEBROWSER_NO_FILES.get('de'));
159
+ this.data
160
+ .get('de')
161
+ .set(validationKeyService.FilebrowserGridFilename, this.FILEBROWSER_GRID_FILE.get('de'));
162
+ this.data
163
+ .get('de')
164
+ .set(validationKeyService.FilebrowserGridSize, this.FILEBROWSER_GRID_SIZE.get('de'));
165
+ this.data
166
+ .get('de')
167
+ .set(validationKeyService.FilebrowserButtonUpload, this.FILEBROWSER_UPLOAD.get('de'));
168
+ this.data
169
+ .get('de')
170
+ .set(validationKeyService.FilebrowserButtonNewFolder, this.FILEBROWSER_NEWFOLDER.get('de'));
171
+ this.data
172
+ .get('de')
173
+ .set(validationKeyService.FilebrowserButtonRefresh, this.FILEBROWSER_REFRESH.get('de'));
174
+ this.data
175
+ .get('de')
176
+ .set(validationKeyService.FilebrowserButtonDelete, this.FILEBROWSER_DELETE.get('de'));
177
+ this.data
178
+ .get('de')
179
+ .set(this.validationKeyService.FilebrowserConfirmTextDeleteFolder, this.FILEBROWSER_CONFIRM_DELETEFOLDER.get('de'));
180
+ this.data
181
+ .get('de')
182
+ .set(this.validationKeyService.FilebrowserConfirmTextDeleteFile, this.FILEBROWSER_CONFIRM_DELETEFILE.get('de'));
183
+ // EN
184
+ this.data.set('en', new Map());
185
+ }
186
+ // #endregion Constructors
187
+ // #region Protected Getters And Setters
188
+ get CONFIRM_BUTTON_NO() {
189
+ return new Map([['de', 'Nein']]);
190
+ }
191
+ get CONFIRM_BUTTON_YES() {
192
+ return new Map([['de', 'Ja']]);
193
+ }
194
+ get FILEBROWSER_CONFIRM_DELETEFILE() {
195
+ return new Map([['de', 'Soll die Datei gelöscht werden?']]);
196
+ }
197
+ get FILEBROWSER_CONFIRM_DELETEFOLDER() {
198
+ return new Map([
199
+ ['de', 'Soll der Ordner gelöscht werden?'],
200
+ ]);
201
+ }
202
+ get FILEBROWSER_DELETE() {
203
+ return new Map([['de', 'Löschen']]);
204
+ }
205
+ get FILEBROWSER_GRID_FILE() {
206
+ return new Map([['de', 'Dateiname']]);
207
+ }
208
+ get FILEBROWSER_GRID_SIZE() {
209
+ return new Map([['de', 'Grösse']]);
210
+ }
211
+ get FILEBROWSER_NEWFOLDER() {
212
+ return new Map([['de', 'Neuer Ordner']]);
213
+ }
214
+ get FILEBROWSER_NO_FILES() {
215
+ return new Map([['de', 'Keine Dateien vorhanden']]);
216
+ }
217
+ get FILEBROWSER_REFRESH() {
218
+ return new Map([['de', 'Aktualisieren']]);
219
+ }
220
+ get FILEBROWSER_UPLOAD() {
221
+ return new Map([
222
+ ['de', 'Legen Sie Dateien hier ab um Sie hochzuladen'],
223
+ ]);
224
+ }
225
+ get PAGING_PAGEENTRIESTEXT() {
226
+ return new Map([['de', 'Einträge pro Seite']]);
227
+ }
228
+ get PAGING_PAGEOFTEXT() {
229
+ return new Map([
230
+ ['de', 'Seite {{CURRENTPAGE}} von {{TOTALPAGES}}'],
231
+ ]);
232
+ }
233
+ get TINYMCE_FILESELECT_CANCEL() {
234
+ return new Map([['de', 'Abbrechen']]);
235
+ }
236
+ get TINYMCE_FILESELECT_DIALOGTITLE() {
237
+ return new Map([['de', 'Datei auswählen']]);
238
+ }
239
+ get TINYMCE_FILESELECT_OK() {
240
+ return new Map([['de', 'OK']]);
241
+ }
242
+ get UPLOAD_BUTTON_BROWSE() {
243
+ return new Map([['de', 'Browse...']]);
244
+ }
245
+ get UPLOAD_BUTTON_UPLOAD() {
246
+ return new Map([['de', 'Upload']]);
247
+ }
248
+ get UPLOAD_NO_FILE_SELECTED() {
249
+ return new Map([['de', 'Keine Datei ausgewählt']]);
250
+ }
251
+ get VALIDATION_ERROR_DATETIMEFORMAT() {
252
+ return new Map([['de', 'Feld ist kein gültiges Datum.']]);
253
+ }
254
+ get VALIDATION_ERROR_EMAIL() {
255
+ return new Map([['de', 'Feld ist keine E-Mail Adresse']]);
256
+ }
257
+ get VALIDATION_ERROR_FILESMIN() {
258
+ return new Map([
259
+ ['de', 'Es müssen min. {{MINFILES}} Dateien hochgeladen sein.'],
260
+ ]);
261
+ }
262
+ get VALIDATION_ERROR_MAXDATE() {
263
+ return new Map([
264
+ ['de', 'Feld muss älter oder gleich {{MAXDATE}} sein.'],
265
+ ]);
266
+ }
267
+ get VALIDATION_ERROR_MAXTIME() {
268
+ return new Map([
269
+ ['de', 'Feld muss älter oder gleich {{MAXTIME}} sein.'],
270
+ ]);
271
+ }
272
+ get VALIDATION_ERROR_MAXVALUE() {
273
+ return new Map([
274
+ ['de', 'Feld "{{FIELD}}" darf nicht grösser als {{MAXVALUE}} sein.'],
275
+ ]);
276
+ }
277
+ get VALIDATION_ERROR_MINDATE() {
278
+ return new Map([
279
+ ['de', 'Feld muss neuer oder gleich {{MINDATE}} sein.'],
280
+ ]);
281
+ }
282
+ get VALIDATION_ERROR_MINLENGTH() {
283
+ return new Map([
284
+ ['de', 'Feld erfordert min. {{MINLENGTH}} Zeichen.'],
285
+ ]);
286
+ }
287
+ get VALIDATION_ERROR_MINTIME() {
288
+ return new Map([
289
+ ['de', 'Feld muss neuer oder gleich {{MINTIME}} sein.'],
290
+ ]);
291
+ }
292
+ get VALIDATION_ERROR_MINVALUE() {
293
+ return new Map([
294
+ ['de', 'Wert darf nicht kleiner als {{MINVALUE}} sein.'],
295
+ ]);
296
+ }
297
+ get VALIDATION_ERROR_MULTILANGUAGEREQUIRED() {
298
+ return new Map([
299
+ ['de', 'Es müssen alle Sprachen erfasst sein.'],
300
+ ]);
301
+ }
302
+ get VALIDATION_ERROR_MULTILANGUAGEREQUIREDANY() {
303
+ return new Map([
304
+ ['de', 'Es muss min. 1 Sprache erfasst sein.'],
305
+ ]);
306
+ }
307
+ get VALIDATION_ERROR_PATTERN() {
308
+ return new Map([
309
+ ['de', 'Wert entspricht nicht der Format Vorlage.'],
310
+ ]);
311
+ }
312
+ get VALIDATION_ERROR_REQUIRED() {
313
+ return new Map([['de', 'Feld ist erforderlich.']]);
314
+ }
315
+ get VALIDATION_ERROR_SUMMARY_DATETIMEFORMAT() {
316
+ return new Map([
317
+ ['de', 'Feld "{{FIELD}}" ist kein gültiges Datum.'],
318
+ ]);
319
+ }
320
+ get VALIDATION_ERROR_SUMMARY_EMAIL() {
321
+ return new Map([
322
+ ['de', 'Feld "{{FIELD}}" ist keine E-Mail Adresse'],
323
+ ]);
324
+ }
325
+ get VALIDATION_ERROR_SUMMARY_FILESMIN() {
326
+ return new Map([
327
+ [
328
+ 'de',
329
+ 'Feld "{{FIELD}}" muss min. {{MINFILES}} Dateien hochgeladen haben.',
330
+ ],
331
+ ]);
332
+ }
333
+ get VALIDATION_ERROR_SUMMARY_MAXDATE() {
334
+ return new Map([
335
+ ['de', 'Feld "{{FIELD}}" muss älter oder gleich {{MAXDATE}} sein.'],
336
+ ]);
337
+ }
338
+ get VALIDATION_ERROR_SUMMARY_MAXTIME() {
339
+ return new Map([
340
+ ['de', 'Feld "{{FIELD}}" muss älter oder gleich {{MAXTIME}} sein.'],
341
+ ]);
342
+ }
343
+ get VALIDATION_ERROR_SUMMARY_MAXVALUE() {
344
+ return new Map([
345
+ ['de', 'Wert darf nicht grösser als {{MAXVALUE}} sein.'],
346
+ ]);
347
+ }
348
+ get VALIDATION_ERROR_SUMMARY_MINDATE() {
349
+ return new Map([
350
+ ['de', 'Feld "{{FIELD}}" muss neuer oder gleich {{MINDATE}} sein.'],
351
+ ]);
352
+ }
353
+ get VALIDATION_ERROR_SUMMARY_MINLENGTH() {
354
+ return new Map([
355
+ ['de', 'Feld "{{FIELD}}" erfordert min. {{MINLENGTH}} Zeichen.'],
356
+ ]);
357
+ }
358
+ get VALIDATION_ERROR_SUMMARY_MINTIME() {
359
+ return new Map([
360
+ ['de', 'Feld "{{FIELD}}" muss neuer oder gleich {{MINTIME}} sein.'],
361
+ ]);
362
+ }
363
+ get VALIDATION_ERROR_SUMMARY_MINVALUE() {
364
+ return new Map([
365
+ ['de', 'Feld "{{FIELD}}" darf nicht kleiner als {{MINVALUE}} sein.'],
366
+ ]);
367
+ }
368
+ get VALIDATION_ERROR_SUMMARY_MULTILANGUAGEREQUIRED() {
369
+ return new Map([
370
+ ['de', 'Feld "{{FIELD}}" muss alle Sprachen erfasst haben.'],
371
+ ]);
372
+ }
373
+ get VALIDATION_ERROR_SUMMARY_MULTILANGUAGEREQUIREDANY() {
374
+ return new Map([
375
+ ['de', 'Feld "{{FIELD}}" muss min. 1 Sprache erfasst haben.'],
376
+ ]);
377
+ }
378
+ get VALIDATION_ERROR_SUMMARY_PATTERN() {
379
+ return new Map([
380
+ ['de', 'Feld "{{FIELD}}" entspricht nicht der Format Vorlage.'],
381
+ ]);
382
+ }
383
+ get VALIDATION_ERROR_SUMMARY_REQUIRED() {
384
+ return new Map([
385
+ ['de', 'Feld "{{FIELD}}" ist erforderlich.'],
386
+ ]);
387
+ }
388
+ // #endregion Protected Getters And Setters
389
+ // #region Public Methods
390
+ /**
391
+ * Die Methode ergibt die selecte Sprache (string) anhand von Key und Params
392
+ */
393
+ GetString(key, params) {
394
+ return new Observable((observer) => {
395
+ let language = this.GetLanguage();
396
+ if (!this.data.has(language)) {
397
+ language = this.GetFallbackLanguage();
398
+ // Return Key if no Language exists
399
+ if (!this.data.has(language)) {
400
+ observer.next(key);
401
+ observer.complete();
402
+ return;
403
+ }
404
+ }
405
+ if (this.data.get(language).has(key)) {
406
+ const resource = this.data.get(language).get(key);
407
+ if (params !== undefined && params !== null) {
408
+ const formatter = new Interpolation();
409
+ observer.next(formatter.interpolateString(resource, params));
410
+ observer.complete();
411
+ return;
412
+ }
413
+ else {
414
+ observer.next(resource);
415
+ observer.complete();
416
+ return;
417
+ }
418
+ }
419
+ else {
420
+ observer.next(key);
421
+ observer.complete();
422
+ return;
423
+ }
424
+ });
425
+ }
426
+ // #endregion Public Methods
427
+ // #region Private Methods
428
+ /**
429
+ * Die Funktion setzt die default Sprache auf DE, falls die Sprach-Setzung nicht möglich ist.
430
+ */
431
+ GetFallbackLanguage() {
432
+ return 'de';
433
+ }
434
+ /**
435
+ * Die Funktion ergibt die ausgewählte Sprache.
436
+ */
437
+ GetLanguage() {
438
+ const language = navigator.language;
439
+ if (language.indexOf('-') >= 0) {
440
+ return language.split('-')[0];
441
+ }
442
+ else {
443
+ return language;
444
+ }
445
+ }
446
+ }
447
+ SacDefaultLocalisationService.ɵprov = i0.ɵɵdefineInjectable({ factory: function SacDefaultLocalisationService_Factory() { return new SacDefaultLocalisationService(i0.ɵɵinject(i1.SACVALIDATIONKEY_SERVICE)); }, token: SacDefaultLocalisationService, providedIn: "root" });
448
+ SacDefaultLocalisationService.decorators = [
449
+ { type: Injectable, args: [{ providedIn: 'root' },] }
450
+ ];
451
+ SacDefaultLocalisationService.ctorParameters = () => [
452
+ { type: undefined, decorators: [{ type: Inject, args: [SACVALIDATIONKEY_SERVICE,] }] }
453
+ ];
454
+ // #endregion Classes
455
+ // #region Variables
456
+ /**
457
+ * injection token for localisation service
458
+ */
459
+ export const SACLOCALISATION_SERVICE = new InjectionToken('SacLocalisationService');
460
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FjLWxvY2FsaXNhdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IkM6L1Byb2pla3RlL3NpbXBsZWFuZ3VsYXJjb250cm9scy1uZzEwL2NoLmpuZXR3b3JrLnNhYy1jb250cm9scy9wcm9qZWN0cy9zYWMtY29tbW9uL3NyYy8iLCJzb3VyY2VzIjpbInNlcnZpY2VzL3NhYy1sb2NhbGlzYXRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUdsQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDM0QsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7OztBQUV2RSxrQkFBa0I7QUFFbEI7O0tBRUs7QUFFTCxNQUFNLE9BQWdCLDhCQUE4Qjs7OztZQURuRCxVQUFVLFNBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFOztBQWtIbEM7O0tBRUs7QUFFTCxNQUFNLE9BQU8sNkJBQThCLFNBQVEsOEJBQThCO0lBVy9FLHdCQUF3QjtJQUV4Qix1QkFBdUI7SUFFdkI7O1NBRUs7SUFDTCxZQUVVLG9CQUE4QztRQUV0RCxLQUFLLEVBQUUsQ0FBQztRQUZBLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBMEI7UUFuQnhELHFCQUFxQjtRQUVyQjs7V0FFRztRQUNJLFNBQUksR0FBcUMsSUFBSSxHQUFHLEVBR3BELENBQUM7UUFlRixnQkFBZ0I7UUFDaEIsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLElBQUksR0FBRyxFQUFrQixDQUFDLENBQUM7UUFFL0MsYUFBYTtRQUNiLElBQUksQ0FBQyxJQUFJO2FBQ04sR0FBRyxDQUFDLElBQUksQ0FBQzthQUNULEdBQUcsQ0FDRixvQkFBb0IsQ0FBQyx1QkFB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bEQsSUFBSSxDQUFDLGdDQUFnQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FDaEQsQ0FBQztRQUNKLElBQUksQ0FBQyxJQUFJO2FBQ04sR0FBRyxDQUFDLElBQUksQ0FBQzthQUNULEdBQUcsQ0FDRixvQkFBb0IsQ0FBQyxzQkFBc0IsRUFDM0MsSUFBSSxDQUFDLHdCQUF3QixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FDeEMsQ0FBQztRQUNKLElBQUksQ0FBQyxJQUFJO2FBQ04sR0FBRyxDQUFDLElBQUksQ0FBQzthQUNULEdBQUcsQ0FDRixvQkFBb0IsQ0FBQyw2QkFBNkIsRUFDbEQsSUFBSSxDQUFDLGdDQUFnQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FDaEQsQ0FBQztRQUNKLElBQUksQ0FBQyxJQUFJO2FBQ04sR0FBRyxDQUFDLElBQUksQ0FBQzthQUNULEdBQUcsQ0FDRixvQkFBb0IsQ0FBQyxzQkFBc0IsRUFDM0MsSUFBSSxDQUFDLHdCQUF3QixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FDeEMsQ0FBQztRQUNKLElBQUksQ0FBQyxJQUFJO2FBQ04sR0FBRyxDQUFDLElBQUksQ0FBQzthQUNULEdBQUcsQ0FDRixvQkFBb0IsQ0FBQyw2QkFBNkIsRUFDbEQsSUFBSSxDQUFDLGdDQUFnQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FDaEQsQ0FBQztRQUNKLElBQUksQ0FBQyxJQUFJO2FBQ04sR0FBRyxDQUFDLElBQUksQ0FBQzthQUNULEdBQUcsQ0FDRixvQkFBb0IsQ0FBQyxzQkFBc0IsRUFDM0MsSUFBSSxDQUFDLHdCQUF3QixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FDeEMsQ0FBQztRQUNKLElBQUksQ0FBQyxJQUFJO2FBQ04sR0FBRyxDQUFDLElBQUksQ0FBQzthQUNULEdBQUcsQ0FDRixvQkFBb0IsQ0FBQyw2QkFBNkIsRUFDbEQsSUFBSSxDQUFDLGdDQUFnQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FDaEQsQ0FBQztRQUNKLElBQUksQ0FBQyxJ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QUMsUUFBUSxDQUFDO1FBRTVDLElBQUksUUFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDOUIsT0FBTyxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQy9CO2FBQU07WUFDTCxPQUFPLFFBQVEsQ0FBQztTQUNqQjtJQUNILENBQUM7Ozs7WUF2b0JGLFVBQVUsU0FBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7Ozs0Q0FvQjdCLE1BQU0sU0FBQyx3QkFBd0I7O0FBd25CcEMscUJBQXFCO0FBRXJCLG9CQUFvQjtBQUVwQjs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUNsQyxJQUFJLGNBQWMsQ0FBaUMsd0JBQXdCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBJU2FjTG9jYWxpc2F0aW9uU2VydmljZSB9IGZyb20gJy4uL2ludGVyZmFjZXMvSVNhY0xvY2FsaXNhdGlvblNlcnZpY2UnO1xyXG5pbXBvcnQgeyBJU2FjVmFsaWRhdGlvbktleVNlcnZpY2UgfSBmcm9tICcuLi9pbnRlcmZhY2VzL0lTYWNWYWxpZGF0aW9uS2V5U2VydmljZSc7XHJcbmltcG9ydCB7IEludGVycG9sYXRpb24gfSBmcm9tICcuLi91dGlsaXRpZXMvaW50ZXJwb2xhdGlvbic7XHJcbmltcG9ydCB7IFNBQ1ZBTElEQVRJT05LRVlfU0VSVklDRSB9IGZyb20gJy4vc2FjLXZhbGlkYXRpb25rZXkuc2VydmljZSc7XHJcblxyXG4vLyAjcmVnaW9uIENsYXNzZXNcclxuXHJcbi8qKlxyXG4gKiBhYnN0cmFjdCBjbGFzcyBmb3IgbG9jYWxpc2F0aW9uIGluIGNvbXBvbmVudHNcclxuICogKi9cclxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFNhY0Fic3RyYWN0TG9jYWxpc2F0aW9uU2VydmljZVxyXG4gIGltcGxlbWVudHMgSVNhY0xvY2FsaXNhdGlvblNlcnZpY2Vcclxue1xyXG4gIC8vICNyZWdpb24gUHJvdGVjdGVkIEFic3RyYWN0IEdldHRlcnMgQW5kIFNldHRlcnNcclxuXHJcbiAgcHJvdGVjdGVkIGFic3RyYWN0IGdldCBDT05GSVJNX0JVVFRPTl9OTygpOiBNYXA8c3RyaW5nLCBzdHJpbmc+O1xyXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBnZXQgQ09ORklSTV9CVVRUT05fWUVTKCk6IE1hcDxzdHJpbmcsIHN0cmluZz47XHJcbiAgcHJvdGVjdGVkIGFic3RyYWN0IGdldCBGSUxFQlJPV1NFUl9DT05GSVJNX0RFTEVURUZJTEUoKTogTWFwPHN0cmluZywgc3RyaW5nPjtcclxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0IEZJTEVCUk9XU0VSX0NPTkZJUk1fREVMRVRFRk9MREVSKCk6IE1hcDxcclxuICAgIHN0cmluZyxcclxuICAgIHN0cmluZ1xyXG4gID47XHJcbiAgcHJvdGVjdGVkIGFic3RyYWN0IGdldCBGSUxFQlJPV1NFUl9ERUxFVEUoKTogTWFwPHN0cmluZywgc3RyaW5nPjtcclxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0IEZJTEVCUk9XU0VSX0dSSURfRklMRSgpOiBNYXA8c3RyaW5nLCBzdHJpbmc+O1xyXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBnZXQgRklMRUJST1dTRVJfR1JJRF9TSVpFKCk6IE1hcDxzdHJpbmcsIHN0cmluZz47XHJcbiAgcHJvdGVjdGVkIGFic3RyYWN0IGdldCBGSUxFQlJPV1NFUl9ORVdGT0xERVIoKTogTWFwPHN0cmluZywgc3RyaW5nPjtcclxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0IEZJTEVCUk9XU0VSX05PX0ZJTEVTKCk6IE1hcDxzdHJpbmcsIHN0cmluZz47XHJcbiAgcHJvdGVjdGVkIGFic3RyYWN0IGdldCBGSUxFQlJPV1NFUl9SRUZSRVNIKCk6IE1hcDxzdHJpbmcsIHN0cmluZz47XHJcbiAgcHJvdGVjdGVkIGFic3RyYWN0IGdldCBGSUxFQlJPV1NFUl9VUExPQUQoKTogTWFwPHN0cmluZywgc3RyaW5nPjtcclxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0IFBBR0lOR19QQUdFRU5UUklFU1RFWFQoKTogTWFwPHN0cmluZywgc3RyaW5nPjtcclxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0IFBBR0lOR19QQUdFT0ZURVhUKCk6IE1hcDxzdHJpbmcsIHN0cmluZz47XHJcbiAgcHJvdGVjdGVkIGFic3RyYWN0IGdldCBUSU5ZTUNFX0ZJTEVTRUxFQ1RfQ0FOQ0VMKCk6IE1hcDxzdHJpbmcsIHN0cmluZz47XHJcbiAgcHJvdGVjdGVkIGFic3RyYWN0IGdldCBUSU5ZTUNFX0ZJTEVTRUxFQ1RfRElBTE9HVElUTEUoKTogTWFwPHN0cmluZywgc3RyaW5nPjtcclxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0IFRJTllNQ0VfRklMRVNFTEVDVF9PSygpOiBNYXA8c3RyaW5nLCBzdHJpbmc+O1xyXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBnZXQgVVBMT0FEX0JVVFRPTl9CUk9XU0UoKTogTWFwPHN0cmluZywgc3RyaW5nPjtcclxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0IFVQTE9BRF9CVVRUT05fVVBMT0FEKCk6IE1hcDxzdHJpbmcsIHN0cmluZz47XHJcbiAgcHJvdGVjdGVkIGFic3RyYWN0IGdldCBVUExPQURfTk9fRklMRV9TRUxFQ1RFRCgpOiBNYXA8c3RyaW5nLCBzdHJpbmc+O1xyXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBnZXQgVkFMSURBVElPTl9FUlJPUl9EQVRFVElNRUZPUk1BVCgpOiBNYXA8c3RyaW5nLCBzdHJpbmc+O1xyXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBnZXQgVkFMSURBVElPTl9FUlJPUl9FTUFJTCgpOiBNYXA8c3RyaW5nLCBzdHJpbmc+O1xyXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBnZXQgVkFMSURBVElPTl9FUlJPUl9GSUxFU01JTigpOiBNYXA8c3RyaW5nLCBzdHJpbmc+O1xyXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBnZXQgVkFMSURBVElPTl9FUlJPUl9NQVhEQVRFKCk6IE1hcDxzdHJpbmcsIHN0cmluZz47XHJcbiAgcHJvdGVjdGVkIGFic3RyYWN0IGdldCBWQUxJREFUSU9OX0VSUk9SX01BWFRJTUUoKTogTWFwPHN0cmluZywgc3RyaW5nPjtcclxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0IFZBTElEQVRJT05fRVJST1JfTUFYVkFMVUUoKTogTWFwPHN0cmluZywgc3RyaW5nPjtcclxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0IFZBTElEQVRJT05fRVJST1JfTUlOREFURSgpOiBNYXA8c3RyaW5nLCBzdHJpbmc+O1xyXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBnZXQgVkFMSURBVElPTl9FUlJPUl9NSU5MRU5HVEgoKTogTWFwPHN0cmluZywgc3RyaW5nPjtcclxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0IFZBTElEQVRJT05fRVJST1JfTUlOVElNRSgpOiBNYXA8c3RyaW5nLCBzdHJpbmc+O1xyXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBnZXQgVkFMSURBVElPTl9FUlJPUl9NSU5WQUxVRSgpOiBNYXA8c3RyaW5nLCBzdHJpbmc+O1xyXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBnZXQgVkFMSURBVElPTl9FUlJPUl9NVUxUSUxBTkdVQUdFUkVRVUlSRUQoKTogTWFwPFxyXG4gICAgc3RyaW5nLFxyXG4gICAgc3RyaW5nXHJcbiAgPjtcclxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0IFZBTElEQVRJT05fRVJST1JfTVVMVElMQU5HVUFHRVJFUVVJUkVEQU5ZKCk6IE1hcDxcclxuICAgIHN0cmluZyxcclxuICAgIHN0cmluZ1xyXG4gID47XHJcbiAgcHJvdGVjdGVkIGFic3RyYWN0IGdldCBWQUxJREFUSU9OX0VSUk9SX1BBVFRFUk4oKTogTWFwPHN0cmluZywgc3RyaW5nPjtcclxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0IFZBTElEQVRJT05fRVJST1JfUkVRVUlSRUQoKTogTWFwPHN0cmluZywgc3RyaW5nPjtcclxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0IFZBTElEQVRJT05fRVJST1JfU1VNTUFSWV9EQVRFVElNRUZPUk1BVCgpOiBNYXA8XHJcbiAgICBzdHJpbmcsXHJcbiAgICBzdHJpbmdcclxuICA+O1xyXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBnZXQgVkFMSURBVElPTl9FUlJPUl9TVU1NQVJZX0VNQUlMKCk6IE1hcDxzdHJpbmcsIHN0cmluZz47XHJcbiAgcHJvdGVjdGVkIGFic3RyYWN0IGdldCBWQUxJREFUSU9OX0VSUk9SX1NVTU1BUllfRklMRVNNSU4oKTogTWFwPFxyXG4gICAgc3RyaW5nLFxyXG4gICAgc3RyaW5nXHJcbiAgPjtcclxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0IFZBTElEQVRJT05fRVJST1JfU1VNTUFSWV9NQVhEQVRFKCk6IE1hcDxcclxuICAgIHN0cmluZyxcclxuICAgIHN0cmluZ1xyXG4gID47XHJcbiAgcHJvdGVjdGVkIGFic3RyYWN0IGdldCBWQUxJREFUSU9OX0VSUk9SX1NVTU1BUllfTUFYVElNRSgpOiBNYXA8XHJcbiAgICBzdHJpbmcsXHJcbiAgICBzdHJpbmdcclxuICA+O1xyXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBnZXQgVkFMSURBVElPTl9FUlJPUl9TVU1NQVJZX01BWFZBTFVFKCk6IE1hcDxcclxuICAgIHN0cmluZyxcclxuICAgIHN0cmluZ1xyXG4gID47XHJcbiAgcHJvdGVjdGVkIGFic3RyYWN0IGdldCBWQUxJREFUSU9OX0VSUk9SX1NVTU1BUllfTUlOREFURSgpOiBNYXA8XHJcbiAgICBzdHJpbmcsXHJcbiAgICBzdHJpbmdcclxuICA+O1xyXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBnZXQgVkFMSURBVElPTl9FUlJPUl9TVU1NQVJZX01JTkxFTkdUSCgpOiBNYXA8XHJcbiAgICBzdHJpbmcsXHJcbiAgICBzdHJpbmdcclxuICA+O1xyXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBnZXQgVkFMSURBVElPTl9FUlJPUl9TVU1NQVJZX01JTlRJTUUoKTogTWFwPFxyXG4gICAgc3RyaW5nLFxyXG4gICAgc3RyaW5nXHJcbiAgPjtcclxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0IFZBTElEQVRJT05fRVJST1JfU1VNTUFSWV9NSU5WQUxVRSgpOiBNYXA8XHJcbiAgICBzdHJpbmcsXHJcbiAgICBzdHJpbmdcclxuICA+O1xyXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBnZXQgVkFMSURBVElPTl9FUlJPUl9TVU1NQVJZX01VTFRJTEFOR1VBR0VSRVFVSVJFRCgpOiBNYXA8XHJcbiAgICBzdHJpbmcsXHJcbiAgICBzdHJpbmdcclxuICA+O1xyXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBnZXQgVkFMSURBVElPTl9FUlJPUl9TVU1NQVJZX01VTFRJTEFOR1VBR0VSRVFVSVJFREFOWSgpOiBNYXA8XHJcbiAgICBzdHJpbmcsXHJcbiAgICBzdHJpbmdcclxuICA+O1xyXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBnZXQgVkFMSURBVElPTl9FUlJPUl9TVU1NQVJZX1BBVFRFUk4oKTogTWFwPFxyXG4gICAgc3RyaW5nLFxyXG4gICAgc3RyaW5nXHJcbiAgPjtcclxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0IFZBTElEQVRJT05fRVJST1JfU1VNTUFSWV9SRVFVSVJFRCgpOiBNYXA8XHJcbiAgICBzdHJpbmcsXHJcbiAgICBzdHJpbmdcclxuICA+O1xyXG5cclxuICAvLyAjZW5kcmVnaW9uIFByb3RlY3RlZCBBYnN0cmFjdCBHZXR0ZXJzIEFuZCBTZXR0ZXJzXHJcblxyXG4gIC8vICNyZWdpb24gUHVibGljIEFic3RyYWN0IE1ldGhvZHNcclxuXHJcbiAgLyoqXHJcbiAgICogRGllIE1ldGhvZGUgw7xiZXJzZXR6dCBkZW4gZWluZ2VnZWJlbmVuIFdvcnQvQmVncmlmZi4gVmVybGFuZ3Qga2V5IHVuZCBvcHRpb25lbGwgcGFyYW1zXHJcbiAgICovXHJcbiAgcHVibGljIGFic3RyYWN0IEdldFN0cmluZyhrZXk6IHN0cmluZywgcGFyYW1zPzogYW55KTogT2JzZXJ2YWJsZTxzdHJpbmc+O1xyXG5cclxuICAvLyAjZW5kcmVnaW9uIFB1YmxpYyBBYnN0cmFjdCBNZXRob2RzXHJcbn1cclxuXHJcbi8qKlxyXG4gKiBkZWZhdWx0IGxvY2FsaXNhdGlvbiBzZXJ2aWNlXHJcbiAqICovXHJcbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXHJcbmV4cG9ydCBjbGFzcyBTYWNEZWZhdWx0TG9jYWxpc2F0aW9uU2VydmljZSBleHRlbmRzIFNhY0Fic3RyYWN0TG9jYWxpc2F0aW9uU2VydmljZSB7XHJcbiAgLy8gI3JlZ2lvbiBQcm9wZXJ0aWVzXHJcblxyXG4gIC8qKlxyXG4gICAqIExhbmd1YWdlIFJlc291cmNlcyBmw7xyIENvbnRyb2xzIExpYnJhcnlcclxuICAgKi9cclxuICBwdWJsaWMgZGF0YTogTWFwPHN0cmluZywgTWFwPHN0cmluZywgc3RyaW5nPj4gPSBuZXcgTWFwPFxyXG4gICAgc3RyaW5nLFxyXG4gICAgTWFwPHN0cmluZywgc3RyaW5nPlxyXG4gID4oKTtcclxuXHJcbiAgLy8gI2VuZHJlZ2lvbiBQcm9wZXJ0aWVzXHJcblxyXG4gIC8vICNyZWdpb24gQ29uc3RydWN0b3JzXHJcblxyXG4gIC8qKlxyXG4gICAqIEtvbnN0cnVrdG9yXHJcbiAgICogKi9cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIEBJbmplY3QoU0FDVkFMSURBVElPTktFWV9TRVJWSUNFKVxyXG4gICAgcHJpdmF0ZSB2YWxpZGF0aW9uS2V5U2VydmljZTogSVNhY1ZhbGlkYXRpb25LZXlTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICBzdXBlcigpO1xyXG5cclxuICAgIC8vIFNldCBMYW5ndWFnZXNcclxuICAgIHRoaXMuZGF0YS5zZXQoJ2RlJywgbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oKSk7XHJcblxyXG4gICAgLy8gVmFsaWRhdGlvblxyXG4gICAgdGhpcy5kYXRhXHJcbiAgICAgIC5nZXQoJ2RlJylcclxuICAgICAgLnNldChcclxuICAgICAgICB2YWxpZGF0aW9uS2V5U2VydmljZS5WYWxpZGF0aW9uRXJyb3JSZXF1aXJlZCxcclxuICAgICAgICB0aGlzLlZBTElEQVRJT05fRVJST1JfUkVRVUlSRUQuZ2V0KCdkZScpXHJcbiAgICAgICk7XHJcbiAgICB0aGlzLmRhdGFcclxuICAgICAgLmdldCgnZGUnKVxyXG4gICAgICAuc2V0KFxyXG4gICAgICAgIHZhbGlkYXRpb25LZXlTZXJ2aWNlLlZhbGlkYXRpb25FcnJvclN1bW1hcnlSZXF1aXJlZCxcclxuICAgICAgICB0aGlzLlZBTElEQVRJT05fRVJST1JfU1VNTUFSWV9SRVFVSVJFRC5nZXQoJ2RlJylcclxuICAgICAgKTtcclxuICAgIHRoaXMuZGF0YVxyXG4gICAgICAuZ2V0KCdkZScpXHJcbiAgICAgIC5zZXQoXHJcbiAgICAgICAgdmFsaWRhdGlvbktleVNlcnZpY2UuVmFsaWRhdGlvbkVycm9yTWluVmFsdWUsXHJcbiAgICAgICAgdGhpcy5WQUxJREFUSU9OX0VSUk9SX01JTlZBTFVFLmdldCgnZGUnKVxyXG4gICAgICApO1xyXG4gICAgdGhpcy5kYXRhXHJcbiAgICAgIC5nZXQoJ2RlJylcclxuICAgICAgLnNldChcclxuICAgICAgICB2YWxpZGF0aW9uS2V5U2VydmljZS5WYWxpZGF0aW9uRXJyb3JTdW1tYXJ5TWluVmFsdWUsXHJcbiAgICAgICAgdGhpcy5WQUxJREFUSU9OX0VSUk9SX1NVTU1BUllfTUlOVkFMVUUuZ2V0KCdkZScpXHJcbiAgICAgICk7XHJcbiAgICB0aGlzLmRhdGFcclxuICAgICAgLmdldCgnZGUnKVxyXG4gICAgICAuc2V0KFxyXG4gICAgICAgIHZhbGlkYXRpb25LZXlTZXJ2aWNlLlZhbGlkYXRpb25FcnJvclBhdHRlcm4sXHJcbiAgICAgICAgdGhpcy5WQUxJREFUSU9OX0VSUk9SX1BBVFRFUk4uZ2V0KCdkZScpXHJcbiAgICAgICk7XHJcbiAgICB0aGlzLmRhdGFcclxuICAgICAgLmdldCgnZGUnKVxyXG4gICAgICAuc2V0KFxyXG4gICAgICAgIHZhbGlkYXRpb25LZXlTZXJ2aWNlLlZhbGlkYXRpb25FcnJvclN1bW1hcnlQYXR0ZXJuLFxyXG4gICAgICAgIHRoaXMuVkFMSURBVElPTl9FUlJPUl9TVU1NQVJZX1BBVFRFUk4uZ2V0KCdkZScpXHJcbiAgICAgICk7XHJcbiAgICB0aGlzLmRhdGFcclxuICAgICAgLmdldCgnZGUnKVxyXG4gICAgICAuc2V0KFxyXG4gICAgICAgIHZhbGlkYXRpb25LZXlTZXJ2aWNlLlZhbGlkYXRpb25FcnJvck1heFZhbHVlLFxyXG4gICAgICAgIHRoaXMuVkFMSURBVElPTl9FUlJPUl9NQVhWQUxVRS5nZXQoJ2RlJylcclxuICAgICAgKTtcclxuICAgIHRoaXMuZGF0YVxyXG4gICAgICAuZ2V0KCdkZScpXHJcbiAgICAgIC5zZXQoXHJcbiAgICAgICAgdmFsaWRhdGlvbktleVNlcnZpY2UuVmFsaWRhdGlvbkVycm9yU3VtbWFyeU1heFZhbHVlLFxyXG4gICAgICAgIHRoaXMuVkFMSURBVElPTl9FUlJPUl9TVU1NQVJZX01BWFZBTFVFLmdldCgnZGUnKVxyXG4gICAgICApO1xyXG4gICAgdGhpcy5kYXRhXHJcbiAgICAgIC5nZXQoJ2RlJylcclxuICAgICAgLnNldChcclxuICAgICAgICB2YWxpZGF0aW9uS2V5U2VydmljZS5WYWxpZGF0aW9uRXJyb3JFbWFpbCxcclxuICAgICAgICB0aGlzLlZBTElEQVRJT05fRVJST1JfRU1BSUwuZ2V0KCdkZScpXHJcbiAgICAgICk7XHJcbiAgICB0aGlzLmRhdGFcclxuICAgICAgLmdldCgnZGUnKVxyXG4gICAgICAuc2V0KFxyXG4gICAgICAgIHZhbGlkYXRpb25LZXlTZXJ2aWNlLlZhbGlkYXRpb25FcnJvclN1bW1hcnlFbWFpbCxcclxuICAgICAgICB0aGlzLlZBTElEQVRJT05fRVJST1JfU1VNTUFSWV9FTUFJTC5nZXQoJ2RlJylcclxuICAgICAgKTtcclxuICAgIHRoaXMuZGF0YVxyXG4gICAgICAuZ2V0KCdkZScpXHJcbiAgICAgIC5zZXQoXHJcbiAgICAgICAgdmFsaWRhdGlvbktleVNlcnZpY2UuVmFsaWRhdGlvbkVycm9yTWluTGVuZ3RoLFxyXG4gICAgICAgIHRoaXMuVkFMSURBVElPTl9FUlJPUl9NSU5MRU5HVEguZ2V0KCdkZScpXHJcbiAgICAgICk7XHJcbiAgICB0aGlzLmRhdGFcclxuICAgICAgLmdldCgnZGUnKVxyXG4gICAgICAuc2V0KFxyXG4gICAgICAgIHZhbGlkYXRpb25LZXlTZXJ2aWNlLlZhbGlkYXRpb25FcnJvclN1bW1hcnlNaW5MZW5ndGgsXHJcbiAgICAgICAgdGhpcy5WQUxJREFUSU9OX0VSUk9SX1NVTU1BUllfTUlOTEVOR1RILmdldCgnZGUnKVxyXG4gICAgICApO1xyXG4gICAgdGhpcy5kYXRhXHJcbiAgICAgIC5nZXQoJ2RlJylcclxuICAgICAgLnNldChcclxuICAgICAgICB2YWxpZGF0aW9uS2V5U2VydmljZS5WYWxpZGF0aW9uRXJyb3JNaW5EYXRlLFxyXG4gICAgICAgIHRoaXMuVkFMSURBVElPTl9FUlJPUl9NSU5EQVRFLmdldCgnZGUnKVxyXG4gICAgICApO1xyXG4gICAgdGhpcy5kYXRhXHJcbiAgICAgIC5nZXQoJ2RlJylcclxuICAgICAgLnNldChcclxuICAgICAgICB2YWxpZGF0aW9uS2V5U2VydmljZS5WYWxpZGF0aW9uRXJyb3JTdW1tYXJ5TWluRGF0ZSxcclxuICAgICAgICB0aGlzLlZBTElEQVRJT05fRVJST1JfU1VNTUFSWV9NSU5EQVRFLmdldCgnZGUnKVxyXG4gICAgICApO1xyXG4gICAgdGhpcy5kYXRhXHJcbiAgICAgIC5nZXQoJ2RlJylcclxuICAgICAgLnNldChcclxuICAgICAgICB2YWxpZGF0aW9uS2V5U2VydmljZS5WYWxpZGF0aW9uRXJyb3JNYXhEYXRlLFxyXG4gICAgICAgIHRoaXMuVkFMSURBVElPTl9FUlJPUl9NQVhEQVRFLmdldCgnZGUnKVxyXG4gICAgICApO1xyXG4gICAgdGhpcy5kYXRhXHJcbiAgICAgIC5nZXQoJ2RlJylcclxuICAgICAgLnNldChcclxuICAgICAgICB2YWxpZGF0aW9uS2V5U2VydmljZS5WYWxpZGF0aW9uRXJyb3JTdW1tYXJ5TWF4RGF0ZSxcclxuICAgICAgICB0aGlzLlZBTElEQVRJT05fRVJST1JfU1VNTUFSWV9NQVhEQVRFLmdldCgnZGUnKVxyXG4gICAgICApO1xyXG4gICAgdGhpcy5kYXRhXHJcbiAgICAgIC5nZXQoJ2RlJylcclxuICAgICAgLnNldChcclxuICAgICAgICB2YWxpZGF0aW9uS2V5U2VydmljZS5WYWxpZGF0aW9uRXJyb3JNaW5UaW1lLFxyXG4gICAgICAgIHRoaXMuVkFMSURBVElPTl9FUlJPUl9NSU5USU1FLmdldCgnZGUnKVxyXG4gICAgICApO1xyXG4gICAgdGhpcy5kYXRhXHJcbiAgICAgIC5nZXQoJ2RlJylcclxuICAgICAgLnNldChcclxuICAgICAgICB2YWxpZGF0aW9uS2V5U2VydmljZS5WYWxpZGF0aW9uRXJyb3JTdW1tYXJ5TWluVGltZSxcclxuICAgICAgICB0aGlzLlZBTElEQVRJT05fRVJST1JfU1VNTUFSWV9NSU5USU1FLmdldCgnZGUnKVxyXG4gICAgICApO1xyXG4gICAgdGhpcy5kYXRhXHJcbiAgICAgIC5nZXQoJ2RlJylcclxuICAgICAgLnNldChcclxuICAgICAgICB2YWxpZGF0aW9uS2V5U2VydmljZS5WYWxpZGF0aW9uRXJyb3JNYXhUaW1lLFxyXG4gICAgICAgIHRoaXMuVkFMSURBVElPTl9FUlJPUl9NQVhUSU1FLmdldCgnZGUnKVxyXG4gICAgICApO1xyXG4gICAgdGhpcy5kYXRhXHJcbiAgICAgIC5nZXQoJ2RlJylcclxuICAgICAgLnNldChcclxuICAgICAgICB2YWxpZGF0aW9uS2V5U2VydmljZS5WYWxpZGF0aW9uRXJyb3JTdW1tYXJ5TWF4VGltZSxcclxuICAgICAgICB0aGlzLlZBTElEQVRJT05fRVJST1JfU1VNTUFSWV9NQVhUSU1FLmdldCgnZGUnKVxyXG4gICAgICApO1xyXG4gICAgdGhpcy5kYXRhXHJcbiAgICAgIC5nZXQoJ2RlJylcclxuICAgICAgLnNldChcclxuICAgICAgICB2YWxpZGF0aW9uS2V5U2VydmljZS5WYWxpZGF0aW9uRXJyb3JEYXRldGltZUZvcm1hdCxcclxuICAgICAgICB0aGlzLlZBTElEQVRJT05fRVJST1JfREFURVRJTUVGT1JNQVQuZ2V0KCdkZScpXHJcbiAgICAgICk7XHJcbiAgICB0aGlzLmRhdGFcclxuICAgICAgLmdldCgnZGUnKVxyXG4gICAgICAuc2V0KFxyXG4gICAgICAgIHZhbGlkYXRpb25LZXlTZXJ2aWNlLlZhbGlkYXRpb25FcnJvclN1bW1hcnlEYXRldGltZUZvcm1hdCxcclxuICAgICAgICB0aGlzLlZBTElEQVRJT05fRVJST1JfU1VNTUFSWV9EQVRFVElNRUZPUk1BVC5nZXQoJ2RlJylcclxuICAgICAgKTtcclxuICAgIHRoaXMuZGF0YVxyXG4gICAgICAuZ2V0KCdkZScpXHJcbiAgICAgIC5zZXQoXHJcbiAgICAgICAgdmFsaWRhdGlvbktleVNlcnZpY2UuVmFsaWRhdGlvbkVycm9yRmlsZXNNaW4sXHJcbiAgICAgICAgdGhpcy5WQUxJREFUSU9OX0VSUk9SX0ZJTEVTTUlOLmdldCgnZGUnKVxyXG4gICAgICApO1xyXG4gICAgdGhpcy5kYXRhXHJcbiAgICAgIC5nZXQoJ2RlJylcclxuICAgICAgLnNldChcclxuICAgICAgICB2YWxpZGF0aW9uS2V5U2VydmljZS5WYWxpZGF0aW9uRXJyb3JTdW1tYXJ5RmlsZXNNaW4sXHJcbiAgICAgICAgdGhpcy5WQUxJREFUSU9OX0VSUk9SX1NVTU1BUllfRklMRVNNSU4uZ2V0KCdkZScpXHJcbiAgICAgICk7XHJcbiAgICB0aGlzLmRhdGFcclxuICAgICAgLmdldCgnZGUnKVxyXG4gICAgICAuc2V0KFxyXG4gICAgICAgIHZhbGlkYXRpb25LZXlTZXJ2aWNlLlZhbGlkYXRpb25FcnJvck11bHRpbGFuZ3VhZ2VSZXF1aXJlZEFueSxcclxuICAgICAgICB0aGlzLlZBTElEQVRJT05fRVJST1JfTVVMVElMQU5HVUFHRVJFUVVJUkVEQU5ZLmdldCgnZGUnKVxyXG4gICAgICApO1xyXG4gICAgdGhpcy5kYXRhXHJcbiAgICAgIC5nZXQoJ2RlJylcclxuICAgICAgLnNldChcclxuICAgICAgICB2YWxpZGF0aW9uS2V5U2VydmljZS5WYWxpZGF0aW9uRXJyb3JTdW1tYXJ5TXVsdGlsYW5ndWFnZVJlcXVpcmVkQW55LFxyXG4gICAgICAgIHRoaXMuVkFMSURBVElPTl9FUlJPUl9TVU1NQVJZX01VTFRJTEFOR1VBR0VSRVFVSVJFREFOWS5nZXQoJ2RlJylcclxuICAgICAgKTtcclxuICAgIHRoaXMuZGF0YVxyXG4gICAgICAuZ2V0KCdkZScpXHJcbiAgICAgIC5zZXQoXHJcbiAgICAgICAgdmFsaWRhdGlvbktleVNlcnZpY2UuVmFsaWRhdGlvbkVycm9yTXVsdGlsYW5ndWFnZVJlcXVpcmVkLFxyXG4gICAgICAgIHRoaXMuVkFMSURBVElPTl9FUlJPUl9NVUxUSUxBTkdVQUdFUkVRVUlSRUQuZ2V0KCdkZScpXHJcbiAgICAgICk7XHJcbiAgICB0aGlzLmRhdGFcclxuICAgICAgLmdldCgnZGUnKVxyXG4gICAgICAuc2V0KFxyXG4gICAgICAgIHZhbGlkYXRpb25LZXlTZXJ2aWNlLlZhbGlkYXRpb25FcnJvclN1bW1hcnlNdWx0aWxhbmd1YWdlUmVxdWlyZWQsXHJcbiAgICAgICAgdGhpcy5WQUxJREFUSU9OX0VSUk9SX1NVTU1BUllfTVVMVElMQU5HVUFHRVJFUVVJUkVELmdldCgnZGUnKVxyXG4gICAgICApO1xyXG5cclxuICAgIC8vIEdyaWQgQ29tcG9uZW50XHJcbiAgICB0aGlzLmRhdGFcclxuICAgICAgLmdldCgnZGUnKVxyXG4gICAgICAuc2V0KHZhbGlkYXRpb25LZXlTZXJ2aWNlLlBhZ2luZ1BhZ2VPZiwgdGhpcy5QQUdJTkdfUEFHRU9GVEVYVC5nZXQoJ2RlJykpO1xyXG4gICAgdGhpcy5kYXRhXHJcbiAgICAgIC5nZXQoJ2RlJylcclxuICAgICAgLnNldChcclxuICAgICAgICB2YWxpZGF0aW9uS2V5U2VydmljZS5QYWdpbmdFbnRyaWVzLFxyXG4gICAgICAgIHRoaXMuUEFHSU5HX1BBR0VFTlRSSUVTVEVYVC5nZXQoJ2RlJylcclxuICAgICAgKTtcclxuXHJcbiAgICAvLyBVcGxvYWQgQ29tcG9uZW50XHJcbiAgICB0aGlzLmRhdGFcclxuICAgICAgLmdldCgnZGUnKVxyXG4gICAgICAuc2V0KFxyXG4gICAgICAgIHZhbGlkYXRpb25LZXlTZXJ2aWNlLlVwbG9hZE5vRmlsZXNTZWxlY3RlZCxcclxuICAgICAgICB0aGlzLlVQTE9BRF9OT19GSUxFX1NFTEVDVEVELmdldCgnZGUnKVxyXG4gICAgICApO1xyXG4gICAgdGhpcy5kYXRhXHJcbiAgICAgIC5nZXQoJ2RlJylcclxuICAgICAgLnNldChcclxuICAgICAgICB2YWxpZGF0aW9uS2V5U2VydmljZS5VcGxvYWRCdXR0b25VcGxvYWQsXHJcbiAgICAgICAgdGhpcy5VUExPQURfQlVUVE9OX1VQTE9BRC5nZXQoJ2RlJylcclxuICAgICAgKTtcclxuICAgIHRoaXMuZGF0YVxyXG4gICAgICAuZ2V0KCdkZScpXHJcbiAgICAgIC5zZXQoXHJcbiAgICAgICAgdmFsaWRhdGlvbktleVNlcnZpY2UuVXBsb2FkQnV0dG9uQnJvd3NlLFxyXG4gICAgICAgIHRoaXMuVVBMT0FEX0JVVFRPTl9CUk9XU0UuZ2V0KCdkZScpXHJcbiAgICAgICk7XHJcblxyXG4gICAgLy8gVGlueU1DRSBDb21wb25lbnRcclxuICAgIHRoaXMuZGF0YVxyXG4gICAgICAuZ2V0KCdkZScpXHJcbiAgICAgIC5zZXQoXHJcbiAgICAgICAgdmFsaWRhdGlvbktleVNlcnZpY2UuVGlueU1jZUZpbGVzZWxlY3RPayxcclxuICAgICAgICB0aGlzLlRJTllNQ0VfRklMRVNFTEVDVF9PSy5nZXQoJ2RlJylcclxuICAgICAgKTtcclxuICAgIHRoaXMuZGF0YVxyXG4gICAgICAuZ2V0KCdkZScpXHJcbiAgICAgIC5zZXQoXHJcbiAgICAgICAgdmFsaWRhdGlvbktleVNlcnZpY2UuVGlueU1jZUZpbGVzZWxlY3RDYW5jZWwsXHJcbiAgICAgICAgdGhpcy5USU5ZTUNFX0ZJTEVTRUxFQ1RfQ0FOQ0VMLmdldCgnZGUnKVxyXG4gICAgICApO1xyXG4gICAgdGhpcy5kYXRhXHJcbiAgICAgIC5nZXQoJ2RlJylcclxuICAgICAgLnNldChcclxuICAgICAgICB2YWxpZGF0aW9uS2V5U2VydmljZS5UaW55TWNlRmlsZXNlbGVjdERpYWxvZ3RpdGxlLFxyXG4gICAgICAgIHRoaXMuVElOWU1DRV9GSUxFU0VMRUNUX0RJQUxPR1RJVExFLmdldCgnZGUnKVxyXG4gICAgICApO1xyXG5cclxuICAgIC8vIENvbmZpcm0gRGlhbG9nIENvbXBvbmVudFxyXG4gICAgdGhpcy5kYXRhXHJcbiAgICAgIC5nZXQoJ2RlJylcclxuICAgICAgLnNldChcclxuICAgICAgICB2YWxpZGF0aW9uS2V5U2VydmljZS5Db25maXJtRGVmYXVsdEJ1dHRvblllcyxcclxuICAgICAgICB0aGlzLkNPTkZJUk1fQlVUVE9OX1lFUy5nZXQoJ2RlJylcclxuICAgICAgKTtcclxuICAgIHRoaXMuZGF0YVxyXG4gICAgICAuZ2V0KCdkZScpXHJcbiAgICAgIC5zZXQoXHJcbiAgICAgICAgdmFsaWRhdGlvbktleVNlcnZpY2UuQ29uZmlybURlZmF1bHRCdXR0b25ObyxcclxuICAgICAgICB0aGlzLkNPTkZJUk1fQlVUVE9OX05PLmdldCgnZGUnKVxyXG4gICAgICApO1xyXG5cclxuICAgIC8vIEJyb3dzZXIgQ29tcG9uZW50XHJcbiAgICB0aGlzLmRhdGFcclxuICAgICAgLmdldCgnZGUnKVxyXG4gICAgICAuc2V0KFxyXG4gICAgICAgIHZhbGlkYXRpb25LZXlTZXJ2aWNlLkZpbGVicm93c2VyR3JpZE5vRmlsZXMsXHJcbiAgICAgICAgdGhpcy5GSUxFQlJPV1NFUl9OT19GSUxFUy5nZXQoJ2RlJylcclxuICAgICAgKTtcclxuICAgIHRoaXMuZGF0YVxyXG4gICAgICAuZ2V0KCdkZScpXHJcbiAgICAgIC5zZXQoXHJcbiAgICAgICAgdmFsaWRhdGlvbktleVNlcnZpY2UuRmlsZWJyb3dzZXJHcmlkRmlsZW5hbWUsXHJcbiAgICAgICAgdGhpcy5GSUxFQlJPV1NFUl9HUklEX0ZJTEUuZ2V0KCdkZScpXHJcbiAgICAgICk7XHJcbiAgICB0aGlzLmRhdGFcclxuICAgICAgLmdldCgnZGUnKVxyXG4gICAgICAuc2V0KFxyXG4gICAgICAgIHZhbGlkYXRpb25LZXlTZXJ2aWNlLkZpbGVicm93c2VyR3JpZFNpemUsXHJcbiAgICAgICAgdGhpcy5GSUxFQlJPV1NFUl9HUklEX1NJWkUuZ2V0KCdkZScpXHJcbiAgICAgICk7XHJcbiAgICB0aGlzLmRhdGFcclxuICAgICAgLmdldCgnZGUnKVxyXG4gICAgICAuc2V0KFxyXG4gICAgICAgIHZhbGlkYXRpb25LZXlTZXJ2aWNlLkZpbGVicm93c2VyQnV0dG9uVXBsb2FkLFxyXG4gICAgICAgIHRoaXMuRklMRUJST1dTRVJfVVBMT0FELmdldCgnZGUnKVxyXG4gICAgICApO1xyXG4gICAgdGhpcy5kYXRhXHJcbiAgICAgIC5nZXQoJ2RlJylcclxuICAgICAgLnNldChcclxuICAgICAgICB2YWxpZGF0aW9uS2V5U2VydmljZS5GaWxlYnJvd3NlckJ1dHRvbk5ld0ZvbGRlcixcclxuICAgICAgICB0aGlzLkZJTEVCUk9XU0VSX05FV0ZPTERFUi5nZXQoJ2RlJylcclxuICAgICAgKTtcclxuICAgIHRoaXMuZGF0YVxyXG4gICAgICAuZ2V0KCdkZScpXHJcbiAgICAgIC5zZXQoXHJcbiAgICAgICAgdmFsaWRhdGlvbktleVNlcnZpY2UuRmlsZWJyb3dzZXJCdXR0b25SZWZyZXNoLFxyXG4gICAgICAgIHRoaXMuRklMRUJST1dTRVJfUkVGUkVTSC5nZXQoJ2RlJylcclxuICAgICAgKTtcclxuICAgIHRoaXMuZGF0YVxyXG4gICAgICAuZ2V0KCdkZScpXHJcbiAgICAgIC5zZXQoXHJcbiAgICAgICAgdmFsaWRhdGlvbktleVNlcnZpY2UuRmlsZWJyb3dzZXJCdXR0b25EZWxldGUsXHJcbiAgICAgICAgdGhpcy5GSUxFQlJPV1NFUl9ERUxFVEUuZ2V0KCdkZScpXHJcbiAgICAgICk7XHJcbiAgICB0aGlzLmRhdGFcclxuICAgICAgLmdldCgnZGUnKVxyXG4gICAgICAuc2V0KFxyXG4gICAgICAgIHRoaXMudmFsaWRhdGlvbktleVNlcnZpY2UuRmlsZWJyb3dzZXJDb25maXJtVGV4dERlbGV0ZUZvbGRlcixcclxuICAgICAgICB0aGlzLkZJTEVCUk9XU0VSX0NPTkZJUk1fREVMRVRFRk9MREVSLmdldCgnZGUnKVxyXG4gICAgICApO1xyXG4gICAgdGhpcy5kYXRhXHJcbiAgICAgIC5nZXQoJ2RlJylcclxuICAgICAgLnNldChcclxuICAgICAgICB0aGlzLnZhbGlkYXRpb25LZXlTZXJ2aWNlLkZpbGVicm93c2VyQ29uZmlybVRleHREZWxldGVGaWxlLFxyXG4gICAgICAgIHRoaXMuRklMRUJST1dTRVJfQ09ORklSTV9ERUxFVEVGSUxFLmdldCgnZGUnKVxyXG4gICAgICApO1xyXG5cclxuICAgIC8vIEVOXHJcbiAgICB0aGlzLmRhdGEuc2V0KCdlbicsIG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCkpO1xyXG4gIH1cclxuXHJcbiAgLy8gI2VuZHJlZ2lvbiBDb25zdHJ1Y3RvcnNcclxuXHJcbiAgLy8gI3JlZ2lvbiBQcm90ZWN0ZWQgR2V0dGVycyBBbmQgU2V0dGVyc1xyXG5cclxuICBwcm90ZWN0ZWQgZ2V0IENPTkZJUk1fQlVUVE9OX05PKCk6IE1hcDxzdHJpbmcsIHN0cmluZz4ge1xyXG4gICAgcmV0dXJuIG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KFtbJ2RlJywgJ05laW4nXV0pO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGdldCBDT05GSVJNX0JVVFRPTl9ZRVMoKTogTWFwPHN0cmluZywgc3RyaW5nPiB7XHJcbiAgICByZXR1cm4gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oW1snZGUnLCAnSmEnXV0pO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGdldCBGSUxFQlJPV1NFUl9DT05GSVJNX0RFTEVURUZJTEUoKTogTWFwPHN0cmluZywgc3RyaW5nPiB7XHJcbiAgICByZXR1cm4gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oW1snZGUnLCAnU29sbCBkaWUgRGF0ZWkgZ2Vsw7ZzY2h0IHdlcmRlbj8nXV0pO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGdldCBGSUxFQlJPV1NFUl9DT05GSVJNX0RFTEVURUZPTERFUigpOiBNYXA8c3RyaW5nLCBzdHJpbmc+IHtcclxuICAgIHJldHVybiBuZXcgTWFwPHN0cmluZywgc3RyaW5nPihbXHJcbiAgICAgIFsnZGUnLCAnU29sbCBkZXIgT3JkbmVyIGdlbMO2c2NodCB3ZXJkZW4/J10sXHJcbiAgICBdKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBnZXQgRklMRUJST1dTRVJfREVMRVRFKCk6IE1hcDxzdHJpbmcsIHN0cmluZz4ge1xyXG4gICAgcmV0dXJuIG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KFtbJ2RlJywgJ0zDtnNjaGVuJ11dKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBnZXQgRklMRUJST1dTRVJfR1JJRF9GSUxFKCk6IE1hcDxzdHJpbmcsIHN0cmluZz4ge1xyXG4gICAgcmV0dXJuIG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KFtbJ2RlJywgJ0RhdGVpbmFtZSddXSk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgZ2V0IEZJTEVCUk9XU0VSX0dSSURfU0laRSgpOiBNYXA8c3RyaW5nLCBzdHJpbmc+IHtcclxuICAgIHJldHVybiBuZXcgTWFwPHN0cmluZywgc3RyaW5nPihbWydkZScsICdHcsO2c3NlJ11dKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBnZXQgRklMRUJST1dTRVJfTkVXRk9MREVSKCk6IE1hcDxzdHJpbmcsIHN0cmluZz4ge1xyXG4gICAgcmV0dXJuIG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KFtbJ2RlJywgJ05ldWVyIE9yZG5lciddXSk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgZ2V0IEZJTEVCUk9XU0VSX05PX0ZJTEVTKCk6IE1hcDxzdHJpbmcsIHN0cmluZz4ge1xyXG4gICAgcmV0dXJuIG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KFtbJ2RlJywgJ0tlaW5lIERhdGVpZW4gdm9yaGFuZGVuJ11dKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBnZXQgRklMRUJST1dTRVJfUkVGUkVTSCgpOiBNYXA8c3RyaW5nLCBzdHJpbmc+IHtcclxuICAgIHJldHVybiBuZXcgTWFwPHN0cmluZywgc3RyaW5nPihbWydkZScsICdBa3R1YWxpc2llcmVuJ11dKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBnZXQgRklMRUJST1dTRVJfVVBMT0FEKCk6IE1hcDxzdHJpbmcsIHN0cmluZz4ge1xyXG4gICAgcmV0dXJuIG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KFtcclxuICAgICAgWydkZScsICdMZWdlbiBTaWUgRGF0ZWllbiBoaWVyIGFiIHVtIFNpZSBob2NoenVsYWRlbiddLFxyXG4gICAgXSk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgZ2V0IFBBR0lOR19QQUdFRU5UUklFU1RFWFQoKTogTWFwPHN0cmluZywgc3RyaW5nPiB7XHJcbiAgICByZXR1cm4gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oW1snZGUnLCAnRWludHLDpGdlIHBybyBTZWl0ZSddXSk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgZ2V0IFBBR0lOR19QQUdFT0ZURVhUKCk6IE1hcDxzdHJpbmcsIHN0cmluZz4ge1xyXG4gICAgcmV0dXJuIG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KFtcclxuICAgICAgWydkZScsICdTZWl0ZSB7e0NVUlJFTlRQQUdFfX0gdm9uIHt7VE9UQUxQQUdFU319J10sXHJcbiAgICBdKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBnZXQgVElOWU1DRV9GSUxFU0VMRUNUX0NBTkNFTCgpOiBNYXA8c3RyaW5nLCBzdHJpbmc+IHtcclxuICAgIHJldHVybiBuZXcgTWFwPHN0cmluZywgc3RyaW5nPihbWydkZScsICdBYmJyZWNoZW4nXV0pO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGdldCBUSU5ZTUNFX0ZJTEVTRUxFQ1RfRElBTE9HVElUTEUoKTogTWFwPHN0cmluZywgc3RyaW5nPiB7XHJcbiAgICByZXR1cm4gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oW1snZGUnLCAnRGF0ZWkgYXVzd8OkaGxlbiddXSk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgZ2V0IFRJTllNQ0VfRklMRVNFTEVDVF9PSygpOiBNYXA8c3RyaW5nLCBzdHJpbmc+IHtcclxuICAgIHJldHVybiBuZXcgTWFwPHN0cmluZywgc3RyaW5nPihbWydkZScsICdPSyddXSk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgZ2V0IFVQTE9BRF9CVVRUT05fQlJPV1NFKCk6IE1hcDxzdHJpbmcsIHN0cmluZz4ge1xyXG4gICAgcmV0dXJuIG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KFtbJ2RlJywgJ0Jyb3dzZS4uLiddXSk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgZ2V0IFVQTE9BRF9CVVRUT05fVVBMT0FEKCk6IE1hcDxzdHJpbmcsIHN0cmluZz4ge1xyXG4gICAgcmV0dXJuIG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KFtbJ2RlJywgJ1VwbG9hZCddXSk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgZ2V0IFVQTE9BRF9OT19GSUxFX1NFTEVDVEVEKCk6IE1hcDxzdHJpbmcsIHN0cmluZz4ge1xyXG4gICAgcmV0dXJuIG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KFtbJ2RlJywgJ0tlaW5lIERhdGVpIGF1c2dld8OkaGx0J11dKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBnZXQgVkFMSURBVElPTl9FUlJPUl9EQVRFVElNRUZPUk1BVCgpOiBNYXA8c3RyaW5nLCBzdHJpbmc+IHtcclxuICAgIHJldHVybiBuZXcgTWFwPHN0cmluZywgc3RyaW5nPihbWydkZScsICdGZWxkIGlzdCBrZWluIGfDvGx0aWdlcyBEYXR1bS4nXV0pO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGdldCBWQUxJREFUSU9OX0VSUk9SX0VNQUlMKCk6IE1hcDxzdHJpbmcsIHN0cmluZz4ge1xyXG4gICAgcmV0dXJuIG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KFtbJ2RlJywgJ0ZlbGQgaXN0IGtlaW5lIEUtTWFpbCBBZHJlc3NlJ11dKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBnZXQgVkFMSURBVElPTl9FUlJPUl9GSUxFU01JTigpOiBNYXA8c3RyaW5nLCBzdHJpbmc+IHtcclxuICAgIHJldHVybiBuZXcgTWFwPHN0cmluZywgc3RyaW5nPihbXHJcbiAgICAgIFsnZGUnLCAnRXMgbcO8c3NlbiBtaW4uIHt7TUlORklMRVN9fSBEYXRlaWVuIGhvY2hnZWxhZGVuIHNlaW4uJ10sXHJcbiAgICBdKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBnZXQgVkFMSURBVElPTl9FUlJPUl9NQVhEQVRFKCk6IE1hcDxzdHJpbmcsIHN0cmluZz4ge1xyXG4gICAgcmV0dXJuIG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KFtcclxuICAgICAgWydkZScsICdGZWxkIG11c3Mgw6RsdGVyIG9kZXIgZ2xlaWNoIHt7TUFYREFURX19IHNlaW4uJ10sXHJcbiAgICBdKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBnZXQgVkFMSURBVElPTl9FUlJPUl9NQVhUSU1FKCk6IE1hcDxzdHJpbmcsIHN0cmluZz4ge1xyXG4gICAgcmV0dXJuIG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KFtcclxuICAgICAgWydkZScsICdGZWxkIG11c3Mgw6RsdGVyIG9kZXIgZ2xlaWNoIHt7TUFYVElNRX19IHNlaW4uJ10sXHJcbiAgICBdKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBnZXQgVkFMSURBVElPTl9FUlJPUl9NQVhWQUxVRSgpOiBNYXA8c3RyaW5nLCBzdHJpbmc+IHtcclxuICAgIHJldHVybiBuZXcgTWFwPHN0cmluZywgc3RyaW5nPihbXHJcbiAgICAgIFsnZGUnLCAnRmVsZCBcInt7RklFTER9fVwiIGRhcmYgbmljaHQgZ3LDtnNzZXIgYWxzIHt7TUFYVkFMVUV9fSBzZWluLiddLFxyXG4gICAgXSk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgZ2V0IFZBTElEQVRJT05fRVJST1JfTUlOREFURSgpOiBNYXA8c3RyaW5nLCBzdHJpbmc+IHtcclxuICAgIHJldHVybiBuZXcgTWFwPHN0cmluZywgc3RyaW5nPihbXHJcbiAgICAgIFsnZGUnLCAnRmVsZCBtdXNzIG5ldWVyIG9kZXIgZ2xlaWNoIHt7TUlOREFURX19IHNlaW4uJ10sXHJcbiAgICBdKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBnZXQgVkFMSURBVElPTl9FUlJPUl9NSU5MRU5HVEgoKTogTWFwPHN0cmluZywgc3RyaW5nPiB7XHJcbiAgICByZXR1cm4gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oW1xyXG4gICAgICBbJ2RlJywgJ0ZlbGQgZXJmb3JkZXJ0IG1pbi4ge3tNSU5MRU5HVEh9fSBaZWljaGVuLiddLFxyXG4gICAgXSk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgZ2V0IFZBTElEQVRJT05fRVJST1JfTUlOVElNRSgpOiBNYXA8c3RyaW5nLCBzdHJpbmc+IHtcclxuICAgIHJldHVybiBuZXcgTWFwPHN0cmluZywgc3RyaW5nPihbXHJcbiAgICAgIFsnZGUnLCAnRmVsZCBtdXNzIG5ldWVyIG9kZXIgZ2xlaWNoIHt7TUlOVElNRX19IHNlaW4uJ10sXHJcbiAgICBdKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBnZXQgVkFMSURBVElPTl9FUlJPUl9NSU5WQUxVRSgpOiBNYXA8c3RyaW5nLCBzdHJpbmc+IHtcclxuICAgIHJldHVybiBuZXcgTWFwPHN0cmluZywgc3RyaW5nPihbXHJcbiAgICAgIFsnZGUnLCAnV2VydCBkYXJmIG5pY2h0IGtsZWluZXIgYWxzIHt7TUlOVkFMVUV9fSBzZWluLiddLFxyXG4gICAgXSk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgZ2V0IFZBTElEQVRJT05fRVJST1JfTVVMVElMQU5HVUFHRVJFUVVJUkVEKCk6IE1hcDxzdHJpbmcsIHN0cmluZz4ge1xyXG4gICAgcmV0dXJuIG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KFtcclxuICAgICAgWydkZScsICdFcyBtw7xzc2VuIGFsbGUgU3ByYWNoZW4gZXJmYXNzdCBzZWluLiddLFxyXG4gICAgXSk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgZ2V0IFZBTElEQVRJT05fRVJST1JfTVVMVElMQU5HVUFHRVJFUVVJUkVEQU5ZKCk6IE1hcDxcclxuICAgIHN0cmluZyxcclxuICAgIHN0cmluZ1xyXG4gID4ge1xyXG4gICAgcmV0dXJuIG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KFtcclxuICAgICAgWydkZScsICdFcyBtdXNzIG1pbi4gMSBTcHJhY2hlIGVyZmFzc3Qgc2Vpbi4nXSxcclxuICAgIF0pO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGdldCBWQUxJREFUSU9OX0VSUk9SX1BBVFRFUk4oKTogTWFwPHN0cmluZywgc3RyaW5nPiB7XHJcbiAgICByZXR1cm4gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oW1xyXG4gICAgICBbJ2RlJywgJ1dlcnQgZW50c3ByaWNodCBuaWNodCBkZXIgRm9ybWF0IFZvcmxhZ2UuJ10sXHJcbiAgICBdKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBnZXQgVkFMSURBVElPTl9FUlJPUl9SRVFVSVJFRCgpOiBNYXA8c3RyaW5nLCBzdHJpbmc+IHtcclxuICAgIHJldHVybiBuZXcgTWFwPHN0cmluZywgc3RyaW5nPihbWydkZScsICdGZWxkIGlzdCBlcmZvcmRlcmxpY2guJ11dKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBnZXQgVkFMSURBVElPTl9FUlJPUl9TVU1NQVJZX0RBVEVUSU1FRk9STUFUKCk6IE1hcDxzdHJpbmcsIHN0cmluZz4ge1xyXG4gICAgcmV0dXJuIG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KFtcclxuICAgICAgWydkZScsICdGZWxkIFwie3tGSUVMRH19XCIgaXN0IGtlaW4gZ8O8bHRpZ2VzIERhdHVtLiddLFxyXG4gICAgXSk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgZ2V0IFZBTElEQVRJT05fRVJST1JfU1VNTUFSWV9FTUFJTCgpOiBNYXA8c3RyaW5nLCBzdHJpbmc+IHtcclxuICAgIHJldHVybiBuZXcgTWFwPHN0cmluZywgc3RyaW5nPihbXHJcbiAgICAgIFsnZGUnLCAnRmVsZCBcInt7RklFTER9fVwiIGlzdCBrZWluZSBFLU1haWwgQWRyZXNzZSddLFxyXG4gICAgXSk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgZ2V0IFZBTElEQVRJT05fRVJST1JfU1VNTUFSWV9GSUxFU01JTigpOiBNYXA8c3RyaW5nLCBzdHJpbmc+IHtcclxuICAgIHJldHVybiBuZXcgTWFwPHN0cmluZywgc3RyaW5nPihbXHJcbiAgICAgIFtcclxuICAgICAgICAnZGUnLFxyXG4gICAgICAgICdGZWxkIFwie3tGSUVMRH19XCIgbXVzcyBtaW4uIHt7TUlORklMRVN9fSBEYXRlaWVuIGhvY2hnZWxhZGVuIGhhYmVuLicsXHJcbiAgICAgIF0sXHJcbiAgICBdKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBnZXQgVkFMSURBVElPTl9FUlJPUl9TVU1NQVJZX01BWERBVEUoKTogTWFwPHN0cmluZywgc3RyaW5nPiB7XHJcbiAgICByZXR1cm4gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oW1xyXG4gICAgICBbJ2RlJywgJ0ZlbGQgXCJ7e0ZJRUxEfX1cIiBtdXNzIMOkbHRlciBvZGVyIGdsZWljaCB7e01BWERBVEV9fSBzZWluLiddLFxyXG4gICAgXSk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgZ2V0IFZBTElEQVRJT05fRVJST1JfU1VNTUFSWV9NQVhUSU1FKCk6IE1hcDxzdHJpbmcsIHN0cmluZz4ge1xyXG4gICAgcmV0dXJuIG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KFtcclxuICAgICAgWydkZScsICdGZWxkIFwie3tGSUVMRH19XCIgbXVzcyDDpGx0ZXIgb2RlciBnbGVpY2gge3tNQVhUSU1FfX0gc2Vpbi4nXSxcclxuICAgIF0pO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGdldCBWQUxJREFUSU9OX0VSUk9SX1NVTU1BUllfTUFYVkFMVUUoKTogTWFwPHN0cmluZywgc3RyaW5nPiB7XHJcbiAgICByZXR1cm4gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oW1xyXG4gICAgICBbJ2RlJywgJ1dlcnQgZGFyZiBuaWNodCBncsO2c3NlciBhbHMge3tNQVhWQUxVRX19IHNlaW4uJ10sXHJcbiAgICBdKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBnZXQgVkFMSURBVElPTl9FUlJPUl9TVU1NQVJZX01JTkRBVEUoKTogTWFwPHN0cmluZywgc3RyaW5nPiB7XHJcbiAgICByZXR1cm4gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oW1xyXG4gICAgICBbJ2RlJywgJ0ZlbGQgXCJ7e0ZJRUxEfX1cIiBtdXNzIG5ldWVyIG9kZXIgZ2xlaWNoIHt7TUlOREFURX19IHNlaW4uJ10sXHJcbiAgICBdKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBnZXQgVkFMSURBVElPTl9FUlJPUl9TVU1NQVJZX01JTkxFTkdUSCgpOiBNYXA8c3RyaW5nLCBzdHJpbmc+IHtcclxuICAgIHJldHVybiBuZXcgTWFwPHN0cmluZywgc3RyaW5nPihbXHJcbiAgICAgIFsnZGUnLCAnRmVsZCBcInt7RklFTER9fVwiIGVyZm9yZGVydCBtaW4uIHt7TUlOTEVOR1RIfX0gWmVpY2hlbi4nXSxcclxuICAgIF0pO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGdldCBWQUxJREFUSU9OX0VSUk9SX1NVTU1BUllfTUlOVElNRSgpOiBNYXA8c3RyaW5nLCBzdHJpbmc+IHtcclxuICAgIHJldHVybiBuZXcgTWFwPHN0cmluZywgc3RyaW5nPihbXHJcbiAgICAgIFsnZGUnLCAnRmVsZCBcInt7RklFTER9fVwiIG11c3MgbmV1ZXIgb2RlciBnbGVpY2gge3tNSU5USU1FfX0gc2Vpbi4nXSxcclxuICAgIF0pO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGdldCBWQUxJREFUSU9OX0VSUk9SX1NVTU1BUllfTUlOVkFMVUUoKTogTWFwPHN0cmluZywgc3RyaW5nPiB7XHJcbiAgICByZXR1cm4gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oW1xyXG4gICAgICBbJ2RlJywgJ0ZlbGQgXCJ7e0ZJRUxEfX1cIiBkYXJmIG5pY2h0IGtsZWluZXIgYWxzIHt7TUlOVkFMVUV9fSBzZWluLiddLFxyXG4gICAgXSk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgZ2V0IFZBTElEQVRJT05fRVJST1JfU1VNTUFSWV9NVUxUSUxBTkdVQUdFUkVRVUlSRUQoKTogTWFwPFxyXG4gICAgc3RyaW5nLFxyXG4gICAgc3RyaW5nXHJcbiAgPiB7XHJcbiAgICByZXR1cm4gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oW1xyXG4gICAgICBbJ2RlJywgJ0ZlbGQgXCJ7e0ZJRUxEfX1cIiBtdXNzIGFsbGUgU3ByYWNoZW4gZXJmYXNzdCBoYWJlbi4nXSxcclxuICAgIF0pO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGdldCBWQUxJREFUSU9OX0VSUk9SX1NVTU1BUllfTVVMVElMQU5HVUFHRVJFUVVJUkVEQU5ZKCk6IE1hcDxcclxuICAgIHN0cmluZyxcclxuICAgIHN0cmluZ1xyXG4gID4ge1xyXG4gICAgcmV0dXJuIG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KFtcclxuICAgICAgWydkZScsICdGZWxkIFwie3tGSUVMRH19XCIgbXVzcyBtaW4uIDEgU3ByYWNoZSBlcmZhc3N0IGhhYmVuLiddLFxyXG4gICAgXSk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgZ2V0IFZBTElEQVRJT05fRVJST1JfU1VNTUFSWV9QQVRURVJOKCk6IE1hcDxzdHJpbmcsIHN0cmluZz4ge1xyXG4gICAgcmV0dXJuIG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KFtcclxuICAgICAgWydkZScsICdGZWxkIFwie3tGSUVMRH19XCIgZW50c3ByaWNodCBuaWNodCBkZXIgRm9ybWF0IFZvcmxhZ2UuJ10sXHJcbiAgICBdKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBnZXQgVkFMSURBVElPTl9FUlJPUl9TVU1NQVJZX1JFUVVJUkVEKCk6IE1hcDxzdHJpbmcsIHN0cmluZz4ge1xyXG4gICAgcmV0dXJuIG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KFtcclxuICAgICAgWydkZScsICdGZWxkIFwie3tGSUVMRH19XCIgaXN0IGVyZm9yZGVybGljaC4nXSxcclxuICAgIF0pO1xyXG4gIH1cclxuXHJcbiAgLy8gI2VuZHJlZ2lvbiBQcm90ZWN0ZWQgR2V0dGVycyBBbmQgU2V0dGVyc1xyXG5cclxuICAvLyAjcmVnaW9uIFB1YmxpYyBNZXRob2RzXHJcblxyXG4gIC8qKlxyXG4gICAqIERpZSBNZXRob2RlIGVyZ2lidCBkaWUgc2VsZWN0ZSBTcHJhY2hlIChzdHJpbmcpICBhbmhhbmQgdm9uIEtleSB1bmQgUGFyYW1zXHJcbiAgICovXHJcbiAgcHVibGljIEdldFN0cmluZyhrZXk6IHN0cmluZywgcGFyYW1zPzogYW55KTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcclxuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZTxzdHJpbmc+KChvYnNlcnZlcikgPT4ge1xyXG4gICAgICBsZXQgbGFuZ3VhZ2U6IHN0cmluZyA9IHRoaXMuR2V0TGFuZ3VhZ2UoKTtcclxuXHJcbiAgICAgIGlmICghdGhpcy5kYXRhLmhhcyhsYW5ndWFnZSkpIHtcclxuICAgICAgICBsYW5ndWFnZSA9IHRoaXMuR2V0RmFsbGJhY2tMYW5ndWFnZSgpO1xyXG5cclxuICAgICAgICAvLyBSZXR1cm4gS2V5IGlmIG5vIExhbmd1YWdlIGV4aXN0c1xyXG4gICAgICAgIGlmICghdGhpcy5kYXRhLmhhcyhsYW5ndWFnZSkpIHtcclxuICAgICAgICAgIG9ic2VydmVyLm5leHQoa2V5KTtcclxuICAgICAgICAgIG9ic2VydmVyLmNvbXBsZXRlKCk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodGhpcy5kYXRhLmdldChsYW5ndWFnZSkuaGFzKGtleSkpIHtcclxuICAgICAgICBjb25zdCByZXNvdXJjZSA9IHRoaXMuZGF0YS5nZXQobGFuZ3VhZ2UpLmdldChrZXkpO1xyXG4gICAgICAgIGlmIChwYXJhbXMgIT09IHVuZGVmaW5lZCAmJiBwYXJhbXMgIT09IG51bGwpIHtcclxuICAgICAgICAgIGNvbnN0IGZvcm1hdHRlcjogSW50ZXJwb2xhdGlvbiA9IG5ldyBJbnRlcnBvbGF0aW9uKCk7XHJcbiAgICAgICAgICBvYnNlcnZlci5uZXh0KGZvcm1hdHRlci5pbnRlcnBvbGF0ZVN0cmluZyhyZXNvdXJjZSwgcGFyYW1zKSk7XHJcbiAgICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBvYnNlcnZlci5uZXh0KHJlc291cmNlKTtcclxuICAgICAgICAgIG9ic2VydmVyLmNvbXBsZXRlKCk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIG9ic2VydmVyLm5leHQoa2V5KTtcclxuICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvLyAjZW5kcmVnaW9uIFB1YmxpYyBNZXRob2RzXHJcblxyXG4gIC8vICNyZWdpb24gUHJpdmF0ZSBNZXRob2RzXHJcblxyXG4gIC8qKlxyXG4gICAqIERpZSBGdW5rdGlvbiBzZXR6dCBkaWUgZGVmYXVsdCBTcHJhY2hlIGF1ZiBERSwgZmFsbHMgZGllIFNwcmFjaC1TZXR6dW5nIG5pY2h0IG3DtmdsaWNoIGlzdC5cclxuICAgKi9cclxuICBwcml2YXRlIEdldEZhbGxiYWNrTGFuZ3VhZ2UoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiAnZGUnO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGllIEZ1bmt0aW9uIGVyZ2lidCBkaWUgYXVzZ2V3w6RobHRlIFNwcmFjaGUuXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBHZXRMYW5ndWFnZSgpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgbGFuZ3VhZ2U6IHN0cmluZyA9IG5hdmlnYXRvci5sYW5ndWFnZTtcclxuXHJcbiAgICBpZiAobGFuZ3VhZ2UuaW5kZXhPZignLScpID49IDApIHtcclxuICAgICAgcmV0dXJuIGxhbmd1YWdlLnNwbGl0KCctJylbMF07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gbGFuZ3VhZ2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyAjZW5kcmVnaW9uIFByaXZhdGUgTWV0aG9kc1xyXG59XHJcblxyXG4vLyAjZW5kcmVnaW9uIENsYXNzZXNcclxuXHJcbi8vICNyZWdpb24gVmFyaWFibGVzXHJcblxyXG4vKipcclxuICogaW5qZWN0aW9uIHRva2VuIGZvciBsb2NhbGlzYXRpb24gc2VydmljZVxyXG4gKi9cclxuZXhwb3J0IGNvbnN0IFNBQ0xPQ0FMSVNBVElPTl9TRVJWSUNFID1cclxuICBuZXcgSW5qZWN0aW9uVG9rZW48U2FjQWJzdHJhY3RMb2NhbGlzYXRpb25TZXJ2aWNlPignU2FjTG9jYWxpc2F0aW9uU2VydmljZScpO1xyXG5cclxuLy8gI2VuZHJlZ2lvbiBWYXJpYWJsZXNcclxuIl19
@@ -0,0 +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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FjLWxvY2FsaXNhdGlvbi5zZXJ2aWNlLm5nZmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiJDOi9Qcm9qZWt0ZS9zaW1wbGVhbmd1bGFyY29udHJvbHMtbmcxMC9jaC5qbmV0d29yay5zYWMtY29udHJvbHMvcHJvamVjdHMvc2FjLWNvbW1vbi9zcmMvIiwic291cmNlcyI6WyJzZXJ2aWNlcy9zYWMtbG9jYWxpc2F0aW9uLnNlcnZpY2UubmdmYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBpMCBmcm9tICdAYW5ndWxhci9jb3JlJztcbmkwLkNvbXBvbmVudEZhY3Rvcnk7XG4iXX0=