@envive-ai/react-hooks 0.1.2 → 0.1.4

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 (411) hide show
  1. package/dist/adapters/amplitude/index.cjs +8 -8
  2. package/dist/adapters/amplitude/index.d.cts +5 -3
  3. package/dist/adapters/amplitude/index.d.ts +5 -3
  4. package/dist/adapters/amplitude/index.js +5 -5
  5. package/dist/api-B2euFL-5.cjs +2 -1
  6. package/dist/api-XRr_lAG6.js +2 -1
  7. package/dist/application/config/index.cjs +14 -5
  8. package/dist/application/config/index.d.cts +2 -1
  9. package/dist/application/config/index.d.ts +2 -1
  10. package/dist/application/config/index.js +14 -5
  11. package/dist/application/models/graphql/index.cjs +7 -7
  12. package/dist/application/models/graphql/index.d.cts +1 -1
  13. package/dist/application/models/graphql/index.d.ts +1 -1
  14. package/dist/application/models/graphql/index.js +5 -5
  15. package/dist/application/models/guards/api/index.d.cts +2 -2
  16. package/dist/application/models/guards/api/index.d.ts +2 -2
  17. package/dist/application/models/index.cjs +49 -49
  18. package/dist/application/models/index.d.cts +8 -9
  19. package/dist/application/models/index.d.ts +8 -9
  20. package/dist/application/models/index.js +5 -5
  21. package/dist/application/models/utilityTypes/index.d.cts +1 -1
  22. package/dist/application/models/utilityTypes/index.d.ts +1 -1
  23. package/dist/application/models/variantInfo/index.d.cts +1 -1
  24. package/dist/application/models/variantInfo/index.d.ts +1 -1
  25. package/dist/application/service/customerService/index.cjs +1 -1
  26. package/dist/application/service/customerService/index.d.cts +2 -2
  27. package/dist/application/service/customerService/index.d.ts +2 -2
  28. package/dist/application/service/customerService/index.js +1 -1
  29. package/dist/application/service/index.cjs +30 -750
  30. package/dist/application/service/index.d.cts +14 -22
  31. package/dist/application/service/index.d.ts +14 -22
  32. package/dist/application/service/index.js +7 -722
  33. package/dist/application/utils/index.cjs +32 -32
  34. package/dist/application/utils/index.d.cts +13 -13
  35. package/dist/application/utils/index.d.ts +11 -11
  36. package/dist/application/utils/index.js +5 -5
  37. package/dist/atomStore-B1cgmbP0.js +32 -0
  38. package/dist/atomStore-JwGb7pcy.cjs +58 -0
  39. package/dist/atoms/app/index.cjs +11 -11
  40. package/dist/atoms/app/index.d.cts +11 -11
  41. package/dist/atoms/app/index.d.ts +11 -11
  42. package/dist/atoms/app/index.js +5 -5
  43. package/dist/atoms/atomStore/index.cjs +1 -2
  44. package/dist/atoms/atomStore/index.d.cts +2 -1
  45. package/dist/atoms/atomStore/index.d.ts +2 -1
  46. package/dist/atoms/atomStore/index.js +1 -2
  47. package/dist/atoms/chat/index.cjs +35 -35
  48. package/dist/atoms/chat/index.d.cts +37 -37
  49. package/dist/atoms/chat/index.d.ts +10 -10
  50. package/dist/atoms/chat/index.js +5 -5
  51. package/dist/atoms/globalSearch/index.cjs +1 -1
  52. package/dist/atoms/globalSearch/index.d.cts +7 -6
  53. package/dist/atoms/globalSearch/index.d.ts +7 -6
  54. package/dist/atoms/globalSearch/index.js +1 -1
  55. package/dist/atoms/org/index.cjs +32 -35
  56. package/dist/atoms/org/index.d.cts +32 -53
  57. package/dist/atoms/org/index.d.ts +31 -52
  58. package/dist/atoms/org/index.js +6 -7
  59. package/dist/atoms/search/index.cjs +36 -38
  60. package/dist/atoms/search/index.d.cts +9 -10
  61. package/dist/atoms/search/index.d.ts +9 -10
  62. package/dist/atoms/search/index.js +5 -7
  63. package/dist/bandolier-B76-OE75.cjs +1230 -0
  64. package/dist/bandolier-DRn_x1g1.js +1230 -0
  65. package/dist/carpe-kHi4RLB5.cjs +608 -0
  66. package/dist/carpe-qrSU99gq.js +606 -0
  67. package/dist/{chat-CCgyDehy.cjs → chat-BgONoYU7.cjs} +2 -1
  68. package/dist/chat-CLJ4NWcN.js +26 -0
  69. package/dist/{components-CScS7Ii-.cjs → components-BKZbet67.cjs} +2 -1
  70. package/dist/components-CV1fhAkj.js +11 -0
  71. package/dist/config/locators/components/chat/index.cjs +1 -1
  72. package/dist/config/locators/components/chat/index.d.cts +1 -1
  73. package/dist/config/locators/components/chat/index.d.ts +1 -1
  74. package/dist/config/locators/components/chat/index.js +1 -1
  75. package/dist/config/locators/components/chat/variants/index.cjs +2 -1
  76. package/dist/config/locators/components/chat/variants/index.d.cts +2 -1
  77. package/dist/config/locators/components/chat/variants/index.d.ts +2 -1
  78. package/dist/config/locators/components/chat/variants/index.js +2 -1
  79. package/dist/config/locators/components/index.cjs +1 -1
  80. package/dist/config/locators/components/index.d.cts +1 -1
  81. package/dist/config/locators/components/index.d.ts +1 -1
  82. package/dist/config/locators/components/index.js +1 -1
  83. package/dist/config/locators/components/search/index.cjs +2 -1
  84. package/dist/config/locators/components/search/index.d.cts +2 -1
  85. package/dist/config/locators/components/search/index.d.ts +2 -1
  86. package/dist/config/locators/components/search/index.js +2 -1
  87. package/dist/config/locators/index.cjs +4 -4
  88. package/dist/config/locators/index.d.cts +4 -3
  89. package/dist/config/locators/index.d.ts +4 -3
  90. package/dist/config/locators/index.js +4 -4
  91. package/dist/contexts/index.cjs +10 -13
  92. package/dist/contexts/index.d.cts +41 -22
  93. package/dist/contexts/index.d.ts +41 -22
  94. package/dist/contexts/index.js +6 -12
  95. package/dist/contexts-CQDwe3rK.cjs +14333 -0
  96. package/dist/contexts-e2sM-B9g.js +12919 -0
  97. package/dist/coterie-mMirPcHP.js +240 -0
  98. package/dist/coterie-yQ-_JXSw.cjs +240 -0
  99. package/dist/customerService-BG1uNZZ1.cjs +36 -0
  100. package/dist/customerService-BHQRnLhC.js +23 -0
  101. package/dist/custservice-types-C83itZmy.cjs +35 -0
  102. package/dist/custservice-types-DPQ-4TI6.js +23 -0
  103. package/dist/default-8Jfv8ehQ.cjs +199 -0
  104. package/dist/default-C8PQf-38.js +176 -0
  105. package/dist/default-LukSiCz1.js +4 -0
  106. package/dist/default-rJSJ887P.cjs +4 -0
  107. package/dist/divIds-CWkntTsx.js +23 -0
  108. package/dist/{divIds-CFyAjjp3.cjs → divIds-DEL_-qU0.cjs} +2 -1
  109. package/dist/dreamlandBaby-DHltv12Z.cjs +347 -0
  110. package/dist/dreamlandBaby-cG0HM9bt.js +347 -0
  111. package/dist/{embedded-BlXJUbik.cjs → embedded--2L0F4b5.cjs} +2 -1
  112. package/dist/embedded-C5uJqmuD.js +23 -0
  113. package/dist/entrypoints-CNUvSgnk.js +7 -0
  114. package/dist/entrypoints-DM9Sm18O.cjs +19 -0
  115. package/dist/events/index.d.cts +2 -1
  116. package/dist/events/index.d.ts +2 -1
  117. package/dist/events-ClCDFK7t.js +2 -1
  118. package/dist/events-Da7gpmGv.cjs +2 -1
  119. package/dist/featureFlagService-5wdmW02z.d.ts +18 -0
  120. package/dist/featureFlagService-DaelrXEk.d.cts +18 -0
  121. package/dist/fiveCbd-Cvnwh03g.cjs +614 -0
  122. package/dist/fiveCbd-DhYMlsf9.js +614 -0
  123. package/dist/forLoveAndLemons-C8DuUexW.js +666 -0
  124. package/dist/forLoveAndLemons-DR6a1zjJ.cjs +668 -0
  125. package/dist/{globalSearch-hxbXekus.cjs → globalSearch-BTeZxvk1.cjs} +2 -1
  126. package/dist/globalSearch-b0wC7ZEO.js +14 -0
  127. package/dist/greenpan-B4Pu65kV.js +398 -0
  128. package/dist/greenpan-BL5p6j7f.cjs +398 -0
  129. package/dist/grooveLife-DjKWHoN3.cjs +343 -0
  130. package/dist/grooveLife-JK0TyaPz.js +343 -0
  131. package/dist/homegrownCannabis-DxqSDkmS.js +411 -0
  132. package/dist/homegrownCannabis-ZnfCqW-m.cjs +411 -0
  133. package/dist/hooks/index.cjs +11 -11
  134. package/dist/hooks/index.d.cts +30 -21
  135. package/dist/hooks/index.d.ts +30 -21
  136. package/dist/hooks/index.js +6 -12
  137. package/dist/index-BTK5uzs6.d.cts +98 -0
  138. package/dist/index-BfuO9b0Q.d.ts +749 -0
  139. package/dist/index-BzgkfbNO.d.cts +228 -0
  140. package/dist/index-C62lPpy4.d.cts +25 -0
  141. package/dist/index-CExtydIH.d.ts +9 -0
  142. package/dist/index-CKKkTsms.d.ts +39 -0
  143. package/dist/index-CNsGWfS6.d.cts +749 -0
  144. package/dist/index-CYtsPztZ.d.cts +203 -0
  145. package/dist/index-C_C0tLeD.d.ts +203 -0
  146. package/dist/index-ClJ0nMsR.d.cts +184 -0
  147. package/dist/index-Cx9e-fRi.d.ts +184 -0
  148. package/dist/index-D2VaMPA3.d.ts +98 -0
  149. package/dist/index-D46Rd0io.d.cts +39 -0
  150. package/dist/index-DFL1dIT_.d.ts +7 -0
  151. package/dist/index-DPx8s5YH.d.ts +25 -0
  152. package/dist/index-Dxpscrvz.d.ts +228 -0
  153. package/dist/index-MFbPQ8Ji.d.ts +95 -0
  154. package/dist/index-VSFakgAI.d.cts +95 -0
  155. package/dist/index-jBATkcc_.d.cts +9 -0
  156. package/dist/index-zZjcds15.d.cts +7 -0
  157. package/dist/interceptors/index.cjs +7 -8
  158. package/dist/interceptors/index.d.cts +10 -10
  159. package/dist/interceptors/index.d.ts +10 -10
  160. package/dist/interceptors/index.js +5 -6
  161. package/dist/jackArcher-CXf_IAmC.js +728 -0
  162. package/dist/jackArcher-mGkojXek.cjs +728 -0
  163. package/dist/jordanCraig-BvCvPRoR.js +1787 -0
  164. package/dist/jordanCraig-Dv8pVCiS.cjs +1787 -0
  165. package/dist/kindredBravely-UQP7wiNu.cjs +491 -0
  166. package/dist/kindredBravely-X8F_LNph.js +491 -0
  167. package/dist/kutFromTheKloth-BhYKk3CN.cjs +370 -0
  168. package/dist/kutFromTheKloth-D1xsTSJr.js +370 -0
  169. package/dist/larryAndSerges-1411NuZa.cjs +262 -0
  170. package/dist/larryAndSerges-DVIRLItu.js +262 -0
  171. package/dist/leapsAndRebounds-BJ8mwr33.js +361 -0
  172. package/dist/leapsAndRebounds-UcP9EJVO.cjs +361 -0
  173. package/dist/logger-Dln20ans.cjs +2 -1
  174. package/dist/logger-pdEEY8T2.js +2 -1
  175. package/dist/longevityrx-BFSv9GF5.cjs +321 -0
  176. package/dist/longevityrx-Cp6wleWr.js +321 -0
  177. package/dist/lookOptic-BGhU4910.js +283 -0
  178. package/dist/lookOptic-KieSqskd.cjs +283 -0
  179. package/dist/mantraBrand-CHQw-0nw.cjs +751 -0
  180. package/dist/mantraBrand-DrqG9uqO.js +751 -0
  181. package/dist/medterra-CLG6Co1C.cjs +584 -0
  182. package/dist/medterra-D8ZX9NZC.js +584 -0
  183. package/dist/modells-BzyPwN2m.cjs +485 -0
  184. package/dist/modells-CAfqOCW4.js +485 -0
  185. package/dist/nodeSelector-B3bPtEjX.d.cts +31 -0
  186. package/dist/nodeSelector-BiCDowlK.d.ts +31 -0
  187. package/dist/orgConfigResults--dAwtw3W.d.ts +881 -0
  188. package/dist/orgConfigResults-BL0XBA6x.d.cts +881 -0
  189. package/dist/pressedFloral-DULBuQwR.cjs +662 -0
  190. package/dist/pressedFloral-Dp-7Fk3S.js +662 -0
  191. package/dist/search-filter-types-BNTLVXqQ.d.cts +102 -0
  192. package/dist/search-filter-types-DkmH1TxJ.d.ts +102 -0
  193. package/dist/skinPerfection-BxuYCeJX.js +335 -0
  194. package/dist/skinPerfection-Cd3XZ6By.cjs +335 -0
  195. package/dist/snapSupplements-Bf6htPM0.js +286 -0
  196. package/dist/snapSupplements-ZFnXyMuZ.cjs +286 -0
  197. package/dist/socialProofClasses-DdzG1tZy.js +10 -0
  198. package/dist/socialProofClasses-ky69yppk.cjs +40 -0
  199. package/dist/spanx-CwDPQaGj.js +662 -0
  200. package/dist/spanx-Cyd4qDlK.cjs +664 -0
  201. package/dist/spanxStaging-D43nyAGy.js +846 -0
  202. package/dist/spanxStaging-ijbYnHzr.cjs +849 -0
  203. package/dist/suggestionBarV2-types-CwOXzIKq.js +10 -0
  204. package/dist/{suggestionBarV2-types-DG3Ekk44.cjs → suggestionBarV2-types-Dc4-zJlV.cjs} +2 -1
  205. package/dist/supergoop-BnbFG7hm.cjs +338 -0
  206. package/dist/supergoop-CY043wIg.js +336 -0
  207. package/dist/test-types-CXVJxTeu.d.ts +40 -0
  208. package/dist/test-types-CuOq25VT.d.cts +40 -0
  209. package/dist/types/index.cjs +2 -2
  210. package/dist/types/index.d.cts +3 -3
  211. package/dist/types/index.d.ts +3 -3
  212. package/dist/types/index.js +2 -2
  213. package/dist/types-BF_CJeck.js +177 -0
  214. package/dist/types-CD4LFta-.d.cts +33 -0
  215. package/dist/types-CNH4sfF-.cjs +231 -0
  216. package/dist/types-DBdI0j89.d.ts +33 -0
  217. package/dist/uniqueVintage-Cui74mlJ.js +1212 -0
  218. package/dist/uniqueVintage-R2Jcu1y1.cjs +1214 -0
  219. package/dist/variant-CKVRF2-W.d.ts +13 -0
  220. package/dist/variant-raYuOP4L.d.cts +13 -0
  221. package/dist/venaCbd-o5_vOp4e.js +366 -0
  222. package/dist/venaCbd-r-IxEVc1.cjs +366 -0
  223. package/dist/westonJonBoucher-C95EuCl-.js +423 -0
  224. package/dist/westonJonBoucher-DjGEW3ZB.cjs +423 -0
  225. package/dist/wineEnthusiast-DeTFY8Gm.js +941 -0
  226. package/dist/wineEnthusiast-DvfcV5B3.cjs +941 -0
  227. package/dist/wolfMattress-6xPfOJt3.js +373 -0
  228. package/dist/wolfMattress-BjGnGKjP.cjs +373 -0
  229. package/dist/wolfTactical-Bi3WZu0m.cjs +350 -0
  230. package/dist/wolfTactical-C_F9-oPX.js +350 -0
  231. package/package.json +1 -1
  232. package/src/adapters/amplitude/amplitudeAdapter.ts +32 -9
  233. package/src/adapters/spiffy/commerce/api.ts +17 -8
  234. package/src/adapters/spiffy/commerce/graphql.ts +16 -5
  235. package/src/application/config/generalStaticConfig.ts +5 -2
  236. package/src/application/models/api/orgConfigResults.ts +6 -2
  237. package/src/application/models/validators/validateGraphQLColorsConfig.ts +23 -21
  238. package/src/application/service/cdnService.ts +4 -2
  239. package/src/application/service/index.ts +0 -1
  240. package/src/application/service/pageVariantService.ts +5 -5
  241. package/src/application/service/searchService.ts +9 -2
  242. package/src/application/service/windowChatToggleService.ts +28 -19
  243. package/src/application/service/windowFrontendConfigService.ts +7 -4
  244. package/src/atoms/app/index.ts +26 -17
  245. package/src/atoms/app/variant.ts +1 -0
  246. package/src/atoms/chat/messageQueue.ts +1 -1
  247. package/src/atoms/envive/enviveConfig.ts +81 -0
  248. package/src/atoms/org/graphqlConfig.ts +29 -11
  249. package/src/atoms/org/merchantCss.ts +114 -0
  250. package/src/atoms/org/org.ts +101 -64
  251. package/src/atoms/org/orgPageConfig.ts +9 -6
  252. package/src/atoms/org/orgUIConfig.ts +22 -9
  253. package/src/atoms/search/chatSearch.ts +85 -67
  254. package/src/contexts/chatContext.tsx +4 -1
  255. package/src/contexts/enviveConfigContext.tsx +37 -26
  256. package/src/contexts/enviveCssContext.tsx +20 -0
  257. package/src/contexts/index.ts +2 -0
  258. package/src/contexts/orgConfigContext.tsx +106 -0
  259. package/src/contexts/systemSettingsContext.tsx +22 -9
  260. package/src/contexts/types.ts +12 -9
  261. package/src/hooks/index.ts +1 -0
  262. package/src/hooks/useSearch.tsx +16 -9
  263. package/src/hooks/utils.ts +1 -1
  264. package/src/interceptors/useFormEscalation.ts +26 -9
  265. package/src/types/search-filter-types.ts +7 -7
  266. package/src/types.ts +0 -2
  267. package/dist/api-CxGedDxj.cjs +0 -5057
  268. package/dist/api-NJEaveju.js +0 -4113
  269. package/dist/atomStore-BFtpknLM.js +0 -31
  270. package/dist/atomStore-CeJm9Llb.cjs +0 -57
  271. package/dist/bandolier-C7PAIw02.js +0 -1230
  272. package/dist/bandolier-oMkFDJMF.cjs +0 -1230
  273. package/dist/carpe-C0ccKuR9.cjs +0 -608
  274. package/dist/carpe-DFc78_lJ.js +0 -606
  275. package/dist/cdnService-DvDSpfVJ.js +0 -18
  276. package/dist/cdnService-dJU3sHpF.cjs +0 -23
  277. package/dist/chat-Dk6KPb1K.js +0 -25
  278. package/dist/components-DAQxVIn9.js +0 -10
  279. package/dist/contexts-DO75-Kmx.js +0 -7152
  280. package/dist/contexts-iAzSvZjb.cjs +0 -7331
  281. package/dist/coterie-BGT8hqFR.js +0 -240
  282. package/dist/coterie-Cp9FAJTQ.cjs +0 -240
  283. package/dist/customerService-CUyZzowx.js +0 -22
  284. package/dist/customerService-DqPw_XKf.cjs +0 -35
  285. package/dist/custservice-types-D8Npo-5Z.js +0 -22
  286. package/dist/custservice-types-E9_OSaZ7.cjs +0 -34
  287. package/dist/default-BAXPatxf.cjs +0 -198
  288. package/dist/default-BR3225LZ.js +0 -4
  289. package/dist/default-DR6YjE9B.cjs +0 -4
  290. package/dist/default-wf_IORgo.js +0 -175
  291. package/dist/divIds-BWvq-i6I.js +0 -22
  292. package/dist/dreamlandBaby-BzuMvUFS.cjs +0 -347
  293. package/dist/dreamlandBaby-DZvM81LQ.js +0 -347
  294. package/dist/embedded-C1jvFj3v.js +0 -22
  295. package/dist/entrypoints-CmmOszXO.js +0 -6
  296. package/dist/entrypoints-fowCLUT2.cjs +0 -18
  297. package/dist/enviveConfigContext-CUGLpPGU.js +0 -34
  298. package/dist/enviveConfigContext-Dfr2VH6u.cjs +0 -48
  299. package/dist/featureFlagService-CroFRxvD.d.cts +0 -17
  300. package/dist/featureFlagService-NkJ2fuEj.d.ts +0 -17
  301. package/dist/featureGates-BMWXU0dS.d.ts +0 -90
  302. package/dist/featureGates-N_gyHCTn.d.cts +0 -90
  303. package/dist/fiveCbd-DE-tDY3d.cjs +0 -614
  304. package/dist/fiveCbd-HNBPqPtX.js +0 -614
  305. package/dist/forLoveAndLemons-BKmJJ9pq.js +0 -666
  306. package/dist/forLoveAndLemons-BeVEBOiu.cjs +0 -668
  307. package/dist/frontendConfig-KeNqU1wa.d.cts +0 -790
  308. package/dist/frontendConfig-cPvCTWm6.d.ts +0 -790
  309. package/dist/globalSearch-BC0rOX3E.js +0 -13
  310. package/dist/greenpan-BX1viAZB.js +0 -398
  311. package/dist/greenpan-chd3aa5I.cjs +0 -398
  312. package/dist/grooveLife-CHot3rZw.js +0 -343
  313. package/dist/grooveLife-DEob7rK0.cjs +0 -343
  314. package/dist/homegrownCannabis-CoIjcehi.cjs +0 -411
  315. package/dist/homegrownCannabis-CwkS1qDA.js +0 -411
  316. package/dist/index-BdNKc2ix.d.cts +0 -8
  317. package/dist/index-BkhvV8RZ.d.cts +0 -202
  318. package/dist/index-BrXuc_Ck.d.cts +0 -24
  319. package/dist/index-C4zjAR1c.d.cts +0 -227
  320. package/dist/index-CGB6CAmr.d.ts +0 -6
  321. package/dist/index-CIco0cCQ.d.ts +0 -183
  322. package/dist/index-COG1kOZG.d.ts +0 -749
  323. package/dist/index-CVxe7FpL.d.cts +0 -6
  324. package/dist/index-Cn1SeI5y.d.cts +0 -183
  325. package/dist/index-Cqg6ltII.d.ts +0 -38
  326. package/dist/index-CzMrMKx-.d.ts +0 -202
  327. package/dist/index-DE_7Q8qK.d.ts +0 -94
  328. package/dist/index-Da0UzyI9.d.ts +0 -24
  329. package/dist/index-DbWWcYax.d.cts +0 -749
  330. package/dist/index-DtoVXd6O.d.cts +0 -97
  331. package/dist/index-JClBRnSX.d.cts +0 -94
  332. package/dist/index-ghzD_356.d.ts +0 -8
  333. package/dist/index-hdbCEjYy.d.cts +0 -38
  334. package/dist/index-luJrHgPN.d.ts +0 -97
  335. package/dist/index-tfRj22E1.d.ts +0 -227
  336. package/dist/jackArcher-BA-pkB4A.js +0 -728
  337. package/dist/jackArcher-bewC0q1T.cjs +0 -728
  338. package/dist/jordanCraig-B5k9nlAw.cjs +0 -1787
  339. package/dist/jordanCraig-BsQ1mYbt.js +0 -1787
  340. package/dist/kindredBravely-BxYkCpGY.js +0 -491
  341. package/dist/kindredBravely-DsN0fo3s.cjs +0 -491
  342. package/dist/kutFromTheKloth-BQTCu3ct.cjs +0 -370
  343. package/dist/kutFromTheKloth-bukOQM3P.js +0 -370
  344. package/dist/larryAndSerges-D1ecaT5a.js +0 -261
  345. package/dist/larryAndSerges-bj7fgy9b.cjs +0 -261
  346. package/dist/leapsAndRebounds-BfneG_0c.cjs +0 -361
  347. package/dist/leapsAndRebounds-DhNpZETg.js +0 -361
  348. package/dist/locators-C2DX_nX6.js +0 -1
  349. package/dist/locators-CUpyd9Wt.cjs +0 -0
  350. package/dist/longevityrx-CnoGcw0w.js +0 -321
  351. package/dist/longevityrx-D0goIuX0.cjs +0 -321
  352. package/dist/lookOptic-C4afLPZP.cjs +0 -283
  353. package/dist/lookOptic-uJWIKpER.js +0 -283
  354. package/dist/mantraBrand-8JUlYtCE.cjs +0 -751
  355. package/dist/mantraBrand-DuwKHM26.js +0 -751
  356. package/dist/medterra-BQec8rzn.js +0 -584
  357. package/dist/medterra-DH067P-V.cjs +0 -584
  358. package/dist/modells-DAgLE2xo.js +0 -485
  359. package/dist/modells-DUFnLmAz.cjs +0 -485
  360. package/dist/nodeSelector-DpKXszfU.d.ts +0 -30
  361. package/dist/nodeSelector-vKB44CDB.d.cts +0 -30
  362. package/dist/org-C11APG3v.js +0 -63
  363. package/dist/org-CnHL2I9B.cjs +0 -106
  364. package/dist/pressedFloral-DVZVfOSQ.cjs +0 -662
  365. package/dist/pressedFloral-MdbuoRyA.js +0 -662
  366. package/dist/search-CvHb1M3S.js +0 -542
  367. package/dist/search-bSYdOBhY.cjs +0 -743
  368. package/dist/search-filter-types-BsJjrxk0.d.ts +0 -101
  369. package/dist/search-filter-types-CqaGK3nM.d.cts +0 -101
  370. package/dist/skinPerfection-BcEWICQN.cjs +0 -335
  371. package/dist/skinPerfection-bGiYxq1i.js +0 -335
  372. package/dist/snapSupplements-BXSXTjqF.cjs +0 -286
  373. package/dist/snapSupplements-D7hHhdC9.js +0 -286
  374. package/dist/socialProofClasses-BYLiEXpU.cjs +0 -39
  375. package/dist/socialProofClasses-CkJufEGb.js +0 -9
  376. package/dist/spanx-5-0yX3iK.js +0 -662
  377. package/dist/spanx-lUzP6Lva.cjs +0 -664
  378. package/dist/spanxStaging-HglCMJag.js +0 -846
  379. package/dist/spanxStaging-hreMR0MS.cjs +0 -849
  380. package/dist/suggestionBarV2-types-B0RbMStE.js +0 -9
  381. package/dist/supergoop-C9DDT3lY.js +0 -335
  382. package/dist/supergoop-CkjtuRck.cjs +0 -337
  383. package/dist/test-types-C9b_OdfO.d.ts +0 -39
  384. package/dist/test-types-CpKCxk8U.d.cts +0 -39
  385. package/dist/types-BE4faOO_.d.cts +0 -32
  386. package/dist/types-BUjohkXp.cjs +0 -230
  387. package/dist/types-BVsTRyxL.js +0 -176
  388. package/dist/types-TD8g7LnH.d.ts +0 -32
  389. package/dist/uniqueVintage-DIMGtYAU.cjs +0 -1214
  390. package/dist/uniqueVintage-DPWA5Ed6.js +0 -1212
  391. package/dist/useMessageInterceptor-B-P_rw73.cjs +0 -72
  392. package/dist/useMessageInterceptor-C2RZM-fo.js +0 -57
  393. package/dist/variant-BGjOVpY3.d.cts +0 -12
  394. package/dist/variant-XITncuI3.d.ts +0 -12
  395. package/dist/venaCbd-B-znfAsl.js +0 -366
  396. package/dist/venaCbd-BOwOtpOz.cjs +0 -366
  397. package/dist/westonJonBoucher-CraTzRVt.cjs +0 -423
  398. package/dist/westonJonBoucher-DCRagGu3.js +0 -423
  399. package/dist/wineEnthusiast-Bv7umajk.js +0 -941
  400. package/dist/wineEnthusiast-sVuATrq6.cjs +0 -941
  401. package/dist/wolfMattress-BUH-Rhov.js +0 -373
  402. package/dist/wolfMattress-DpVHIEnJ.cjs +0 -373
  403. package/dist/wolfTactical-BcvF_sy-.cjs +0 -350
  404. package/dist/wolfTactical-Q14A1fpw.js +0 -350
  405. package/src/application/service/environmentService.ts +0 -51
  406. package/src/extension.ts +0 -63
  407. package/src/initialize.ts +0 -163
  408. package/src/main.tsx +0 -108
  409. package/src/merchants/uniqueVintage/views/useUniqueVintageChatSearch.ts +0 -147
  410. /package/dist/{atomStore-FSZd_20F.js → locators-Dc5ZT0aF.js} +0 -0
  411. /package/dist/{atomStore-B3tsg6mF.cjs → locators-lQMJj830.cjs} +0 -0
@@ -1,16 +1,15 @@
1
- import { FeatureGates, OrgAnalyticsConfig, OrgAnalyticsGoogleAnalyticsConfig } from "../../featureGates-N_gyHCTn.cjs";
2
- import { FeatureFlagService } from "../../featureFlagService-CroFRxvD.cjs";
3
- import "../../index-DtoVXd6O.cjs";
4
- import "../../index-Cn1SeI5y.cjs";
5
- import "../../index-C4zjAR1c.cjs";
6
- import { DomMutationObserverContinuation, DomObservationStrategy, Message } from "../../index-DbWWcYax.cjs";
7
- import { CategoryExtractor, DOMInsertionService, DOMInsertionType, DOMInsertionTypeToInsertPosition, GridInsertionService, GridInsertionType, IdExtractor, OrgPageConfig, PageVariantConfig, PageVariantTest } from "../../frontendConfig-KeNqU1wa.cjs";
8
- import { CustomerServiceIntegration, CustomerServiceIntegrationMode, CustomerServiceType } from "../../types-BE4faOO_.cjs";
9
- import "../../test-types-CpKCxk8U.cjs";
10
- import { VariantInfo } from "../../index-hdbCEjYy.cjs";
11
- import { findCustomerServiceImpl } from "../../index-CVxe7FpL.cjs";
12
- import { SupportedEvent } from "../../variant-BGjOVpY3.cjs";
13
- import { ContextSourceEnum, PageVisitCategory } from "@spiffy-ai/commerce-api-client";
1
+ import { CategoryExtractor, DOMInsertionService, DOMInsertionType, DOMInsertionTypeToInsertPosition, FeatureGates, GridInsertionService, GridInsertionType, IdExtractor, OrgAnalyticsConfig, OrgAnalyticsGoogleAnalyticsConfig, OrgPageConfig, PageVariantConfig, PageVariantTest } from "../../orgConfigResults-BL0XBA6x.cjs";
2
+ import { CustomerServiceIntegration, CustomerServiceIntegrationMode, CustomerServiceType } from "../../types-CD4LFta-.cjs";
3
+ import "../../test-types-CuOq25VT.cjs";
4
+ import { FeatureFlagService } from "../../featureFlagService-DaelrXEk.cjs";
5
+ import "../../index-BTK5uzs6.cjs";
6
+ import "../../index-ClJ0nMsR.cjs";
7
+ import "../../index-BzgkfbNO.cjs";
8
+ import { DomMutationObserverContinuation, DomObservationStrategy, Message } from "../../index-CNsGWfS6.cjs";
9
+ import { VariantInfo } from "../../index-D46Rd0io.cjs";
10
+ import { findCustomerServiceImpl } from "../../index-zZjcds15.cjs";
11
+ import { SupportedEvent } from "../../variant-raYuOP4L.cjs";
12
+ import { PageVisitCategory } from "@spiffy-ai/commerce-api-client";
14
13
 
15
14
  //#region src/application/service/cachingService.d.ts
16
15
  declare function cacheableAsync<T extends (...args: never[]) => Promise<unknown>>(func: T, expiry: number): (...args: Parameters<T>) => Promise<ReturnType<T>>;
@@ -114,14 +113,6 @@ declare class DomMutationObserver {
114
113
  static setEndingPollingInterval(interval: number): void;
115
114
  }
116
115
  //#endregion
117
- //#region src/application/service/environmentService.d.ts
118
- declare class EnvironmentService {
119
- static getApiEndpoint(): string;
120
- static getContextSource(): ContextSourceEnum;
121
- static getIdentifyingPrefix(): string;
122
- static getEnvironment: () => "dev" | "prod";
123
- }
124
- //#endregion
125
116
  //#region src/application/service/kustomerIntegrationService.d.ts
126
117
  declare class KustomerIntegrationService {
127
118
  static KUSTOMER_LOCAL_STORAGE_KEY: string;
@@ -404,4 +395,5 @@ declare class OrgsCommonDataLayerListener {
404
395
  } | undefined;
405
396
  }
406
397
  //#endregion
407
- export { CdnService, CustomerServiceIntegration, CustomerServiceIntegrationMode, CustomerServiceType, DOMInsertionService, DOMInsertionType, DOMInsertionTypeToInsertPosition, DataLayerEventsListener, type DomMutationListener, DomMutationListenerState, DomMutationObserver, EmbeddedChatsPlacementsListener, EnvironmentService, FeatureFlagService, GladlyListener, GridInsertionService, GridInsertionType, KustomerIntegrationService, KustomerVisibilityListener, LocalStorageKeys, LocalStorageService, OrgsCommonDataLayerListener, PageVariantService, SessionStorageService, ShopifyUrlService, UnsupportedCustomerService, UserIdentityService, WindowChatToggleBinder, WindowDataLayerService, cacheable, cacheableAsync, findCustomerServiceImpl, initWindowFrontendConfigOverridesApplyFunction };
398
+ export { CdnService, CustomerServiceIntegration, CustomerServiceIntegrationMode, CustomerServiceType, DOMInsertionService, DOMInsertionType, DOMInsertionTypeToInsertPosition, DataLayerEventsListener, type DomMutationListener, DomMutationListenerState, DomMutationObserver, EmbeddedChatsPlacementsListener, FeatureFlagService, GladlyListener, GridInsertionService, GridInsertionType, KustomerIntegrationService, KustomerVisibilityListener, LocalStorageKeys, LocalStorageService, OrgsCommonDataLayerListener, PageVariantService, SessionStorageService, ShopifyUrlService, UnsupportedCustomerService, UserIdentityService, WindowChatToggleBinder, WindowDataLayerService, cacheable, cacheableAsync, findCustomerServiceImpl, initWindowFrontendConfigOverridesApplyFunction };
399
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC5jdHMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcGxpY2F0aW9uL3NlcnZpY2UvY2FjaGluZ1NlcnZpY2UuZC50cyIsIi4uLy4uLy4uL3NyYy9hcHBsaWNhdGlvbi9zZXJ2aWNlL2NkblNlcnZpY2UuZC50cyIsIi4uLy4uLy4uL3NyYy9hcHBsaWNhdGlvbi9zZXJ2aWNlL2RvbU11dGF0aW9ucy9kb21NdXRhdGlvbkxpc3RlbmVyLmQudHMiLCIuLi8uLi8uLi9zcmMvYXBwbGljYXRpb24vc2VydmljZS9kb21NdXRhdGlvbnMvZG9tTXV0YXRpb25MaXN0ZW5lclN0YXRlLmQudHMiLCIuLi8uLi8uLi9zcmMvYXBwbGljYXRpb24vc2VydmljZS9kb21NdXRhdGlvbk9ic2VydmVyLmQudHMiLCIuLi8uLi8uLi9zcmMvYXBwbGljYXRpb24vc2VydmljZS9rdXN0b21lckludGVncmF0aW9uU2VydmljZS5kLnRzIiwiLi4vLi4vLi4vc3JjL2FwcGxpY2F0aW9uL3NlcnZpY2UvbG9jYWxTdG9yYWdlU2VydmljZS5kLnRzIiwiLi4vLi4vLi4vc3JjL2FwcGxpY2F0aW9uL3NlcnZpY2UvcGFnZVZhcmlhbnRTZXJ2aWNlLmQudHMiLCIuLi8uLi8uLi9zcmMvYXBwbGljYXRpb24vc2VydmljZS9zZXNzaW9uU3RvcmFnZVNlcnZpY2UuZC50cyIsIi4uLy4uLy4uL3NyYy9hcHBsaWNhdGlvbi9zZXJ2aWNlL3Nob3BpZnlVcmxTZXJ2aWNlLmQudHMiLCIuLi8uLi8uLi9zcmMvYXBwbGljYXRpb24vc2VydmljZS91c2VySWRlbnRpdHlTZXJ2aWNlLmQudHMiLCIuLi8uLi8uLi9zcmMvYXBwbGljYXRpb24vc2VydmljZS93aW5kb3dDaGF0VG9nZ2xlU2VydmljZS5kLnRzIiwiLi4vLi4vLi4vc3JjL2FwcGxpY2F0aW9uL3NlcnZpY2Uvd2luZG93RGF0YUxheWVyU2VydmljZS5kLnRzIiwiLi4vLi4vLi4vc3JjL2FwcGxpY2F0aW9uL3NlcnZpY2Uvd2luZG93RnJvbnRlbmRDb25maWdTZXJ2aWNlLmQudHMiLCIuLi8uLi8uLi9zcmMvYXBwbGljYXRpb24vc2VydmljZS9jdXN0b21lclNlcnZpY2UvcHJvdmlkZXJzL1Vuc3VwcG9ydGVkQ3VzdG9tZXJTZXJ2aWNlLmQudHMiLCIuLi8uLi8uLi9zcmMvYXBwbGljYXRpb24vc2VydmljZS9kb21NdXRhdGlvbnMvZGF0YUxheWVyL2RhdGFMYXllckV2ZW50c0xpc3RlbmVyLmQudHMiLCIuLi8uLi8uLi9zcmMvYXBwbGljYXRpb24vc2VydmljZS9kb21NdXRhdGlvbnMvZmxvYXRpbmdDaGF0L2VtYmVkZGVkQ2hhdHNQbGFjZW1lbnRzTGlzdGVuZXIuZC50cyIsIi4uLy4uLy4uL3NyYy9hcHBsaWNhdGlvbi9zZXJ2aWNlL2RvbU11dGF0aW9ucy9nbGFkbHkvZ2xhZGx5TGlzdGVuZXIuZC50cyIsIi4uLy4uLy4uL3NyYy9hcHBsaWNhdGlvbi9zZXJ2aWNlL2RvbU11dGF0aW9ucy9zcGlmZnkvb3Jncy9jb21tb24va3VzdG9tZXJWaXNpYmlsaXR5TGlzdGVuZXIuZC50cyIsIi4uLy4uLy4uL3NyYy9hcHBsaWNhdGlvbi9zZXJ2aWNlL2RvbU11dGF0aW9ucy9zcGlmZnkvb3Jncy9jb21tb24vb3Jnc0NvbW1vbkRhdGFMYXllckxpc3RlbmVyLmQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZGVjbGFyZSBmdW5jdGlvbiBjYWNoZWFibGVBc3luYzxUIGV4dGVuZHMgKC4uLmFyZ3M6IG5ldmVyW10pID0+IFByb21pc2U8dW5rbm93bj4+KGZ1bmM6IFQsIGV4cGlyeTogbnVtYmVyKTogKC4uLmFyZ3M6IFBhcmFtZXRlcnM8VD4pID0+IFByb21pc2U8UmV0dXJuVHlwZTxUPj47XG5kZWNsYXJlIGZ1bmN0aW9uIGNhY2hlYWJsZTxUIGV4dGVuZHMgKC4uLmFyZ3M6IHVua25vd25bXSkgPT4gdW5rbm93bj4oZnVuYzogVCwgZXhwaXJ5OiBudW1iZXIpOiAoLi4uYXJnczogUGFyYW1ldGVyczxUPikgPT4gUmV0dXJuVHlwZTxUPjtcbmV4cG9ydCB7IGNhY2hlYWJsZSwgY2FjaGVhYmxlQXN5bmMgfTtcbiIsImRlY2xhcmUgY2xhc3MgQ2RuU2VydmljZSB7XG4gICAgc3RhdGljIGdldCBDRE5fVVJMKCk6IHN0cmluZztcbiAgICBzdGF0aWMgZ2V0Q25kQmFzZVBhdGgoKTogc3RyaW5nO1xuICAgIHN0YXRpYyBnZXRBc3NldFVSTChhc3NldE5hbWU6IHN0cmluZywgb3JnU2hvcnROYW1lOiBzdHJpbmcpOiBzdHJpbmc7XG59XG5leHBvcnQgeyBDZG5TZXJ2aWNlIH07XG4iLCJpbXBvcnQgeyBEb21NdXRhdGlvbk9ic2VydmVyQ29udGludWF0aW9uIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2RvbU11dGF0aW9uQ29udGludWF0aW9uJztcbmludGVyZmFjZSBEb21NdXRhdGlvbkxpc3RlbmVyIHtcbiAgICBnZXROYW1lKCk6IHN0cmluZztcbiAgICBydW5PbmNlSW1tZWRpYXRlbHkoKTogYm9vbGVhbjtcbiAgICBkaXNjb25uZWN0PygpOiB2b2lkO1xuICAgIHRyaWVzTWF4KCk6IG51bWJlcjtcbiAgICBvbkRvbUNoYW5nZSgpOiBEb21NdXRhdGlvbk9ic2VydmVyQ29udGludWF0aW9uO1xufVxuZXhwb3J0IHR5cGUgeyBEb21NdXRhdGlvbkxpc3RlbmVyIH07XG4iLCJpbXBvcnQgeyBEb21NdXRhdGlvbkxpc3RlbmVyIH0gZnJvbSAnLi9kb21NdXRhdGlvbkxpc3RlbmVyJztcbmltcG9ydCB7IERvbU11dGF0aW9uT2JzZXJ2ZXJDb250aW51YXRpb24gfSBmcm9tICcuLi8uLi9tb2RlbHMvZG9tTXV0YXRpb25Db250aW51YXRpb24nO1xuZGVjbGFyZSBjbGFzcyBEb21NdXRhdGlvbkxpc3RlbmVyU3RhdGUge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbGlzdGVuZXI7XG4gICAgcHJpdmF0ZSBjdXJyZW50U3RhdGU7XG4gICAgcHJpdmF0ZSBhdHRhY2hlZDtcbiAgICBwcml2YXRlIGN1cnJlbnRUcnlDb3VudDtcbiAgICBjb25zdHJ1Y3RvcihsaXN0ZW5lcjogRG9tTXV0YXRpb25MaXN0ZW5lcik7XG4gICAgZ2V0TGlzdGVuZXIoKTogRG9tTXV0YXRpb25MaXN0ZW5lcjtcbiAgICBzZXRDdXJyZW50U3RhdGUoc3RhdGU6IERvbU11dGF0aW9uT2JzZXJ2ZXJDb250aW51YXRpb24pOiB2b2lkO1xuICAgIGdldEN1cnJlbnRTdGF0ZSgpOiBEb21NdXRhdGlvbk9ic2VydmVyQ29udGludWF0aW9uO1xuICAgIGdldElzQXR0YWNoZWQoKTogYm9vbGVhbjtcbiAgICBzZXRJc0F0dGFjaGVkKGF0dGFjaGVkOiBib29sZWFuKTogdm9pZDtcbiAgICBnZXRDdXJyZW50VHJ5Q291bnQoKTogbnVtYmVyO1xuICAgIGluY3JlbWVudEN1cnJlbnRUcnlDb3VudCgpOiB2b2lkO1xufVxuZXhwb3J0IHsgRG9tTXV0YXRpb25MaXN0ZW5lclN0YXRlIH07XG4iLCJpbXBvcnQgeyBEb21NdXRhdGlvbkxpc3RlbmVyU3RhdGUgfSBmcm9tICcuL2RvbU11dGF0aW9ucy9kb21NdXRhdGlvbkxpc3RlbmVyU3RhdGUnO1xuaW1wb3J0IHsgRG9tTXV0YXRpb25MaXN0ZW5lciB9IGZyb20gJy4vZG9tTXV0YXRpb25zL2RvbU11dGF0aW9uTGlzdGVuZXInO1xuaW1wb3J0IHsgRG9tT2JzZXJ2YXRpb25TdHJhdGVneSB9IGZyb20gJy4uL21vZGVscy9kb21PYnNlcnZhdGlvblN0cmF0ZWd5Jztcbi8qKlxuICogLSBXaGVuIHVzZWQgYmVmb3JlIHBhZ2UgbG9hZC9yZW5kZXIsIGFuIHVub3B0aW1pemVkIE11dGF0aW9uT2JzZXJ2ZXIgY2FsbGJhY2sgY2FuIHNpZ25pZmljYW50bHkgZGVsYXkgcGFnZSBsb2FkIHRpbWUsXG4gKiAgIGVzcGVjaWFsbHkgb24gY29tcGxleCBwYWdlcy5cbiAqIC0gVGhlIGNhbGxiYWNrIHJ1bnMgYXMgYSBtaWNyb3Rhc2sgYW5kIGNhbiBibG9jayBmdXJ0aGVyIERPTSBwcm9jZXNzaW5nLCBvZnRlbiBmaXJpbmcgaHVuZHJlZHMgb3IgZXZlbiB0aG91c2FuZHMgb2YgdGltZXNcbiAqICAgcGVyIHNlY29uZCBvbiBhIGNvbXBsZXggcGFnZS4gTWFueSBsaWJyYXJpZXMgZG9uJ3Qgb3B0aW1pemUgZm9yIHRoaXMsIHJlc3VsdGluZyBpbiBjbGVhbi1sb29raW5nIGJ1dCBwb3RlbnRpYWxseSBzbG93IGNvZGUuXG4gKlxuICogQmVzdCBQcmFjdGljZXMgZm9yIE11dGF0aW9uT2JzZXJ2ZXIgT3B0aW1pemF0aW9uOlxuICogLSAqKlByb2ZpbGluZzoqKiBVc2UgRGV2VG9vbHMgUHJvZmlsZXIgdG8gZW5zdXJlIHRoZSBvYnNlcnZlciBjYWxsYmFjayB1c2VzIGxlc3MgdGhhbiAwLjElIG9mIHRvdGFsIENQVSBkdXJpbmcgcGFnZSBsb2FkLlxuICogLSAqKkF2b2lkIEZvcmNlZCBMYXlvdXRzOioqIFJlZnJhaW4gZnJvbSB0cmlnZ2VyaW5nIHN5bmNocm9ub3VzIGxheW91dHMgYnkgYWNjZXNzaW5nIHByb3BlcnRpZXMgbGlrZSBgb2Zmc2V0VG9wYC5cbiAqIC0gKipQcmVmZXIgTmF0aXZlIERPTToqKiBVc2UgbmF0aXZlIERPTSBtZXRob2RzIGluc3RlYWQgb2YgY29tcGxleCBmcmFtZXdvcmtzIGxpa2UgalF1ZXJ5IHRvIHJlZHVjZSBvdmVyaGVhZC5cbiAqIC0gKipVc2UgYGF0dHJpYnV0ZUZpbHRlcmA6KiogV2hlbiBvYnNlcnZpbmcgYXR0cmlidXRlcywgbGltaXQgdGhlIG9ic2VydmF0aW9ucyB0byBzcGVjaWZpYyBhdHRyaWJ1dGVzLCBlLmcuLCBgYXR0cmlidXRlRmlsdGVyOiBbJ2F0dHIxJywgJ2F0dHIyJ11gLlxuICogLSAqKk5vbi1yZWN1cnNpdmUgT2JzZXJ2YXRpb25zOioqIE9ic2VydmUgZGlyZWN0IHBhcmVudCBlbGVtZW50cyB3aXRoIGBzdWJ0cmVlOiBmYWxzZWAgd2hlbmV2ZXIgcG9zc2libGUuIEZvciBpbnN0YW5jZSwgaW5pdGlhbGx5IG9ic2VydmUgYGRvY3VtZW50YCByZWN1cnNpdmVseSwgZGlzY29ubmVjdCBvbiBzdWNjZXNzLCBhbmQgcmVhdHRhY2ggYSBub24tcmVjdXJzaXZlIG9ic2VydmVyIHRvIHRoZSBwYXJlbnQgZWxlbWVudC5cbiAqIC0gKipEaXJlY3QgRWxlbWVudCBBY2Nlc3M6KiogV2hlbiB3YWl0aW5nIGZvciBhIHNpbmdsZSBlbGVtZW50IHdpdGggYW4gYGlkYCwgdXNlIGBnZXRFbGVtZW50QnlJZGAgaW5zdGVhZCBvZiBsb29waW5nIG92ZXIgdGhlIGBtdXRhdGlvbnNgIGFycmF5LlxuICogLSAqKkhUTUxDb2xsZWN0aW9uIENoZWNrczoqKiBGb3IgcmFyZSBlbGVtZW50cyAoZS5nLiwgYDxpZnJhbWU+YCBvciBgPG9iamVjdD5gKSwgdXNlIGxpdmUgSFRNTENvbGxlY3Rpb25zIGZyb20gYGdldEVsZW1lbnRzQnlUYWdOYW1lYCBvciBgZ2V0RWxlbWVudHNCeUNsYXNzTmFtZWAgcmF0aGVyIHRoYW4gZW51bWVyYXRpbmcgbXV0YXRpb25zLCBlc3BlY2lhbGx5IHdpdGggbGFyZ2UgbnVtYmVycyBvZiBtdXRhdGlvbnMuXG4gKiAtICoqQXZvaWQgYHF1ZXJ5U2VsZWN0b3JBbGxgOioqIFVzZSBgcXVlcnlTZWxlY3RvcmAgZmlyc3QgZm9yIGFuIGluaXRpYWwgY2hlY2s7IGlmIHN1Y2Nlc3NmdWwsIHByb2NlZWQgd2l0aCBgcXVlcnlTZWxlY3RvckFsbGAgb25seSB3aGVuIGFic29sdXRlbHkgbmVjZXNzYXJ5LiBUaGlzIGNvbWJvIGlzIG9mdGVuIGZhc3RlciBvbiBhdmVyYWdlLlxuICogLSAqKkxlZ2FjeSBCcm93c2VyIENvbXBhdGliaWxpdHk6KipcbiAqICAgLSBBdm9pZCBgQXJyYXlgIG1ldGhvZHMgbGlrZSBgZm9yRWFjaGAsIGBmaWx0ZXJgLCBldGMuLCBhbmQgRVMyMDE1IGxvb3BzIChgZm9yLi4ub2ZgKSBpbiBwcmUtMjAxOCBDaHJvbWUgZm9yIE11dGF0aW9uT2JzZXJ2ZXIgY2FsbGJhY2tzLFxuICogICAgIGFzIHRoZXNlIGNhbiBiZSB1cCB0byAxMDB4IHNsb3dlciB0aGFuIHRyYWRpdGlvbmFsIGBmb3JgIGxvb3BzLlxuICogICAtIEFsdGVybmF0aXZlbHksIHVzZSBhIGZhc3QgZnVuY3Rpb25hbCBsaWJyYXJ5IGxpa2UgbG9kYXNoIG9uIG9sZGVyIGJyb3dzZXJzLiBDaHJvbWUgMjAxOCsgaW5saW5lcyBhcnJheSBtZXRob2RzIGVmZmljaWVudGx5LlxuICogLSAqKlNjaGVkdWxlZCBSZS1jaGVja2luZzoqKiBGb3IgdmlzdWFsIHVwZGF0ZXMsIGlmIHlvdSBjYW4gZGV0ZXJtaW5lIGVsZW1lbnRzIGFyZSBvZmZzY3JlZW4sIGRpc2Nvbm5lY3QgdGhlIG9ic2VydmVyIGFuZCB1c2UgYHNldFRpbWVvdXQoZm4sIDApYCB0byBkZWxheSBwcm9jZXNzaW5nIHVudGlsIGluaXRpYWwgcGFyc2luZy9sYXlvdXQgaXMgY29tcGxldGUuIEFmdGVyIHRoYXQsIHVzZSBgcmVxdWVzdEFuaW1hdGlvbkZyYW1lYCBmb3IgY2h1bmtlZCBwcm9jZXNzaW5nLlxuICogLSAqKkRlYm91bmNlIExvbmcgUHJvY2Vzc2luZzoqKiBJZiB0aGUgY2FsbGJhY2sgcHJvY2Vzc2luZyBpcyBsZW5ndGh5LCBjYXVzaW5nIHVucmVzcG9uc2l2ZW5lc3Mgb3IgamFuaywgdXNlIGRlYm91bmNpbmcgYnkgYWNjdW11bGF0aW5nIG11dGF0aW9ucyBpbiBhbiBhcnJheSBhbmQgc2NoZWR1bGluZyBwcm9jZXNzaW5nIHdpdGggYHNldFRpbWVvdXRgLCBgcmVxdWVzdElkbGVDYWxsYmFja2AsIG9yIGByZXF1ZXN0QW5pbWF0aW9uRnJhbWVgLlxuICpcbiAqIEV4YW1wbGUgb2YgRGVib3VuY2UgU2V0dXA6XG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBxdWV1ZTogTXV0YXRpb25SZWNvcmRbXSA9IFtdO1xuICogY29uc3QgbW8gPSBuZXcgTXV0YXRpb25PYnNlcnZlcihtdXRhdGlvbnMgPT4ge1xuICogICBpZiAoIXF1ZXVlLmxlbmd0aCkgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHByb2Nlc3MpO1xuICogICBxdWV1ZS5wdXNoKC4uLm11dGF0aW9ucyk7XG4gKiB9KTtcbiAqIGZ1bmN0aW9uIHByb2Nlc3MoKSB7XG4gKiAgIGZvciAoY29uc3QgbXV0YXRpb25zIG9mIHF1ZXVlKSB7XG4gKiAgICAgLy8gUHJvY2Vzc2luZyBsb2dpY1xuICogICB9XG4gKiAgIHF1ZXVlLmxlbmd0aCA9IDA7XG4gKiB9XG4gKiBgYGBcbiAqIE5vdGU6IGByZXF1ZXN0QW5pbWF0aW9uRnJhbWVgIG9ubHkgdHJpZ2dlcnMgd2hlbiB0aGUgcGFnZSBpcyB2aXNpYmxlLlxuICovXG5kZWNsYXJlIGNsYXNzIERvbU11dGF0aW9uT2JzZXJ2ZXIge1xuICAgIHByaXZhdGUgc3RhdGljIG9ic2VydmVyVmVyc2lvbjtcbiAgICBwcml2YXRlIHN0YXRpYyBpbmRpdmlkdWFsT2JzZXJ2ZXJzO1xuICAgIHByaXZhdGUgc3RhdGljIGRlZmVycmVkRXhlY3V0aW9uRGVsYXk7XG4gICAgcHJpdmF0ZSBzdGF0aWMgc3RhcnRpbmdQb2xsaW5nSW50ZXJ2YWw7XG4gICAgcHJpdmF0ZSBzdGF0aWMgZW5kaW5nUG9sbGluZ0ludGVydmFsO1xuICAgIHByaXZhdGUgc3RhdGljIHVzZURlYm91bmNlO1xuICAgIHByaXZhdGUgc3RhdGljIGxpc3RlbmVycztcbiAgICBwcml2YXRlIHN0YXRpYyBtdXRhdGlvbnNRdWV1ZVBlckxpc3RlbmVyO1xuICAgIHByaXZhdGUgc3RhdGljIG11dGF0aW9uc1F1ZXVlO1xuICAgIHByaXZhdGUgc3RhdGljIG9ic2VydmF0aW9uU3RyYXRlZ3k7XG4gICAgc3RhdGljIGFkZERvbU11dGF0aW9uTGlzdGVuZXIobGlzdGVuZXI6IERvbU11dGF0aW9uTGlzdGVuZXIpOiB2b2lkO1xuICAgIHN0YXRpYyBpbnZva2VMaXN0ZW5lcihsOiBEb21NdXRhdGlvbkxpc3RlbmVyU3RhdGUpOiB2b2lkO1xuICAgIHN0YXRpYyBvYnNlcnZlT25Eb21SZWFkeShzdHJhdGVneTogRG9tT2JzZXJ2YXRpb25TdHJhdGVneSk6IHZvaWQ7XG4gICAgc3RhdGljIG9ic2VydmUoc3RyYXRlZ3lSZXF1ZXN0ZWQ6IERvbU9ic2VydmF0aW9uU3RyYXRlZ3kpOiB2b2lkO1xuICAgIHByaXZhdGUgc3RhdGljIHJ1bk9uY2VJbW1lZGlhdGVseUlmUmVxdWlyZWQ7XG4gICAgcHJpdmF0ZSBzdGF0aWMgb2JzZXJ2ZUluZGl2aWR1YWxseVdpdGhEZWJvdW5jZTtcbiAgICBwcml2YXRlIHN0YXRpYyBvYnNlcnZlSW5kaXZpZHVhbGx5O1xuICAgIHByaXZhdGUgc3RhdGljIG9ic2VydmVDb2xsZWN0aXZlbHlXaXRoRGVib3VuY2U7XG4gICAgcHJpdmF0ZSBzdGF0aWMgb2JzZXJ2ZUNvbGxlY3RpdmVseTtcbiAgICBwcml2YXRlIHN0YXRpYyBwb2xsO1xuICAgIHByaXZhdGUgc3RhdGljIG9ic2VydmVCeVBvbGxpbmc7XG4gICAgc3RhdGljIGRpc2Nvbm5lY3QobGlzdGVuZXI6IERvbU11dGF0aW9uTGlzdGVuZXIpOiB2b2lkO1xuICAgIHN0YXRpYyBzZXRTdGFydGluZ1BvbGxpbmdJbnRlcnZhbChpbnRlcnZhbDogbnVtYmVyKTogdm9pZDtcbiAgICBzdGF0aWMgc2V0RW5kaW5nUG9sbGluZ0ludGVydmFsKGludGVydmFsOiBudW1iZXIpOiB2b2lkO1xufVxuZXhwb3J0IHsgRG9tTXV0YXRpb25PYnNlcnZlciB9O1xuIiwiZGVjbGFyZSBjbGFzcyBLdXN0b21lckludGVncmF0aW9uU2VydmljZSB7XG4gICAgc3RhdGljIEtVU1RPTUVSX0xPQ0FMX1NUT1JBR0VfS0VZOiBzdHJpbmc7XG4gICAgc3RhdGljIEtVU1RPTUVSX0lGUkFNRV9JRDogc3RyaW5nO1xuICAgIGluaXRpYWxpemVkOiBib29sZWFuO1xuICAgIGNvbnN0cnVjdG9yKCk7XG4gICAgaW5pdE9uY2UoKTogdm9pZDtcbiAgICBkaXNjb25uZWN0KCk6IHZvaWQ7XG4gICAgLyoqXG4gICAgICogVXBkYXRlcyB0aGUgdmlzaWJpbGl0eSBvZiB0aGUgS3VzdG9tZXIgY2hhdCBpY29uLlxuICAgICAqL1xuICAgIHVwZGF0ZVZpc2liaWxpdHkoKTogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiBRdWVyaWVzIHRoZSBkb2N1bWVudCBib2R5IGZvciB0aGUgS3VzdG9tZXIgU0RLIGlmcmFtZS4gVGhpcyBmdW5jdGlvbiBpcyB0byBiZSBydW4gaW4gYVxuICAgICAqIE11dGF0aW9uT2JzZXJ2ZXIuXG4gICAgICogQHJldHVybnMgdGhlIGlmcmFtZSBlbGVtZW50IGlmIGl0IGV4aXN0cywgZWxzZSB1bmRlZmluZS5cbiAgICAgKi9cbiAgICBmaW5kS3VzdG9tZXJCdXR0b24oKTogSFRNTElGcmFtZUVsZW1lbnQgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogVXBkYXRlcyB0aGUgS3VzdG9tZXIgY2hhdCBpY29uIHZpc2liaWxpdHkgd2hlbiB0aGUga3VzdG9tZXJTdGF0ZSBsb2NhbFN0b3JhZ2UgaXRlbSBjaGFuZ2VzLlxuICAgICAqIEBwYXJhbSBldmVudCBUaGUgZXZlbnQgdGhhdCB0cmlnZ2VyZWQgdGhlIGV2ZW50IGxpc3RlbmVyLlxuICAgICAqL1xuICAgIG9uQ3VzdG9tZXJTdGF0ZUNoYW5nZShldmVudDogU3RvcmFnZUV2ZW50KTogdm9pZDtcbn1cbmV4cG9ydCB7IEt1c3RvbWVySW50ZWdyYXRpb25TZXJ2aWNlIH07XG4iLCJleHBvcnQgZGVjbGFyZSBlbnVtIExvY2FsU3RvcmFnZUtleXMge1xuICAgIENoYXRJZCA9IFwidjEtc3BpZmZ5LWNoYXQtc2Vzc2lvbi1pZFwiLFxuICAgIFNwaWZmeU9uT3ZlcnJpZGUgPSBcInNwaWZmeV9vblwiLFxuICAgIEVudml2ZU9uT3ZlcnJpZGUgPSBcImVudml2ZV9vblwiXG59XG5kZWNsYXJlIGNsYXNzIExvY2FsU3RvcmFnZVNlcnZpY2Uge1xuICAgIHN0YXRpYyBzZXRJdGVtKGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogdm9pZDtcbiAgICBzdGF0aWMgZ2V0SXRlbShrZXk6IHN0cmluZyk6IHN0cmluZyB8IG51bGw7XG4gICAgc3RhdGljIHNldFNwaWZmeU9uRmVhdHVyZUZsYWcodmFsdWU6IGJvb2xlYW4gfCBudWxsKTogdm9pZDtcbiAgICBzdGF0aWMgZ2V0U3BpZmZ5T25GZWF0dXJlRmxhZygpOiBzdHJpbmcgfCBudWxsO1xuICAgIHN0YXRpYyBnZXRMb2NhbFN0b3JhZ2UoKTogU3RvcmFnZTtcbiAgICBwcml2YXRlIHN0YXRpYyBsaXN0ZW5lcnNDYWNoZTtcbiAgICBwcml2YXRlIHN0YXRpYyBsaXN0ZW5lckZvcktleTtcbiAgICAvKipcbiAgICAgKiBBdHRhY2ggYSBsaXN0ZW5lciB0byB0aGUgd2luZG93J3Mgc3RvcmFnZSBldmVudC4gU2FmZSB0byBjYWxsIG11bHRpcGxlIHRpbWVzLlxuICAgICAqIEBwYXJhbSBsaXN0ZW5lclxuICAgICAqL1xuICAgIHN0YXRpYyBhdHRhY2hMaXN0ZW5lcihsaXN0ZW5lcjogTG9jYWxTdG9yYWdlRXZlbnRMaXN0ZW5lcik6IHZvaWQ7XG4gICAgc3RhdGljIGRldGFjaExpc3RlbmVyKGxpc3RlbmVyOiBMb2NhbFN0b3JhZ2VFdmVudExpc3RlbmVyKTogdm9pZDtcbn1cbmV4cG9ydCB7IExvY2FsU3RvcmFnZVNlcnZpY2UgfTtcbiIsImltcG9ydCB7IENhdGVnb3J5RXh0cmFjdG9yLCBJZEV4dHJhY3RvciwgT3JnUGFnZUNvbmZpZywgUGFnZVZhcmlhbnRDb25maWcsIFBhZ2VWYXJpYW50VGVzdCB9IGZyb20gXCJzcmMvY29udGV4dHMvdHlwZXNcIjtcbmltcG9ydCB7IE1lc3NhZ2UsIFZhcmlhbnRJbmZvIH0gZnJvbSBcInNyYy9hcHBsaWNhdGlvbi9tb2RlbHNcIjtcbmltcG9ydCB7IEZlYXR1cmVHYXRlcyB9IGZyb20gXCJzcmMvYXBwbGljYXRpb24vbW9kZWxzL2ZlYXR1cmVHYXRlc1wiO1xuaW1wb3J0IHsgUGFnZVZpc2l0Q2F0ZWdvcnkgfSBmcm9tIFwiQHNwaWZmeS1haS9jb21tZXJjZS1hcGktY2xpZW50XCI7XG5pbXBvcnQgeyBTdXBwb3J0ZWRFdmVudCB9IGZyb20gXCJzcmMvYXRvbXMvYXBwL3ZhcmlhbnRcIjtcbi8qKlxuICogVGhpcyBjbGFzcyBpcyB1c2VkIHRvIHJlc29sdmUgdGhlIFBhZ2VWYXJpYW50cyBmb3IgdGhlIFNwaWZmeSBBcHAuXG4gKiBJdCBpbmNsdWRlcyBhIG51bWJlciBvZiBzdGF0aWMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIHBlcmZvcm1pbmcgcGFnZVRlc3RzIGFuZFxuICogZXh0cmFjdGluZyBkYXRhIG5lY2Vzc2FyeSB0byBidWlsZCB0aGUgUGFnZVZhcmlhbnRzLlxuICpcbiAqIFVuZGVyIG1vc3QgY2lyY3Vtc3RhbmNlcyBvbmx5IGBnZXRWYXJpYW50SW5mb1dpdGhQYWdlQ29uZmlnYCB3aWxsIGJlIGNhbGxlZCBleHRlcm5hbGx5XG4gKiBUaGUgb3RoZXIgZnVuY3Rpb25zIHNob3VsZCBiZSB1c2VkIGludGVybmFsbHkgYnkgdGhhdCBmdW5jdGlvbi5cbiAqL1xuZGVjbGFyZSBjbGFzcyBQYWdlVmFyaWFudFNlcnZpY2Uge1xuICAgIHN0YXRpYyByZWFkb25seSBwYWdlVGVzdDogKHRlc3Q6IFBhZ2VWYXJpYW50VGVzdCwgcGFnZVZhcmlhbnRDb25maWc6IFBhZ2VWYXJpYW50Q29uZmlnLCBhdG9tVmFsdWVzPzoge1xuICAgICAgICByZXNwb25zZVN0cmVhbWluZzogYm9vbGVhbjtcbiAgICAgICAgbWVzc2FnZXM6IE1lc3NhZ2VbXVtdO1xuICAgICAgICBsYXN0QXNzaXN0YW50TWVzc2FnZT86IE1lc3NhZ2VbXSB8IG51bGwgfCB1bmRlZmluZWQ7XG4gICAgfSkgPT4gUHJvbWlzZTxib29sZWFuPjtcbiAgICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBnZXRDYWNoZWRVcmxSZXNvbHZlcjtcbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgdGhlIGN1cnJlbnQgcGFnZSBtYXRjaGVzIHRoZSBleHBlY3RlZCBjYXRhbG9nIGNhdGVnb3J5LlxuICAgICAqXG4gICAgICogQHBhcmFtIGNhdGVnb3J5IC0gVGhlIGV4cGVjdGVkIGNhdGFsb2cgY2F0ZWdvcnkgYXMgZGVmaW5lZCBieSBkYXRhIGluIEVsYXN0aWMgU2VhcmNoLlxuICAgICAqIEBwYXJhbSBwYWdlVmFyaWFudENvbmZpZyAtIFRoZSB2YXJpYW50IGNvbmZpZyBmb3IgdGhlIGN1cnJlbnQgcGFnZS5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIFRydWUgaWYgdGhlIGN1cnJlbnQgcGFnZSBtYXRjaGVzIHRoZSBleHBlY3RlZCBjYXRhbG9nIGNhdGVnb3J5LlxuICAgICAqL1xuICAgIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IGNoZWNrQ2F0YWxvZ0NhdGVnb3J5O1xuICAgIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IGNoZWNrSW5Ub3BDYXRlZ29yeTtcbiAgICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBjaGVja0hhc1Jldmlld3M7XG4gICAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgY2hlY2tJbkNvbGxlY3Rpb247XG4gICAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgY2hlY2tIYXNNZXJjaGFudFRhZztcbiAgICBwcml2YXRlIHN0YXRpYyByZWFkb25seSB1c2VySGFzSW50ZXJhY3RlZDtcbiAgICBwcml2YXRlIHN0YXRpYyByZWFkb25seSB1c2VySGFzTm90SW50ZXJhY3RlZDtcbiAgICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBpc0xvYWRpbmc7XG4gICAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgaXNQcm9kdWN0Q29tcGFyaXNvbjtcbiAgICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBjaGVja1BscElkcztcbiAgICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBjaGVja1F1ZXJ5UGFyYW07XG4gICAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgY2hlY2tQcm9kdWN0SWQ7XG4gICAgc3RhdGljIGNoZWNrRmVhdHVyZUdhdGUoZmVhdHVyZUdhdGU6IEZlYXR1cmVHYXRlcyk6IGJvb2xlYW47XG4gICAgc3RhdGljIGdldENhdGVnb3J5KGV4dHJhY3RvcjogQ2F0ZWdvcnlFeHRyYWN0b3IpOiBQYWdlVmlzaXRDYXRlZ29yeSB8IG51bGw7XG4gICAgc3RhdGljIGdldElkKGV4dHJhY3Rvcj86IElkRXh0cmFjdG9yKTogUHJvbWlzZTxzdHJpbmcgfCBudWxsPjtcbiAgICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBnZXRJZEZyb21VcmxSZXNvbHZlcjtcbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSB2YXJpYW50IGluZm8gZm9yIHRoZSBjdXJyZW50IHBhZ2UgYmFzZWQgb24gdGhlIG1lcmNoYW50J3MgcGFnZSBjb25maWcuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gb3JnUGFnZUNvbmZpZyAtIFRoZSBtZXJjaGFudCdzIHBhZ2UgY29uZmlnLlxuICAgICAqXG4gICAgICogQHJldHVybnMgVGhlIHZhcmlhbnQgaW5mbyBmb3IgdGhlIGN1cnJlbnQgcGFnZSwgb3IgdW5kZWZpbmVkIGlmIHRoZSBwYWdlIHRlc3RzIGRvIG5vdFxuICAgICAqIHJldHVybiBhbnkgbWF0Y2hlcy5cbiAgICAgKi9cbiAgICBzdGF0aWMgcmVhZG9ubHkgZ2V0VmFyaWFudEluZm9XaXRoUGFnZUNvbmZpZzogKG9yZ1BhZ2VDb25maWc6IE9yZ1BhZ2VDb25maWcpID0+IFByb21pc2U8W1ZhcmlhbnRJbmZvLCBQYWdlVmFyaWFudENvbmZpZ10gfCB1bmRlZmluZWQ+O1xuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiB0aGUgY3VycmVudCBwYWdlIGlzIHN1cHBvcnRlZC4gQSBwYWdlIGlzIHN1cHBvcnRlZCBpZiBpdCBoYXMgYmVlbiBpbmRleGVkIGluXG4gICAgICogRWxhc3RpYyBTZWFyY2ggYW5kIGl0cyBjYXRlZ29yeSBoYXMgYmVlbiB3aGl0ZWxpc3RlZCBieSB0aGUgYmFja2VuZC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBwYWdlVmFyaWFudENvbmZpZyAtIFRoZSB2YXJpYW50IGNvbmZpZyBmb3IgdGhlIGN1cnJlbnQgcGFnZSB3aGljaCBpcyB1c2VkIHRvIGdldFxuICAgICAqIHRoZSB2YXJpYW50IGluZm8uXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBUaGUgc3VwcG9ydGVkIGV2ZW50IHJlc3BvbnNlIGZyb20gdGhlIGJhY2tlbmQsIG9yIHVuZGVmaW5lZCBpZiB0aGUgcGFnZSBpcyBub3Qgc3VwcG9ydGVkLlxuICAgICAqL1xuICAgIHN0YXRpYyByZWFkb25seSBjaGVja1N1cHBvcnRlZEV2ZW50OiAocGFnZVZhcmlhbnRDb25maWc6IFBhZ2VWYXJpYW50Q29uZmlnKSA9PiBQcm9taXNlPFN1cHBvcnRlZEV2ZW50IHwgdW5kZWZpbmVkPjtcbiAgICAvKipcbiAgICAgKiBQYXJzZXMgdGhlIHBhZ2UgdmFyaWFudCBjb25maWcgaW50byBhIHZhcmlhbnQgaW5mbyBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcGFnZVZhcmlhbnRDb25maWcgLSBUaGUgdmFyaWFudCBjb25maWcgZm9yIHRoZSBjdXJyZW50IHBhZ2UuXG4gICAgICogQHBhcmFtIHVybCAtIFRoZSBjdXJyZW50IFVSTCBvZiB0aGUgcGFnZS4gVGhpcyBpcyB1c2VkIHRvIGV4dHJhY3QgdGhlIHBkcC9wbHAgaWQuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBUaGUgdmFyaWFudCBpbmZvIGZvciB0aGUgY3VycmVudCBwYWdlLCBvciB1bmRlZmluZWQgaWYgdGhlIHBhZ2UgdmFyaWFudCBjb25maWcgaXMgaW52YWxpZCBvciBub3Qgc3VwcG9ydGVkLlxuICAgICAqL1xuICAgIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IHBhcnNlUGFnZVZhcmlhbnRDb25maWc7XG59XG5leHBvcnQgeyBQYWdlVmFyaWFudFNlcnZpY2UgfTtcbiIsImRlY2xhcmUgY2xhc3MgU2Vzc2lvblN0b3JhZ2VTZXJ2aWNlIHtcbiAgICBzdGF0aWMgc2V0SXRlbShrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHZvaWQ7XG4gICAgc3RhdGljIGdldEl0ZW0oa2V5OiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsO1xuICAgIHN0YXRpYyBnZXRTZXNzaW9uU3RvcmFnZSgpOiBTdG9yYWdlO1xufVxuZXhwb3J0IHsgU2Vzc2lvblN0b3JhZ2VTZXJ2aWNlIH07XG4iLCJpbXBvcnQgeyBJZEV4dHJhY3RvciB9IGZyb20gJ3NyYy9jb250ZXh0cy90eXBlcyc7XG5kZWNsYXJlIGNsYXNzIFNob3BpZnlVcmxTZXJ2aWNlIHtcbiAgICBzdGF0aWMgZ2V0VHJpbW1lZFBhdGhOYW1lKCk6IHN0cmluZyB8IG51bGw7XG4gICAgLyoqXG4gICAgICogUGFyc2VzIHRoZSBVUkwgdG8gZGV0ZXJtaW5lIHRoZSBQTFAgb3IgUERQIElELlxuICAgICAqXG4gICAgICogQHBhcmFtIGV4dHJhY3RvciB0aGUgdHlwZSBvZiBleHRyYWN0b3IgdG8gcGFyc2Ugc2VnbWVudHMgb2YgdGhlIHBhZ2UgVVJMXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyB0aGUgUExQIG9yIFBEUCBJRCBpZiBmb3VuZCwgb3RoZXJ3aXNlIG51bGxcbiAgICAgKi9cbiAgICBzdGF0aWMgZ2V0UGxwT3JQZHBJZChleHRyYWN0b3I6IElkRXh0cmFjdG9yKTogc3RyaW5nIHwgbnVsbDtcbiAgICBzdGF0aWMgaXNPblBkcFBhZ2UoKTogYm9vbGVhbjtcbiAgICBzdGF0aWMgaXNPblBscFBhZ2UoKTogYm9vbGVhbjtcbn1cbmV4cG9ydCB7IFNob3BpZnlVcmxTZXJ2aWNlIH07XG4iLCJkZWNsYXJlIGNsYXNzIFVzZXJJZGVudGl0eVNlcnZpY2Uge1xuICAgIHN0YXRpYyBVU0VSX0lEX09WRVJSSURFX0tFWTogc3RyaW5nO1xuICAgIHN0YXRpYyBVU0VSX0lEX0RFRkFVTFRfS0VZOiBzdHJpbmc7XG4gICAgc3RhdGljIGlkZW50aWZ5VXNlcigpOiBQcm9taXNlPHZvaWQ+O1xuICAgIHN0YXRpYyBnZXRVc2VySWRPckRlZmF1bHQoKTogc3RyaW5nO1xuICAgIHN0YXRpYyBnZXRVc2VySWRPdmVycmlkZUZyb21Mb2NhbFN0b3JhZ2UoKTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIHN0YXRpYyBnZXRVc2VySWREZWZhdWx0RnJvbUxvY2FsU3RvcmFnZSgpOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgc3RhdGljIHNldFVzZXJJZERlZmF1bHRJbkxvY2FsU3RvcmFnZSh1c2VySWQ6IHN0cmluZyk6IHN0cmluZztcbiAgICBzdGF0aWMgc2V0VXNlcklkT3ZlcnJpZGVJbkxvY2FsU3RvcmFnZSh1c2VySWQ6IHN0cmluZyk6IHN0cmluZztcbiAgICBzdGF0aWMgY2xlYXJVc2VySWRPdmVycmlkZUluTG9jYWxTdG9yYWdlKCk6IHZvaWQ7XG59XG5leHBvcnQgeyBVc2VySWRlbnRpdHlTZXJ2aWNlIH07XG4iLCJleHBvcnQgZGVjbGFyZSBjb25zdCBXaW5kb3dDaGF0VG9nZ2xlQmluZGVyOiAoKSA9PiBudWxsO1xuIiwiaW1wb3J0IHsgT3JnQW5hbHl0aWNzR29vZ2xlQW5hbHl0aWNzQ29uZmlnIH0gZnJvbSAnc3JjL2FwcGxpY2F0aW9uL21vZGVscy9hcGkvb3JnQW5hbHl0aWNzQ29uZmlnJztcbmRlY2xhcmUgZ2xvYmFsIHtcbiAgICBpbnRlcmZhY2UgV2luZG93IHtcbiAgICAgICAgZGF0YUxheWVyOiBhbnk7XG4gICAgfVxufVxuZGVjbGFyZSBjbGFzcyBXaW5kb3dEYXRhTGF5ZXJTZXJ2aWNlIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGdhQ29uZmlnO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZGF0YUxheWVyO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgb3JpZ2luYWxEYXRhTGF5ZXJQdXNoO1xuICAgIHByaXZhdGUgc3RhdGljIGluc3RhbmNlO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbWVyY2hhbnRHb29nbGVNZWFzdXJlbWVudElkO1xuICAgIHByaXZhdGUgY29uc3RydWN0b3IoKTtcbiAgICAvKipcbiAgICAgKiBQdXNoZXMgZGF0YSB0byB0aGUgZGF0YUxheWVyXG4gICAgICogQHBhcmFtIGRhdGFcbiAgICAgKiAgZGF0YSBoYXMgdGhlIHNoYXBlOiB7IGV2ZW50OiAnZXZlbnRfbmFtZScsIC4uLiB9XG4gICAgICogIEV4YW1wbGU6XG4gICAgICogIHtcbiAgICAgKiAgICAgICAgIFwiZXZlbnRcIjogXCJhZGRfdG9fY2FydFwiLFxuICAgICAqICAgICAgICAgXCJjdXJyZW5jeVwiOiBcIlVTRFwiLFxuICAgICAqICAgICAgICAgXCJ2YWx1ZVwiOiAzMC4wMyxcbiAgICAgKiAgICAgICAgIFwiaXRlbXNcIjogW1xuICAgICAqICAgICAgICAgICB7XG4gICAgICogICAgICAgICAgICAgXCJpdGVtX2lkXCI6IFwiU0tVXzEyMzQ1XCIsXG4gICAgICogICAgICAgICAgICAgXCJpdGVtX25hbWVcIjogXCJTdGFuIGFuZCBGcmllbmRzIFRlZVwiLFxuICAgICAqICAgICAgICAgICAgIFwiYWZmaWxpYXRpb25cIjogXCJHb29nbGUgTWVyY2hhbmRpc2UgU3RvcmVcIixcbiAgICAgKiAgICAgICAgICAgICBcImNvdXBvblwiOiBcIlNVTU1FUl9GVU5cIixcbiAgICAgKiAgICAgICAgICAgICBcImRpc2NvdW50XCI6IDIuMjIsXG4gICAgICogICAgICAgICAgICAgXCJpbmRleFwiOiAwLFxuICAgICAqICAgICAgICAgICAgIFwiaXRlbV9icmFuZFwiOiBcIkdvb2dsZVwiLFxuICAgICAqICAgICAgICAgICAgIFwiaXRlbV9jYXRlZ29yeVwiOiBcIkFwcGFyZWxcIixcbiAgICAgKiAgICAgICAgICAgICBcIml0ZW1fY2F0ZWdvcnkyXCI6IFwiQWR1bHRcIixcbiAgICAgKiAgICAgICAgICAgICBcIml0ZW1fY2F0ZWdvcnkzXCI6IFwiU2hpcnRzXCIsXG4gICAgICogICAgICAgICAgICAgXCJpdGVtX2NhdGVnb3J5NFwiOiBcIkNyZXdcIixcbiAgICAgKiAgICAgICAgICAgICBcIml0ZW1fY2F0ZWdvcnk1XCI6IFwiU2hvcnQgc2xlZXZlXCIsXG4gICAgICogICAgICAgICAgICAgXCJpdGVtX2xpc3RfaWRcIjogXCJyZWxhdGVkX3Byb2R1Y3RzXCIsXG4gICAgICogICAgICAgICAgICAgXCJpdGVtX2xpc3RfbmFtZVwiOiBcIlJlbGF0ZWQgUHJvZHVjdHNcIixcbiAgICAgKiAgICAgICAgICAgICBcIml0ZW1fdmFyaWFudFwiOiBcImdyZWVuXCIsXG4gICAgICogICAgICAgICAgICAgXCJsb2NhdGlvbl9pZFwiOiBcIkNoSUpJUUJwQUcyYWhZQVJfNjEyOEdjVFVFb1wiLFxuICAgICAqICAgICAgICAgICAgIFwicHJpY2VcIjogMTAuMDEsXG4gICAgICogICAgICAgICAgICAgXCJxdWFudGl0eVwiOiAzXG4gICAgICogICAgICAgICAgIH1cbiAgICAgKiAgICAgICAgIF1cbiAgICAgKiB9XG4gICAgICovXG4gICAgcHVzaChkYXRhOiBhbnkpOiB2b2lkO1xuICAgIHN0YXRpYyBpc0RhdGFMYXllckF2YWlsYWJsZSgpOiBib29sZWFuO1xuICAgIHN0YXRpYyB0cnlGbGF0dGVuQXJndW1lbnRzKGFyZ3M6IGFueSk6IGFueTtcbiAgICB3cmFwV2l0aFByb3h5TWV0aG9kKG1ldGhvZE5hbWU6IHN0cmluZywgY2FsbGJhY2s6IEZ1bmN0aW9uKTogdm9pZDtcbiAgICBzdGF0aWMgZ2V0U2luZ2xldG9uSW5zdGFuY2VPZihnYUNvbmZpZzogT3JnQW5hbHl0aWNzR29vZ2xlQW5hbHl0aWNzQ29uZmlnKTogV2luZG93RGF0YUxheWVyU2VydmljZTtcbiAgICBzZW5kVG9Hb29nbGVBbmFseXRpY3NDaXJjdWxhckV2ZW50c1NhZmUoZXZlbnROYW1lOiBzdHJpbmcsIGV2ZW50UHJvcHM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgdW5kZWZpbmVkKTogdm9pZDtcbiAgICBzdGF0aWMgZ2V0R29vZ2xlQW5hbHl0aWNzQ2xpZW50SWQ6ICgpID0+IHN0cmluZyB8IHVuZGVmaW5lZDtcbn1cbmV4cG9ydCB7IFdpbmRvd0RhdGFMYXllclNlcnZpY2UgfTtcbiIsImV4cG9ydCBkZWNsYXJlIGNvbnN0IGluaXRXaW5kb3dGcm9udGVuZENvbmZpZ092ZXJyaWRlc0FwcGx5RnVuY3Rpb246ICgpID0+IHZvaWQ7XG4iLCJpbXBvcnQgeyBDdXN0b21lclNlcnZpY2VJbnRlZ3JhdGlvbiB9IGZyb20gJy4uL3R5cGVzJztcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IFVuc3VwcG9ydGVkQ3VzdG9tZXJTZXJ2aWNlOiBDdXN0b21lclNlcnZpY2VJbnRlZ3JhdGlvbjtcbiIsImltcG9ydCB7IE9yZ0FuYWx5dGljc0dvb2dsZUFuYWx5dGljc0NvbmZpZyB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvYXBpL29yZ0FuYWx5dGljc0NvbmZpZyc7XG5pbXBvcnQgeyBEb21NdXRhdGlvbkxpc3RlbmVyIH0gZnJvbSAnLi4vZG9tTXV0YXRpb25MaXN0ZW5lcic7XG5pbXBvcnQgeyBEb21NdXRhdGlvbk9ic2VydmVyQ29udGludWF0aW9uIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2RvbU11dGF0aW9uQ29udGludWF0aW9uJztcbmRlY2xhcmUgY2xhc3MgRGF0YUxheWVyRXZlbnRzTGlzdGVuZXIgaW1wbGVtZW50cyBEb21NdXRhdGlvbkxpc3RlbmVyIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IG9uRGF0YUxheWVyUHVzaDtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGV2ZW50c1RvSW50ZXJjZXB0O1xuICAgIHByaXZhdGUgcmVhZG9ubHkgd2luZG93RGF0YUxheWVyU2VydmljZTtcbiAgICBjb25zdHJ1Y3RvcihvbkRhdGFMYXllclB1c2g6IChldmVudDogb2JqZWN0KSA9PiB2b2lkLCBldmVudHNUb0ludGVyY2VwdDogc3RyaW5nW10sIGdhQ29uZmlnOiBPcmdBbmFseXRpY3NHb29nbGVBbmFseXRpY3NDb25maWcpO1xuICAgIHJ1bk9uY2VJbW1lZGlhdGVseSgpOiBib29sZWFuO1xuICAgIHRyaWVzTWF4KCk6IG51bWJlcjtcbiAgICBvbkRvbUNoYW5nZSgpOiBEb21NdXRhdGlvbk9ic2VydmVyQ29udGludWF0aW9uO1xuICAgIGdldE5hbWUoKTogc3RyaW5nO1xufVxuZXhwb3J0IHsgRGF0YUxheWVyRXZlbnRzTGlzdGVuZXIgfTtcbiIsImltcG9ydCB7IERvbU11dGF0aW9uTGlzdGVuZXIgfSBmcm9tICcuLi9kb21NdXRhdGlvbkxpc3RlbmVyJztcbmltcG9ydCB7IERvbU11dGF0aW9uT2JzZXJ2ZXJDb250aW51YXRpb24gfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZG9tTXV0YXRpb25Db250aW51YXRpb24nO1xuZGVjbGFyZSBjbGFzcyBFbWJlZGRlZENoYXRzUGxhY2VtZW50c0xpc3RlbmVyIGltcGxlbWVudHMgRG9tTXV0YXRpb25MaXN0ZW5lciB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBmaW5kUGxhY2VtZW50Tm9kZXM7XG4gICAgY29uc3RydWN0b3IoZmluZFBsYWNlbWVudE5vZGVzOiAoKSA9PiBEb21NdXRhdGlvbk9ic2VydmVyQ29udGludWF0aW9uKTtcbiAgICBydW5PbmNlSW1tZWRpYXRlbHkoKTogYm9vbGVhbjtcbiAgICBvbkRvbUNoYW5nZSgpOiBEb21NdXRhdGlvbk9ic2VydmVyQ29udGludWF0aW9uO1xuICAgIGdldE5hbWUoKTogc3RyaW5nO1xuICAgIHRyaWVzTWF4KCk6IG51bWJlcjtcbn1cbmV4cG9ydCB7IEVtYmVkZGVkQ2hhdHNQbGFjZW1lbnRzTGlzdGVuZXIsIH07XG4iLCJpbXBvcnQgeyBEb21NdXRhdGlvbk9ic2VydmVyQ29udGludWF0aW9uIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2RvbU11dGF0aW9uQ29udGludWF0aW9uJztcbmltcG9ydCB7IERvbU11dGF0aW9uTGlzdGVuZXIgfSBmcm9tICcuLi9kb21NdXRhdGlvbkxpc3RlbmVyJztcbmRlY2xhcmUgZ2xvYmFsIHtcbiAgICBpbnRlcmZhY2UgV2luZG93IHtcbiAgICAgICAgR2xhZGx5OiB7XG4gICAgICAgICAgICBzaG93OiAoKSA9PiB2b2lkO1xuICAgICAgICAgICAgZ2V0VXNlcjogKCkgPT4ge1xuICAgICAgICAgICAgICAgIGlkZW50aXR5OiBzdHJpbmc7XG4gICAgICAgICAgICB9IHwgdW5kZWZpbmVkO1xuICAgICAgICAgICAgZ2V0QXZhaWxhYmlsaXR5OiAoKSA9PiBzdHJpbmc7XG4gICAgICAgICAgICBvbjogKGV2ZW50TmFtZTogc3RyaW5nLCBjYWxsYmFjazogKCkgPT4gdm9pZCkgPT4gdm9pZDtcbiAgICAgICAgfTtcbiAgICB9XG59XG5kZWNsYXJlIGNsYXNzIEdsYWRseUxpc3RlbmVyIGltcGxlbWVudHMgRG9tTXV0YXRpb25MaXN0ZW5lciB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBvbkdsYWRseUF2YWlsYWJsZTtcbiAgICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBHTEFETFlfUkVUUklFU19NQVg7XG4gICAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgR0xBRExZX0NPTlZFUlNBVElPTl9TVEFSVEVEX0VWRU5UX05BTUU7XG4gICAgY29uc3RydWN0b3Iob25HbGFkbHlBdmFpbGFibGU6ICgpID0+IHZvaWQpO1xuICAgIHJ1bk9uY2VJbW1lZGlhdGVseSgpOiBib29sZWFuO1xuICAgIHRyaWVzTWF4KCk6IG51bWJlcjtcbiAgICBvbkRvbUNoYW5nZSgpOiBEb21NdXRhdGlvbk9ic2VydmVyQ29udGludWF0aW9uO1xuICAgIGdldE5hbWUoKTogc3RyaW5nO1xufVxuZXhwb3J0IHsgR2xhZGx5TGlzdGVuZXIgfTtcbiIsImltcG9ydCB7IERvbU11dGF0aW9uT2JzZXJ2ZXJDb250aW51YXRpb24gfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzL2RvbU11dGF0aW9uQ29udGludWF0aW9uJztcbmltcG9ydCB7IERvbU11dGF0aW9uTGlzdGVuZXIgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vc2VydmljZS9kb21NdXRhdGlvbnMvZG9tTXV0YXRpb25MaXN0ZW5lcic7XG5pbXBvcnQgeyBLdXN0b21lckludGVncmF0aW9uU2VydmljZSB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9zZXJ2aWNlL2t1c3RvbWVySW50ZWdyYXRpb25TZXJ2aWNlJztcbmRlY2xhcmUgY2xhc3MgS3VzdG9tZXJWaXNpYmlsaXR5TGlzdGVuZXIgaW1wbGVtZW50cyBEb21NdXRhdGlvbkxpc3RlbmVyIHtcbiAgICBrdXN0b21lckludGVncmF0aW9uU2VydmljZTogS3VzdG9tZXJJbnRlZ3JhdGlvblNlcnZpY2U7XG4gICAgY29uc3RydWN0b3IoKTtcbiAgICBydW5PbmNlSW1tZWRpYXRlbHkoKTogYm9vbGVhbjtcbiAgICB0cmllc01heCgpOiBudW1iZXI7XG4gICAgZGlzY29ubmVjdCgpOiB2b2lkO1xuICAgIG9uRG9tQ2hhbmdlKCk6IERvbU11dGF0aW9uT2JzZXJ2ZXJDb250aW51YXRpb247XG4gICAgZ2V0TmFtZSgpOiBzdHJpbmc7XG59XG5leHBvcnQgeyBLdXN0b21lclZpc2liaWxpdHlMaXN0ZW5lciB9O1xuIiwiaW1wb3J0IHsgT3JnQW5hbHl0aWNzQ29uZmlnIH0gZnJvbSAnc3JjL2FwcGxpY2F0aW9uL21vZGVscy9hcGkvb3JnQW5hbHl0aWNzQ29uZmlnJztcbmltcG9ydCB7IERhdGFMYXllckV2ZW50c0xpc3RlbmVyIH0gZnJvbSAnc3JjL2FwcGxpY2F0aW9uL3NlcnZpY2UvZG9tTXV0YXRpb25zL2RhdGFMYXllci9kYXRhTGF5ZXJFdmVudHNMaXN0ZW5lcic7XG5kZWNsYXJlIGNsYXNzIE9yZ3NDb21tb25EYXRhTGF5ZXJMaXN0ZW5lciB7XG4gICAgcHJpdmF0ZSBzdGF0aWMgZGF0YUxheWVyQ2FjaGU7XG4gICAgc3RhdGljIHJlc2V0RGF0YUxheWVyQ2FjaGUoKTogdm9pZDtcbiAgICBzdGF0aWMgZ2V0U2luZ2xldG9uRGF0YUxheWVyTGlzdGVuZXJDYWxsYmFja0NvbWJvKG9yZ1Nob3J0TmFtZTogc3RyaW5nLCBvcmdBbmFseXRpY3NDb25maWc6IE9yZ0FuYWx5dGljc0NvbmZpZyk6IHtcbiAgICAgICAgZGF0YUxheWVyTGlzdGVuZXI6IERhdGFMYXllckV2ZW50c0xpc3RlbmVyO1xuICAgIH0gfCB1bmRlZmluZWQ7XG59XG5leHBvcnQgeyBPcmdzQ29tbW9uRGF0YUxheWVyTGlzdGVuZXIgfTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFBQSxJQUFJLGlCQUFpQjtDQUFDO09BQVc7T0FBZTtPQUFTO09BQVM7T0FBa0I7T0FBUztPQUFrQjtDQUFRO0FBQ3ZILElBQUksWUFBWTtDQUFDO09BQVc7T0FBUztPQUFTO09BQWtCO09BQVM7Q0FBVzs7OztBQ0RwRixJQUFJLGFBQWEsQ0FBQyxJQUFJOzs7O0FDQ3RCLElBQUksc0JBQXNCLENBQUMsV0FBRyxnQ0FBQTs7OztBQ0M5QixJQUFJLDJCQUEyQjtDQUFDO09BQU87T0FBQTtPQUFBO09BQUE7Q0FBQTs7OztBQ0N2QyxJQUFFLHNCQUFBO0NBQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO0NBQUE7Ozs7QUNIRixJQUFJLDZCQUE2QjtDQUFDO09BQU87T0FBQTtDQUFBOzs7O0FDQXpDLElBQVcsbUJBQW1CLENBQUMsSUFBSTtBQUNuQyxJQUFJLHNCQUFzQjtDQUFDO09BQVc7T0FBRTtPQUFBO0NBQUE7Ozs7QUNJeEMsSUFBRSxxQkFBQTtDQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtDQUFBOzs7O0FDTEYsSUFBSSx3QkFBd0IsQ0FBQyxXQUFPLFFBQUE7Ozs7QUNDcEMsSUFBSSxvQkFBb0IsQ0FBQyxXQUFPLFlBQUE7Ozs7QUNEaEMsSUFBSSxzQkFBc0IsQ0FBQyxXQUFPLFFBQUE7Ozs7QUNBbEMsSUFBVyx5QkFBeUIsQ0FBQyxJQUFJOzs7O0FDQ3pDLElBQUksT0FBSyxDQUFDLEtBQUssV0FBQSxLQUFBLENBQUE7QUFDZixJQUFJLHlCQUFpQjtDQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7Q0FBQTs7OztBQ0ZyQixJQUFXLGlEQUFpRCxDQUFDLElBQUk7Ozs7QUNDakUsSUFBVyw2QkFBNkIsQ0FBQyxXQUFXLDJCQUF1Qjs7OztBQ0UzRSxJQUFJLDBCQUEwQjtDQUFDO09BQVc7T0FBMkI7T0FBQTtDQUFBOzs7O0FDRHJFLElBQUksa0NBQWtDO0NBQUM7T0FBVztPQUEyQjtPQUFBO0NBQUE7Ozs7QUNBN0UsSUFBSSxLQUFLLENBQUMsS0FBSyxXQUFBLEdBQUEsQ0FBQTtBQUNmLElBQUksaUJBQWlCO0NBQUE7T0FBQTtPQUFBO0NBQUE7Ozs7QUNBckIsSUFBSSw2QkFBNkI7Q0FBQztPQUFXO09BQTJCO09BQUE7Q0FBQTs7OztBQ0R4RSxJQUFJLDhCQUE4QjtDQUFDO09BQU87T0FBQTtDQUFBIn0=
@@ -1,16 +1,15 @@
1
- import { FeatureGates, OrgAnalyticsConfig, OrgAnalyticsGoogleAnalyticsConfig } from "../../featureGates-BMWXU0dS.js";
2
- import { FeatureFlagService } from "../../featureFlagService-NkJ2fuEj.js";
3
- import "../../index-luJrHgPN.js";
4
- import "../../index-CIco0cCQ.js";
5
- import "../../index-tfRj22E1.js";
6
- import { DomMutationObserverContinuation, DomObservationStrategy, Message } from "../../index-COG1kOZG.js";
7
- import { CategoryExtractor, DOMInsertionService, DOMInsertionType, DOMInsertionTypeToInsertPosition, GridInsertionService, GridInsertionType, IdExtractor, OrgPageConfig, PageVariantConfig, PageVariantTest } from "../../frontendConfig-cPvCTWm6.js";
8
- import { CustomerServiceIntegration, CustomerServiceIntegrationMode, CustomerServiceType } from "../../types-TD8g7LnH.js";
9
- import "../../test-types-C9b_OdfO.js";
10
- import { VariantInfo } from "../../index-Cqg6ltII.js";
11
- import { findCustomerServiceImpl } from "../../index-CGB6CAmr.js";
12
- import { SupportedEvent } from "../../variant-XITncuI3.js";
13
- import { ContextSourceEnum, PageVisitCategory } from "@spiffy-ai/commerce-api-client";
1
+ import { CategoryExtractor, DOMInsertionService, DOMInsertionType, DOMInsertionTypeToInsertPosition, FeatureGates, GridInsertionService, GridInsertionType, IdExtractor, OrgAnalyticsConfig, OrgAnalyticsGoogleAnalyticsConfig, OrgPageConfig, PageVariantConfig, PageVariantTest } from "../../orgConfigResults--dAwtw3W.js";
2
+ import { CustomerServiceIntegration, CustomerServiceIntegrationMode, CustomerServiceType } from "../../types-DBdI0j89.js";
3
+ import "../../test-types-CXVJxTeu.js";
4
+ import { FeatureFlagService } from "../../featureFlagService-5wdmW02z.js";
5
+ import "../../index-D2VaMPA3.js";
6
+ import "../../index-Cx9e-fRi.js";
7
+ import "../../index-Dxpscrvz.js";
8
+ import { DomMutationObserverContinuation, DomObservationStrategy, Message } from "../../index-BfuO9b0Q.js";
9
+ import { VariantInfo } from "../../index-CKKkTsms.js";
10
+ import { findCustomerServiceImpl } from "../../index-DFL1dIT_.js";
11
+ import { SupportedEvent } from "../../variant-CKVRF2-W.js";
12
+ import { PageVisitCategory } from "@spiffy-ai/commerce-api-client";
14
13
 
15
14
  //#region src/application/service/cachingService.d.ts
16
15
  declare function cacheableAsync<T extends (...args: never[]) => Promise<unknown>>(func: T, expiry: number): (...args: Parameters<T>) => Promise<ReturnType<T>>;
@@ -114,14 +113,6 @@ declare class DomMutationObserver {
114
113
  static setEndingPollingInterval(interval: number): void;
115
114
  }
116
115
  //#endregion
117
- //#region src/application/service/environmentService.d.ts
118
- declare class EnvironmentService {
119
- static getApiEndpoint(): string;
120
- static getContextSource(): ContextSourceEnum;
121
- static getIdentifyingPrefix(): string;
122
- static getEnvironment: () => "dev" | "prod";
123
- }
124
- //#endregion
125
116
  //#region src/application/service/kustomerIntegrationService.d.ts
126
117
  declare class KustomerIntegrationService {
127
118
  static KUSTOMER_LOCAL_STORAGE_KEY: string;
@@ -404,4 +395,5 @@ declare class OrgsCommonDataLayerListener {
404
395
  } | undefined;
405
396
  }
406
397
  //#endregion
407
- export { CdnService, CustomerServiceIntegration, CustomerServiceIntegrationMode, CustomerServiceType, DOMInsertionService, DOMInsertionType, DOMInsertionTypeToInsertPosition, DataLayerEventsListener, type DomMutationListener, DomMutationListenerState, DomMutationObserver, EmbeddedChatsPlacementsListener, EnvironmentService, FeatureFlagService, GladlyListener, GridInsertionService, GridInsertionType, KustomerIntegrationService, KustomerVisibilityListener, LocalStorageKeys, LocalStorageService, OrgsCommonDataLayerListener, PageVariantService, SessionStorageService, ShopifyUrlService, UnsupportedCustomerService, UserIdentityService, WindowChatToggleBinder, WindowDataLayerService, cacheable, cacheableAsync, findCustomerServiceImpl, initWindowFrontendConfigOverridesApplyFunction };
398
+ export { CdnService, CustomerServiceIntegration, CustomerServiceIntegrationMode, CustomerServiceType, DOMInsertionService, DOMInsertionType, DOMInsertionTypeToInsertPosition, DataLayerEventsListener, type DomMutationListener, DomMutationListenerState, DomMutationObserver, EmbeddedChatsPlacementsListener, FeatureFlagService, GladlyListener, GridInsertionService, GridInsertionType, KustomerIntegrationService, KustomerVisibilityListener, LocalStorageKeys, LocalStorageService, OrgsCommonDataLayerListener, PageVariantService, SessionStorageService, ShopifyUrlService, UnsupportedCustomerService, UserIdentityService, WindowChatToggleBinder, WindowDataLayerService, cacheable, cacheableAsync, findCustomerServiceImpl, initWindowFrontendConfigOverridesApplyFunction };
399
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwbGljYXRpb24vc2VydmljZS9jYWNoaW5nU2VydmljZS5kLnRzIiwiLi4vLi4vLi4vc3JjL2FwcGxpY2F0aW9uL3NlcnZpY2UvY2RuU2VydmljZS5kLnRzIiwiLi4vLi4vLi4vc3JjL2FwcGxpY2F0aW9uL3NlcnZpY2UvZG9tTXV0YXRpb25zL2RvbU11dGF0aW9uTGlzdGVuZXIuZC50cyIsIi4uLy4uLy4uL3NyYy9hcHBsaWNhdGlvbi9zZXJ2aWNlL2RvbU11dGF0aW9ucy9kb21NdXRhdGlvbkxpc3RlbmVyU3RhdGUuZC50cyIsIi4uLy4uLy4uL3NyYy9hcHBsaWNhdGlvbi9zZXJ2aWNlL2RvbU11dGF0aW9uT2JzZXJ2ZXIuZC50cyIsIi4uLy4uLy4uL3NyYy9hcHBsaWNhdGlvbi9zZXJ2aWNlL2t1c3RvbWVySW50ZWdyYXRpb25TZXJ2aWNlLmQudHMiLCIuLi8uLi8uLi9zcmMvYXBwbGljYXRpb24vc2VydmljZS9sb2NhbFN0b3JhZ2VTZXJ2aWNlLmQudHMiLCIuLi8uLi8uLi9zcmMvYXBwbGljYXRpb24vc2VydmljZS9wYWdlVmFyaWFudFNlcnZpY2UuZC50cyIsIi4uLy4uLy4uL3NyYy9hcHBsaWNhdGlvbi9zZXJ2aWNlL3Nlc3Npb25TdG9yYWdlU2VydmljZS5kLnRzIiwiLi4vLi4vLi4vc3JjL2FwcGxpY2F0aW9uL3NlcnZpY2Uvc2hvcGlmeVVybFNlcnZpY2UuZC50cyIsIi4uLy4uLy4uL3NyYy9hcHBsaWNhdGlvbi9zZXJ2aWNlL3VzZXJJZGVudGl0eVNlcnZpY2UuZC50cyIsIi4uLy4uLy4uL3NyYy9hcHBsaWNhdGlvbi9zZXJ2aWNlL3dpbmRvd0NoYXRUb2dnbGVTZXJ2aWNlLmQudHMiLCIuLi8uLi8uLi9zcmMvYXBwbGljYXRpb24vc2VydmljZS93aW5kb3dEYXRhTGF5ZXJTZXJ2aWNlLmQudHMiLCIuLi8uLi8uLi9zcmMvYXBwbGljYXRpb24vc2VydmljZS93aW5kb3dGcm9udGVuZENvbmZpZ1NlcnZpY2UuZC50cyIsIi4uLy4uLy4uL3NyYy9hcHBsaWNhdGlvbi9zZXJ2aWNlL2N1c3RvbWVyU2VydmljZS9wcm92aWRlcnMvVW5zdXBwb3J0ZWRDdXN0b21lclNlcnZpY2UuZC50cyIsIi4uLy4uLy4uL3NyYy9hcHBsaWNhdGlvbi9zZXJ2aWNlL2RvbU11dGF0aW9ucy9kYXRhTGF5ZXIvZGF0YUxheWVyRXZlbnRzTGlzdGVuZXIuZC50cyIsIi4uLy4uLy4uL3NyYy9hcHBsaWNhdGlvbi9zZXJ2aWNlL2RvbU11dGF0aW9ucy9mbG9hdGluZ0NoYXQvZW1iZWRkZWRDaGF0c1BsYWNlbWVudHNMaXN0ZW5lci5kLnRzIiwiLi4vLi4vLi4vc3JjL2FwcGxpY2F0aW9uL3NlcnZpY2UvZG9tTXV0YXRpb25zL2dsYWRseS9nbGFkbHlMaXN0ZW5lci5kLnRzIiwiLi4vLi4vLi4vc3JjL2FwcGxpY2F0aW9uL3NlcnZpY2UvZG9tTXV0YXRpb25zL3NwaWZmeS9vcmdzL2NvbW1vbi9rdXN0b21lclZpc2liaWxpdHlMaXN0ZW5lci5kLnRzIiwiLi4vLi4vLi4vc3JjL2FwcGxpY2F0aW9uL3NlcnZpY2UvZG9tTXV0YXRpb25zL3NwaWZmeS9vcmdzL2NvbW1vbi9vcmdzQ29tbW9uRGF0YUxheWVyTGlzdGVuZXIuZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJkZWNsYXJlIGZ1bmN0aW9uIGNhY2hlYWJsZUFzeW5jPFQgZXh0ZW5kcyAoLi4uYXJnczogbmV2ZXJbXSkgPT4gUHJvbWlzZTx1bmtub3duPj4oZnVuYzogVCwgZXhwaXJ5OiBudW1iZXIpOiAoLi4uYXJnczogUGFyYW1ldGVyczxUPikgPT4gUHJvbWlzZTxSZXR1cm5UeXBlPFQ+PjtcbmRlY2xhcmUgZnVuY3Rpb24gY2FjaGVhYmxlPFQgZXh0ZW5kcyAoLi4uYXJnczogdW5rbm93bltdKSA9PiB1bmtub3duPihmdW5jOiBULCBleHBpcnk6IG51bWJlcik6ICguLi5hcmdzOiBQYXJhbWV0ZXJzPFQ+KSA9PiBSZXR1cm5UeXBlPFQ+O1xuZXhwb3J0IHsgY2FjaGVhYmxlLCBjYWNoZWFibGVBc3luYyB9O1xuIiwiZGVjbGFyZSBjbGFzcyBDZG5TZXJ2aWNlIHtcbiAgICBzdGF0aWMgZ2V0IENETl9VUkwoKTogc3RyaW5nO1xuICAgIHN0YXRpYyBnZXRDbmRCYXNlUGF0aCgpOiBzdHJpbmc7XG4gICAgc3RhdGljIGdldEFzc2V0VVJMKGFzc2V0TmFtZTogc3RyaW5nLCBvcmdTaG9ydE5hbWU6IHN0cmluZyk6IHN0cmluZztcbn1cbmV4cG9ydCB7IENkblNlcnZpY2UgfTtcbiIsImltcG9ydCB7IERvbU11dGF0aW9uT2JzZXJ2ZXJDb250aW51YXRpb24gfSBmcm9tICcuLi8uLi9tb2RlbHMvZG9tTXV0YXRpb25Db250aW51YXRpb24nO1xuaW50ZXJmYWNlIERvbU11dGF0aW9uTGlzdGVuZXIge1xuICAgIGdldE5hbWUoKTogc3RyaW5nO1xuICAgIHJ1bk9uY2VJbW1lZGlhdGVseSgpOiBib29sZWFuO1xuICAgIGRpc2Nvbm5lY3Q/KCk6IHZvaWQ7XG4gICAgdHJpZXNNYXgoKTogbnVtYmVyO1xuICAgIG9uRG9tQ2hhbmdlKCk6IERvbU11dGF0aW9uT2JzZXJ2ZXJDb250aW51YXRpb247XG59XG5leHBvcnQgdHlwZSB7IERvbU11dGF0aW9uTGlzdGVuZXIgfTtcbiIsImltcG9ydCB7IERvbU11dGF0aW9uTGlzdGVuZXIgfSBmcm9tICcuL2RvbU11dGF0aW9uTGlzdGVuZXInO1xuaW1wb3J0IHsgRG9tTXV0YXRpb25PYnNlcnZlckNvbnRpbnVhdGlvbiB9IGZyb20gJy4uLy4uL21vZGVscy9kb21NdXRhdGlvbkNvbnRpbnVhdGlvbic7XG5kZWNsYXJlIGNsYXNzIERvbU11dGF0aW9uTGlzdGVuZXJTdGF0ZSB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBsaXN0ZW5lcjtcbiAgICBwcml2YXRlIGN1cnJlbnRTdGF0ZTtcbiAgICBwcml2YXRlIGF0dGFjaGVkO1xuICAgIHByaXZhdGUgY3VycmVudFRyeUNvdW50O1xuICAgIGNvbnN0cnVjdG9yKGxpc3RlbmVyOiBEb21NdXRhdGlvbkxpc3RlbmVyKTtcbiAgICBnZXRMaXN0ZW5lcigpOiBEb21NdXRhdGlvbkxpc3RlbmVyO1xuICAgIHNldEN1cnJlbnRTdGF0ZShzdGF0ZTogRG9tTXV0YXRpb25PYnNlcnZlckNvbnRpbnVhdGlvbik6IHZvaWQ7XG4gICAgZ2V0Q3VycmVudFN0YXRlKCk6IERvbU11dGF0aW9uT2JzZXJ2ZXJDb250aW51YXRpb247XG4gICAgZ2V0SXNBdHRhY2hlZCgpOiBib29sZWFuO1xuICAgIHNldElzQXR0YWNoZWQoYXR0YWNoZWQ6IGJvb2xlYW4pOiB2b2lkO1xuICAgIGdldEN1cnJlbnRUcnlDb3VudCgpOiBudW1iZXI7XG4gICAgaW5jcmVtZW50Q3VycmVudFRyeUNvdW50KCk6IHZvaWQ7XG59XG5leHBvcnQgeyBEb21NdXRhdGlvbkxpc3RlbmVyU3RhdGUgfTtcbiIsImltcG9ydCB7IERvbU11dGF0aW9uTGlzdGVuZXJTdGF0ZSB9IGZyb20gJy4vZG9tTXV0YXRpb25zL2RvbU11dGF0aW9uTGlzdGVuZXJTdGF0ZSc7XG5pbXBvcnQgeyBEb21NdXRhdGlvbkxpc3RlbmVyIH0gZnJvbSAnLi9kb21NdXRhdGlvbnMvZG9tTXV0YXRpb25MaXN0ZW5lcic7XG5pbXBvcnQgeyBEb21PYnNlcnZhdGlvblN0cmF0ZWd5IH0gZnJvbSAnLi4vbW9kZWxzL2RvbU9ic2VydmF0aW9uU3RyYXRlZ3knO1xuLyoqXG4gKiAtIFdoZW4gdXNlZCBiZWZvcmUgcGFnZSBsb2FkL3JlbmRlciwgYW4gdW5vcHRpbWl6ZWQgTXV0YXRpb25PYnNlcnZlciBjYWxsYmFjayBjYW4gc2lnbmlmaWNhbnRseSBkZWxheSBwYWdlIGxvYWQgdGltZSxcbiAqICAgZXNwZWNpYWxseSBvbiBjb21wbGV4IHBhZ2VzLlxuICogLSBUaGUgY2FsbGJhY2sgcnVucyBhcyBhIG1pY3JvdGFzayBhbmQgY2FuIGJsb2NrIGZ1cnRoZXIgRE9NIHByb2Nlc3NpbmcsIG9mdGVuIGZpcmluZyBodW5kcmVkcyBvciBldmVuIHRob3VzYW5kcyBvZiB0aW1lc1xuICogICBwZXIgc2Vjb25kIG9uIGEgY29tcGxleCBwYWdlLiBNYW55IGxpYnJhcmllcyBkb24ndCBvcHRpbWl6ZSBmb3IgdGhpcywgcmVzdWx0aW5nIGluIGNsZWFuLWxvb2tpbmcgYnV0IHBvdGVudGlhbGx5IHNsb3cgY29kZS5cbiAqXG4gKiBCZXN0IFByYWN0aWNlcyBmb3IgTXV0YXRpb25PYnNlcnZlciBPcHRpbWl6YXRpb246XG4gKiAtICoqUHJvZmlsaW5nOioqIFVzZSBEZXZUb29scyBQcm9maWxlciB0byBlbnN1cmUgdGhlIG9ic2VydmVyIGNhbGxiYWNrIHVzZXMgbGVzcyB0aGFuIDAuMSUgb2YgdG90YWwgQ1BVIGR1cmluZyBwYWdlIGxvYWQuXG4gKiAtICoqQXZvaWQgRm9yY2VkIExheW91dHM6KiogUmVmcmFpbiBmcm9tIHRyaWdnZXJpbmcgc3luY2hyb25vdXMgbGF5b3V0cyBieSBhY2Nlc3NpbmcgcHJvcGVydGllcyBsaWtlIGBvZmZzZXRUb3BgLlxuICogLSAqKlByZWZlciBOYXRpdmUgRE9NOioqIFVzZSBuYXRpdmUgRE9NIG1ldGhvZHMgaW5zdGVhZCBvZiBjb21wbGV4IGZyYW1ld29ya3MgbGlrZSBqUXVlcnkgdG8gcmVkdWNlIG92ZXJoZWFkLlxuICogLSAqKlVzZSBgYXR0cmlidXRlRmlsdGVyYDoqKiBXaGVuIG9ic2VydmluZyBhdHRyaWJ1dGVzLCBsaW1pdCB0aGUgb2JzZXJ2YXRpb25zIHRvIHNwZWNpZmljIGF0dHJpYnV0ZXMsIGUuZy4sIGBhdHRyaWJ1dGVGaWx0ZXI6IFsnYXR0cjEnLCAnYXR0cjInXWAuXG4gKiAtICoqTm9uLXJlY3Vyc2l2ZSBPYnNlcnZhdGlvbnM6KiogT2JzZXJ2ZSBkaXJlY3QgcGFyZW50IGVsZW1lbnRzIHdpdGggYHN1YnRyZWU6IGZhbHNlYCB3aGVuZXZlciBwb3NzaWJsZS4gRm9yIGluc3RhbmNlLCBpbml0aWFsbHkgb2JzZXJ2ZSBgZG9jdW1lbnRgIHJlY3Vyc2l2ZWx5LCBkaXNjb25uZWN0IG9uIHN1Y2Nlc3MsIGFuZCByZWF0dGFjaCBhIG5vbi1yZWN1cnNpdmUgb2JzZXJ2ZXIgdG8gdGhlIHBhcmVudCBlbGVtZW50LlxuICogLSAqKkRpcmVjdCBFbGVtZW50IEFjY2VzczoqKiBXaGVuIHdhaXRpbmcgZm9yIGEgc2luZ2xlIGVsZW1lbnQgd2l0aCBhbiBgaWRgLCB1c2UgYGdldEVsZW1lbnRCeUlkYCBpbnN0ZWFkIG9mIGxvb3Bpbmcgb3ZlciB0aGUgYG11dGF0aW9uc2AgYXJyYXkuXG4gKiAtICoqSFRNTENvbGxlY3Rpb24gQ2hlY2tzOioqIEZvciByYXJlIGVsZW1lbnRzIChlLmcuLCBgPGlmcmFtZT5gIG9yIGA8b2JqZWN0PmApLCB1c2UgbGl2ZSBIVE1MQ29sbGVjdGlvbnMgZnJvbSBgZ2V0RWxlbWVudHNCeVRhZ05hbWVgIG9yIGBnZXRFbGVtZW50c0J5Q2xhc3NOYW1lYCByYXRoZXIgdGhhbiBlbnVtZXJhdGluZyBtdXRhdGlvbnMsIGVzcGVjaWFsbHkgd2l0aCBsYXJnZSBudW1iZXJzIG9mIG11dGF0aW9ucy5cbiAqIC0gKipBdm9pZCBgcXVlcnlTZWxlY3RvckFsbGA6KiogVXNlIGBxdWVyeVNlbGVjdG9yYCBmaXJzdCBmb3IgYW4gaW5pdGlhbCBjaGVjazsgaWYgc3VjY2Vzc2Z1bCwgcHJvY2VlZCB3aXRoIGBxdWVyeVNlbGVjdG9yQWxsYCBvbmx5IHdoZW4gYWJzb2x1dGVseSBuZWNlc3NhcnkuIFRoaXMgY29tYm8gaXMgb2Z0ZW4gZmFzdGVyIG9uIGF2ZXJhZ2UuXG4gKiAtICoqTGVnYWN5IEJyb3dzZXIgQ29tcGF0aWJpbGl0eToqKlxuICogICAtIEF2b2lkIGBBcnJheWAgbWV0aG9kcyBsaWtlIGBmb3JFYWNoYCwgYGZpbHRlcmAsIGV0Yy4sIGFuZCBFUzIwMTUgbG9vcHMgKGBmb3IuLi5vZmApIGluIHByZS0yMDE4IENocm9tZSBmb3IgTXV0YXRpb25PYnNlcnZlciBjYWxsYmFja3MsXG4gKiAgICAgYXMgdGhlc2UgY2FuIGJlIHVwIHRvIDEwMHggc2xvd2VyIHRoYW4gdHJhZGl0aW9uYWwgYGZvcmAgbG9vcHMuXG4gKiAgIC0gQWx0ZXJuYXRpdmVseSwgdXNlIGEgZmFzdCBmdW5jdGlvbmFsIGxpYnJhcnkgbGlrZSBsb2Rhc2ggb24gb2xkZXIgYnJvd3NlcnMuIENocm9tZSAyMDE4KyBpbmxpbmVzIGFycmF5IG1ldGhvZHMgZWZmaWNpZW50bHkuXG4gKiAtICoqU2NoZWR1bGVkIFJlLWNoZWNraW5nOioqIEZvciB2aXN1YWwgdXBkYXRlcywgaWYgeW91IGNhbiBkZXRlcm1pbmUgZWxlbWVudHMgYXJlIG9mZnNjcmVlbiwgZGlzY29ubmVjdCB0aGUgb2JzZXJ2ZXIgYW5kIHVzZSBgc2V0VGltZW91dChmbiwgMClgIHRvIGRlbGF5IHByb2Nlc3NpbmcgdW50aWwgaW5pdGlhbCBwYXJzaW5nL2xheW91dCBpcyBjb21wbGV0ZS4gQWZ0ZXIgdGhhdCwgdXNlIGByZXF1ZXN0QW5pbWF0aW9uRnJhbWVgIGZvciBjaHVua2VkIHByb2Nlc3NpbmcuXG4gKiAtICoqRGVib3VuY2UgTG9uZyBQcm9jZXNzaW5nOioqIElmIHRoZSBjYWxsYmFjayBwcm9jZXNzaW5nIGlzIGxlbmd0aHksIGNhdXNpbmcgdW5yZXNwb25zaXZlbmVzcyBvciBqYW5rLCB1c2UgZGVib3VuY2luZyBieSBhY2N1bXVsYXRpbmcgbXV0YXRpb25zIGluIGFuIGFycmF5IGFuZCBzY2hlZHVsaW5nIHByb2Nlc3Npbmcgd2l0aCBgc2V0VGltZW91dGAsIGByZXF1ZXN0SWRsZUNhbGxiYWNrYCwgb3IgYHJlcXVlc3RBbmltYXRpb25GcmFtZWAuXG4gKlxuICogRXhhbXBsZSBvZiBEZWJvdW5jZSBTZXR1cDpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IHF1ZXVlOiBNdXRhdGlvblJlY29yZFtdID0gW107XG4gKiBjb25zdCBtbyA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKG11dGF0aW9ucyA9PiB7XG4gKiAgIGlmICghcXVldWUubGVuZ3RoKSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUocHJvY2Vzcyk7XG4gKiAgIHF1ZXVlLnB1c2goLi4ubXV0YXRpb25zKTtcbiAqIH0pO1xuICogZnVuY3Rpb24gcHJvY2VzcygpIHtcbiAqICAgZm9yIChjb25zdCBtdXRhdGlvbnMgb2YgcXVldWUpIHtcbiAqICAgICAvLyBQcm9jZXNzaW5nIGxvZ2ljXG4gKiAgIH1cbiAqICAgcXVldWUubGVuZ3RoID0gMDtcbiAqIH1cbiAqIGBgYFxuICogTm90ZTogYHJlcXVlc3RBbmltYXRpb25GcmFtZWAgb25seSB0cmlnZ2VycyB3aGVuIHRoZSBwYWdlIGlzIHZpc2libGUuXG4gKi9cbmRlY2xhcmUgY2xhc3MgRG9tTXV0YXRpb25PYnNlcnZlciB7XG4gICAgcHJpdmF0ZSBzdGF0aWMgb2JzZXJ2ZXJWZXJzaW9uO1xuICAgIHByaXZhdGUgc3RhdGljIGluZGl2aWR1YWxPYnNlcnZlcnM7XG4gICAgcHJpdmF0ZSBzdGF0aWMgZGVmZXJyZWRFeGVjdXRpb25EZWxheTtcbiAgICBwcml2YXRlIHN0YXRpYyBzdGFydGluZ1BvbGxpbmdJbnRlcnZhbDtcbiAgICBwcml2YXRlIHN0YXRpYyBlbmRpbmdQb2xsaW5nSW50ZXJ2YWw7XG4gICAgcHJpdmF0ZSBzdGF0aWMgdXNlRGVib3VuY2U7XG4gICAgcHJpdmF0ZSBzdGF0aWMgbGlzdGVuZXJzO1xuICAgIHByaXZhdGUgc3RhdGljIG11dGF0aW9uc1F1ZXVlUGVyTGlzdGVuZXI7XG4gICAgcHJpdmF0ZSBzdGF0aWMgbXV0YXRpb25zUXVldWU7XG4gICAgcHJpdmF0ZSBzdGF0aWMgb2JzZXJ2YXRpb25TdHJhdGVneTtcbiAgICBzdGF0aWMgYWRkRG9tTXV0YXRpb25MaXN0ZW5lcihsaXN0ZW5lcjogRG9tTXV0YXRpb25MaXN0ZW5lcik6IHZvaWQ7XG4gICAgc3RhdGljIGludm9rZUxpc3RlbmVyKGw6IERvbU11dGF0aW9uTGlzdGVuZXJTdGF0ZSk6IHZvaWQ7XG4gICAgc3RhdGljIG9ic2VydmVPbkRvbVJlYWR5KHN0cmF0ZWd5OiBEb21PYnNlcnZhdGlvblN0cmF0ZWd5KTogdm9pZDtcbiAgICBzdGF0aWMgb2JzZXJ2ZShzdHJhdGVneVJlcXVlc3RlZDogRG9tT2JzZXJ2YXRpb25TdHJhdGVneSk6IHZvaWQ7XG4gICAgcHJpdmF0ZSBzdGF0aWMgcnVuT25jZUltbWVkaWF0ZWx5SWZSZXF1aXJlZDtcbiAgICBwcml2YXRlIHN0YXRpYyBvYnNlcnZlSW5kaXZpZHVhbGx5V2l0aERlYm91bmNlO1xuICAgIHByaXZhdGUgc3RhdGljIG9ic2VydmVJbmRpdmlkdWFsbHk7XG4gICAgcHJpdmF0ZSBzdGF0aWMgb2JzZXJ2ZUNvbGxlY3RpdmVseVdpdGhEZWJvdW5jZTtcbiAgICBwcml2YXRlIHN0YXRpYyBvYnNlcnZlQ29sbGVjdGl2ZWx5O1xuICAgIHByaXZhdGUgc3RhdGljIHBvbGw7XG4gICAgcHJpdmF0ZSBzdGF0aWMgb2JzZXJ2ZUJ5UG9sbGluZztcbiAgICBzdGF0aWMgZGlzY29ubmVjdChsaXN0ZW5lcjogRG9tTXV0YXRpb25MaXN0ZW5lcik6IHZvaWQ7XG4gICAgc3RhdGljIHNldFN0YXJ0aW5nUG9sbGluZ0ludGVydmFsKGludGVydmFsOiBudW1iZXIpOiB2b2lkO1xuICAgIHN0YXRpYyBzZXRFbmRpbmdQb2xsaW5nSW50ZXJ2YWwoaW50ZXJ2YWw6IG51bWJlcik6IHZvaWQ7XG59XG5leHBvcnQgeyBEb21NdXRhdGlvbk9ic2VydmVyIH07XG4iLCJkZWNsYXJlIGNsYXNzIEt1c3RvbWVySW50ZWdyYXRpb25TZXJ2aWNlIHtcbiAgICBzdGF0aWMgS1VTVE9NRVJfTE9DQUxfU1RPUkFHRV9LRVk6IHN0cmluZztcbiAgICBzdGF0aWMgS1VTVE9NRVJfSUZSQU1FX0lEOiBzdHJpbmc7XG4gICAgaW5pdGlhbGl6ZWQ6IGJvb2xlYW47XG4gICAgY29uc3RydWN0b3IoKTtcbiAgICBpbml0T25jZSgpOiB2b2lkO1xuICAgIGRpc2Nvbm5lY3QoKTogdm9pZDtcbiAgICAvKipcbiAgICAgKiBVcGRhdGVzIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBLdXN0b21lciBjaGF0IGljb24uXG4gICAgICovXG4gICAgdXBkYXRlVmlzaWJpbGl0eSgpOiBib29sZWFuO1xuICAgIC8qKlxuICAgICAqIFF1ZXJpZXMgdGhlIGRvY3VtZW50IGJvZHkgZm9yIHRoZSBLdXN0b21lciBTREsgaWZyYW1lLiBUaGlzIGZ1bmN0aW9uIGlzIHRvIGJlIHJ1biBpbiBhXG4gICAgICogTXV0YXRpb25PYnNlcnZlci5cbiAgICAgKiBAcmV0dXJucyB0aGUgaWZyYW1lIGVsZW1lbnQgaWYgaXQgZXhpc3RzLCBlbHNlIHVuZGVmaW5lLlxuICAgICAqL1xuICAgIGZpbmRLdXN0b21lckJ1dHRvbigpOiBIVE1MSUZyYW1lRWxlbWVudCB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBVcGRhdGVzIHRoZSBLdXN0b21lciBjaGF0IGljb24gdmlzaWJpbGl0eSB3aGVuIHRoZSBrdXN0b21lclN0YXRlIGxvY2FsU3RvcmFnZSBpdGVtIGNoYW5nZXMuXG4gICAgICogQHBhcmFtIGV2ZW50IFRoZSBldmVudCB0aGF0IHRyaWdnZXJlZCB0aGUgZXZlbnQgbGlzdGVuZXIuXG4gICAgICovXG4gICAgb25DdXN0b21lclN0YXRlQ2hhbmdlKGV2ZW50OiBTdG9yYWdlRXZlbnQpOiB2b2lkO1xufVxuZXhwb3J0IHsgS3VzdG9tZXJJbnRlZ3JhdGlvblNlcnZpY2UgfTtcbiIsImV4cG9ydCBkZWNsYXJlIGVudW0gTG9jYWxTdG9yYWdlS2V5cyB7XG4gICAgQ2hhdElkID0gXCJ2MS1zcGlmZnktY2hhdC1zZXNzaW9uLWlkXCIsXG4gICAgU3BpZmZ5T25PdmVycmlkZSA9IFwic3BpZmZ5X29uXCIsXG4gICAgRW52aXZlT25PdmVycmlkZSA9IFwiZW52aXZlX29uXCJcbn1cbmRlY2xhcmUgY2xhc3MgTG9jYWxTdG9yYWdlU2VydmljZSB7XG4gICAgc3RhdGljIHNldEl0ZW0oa2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiB2b2lkO1xuICAgIHN0YXRpYyBnZXRJdGVtKGtleTogc3RyaW5nKTogc3RyaW5nIHwgbnVsbDtcbiAgICBzdGF0aWMgc2V0U3BpZmZ5T25GZWF0dXJlRmxhZyh2YWx1ZTogYm9vbGVhbiB8IG51bGwpOiB2b2lkO1xuICAgIHN0YXRpYyBnZXRTcGlmZnlPbkZlYXR1cmVGbGFnKCk6IHN0cmluZyB8IG51bGw7XG4gICAgc3RhdGljIGdldExvY2FsU3RvcmFnZSgpOiBTdG9yYWdlO1xuICAgIHByaXZhdGUgc3RhdGljIGxpc3RlbmVyc0NhY2hlO1xuICAgIHByaXZhdGUgc3RhdGljIGxpc3RlbmVyRm9yS2V5O1xuICAgIC8qKlxuICAgICAqIEF0dGFjaCBhIGxpc3RlbmVyIHRvIHRoZSB3aW5kb3cncyBzdG9yYWdlIGV2ZW50LiBTYWZlIHRvIGNhbGwgbXVsdGlwbGUgdGltZXMuXG4gICAgICogQHBhcmFtIGxpc3RlbmVyXG4gICAgICovXG4gICAgc3RhdGljIGF0dGFjaExpc3RlbmVyKGxpc3RlbmVyOiBMb2NhbFN0b3JhZ2VFdmVudExpc3RlbmVyKTogdm9pZDtcbiAgICBzdGF0aWMgZGV0YWNoTGlzdGVuZXIobGlzdGVuZXI6IExvY2FsU3RvcmFnZUV2ZW50TGlzdGVuZXIpOiB2b2lkO1xufVxuZXhwb3J0IHsgTG9jYWxTdG9yYWdlU2VydmljZSB9O1xuIiwiaW1wb3J0IHsgQ2F0ZWdvcnlFeHRyYWN0b3IsIElkRXh0cmFjdG9yLCBPcmdQYWdlQ29uZmlnLCBQYWdlVmFyaWFudENvbmZpZywgUGFnZVZhcmlhbnRUZXN0IH0gZnJvbSBcInNyYy9jb250ZXh0cy90eXBlc1wiO1xuaW1wb3J0IHsgTWVzc2FnZSwgVmFyaWFudEluZm8gfSBmcm9tIFwic3JjL2FwcGxpY2F0aW9uL21vZGVsc1wiO1xuaW1wb3J0IHsgRmVhdHVyZUdhdGVzIH0gZnJvbSBcInNyYy9hcHBsaWNhdGlvbi9tb2RlbHMvZmVhdHVyZUdhdGVzXCI7XG5pbXBvcnQgeyBQYWdlVmlzaXRDYXRlZ29yeSB9IGZyb20gXCJAc3BpZmZ5LWFpL2NvbW1lcmNlLWFwaS1jbGllbnRcIjtcbmltcG9ydCB7IFN1cHBvcnRlZEV2ZW50IH0gZnJvbSBcInNyYy9hdG9tcy9hcHAvdmFyaWFudFwiO1xuLyoqXG4gKiBUaGlzIGNsYXNzIGlzIHVzZWQgdG8gcmVzb2x2ZSB0aGUgUGFnZVZhcmlhbnRzIGZvciB0aGUgU3BpZmZ5IEFwcC5cbiAqIEl0IGluY2x1ZGVzIGEgbnVtYmVyIG9mIHN0YXRpYyB1dGlsaXR5IGZ1bmN0aW9ucyBmb3IgcGVyZm9ybWluZyBwYWdlVGVzdHMgYW5kXG4gKiBleHRyYWN0aW5nIGRhdGEgbmVjZXNzYXJ5IHRvIGJ1aWxkIHRoZSBQYWdlVmFyaWFudHMuXG4gKlxuICogVW5kZXIgbW9zdCBjaXJjdW1zdGFuY2VzIG9ubHkgYGdldFZhcmlhbnRJbmZvV2l0aFBhZ2VDb25maWdgIHdpbGwgYmUgY2FsbGVkIGV4dGVybmFsbHlcbiAqIFRoZSBvdGhlciBmdW5jdGlvbnMgc2hvdWxkIGJlIHVzZWQgaW50ZXJuYWxseSBieSB0aGF0IGZ1bmN0aW9uLlxuICovXG5kZWNsYXJlIGNsYXNzIFBhZ2VWYXJpYW50U2VydmljZSB7XG4gICAgc3RhdGljIHJlYWRvbmx5IHBhZ2VUZXN0OiAodGVzdDogUGFnZVZhcmlhbnRUZXN0LCBwYWdlVmFyaWFudENvbmZpZzogUGFnZVZhcmlhbnRDb25maWcsIGF0b21WYWx1ZXM/OiB7XG4gICAgICAgIHJlc3BvbnNlU3RyZWFtaW5nOiBib29sZWFuO1xuICAgICAgICBtZXNzYWdlczogTWVzc2FnZVtdW107XG4gICAgICAgIGxhc3RBc3Npc3RhbnRNZXNzYWdlPzogTWVzc2FnZVtdIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgICB9KSA9PiBQcm9taXNlPGJvb2xlYW4+O1xuICAgIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IGdldENhY2hlZFVybFJlc29sdmVyO1xuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiB0aGUgY3VycmVudCBwYWdlIG1hdGNoZXMgdGhlIGV4cGVjdGVkIGNhdGFsb2cgY2F0ZWdvcnkuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY2F0ZWdvcnkgLSBUaGUgZXhwZWN0ZWQgY2F0YWxvZyBjYXRlZ29yeSBhcyBkZWZpbmVkIGJ5IGRhdGEgaW4gRWxhc3RpYyBTZWFyY2guXG4gICAgICogQHBhcmFtIHBhZ2VWYXJpYW50Q29uZmlnIC0gVGhlIHZhcmlhbnQgY29uZmlnIGZvciB0aGUgY3VycmVudCBwYWdlLlxuICAgICAqXG4gICAgICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgY3VycmVudCBwYWdlIG1hdGNoZXMgdGhlIGV4cGVjdGVkIGNhdGFsb2cgY2F0ZWdvcnkuXG4gICAgICovXG4gICAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgY2hlY2tDYXRhbG9nQ2F0ZWdvcnk7XG4gICAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgY2hlY2tJblRvcENhdGVnb3J5O1xuICAgIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IGNoZWNrSGFzUmV2aWV3cztcbiAgICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBjaGVja0luQ29sbGVjdGlvbjtcbiAgICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBjaGVja0hhc01lcmNoYW50VGFnO1xuICAgIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IHVzZXJIYXNJbnRlcmFjdGVkO1xuICAgIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IHVzZXJIYXNOb3RJbnRlcmFjdGVkO1xuICAgIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IGlzTG9hZGluZztcbiAgICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBpc1Byb2R1Y3RDb21wYXJpc29uO1xuICAgIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IGNoZWNrUGxwSWRzO1xuICAgIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IGNoZWNrUXVlcnlQYXJhbTtcbiAgICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBjaGVja1Byb2R1Y3RJZDtcbiAgICBzdGF0aWMgY2hlY2tGZWF0dXJlR2F0ZShmZWF0dXJlR2F0ZTogRmVhdHVyZUdhdGVzKTogYm9vbGVhbjtcbiAgICBzdGF0aWMgZ2V0Q2F0ZWdvcnkoZXh0cmFjdG9yOiBDYXRlZ29yeUV4dHJhY3Rvcik6IFBhZ2VWaXNpdENhdGVnb3J5IHwgbnVsbDtcbiAgICBzdGF0aWMgZ2V0SWQoZXh0cmFjdG9yPzogSWRFeHRyYWN0b3IpOiBQcm9taXNlPHN0cmluZyB8IG51bGw+O1xuICAgIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IGdldElkRnJvbVVybFJlc29sdmVyO1xuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIHZhcmlhbnQgaW5mbyBmb3IgdGhlIGN1cnJlbnQgcGFnZSBiYXNlZCBvbiB0aGUgbWVyY2hhbnQncyBwYWdlIGNvbmZpZy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBvcmdQYWdlQ29uZmlnIC0gVGhlIG1lcmNoYW50J3MgcGFnZSBjb25maWcuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBUaGUgdmFyaWFudCBpbmZvIGZvciB0aGUgY3VycmVudCBwYWdlLCBvciB1bmRlZmluZWQgaWYgdGhlIHBhZ2UgdGVzdHMgZG8gbm90XG4gICAgICogcmV0dXJuIGFueSBtYXRjaGVzLlxuICAgICAqL1xuICAgIHN0YXRpYyByZWFkb25seSBnZXRWYXJpYW50SW5mb1dpdGhQYWdlQ29uZmlnOiAob3JnUGFnZUNvbmZpZzogT3JnUGFnZUNvbmZpZykgPT4gUHJvbWlzZTxbVmFyaWFudEluZm8sIFBhZ2VWYXJpYW50Q29uZmlnXSB8IHVuZGVmaW5lZD47XG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIHRoZSBjdXJyZW50IHBhZ2UgaXMgc3VwcG9ydGVkLiBBIHBhZ2UgaXMgc3VwcG9ydGVkIGlmIGl0IGhhcyBiZWVuIGluZGV4ZWQgaW5cbiAgICAgKiBFbGFzdGljIFNlYXJjaCBhbmQgaXRzIGNhdGVnb3J5IGhhcyBiZWVuIHdoaXRlbGlzdGVkIGJ5IHRoZSBiYWNrZW5kLlxuICAgICAqXG4gICAgICogQHBhcmFtIHBhZ2VWYXJpYW50Q29uZmlnIC0gVGhlIHZhcmlhbnQgY29uZmlnIGZvciB0aGUgY3VycmVudCBwYWdlIHdoaWNoIGlzIHVzZWQgdG8gZ2V0XG4gICAgICogdGhlIHZhcmlhbnQgaW5mby5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIFRoZSBzdXBwb3J0ZWQgZXZlbnQgcmVzcG9uc2UgZnJvbSB0aGUgYmFja2VuZCwgb3IgdW5kZWZpbmVkIGlmIHRoZSBwYWdlIGlzIG5vdCBzdXBwb3J0ZWQuXG4gICAgICovXG4gICAgc3RhdGljIHJlYWRvbmx5IGNoZWNrU3VwcG9ydGVkRXZlbnQ6IChwYWdlVmFyaWFudENvbmZpZzogUGFnZVZhcmlhbnRDb25maWcpID0+IFByb21pc2U8U3VwcG9ydGVkRXZlbnQgfCB1bmRlZmluZWQ+O1xuICAgIC8qKlxuICAgICAqIFBhcnNlcyB0aGUgcGFnZSB2YXJpYW50IGNvbmZpZyBpbnRvIGEgdmFyaWFudCBpbmZvIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBwYWdlVmFyaWFudENvbmZpZyAtIFRoZSB2YXJpYW50IGNvbmZpZyBmb3IgdGhlIGN1cnJlbnQgcGFnZS5cbiAgICAgKiBAcGFyYW0gdXJsIC0gVGhlIGN1cnJlbnQgVVJMIG9mIHRoZSBwYWdlLiBUaGlzIGlzIHVzZWQgdG8gZXh0cmFjdCB0aGUgcGRwL3BscCBpZC5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIFRoZSB2YXJpYW50IGluZm8gZm9yIHRoZSBjdXJyZW50IHBhZ2UsIG9yIHVuZGVmaW5lZCBpZiB0aGUgcGFnZSB2YXJpYW50IGNvbmZpZyBpcyBpbnZhbGlkIG9yIG5vdCBzdXBwb3J0ZWQuXG4gICAgICovXG4gICAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgcGFyc2VQYWdlVmFyaWFudENvbmZpZztcbn1cbmV4cG9ydCB7IFBhZ2VWYXJpYW50U2VydmljZSB9O1xuIiwiZGVjbGFyZSBjbGFzcyBTZXNzaW9uU3RvcmFnZVNlcnZpY2Uge1xuICAgIHN0YXRpYyBzZXRJdGVtKGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogdm9pZDtcbiAgICBzdGF0aWMgZ2V0SXRlbShrZXk6IHN0cmluZyk6IHN0cmluZyB8IG51bGw7XG4gICAgc3RhdGljIGdldFNlc3Npb25TdG9yYWdlKCk6IFN0b3JhZ2U7XG59XG5leHBvcnQgeyBTZXNzaW9uU3RvcmFnZVNlcnZpY2UgfTtcbiIsImltcG9ydCB7IElkRXh0cmFjdG9yIH0gZnJvbSAnc3JjL2NvbnRleHRzL3R5cGVzJztcbmRlY2xhcmUgY2xhc3MgU2hvcGlmeVVybFNlcnZpY2Uge1xuICAgIHN0YXRpYyBnZXRUcmltbWVkUGF0aE5hbWUoKTogc3RyaW5nIHwgbnVsbDtcbiAgICAvKipcbiAgICAgKiBQYXJzZXMgdGhlIFVSTCB0byBkZXRlcm1pbmUgdGhlIFBMUCBvciBQRFAgSUQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZXh0cmFjdG9yIHRoZSB0eXBlIG9mIGV4dHJhY3RvciB0byBwYXJzZSBzZWdtZW50cyBvZiB0aGUgcGFnZSBVUkxcbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHRoZSBQTFAgb3IgUERQIElEIGlmIGZvdW5kLCBvdGhlcndpc2UgbnVsbFxuICAgICAqL1xuICAgIHN0YXRpYyBnZXRQbHBPclBkcElkKGV4dHJhY3RvcjogSWRFeHRyYWN0b3IpOiBzdHJpbmcgfCBudWxsO1xuICAgIHN0YXRpYyBpc09uUGRwUGFnZSgpOiBib29sZWFuO1xuICAgIHN0YXRpYyBpc09uUGxwUGFnZSgpOiBib29sZWFuO1xufVxuZXhwb3J0IHsgU2hvcGlmeVVybFNlcnZpY2UgfTtcbiIsImRlY2xhcmUgY2xhc3MgVXNlcklkZW50aXR5U2VydmljZSB7XG4gICAgc3RhdGljIFVTRVJfSURfT1ZFUlJJREVfS0VZOiBzdHJpbmc7XG4gICAgc3RhdGljIFVTRVJfSURfREVGQVVMVF9LRVk6IHN0cmluZztcbiAgICBzdGF0aWMgaWRlbnRpZnlVc2VyKCk6IFByb21pc2U8dm9pZD47XG4gICAgc3RhdGljIGdldFVzZXJJZE9yRGVmYXVsdCgpOiBzdHJpbmc7XG4gICAgc3RhdGljIGdldFVzZXJJZE92ZXJyaWRlRnJvbUxvY2FsU3RvcmFnZSgpOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgc3RhdGljIGdldFVzZXJJZERlZmF1bHRGcm9tTG9jYWxTdG9yYWdlKCk6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICBzdGF0aWMgc2V0VXNlcklkRGVmYXVsdEluTG9jYWxTdG9yYWdlKHVzZXJJZDogc3RyaW5nKTogc3RyaW5nO1xuICAgIHN0YXRpYyBzZXRVc2VySWRPdmVycmlkZUluTG9jYWxTdG9yYWdlKHVzZXJJZDogc3RyaW5nKTogc3RyaW5nO1xuICAgIHN0YXRpYyBjbGVhclVzZXJJZE92ZXJyaWRlSW5Mb2NhbFN0b3JhZ2UoKTogdm9pZDtcbn1cbmV4cG9ydCB7IFVzZXJJZGVudGl0eVNlcnZpY2UgfTtcbiIsImV4cG9ydCBkZWNsYXJlIGNvbnN0IFdpbmRvd0NoYXRUb2dnbGVCaW5kZXI6ICgpID0+IG51bGw7XG4iLCJpbXBvcnQgeyBPcmdBbmFseXRpY3NHb29nbGVBbmFseXRpY3NDb25maWcgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzL2FwaS9vcmdBbmFseXRpY3NDb25maWcnO1xuZGVjbGFyZSBnbG9iYWwge1xuICAgIGludGVyZmFjZSBXaW5kb3cge1xuICAgICAgICBkYXRhTGF5ZXI6IGFueTtcbiAgICB9XG59XG5kZWNsYXJlIGNsYXNzIFdpbmRvd0RhdGFMYXllclNlcnZpY2Uge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZ2FDb25maWc7XG4gICAgcHJpdmF0ZSByZWFkb25seSBkYXRhTGF5ZXI7XG4gICAgcHJpdmF0ZSByZWFkb25seSBvcmlnaW5hbERhdGFMYXllclB1c2g7XG4gICAgcHJpdmF0ZSBzdGF0aWMgaW5zdGFuY2U7XG4gICAgcHJpdmF0ZSByZWFkb25seSBtZXJjaGFudEdvb2dsZU1lYXN1cmVtZW50SWQ7XG4gICAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpO1xuICAgIC8qKlxuICAgICAqIFB1c2hlcyBkYXRhIHRvIHRoZSBkYXRhTGF5ZXJcbiAgICAgKiBAcGFyYW0gZGF0YVxuICAgICAqICBkYXRhIGhhcyB0aGUgc2hhcGU6IHsgZXZlbnQ6ICdldmVudF9uYW1lJywgLi4uIH1cbiAgICAgKiAgRXhhbXBsZTpcbiAgICAgKiAge1xuICAgICAqICAgICAgICAgXCJldmVudFwiOiBcImFkZF90b19jYXJ0XCIsXG4gICAgICogICAgICAgICBcImN1cnJlbmN5XCI6IFwiVVNEXCIsXG4gICAgICogICAgICAgICBcInZhbHVlXCI6IDMwLjAzLFxuICAgICAqICAgICAgICAgXCJpdGVtc1wiOiBbXG4gICAgICogICAgICAgICAgIHtcbiAgICAgKiAgICAgICAgICAgICBcIml0ZW1faWRcIjogXCJTS1VfMTIzNDVcIixcbiAgICAgKiAgICAgICAgICAgICBcIml0ZW1fbmFtZVwiOiBcIlN0YW4gYW5kIEZyaWVuZHMgVGVlXCIsXG4gICAgICogICAgICAgICAgICAgXCJhZmZpbGlhdGlvblwiOiBcIkdvb2dsZSBNZXJjaGFuZGlzZSBTdG9yZVwiLFxuICAgICAqICAgICAgICAgICAgIFwiY291cG9uXCI6IFwiU1VNTUVSX0ZVTlwiLFxuICAgICAqICAgICAgICAgICAgIFwiZGlzY291bnRcIjogMi4yMixcbiAgICAgKiAgICAgICAgICAgICBcImluZGV4XCI6IDAsXG4gICAgICogICAgICAgICAgICAgXCJpdGVtX2JyYW5kXCI6IFwiR29vZ2xlXCIsXG4gICAgICogICAgICAgICAgICAgXCJpdGVtX2NhdGVnb3J5XCI6IFwiQXBwYXJlbFwiLFxuICAgICAqICAgICAgICAgICAgIFwiaXRlbV9jYXRlZ29yeTJcIjogXCJBZHVsdFwiLFxuICAgICAqICAgICAgICAgICAgIFwiaXRlbV9jYXRlZ29yeTNcIjogXCJTaGlydHNcIixcbiAgICAgKiAgICAgICAgICAgICBcIml0ZW1fY2F0ZWdvcnk0XCI6IFwiQ3Jld1wiLFxuICAgICAqICAgICAgICAgICAgIFwiaXRlbV9jYXRlZ29yeTVcIjogXCJTaG9ydCBzbGVldmVcIixcbiAgICAgKiAgICAgICAgICAgICBcIml0ZW1fbGlzdF9pZFwiOiBcInJlbGF0ZWRfcHJvZHVjdHNcIixcbiAgICAgKiAgICAgICAgICAgICBcIml0ZW1fbGlzdF9uYW1lXCI6IFwiUmVsYXRlZCBQcm9kdWN0c1wiLFxuICAgICAqICAgICAgICAgICAgIFwiaXRlbV92YXJpYW50XCI6IFwiZ3JlZW5cIixcbiAgICAgKiAgICAgICAgICAgICBcImxvY2F0aW9uX2lkXCI6IFwiQ2hJSklRQnBBRzJhaFlBUl82MTI4R2NUVUVvXCIsXG4gICAgICogICAgICAgICAgICAgXCJwcmljZVwiOiAxMC4wMSxcbiAgICAgKiAgICAgICAgICAgICBcInF1YW50aXR5XCI6IDNcbiAgICAgKiAgICAgICAgICAgfVxuICAgICAqICAgICAgICAgXVxuICAgICAqIH1cbiAgICAgKi9cbiAgICBwdXNoKGRhdGE6IGFueSk6IHZvaWQ7XG4gICAgc3RhdGljIGlzRGF0YUxheWVyQXZhaWxhYmxlKCk6IGJvb2xlYW47XG4gICAgc3RhdGljIHRyeUZsYXR0ZW5Bcmd1bWVudHMoYXJnczogYW55KTogYW55O1xuICAgIHdyYXBXaXRoUHJveHlNZXRob2QobWV0aG9kTmFtZTogc3RyaW5nLCBjYWxsYmFjazogRnVuY3Rpb24pOiB2b2lkO1xuICAgIHN0YXRpYyBnZXRTaW5nbGV0b25JbnN0YW5jZU9mKGdhQ29uZmlnOiBPcmdBbmFseXRpY3NHb29nbGVBbmFseXRpY3NDb25maWcpOiBXaW5kb3dEYXRhTGF5ZXJTZXJ2aWNlO1xuICAgIHNlbmRUb0dvb2dsZUFuYWx5dGljc0NpcmN1bGFyRXZlbnRzU2FmZShldmVudE5hbWU6IHN0cmluZywgZXZlbnRQcm9wczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCB1bmRlZmluZWQpOiB2b2lkO1xuICAgIHN0YXRpYyBnZXRHb29nbGVBbmFseXRpY3NDbGllbnRJZDogKCkgPT4gc3RyaW5nIHwgdW5kZWZpbmVkO1xufVxuZXhwb3J0IHsgV2luZG93RGF0YUxheWVyU2VydmljZSB9O1xuIiwiZXhwb3J0IGRlY2xhcmUgY29uc3QgaW5pdFdpbmRvd0Zyb250ZW5kQ29uZmlnT3ZlcnJpZGVzQXBwbHlGdW5jdGlvbjogKCkgPT4gdm9pZDtcbiIsImltcG9ydCB7IEN1c3RvbWVyU2VydmljZUludGVncmF0aW9uIH0gZnJvbSAnLi4vdHlwZXMnO1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgVW5zdXBwb3J0ZWRDdXN0b21lclNlcnZpY2U6IEN1c3RvbWVyU2VydmljZUludGVncmF0aW9uO1xuIiwiaW1wb3J0IHsgT3JnQW5hbHl0aWNzR29vZ2xlQW5hbHl0aWNzQ29uZmlnIH0gZnJvbSAnc3JjL2FwcGxpY2F0aW9uL21vZGVscy9hcGkvb3JnQW5hbHl0aWNzQ29uZmlnJztcbmltcG9ydCB7IERvbU11dGF0aW9uTGlzdGVuZXIgfSBmcm9tICcuLi9kb21NdXRhdGlvbkxpc3RlbmVyJztcbmltcG9ydCB7IERvbU11dGF0aW9uT2JzZXJ2ZXJDb250aW51YXRpb24gfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZG9tTXV0YXRpb25Db250aW51YXRpb24nO1xuZGVjbGFyZSBjbGFzcyBEYXRhTGF5ZXJFdmVudHNMaXN0ZW5lciBpbXBsZW1lbnRzIERvbU11dGF0aW9uTGlzdGVuZXIge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgb25EYXRhTGF5ZXJQdXNoO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZXZlbnRzVG9JbnRlcmNlcHQ7XG4gICAgcHJpdmF0ZSByZWFkb25seSB3aW5kb3dEYXRhTGF5ZXJTZXJ2aWNlO1xuICAgIGNvbnN0cnVjdG9yKG9uRGF0YUxheWVyUHVzaDogKGV2ZW50OiBvYmplY3QpID0+IHZvaWQsIGV2ZW50c1RvSW50ZXJjZXB0OiBzdHJpbmdbXSwgZ2FDb25maWc6IE9yZ0FuYWx5dGljc0dvb2dsZUFuYWx5dGljc0NvbmZpZyk7XG4gICAgcnVuT25jZUltbWVkaWF0ZWx5KCk6IGJvb2xlYW47XG4gICAgdHJpZXNNYXgoKTogbnVtYmVyO1xuICAgIG9uRG9tQ2hhbmdlKCk6IERvbU11dGF0aW9uT2JzZXJ2ZXJDb250aW51YXRpb247XG4gICAgZ2V0TmFtZSgpOiBzdHJpbmc7XG59XG5leHBvcnQgeyBEYXRhTGF5ZXJFdmVudHNMaXN0ZW5lciB9O1xuIiwiaW1wb3J0IHsgRG9tTXV0YXRpb25MaXN0ZW5lciB9IGZyb20gJy4uL2RvbU11dGF0aW9uTGlzdGVuZXInO1xuaW1wb3J0IHsgRG9tTXV0YXRpb25PYnNlcnZlckNvbnRpbnVhdGlvbiB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9kb21NdXRhdGlvbkNvbnRpbnVhdGlvbic7XG5kZWNsYXJlIGNsYXNzIEVtYmVkZGVkQ2hhdHNQbGFjZW1lbnRzTGlzdGVuZXIgaW1wbGVtZW50cyBEb21NdXRhdGlvbkxpc3RlbmVyIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZpbmRQbGFjZW1lbnROb2RlcztcbiAgICBjb25zdHJ1Y3RvcihmaW5kUGxhY2VtZW50Tm9kZXM6ICgpID0+IERvbU11dGF0aW9uT2JzZXJ2ZXJDb250aW51YXRpb24pO1xuICAgIHJ1bk9uY2VJbW1lZGlhdGVseSgpOiBib29sZWFuO1xuICAgIG9uRG9tQ2hhbmdlKCk6IERvbU11dGF0aW9uT2JzZXJ2ZXJDb250aW51YXRpb247XG4gICAgZ2V0TmFtZSgpOiBzdHJpbmc7XG4gICAgdHJpZXNNYXgoKTogbnVtYmVyO1xufVxuZXhwb3J0IHsgRW1iZWRkZWRDaGF0c1BsYWNlbWVudHNMaXN0ZW5lciwgfTtcbiIsImltcG9ydCB7IERvbU11dGF0aW9uT2JzZXJ2ZXJDb250aW51YXRpb24gfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZG9tTXV0YXRpb25Db250aW51YXRpb24nO1xuaW1wb3J0IHsgRG9tTXV0YXRpb25MaXN0ZW5lciB9IGZyb20gJy4uL2RvbU11dGF0aW9uTGlzdGVuZXInO1xuZGVjbGFyZSBnbG9iYWwge1xuICAgIGludGVyZmFjZSBXaW5kb3cge1xuICAgICAgICBHbGFkbHk6IHtcbiAgICAgICAgICAgIHNob3c6ICgpID0+IHZvaWQ7XG4gICAgICAgICAgICBnZXRVc2VyOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWRlbnRpdHk6IHN0cmluZztcbiAgICAgICAgICAgIH0gfCB1bmRlZmluZWQ7XG4gICAgICAgICAgICBnZXRBdmFpbGFiaWxpdHk6ICgpID0+IHN0cmluZztcbiAgICAgICAgICAgIG9uOiAoZXZlbnROYW1lOiBzdHJpbmcsIGNhbGxiYWNrOiAoKSA9PiB2b2lkKSA9PiB2b2lkO1xuICAgICAgICB9O1xuICAgIH1cbn1cbmRlY2xhcmUgY2xhc3MgR2xhZGx5TGlzdGVuZXIgaW1wbGVtZW50cyBEb21NdXRhdGlvbkxpc3RlbmVyIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IG9uR2xhZGx5QXZhaWxhYmxlO1xuICAgIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IEdMQURMWV9SRVRSSUVTX01BWDtcbiAgICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBHTEFETFlfQ09OVkVSU0FUSU9OX1NUQVJURURfRVZFTlRfTkFNRTtcbiAgICBjb25zdHJ1Y3RvcihvbkdsYWRseUF2YWlsYWJsZTogKCkgPT4gdm9pZCk7XG4gICAgcnVuT25jZUltbWVkaWF0ZWx5KCk6IGJvb2xlYW47XG4gICAgdHJpZXNNYXgoKTogbnVtYmVyO1xuICAgIG9uRG9tQ2hhbmdlKCk6IERvbU11dGF0aW9uT2JzZXJ2ZXJDb250aW51YXRpb247XG4gICAgZ2V0TmFtZSgpOiBzdHJpbmc7XG59XG5leHBvcnQgeyBHbGFkbHlMaXN0ZW5lciB9O1xuIiwiaW1wb3J0IHsgRG9tTXV0YXRpb25PYnNlcnZlckNvbnRpbnVhdGlvbiB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvZG9tTXV0YXRpb25Db250aW51YXRpb24nO1xuaW1wb3J0IHsgRG9tTXV0YXRpb25MaXN0ZW5lciB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9zZXJ2aWNlL2RvbU11dGF0aW9ucy9kb21NdXRhdGlvbkxpc3RlbmVyJztcbmltcG9ydCB7IEt1c3RvbWVySW50ZWdyYXRpb25TZXJ2aWNlIH0gZnJvbSAnc3JjL2FwcGxpY2F0aW9uL3NlcnZpY2Uva3VzdG9tZXJJbnRlZ3JhdGlvblNlcnZpY2UnO1xuZGVjbGFyZSBjbGFzcyBLdXN0b21lclZpc2liaWxpdHlMaXN0ZW5lciBpbXBsZW1lbnRzIERvbU11dGF0aW9uTGlzdGVuZXIge1xuICAgIGt1c3RvbWVySW50ZWdyYXRpb25TZXJ2aWNlOiBLdXN0b21lckludGVncmF0aW9uU2VydmljZTtcbiAgICBjb25zdHJ1Y3RvcigpO1xuICAgIHJ1bk9uY2VJbW1lZGlhdGVseSgpOiBib29sZWFuO1xuICAgIHRyaWVzTWF4KCk6IG51bWJlcjtcbiAgICBkaXNjb25uZWN0KCk6IHZvaWQ7XG4gICAgb25Eb21DaGFuZ2UoKTogRG9tTXV0YXRpb25PYnNlcnZlckNvbnRpbnVhdGlvbjtcbiAgICBnZXROYW1lKCk6IHN0cmluZztcbn1cbmV4cG9ydCB7IEt1c3RvbWVyVmlzaWJpbGl0eUxpc3RlbmVyIH07XG4iLCJpbXBvcnQgeyBPcmdBbmFseXRpY3NDb25maWcgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzL2FwaS9vcmdBbmFseXRpY3NDb25maWcnO1xuaW1wb3J0IHsgRGF0YUxheWVyRXZlbnRzTGlzdGVuZXIgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vc2VydmljZS9kb21NdXRhdGlvbnMvZGF0YUxheWVyL2RhdGFMYXllckV2ZW50c0xpc3RlbmVyJztcbmRlY2xhcmUgY2xhc3MgT3Jnc0NvbW1vbkRhdGFMYXllckxpc3RlbmVyIHtcbiAgICBwcml2YXRlIHN0YXRpYyBkYXRhTGF5ZXJDYWNoZTtcbiAgICBzdGF0aWMgcmVzZXREYXRhTGF5ZXJDYWNoZSgpOiB2b2lkO1xuICAgIHN0YXRpYyBnZXRTaW5nbGV0b25EYXRhTGF5ZXJMaXN0ZW5lckNhbGxiYWNrQ29tYm8ob3JnU2hvcnROYW1lOiBzdHJpbmcsIG9yZ0FuYWx5dGljc0NvbmZpZzogT3JnQW5hbHl0aWNzQ29uZmlnKToge1xuICAgICAgICBkYXRhTGF5ZXJMaXN0ZW5lcjogRGF0YUxheWVyRXZlbnRzTGlzdGVuZXI7XG4gICAgfSB8IHVuZGVmaW5lZDtcbn1cbmV4cG9ydCB7IE9yZ3NDb21tb25EYXRhTGF5ZXJMaXN0ZW5lciB9O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQUFBLElBQUksaUJBQWlCO0NBQUM7T0FBVztPQUFlO09BQVM7T0FBUztPQUFrQjtPQUFTO09BQWtCO0NBQVE7QUFDdkgsSUFBSSxZQUFZO0NBQUM7T0FBVztPQUFTO09BQVM7T0FBa0I7T0FBUztDQUFXOzs7O0FDRHBGLElBQUksYUFBYSxDQUFDLElBQUk7Ozs7QUNDdEIsSUFBSSxzQkFBc0IsQ0FBQyxXQUFHLGdDQUFBOzs7O0FDQzlCLElBQUksMkJBQTJCO0NBQUM7T0FBTztPQUFBO09BQUE7T0FBQTtDQUFBOzs7O0FDQ3ZDLElBQUUsc0JBQUE7Q0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7Q0FBQTs7OztBQ0hGLElBQUksNkJBQTZCO0NBQUM7T0FBTztPQUFBO0NBQUE7Ozs7QUNBekMsSUFBVyxtQkFBbUIsQ0FBQyxJQUFJO0FBQ25DLElBQUksc0JBQXNCO0NBQUM7T0FBVztPQUFFO09BQUE7Q0FBQTs7OztBQ0l4QyxJQUFFLHFCQUFBO0NBQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO0NBQUE7Ozs7QUNMRixJQUFJLHdCQUF3QixDQUFDLFdBQU8sUUFBQTs7OztBQ0NwQyxJQUFJLG9CQUFvQixDQUFDLFdBQU8sWUFBQTs7OztBQ0RoQyxJQUFJLHNCQUFzQixDQUFDLFdBQU8sUUFBQTs7OztBQ0FsQyxJQUFXLHlCQUF5QixDQUFDLElBQUk7Ozs7QUNDekMsSUFBSSxPQUFLLENBQUMsS0FBSyxXQUFBLEtBQUEsQ0FBQTtBQUNmLElBQUkseUJBQWlCO0NBQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtDQUFBOzs7O0FDRnJCLElBQVcsaURBQWlELENBQUMsSUFBSTs7OztBQ0NqRSxJQUFXLDZCQUE2QixDQUFDLFVBQVUsMkJBQXdCOzs7O0FDRTNFLElBQUksMEJBQTBCO0NBQUM7T0FBVztPQUEyQjtPQUFBO0NBQUE7Ozs7QUNEckUsSUFBSSxrQ0FBa0M7Q0FBQztPQUFXO09BQTJCO09BQUE7Q0FBQTs7OztBQ0E3RSxJQUFJLEtBQUssQ0FBQyxLQUFLLFdBQUEsR0FBQSxDQUFBO0FBQ2YsSUFBSSxpQkFBaUI7Q0FBQTtPQUFBO09BQUE7Q0FBQTs7OztBQ0FyQixJQUFJLDZCQUE2QjtDQUFDO09BQVc7T0FBMkI7T0FBQTtDQUFBOzs7O0FDRHhFLElBQUksOEJBQThCO0NBQUM7T0FBTztPQUFBO0NBQUEifQ==