@envive-ai/react-hooks 0.1.7 → 0.1.9

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 (374) hide show
  1. package/dist/NewOrgConfig-B1zC4zP0.js +10 -0
  2. package/dist/{NewOrgConfig-C5YL4Y62.cjs → NewOrgConfig-DAGaGj2d.cjs} +3 -8
  3. package/dist/{SystemSettingsContext-Cb9YHln8.cjs → SystemSettingsContext-BHi2YaQp.cjs} +2 -2
  4. package/dist/{SystemSettingsContext-D3mmGGcv.js → SystemSettingsContext-BLRfTbCC.js} +2 -2
  5. package/dist/{TrackComponentVisibleEvent-DXTEBjGM.js → TrackComponentVisibleEvent-CftWp8QR.js} +3 -3
  6. package/dist/{TrackComponentVisibleEvent-C7c_rHFW.cjs → TrackComponentVisibleEvent-Dag8vFhb.cjs} +3 -3
  7. package/dist/{amplitudeContext-CB_F-nJY.d.cts → amplitudeContext-B73xamNe.d.cts} +1 -1
  8. package/dist/{amplitudeContext-DFYBDc0h.d.ts → amplitudeContext-BhhYPJSL.d.ts} +1 -1
  9. package/dist/{amplitudeContext-Cak6ijMq.js → amplitudeContext-CwPtBPhg.js} +8 -8
  10. package/dist/{amplitudeContext-sTEsPaVG.cjs → amplitudeContext-DTC6maR0.cjs} +8 -8
  11. package/dist/api-Bc3_julZ.cjs +239 -0
  12. package/dist/api-D9gmGNAV.js +166 -0
  13. package/dist/{app-D_upYeqF.js → app-CoQ1nC-j.js} +5 -5
  14. package/dist/{app-KXTMPa4s.cjs → app-DN72spgQ.cjs} +6 -6
  15. package/dist/application/models/graphql/index.d.ts +1 -1
  16. package/dist/application/models/guards/api/index.cjs +3 -2
  17. package/dist/application/models/guards/api/index.d.ts +2 -2
  18. package/dist/application/models/guards/api/index.js +3 -2
  19. package/dist/application/models/guards/utils.cjs +3 -0
  20. package/dist/application/models/guards/utils.d.cts +2 -0
  21. package/dist/application/models/guards/utils.d.ts +2 -0
  22. package/dist/application/models/guards/utils.js +3 -0
  23. package/dist/application/models/index.cjs +7 -6
  24. package/dist/application/models/index.d.cts +8 -7
  25. package/dist/application/models/index.d.ts +11 -10
  26. package/dist/application/models/index.js +6 -5
  27. package/dist/application/models/utilityTypes/index.cjs +1 -1
  28. package/dist/application/models/utilityTypes/index.d.ts +1 -1
  29. package/dist/application/models/utilityTypes/index.js +1 -1
  30. package/dist/application/models/variantInfo/index.cjs +1 -1
  31. package/dist/application/models/variantInfo/index.d.cts +1 -1
  32. package/dist/application/models/variantInfo/index.d.ts +1 -1
  33. package/dist/application/models/variantInfo/index.js +1 -1
  34. package/dist/application/utils/index.cjs +33 -32
  35. package/dist/application/utils/index.d.cts +13 -12
  36. package/dist/application/utils/index.d.ts +16 -15
  37. package/dist/application/utils/index.js +15 -14
  38. package/dist/{atomStore-DnPEioF4.js → atomStore-BuopbV9k.js} +1 -1
  39. package/dist/{atomStore-DEZyFCNz.cjs → atomStore-CZKe3itM.cjs} +1 -1
  40. package/dist/atoms/app/index.cjs +10 -9
  41. package/dist/atoms/app/index.d.cts +16 -15
  42. package/dist/atoms/app/index.d.ts +19 -18
  43. package/dist/atoms/app/index.js +10 -9
  44. package/dist/atoms/atomStore/index.cjs +2 -2
  45. package/dist/atoms/atomStore/index.js +2 -2
  46. package/dist/atoms/chat/index.cjs +16 -15
  47. package/dist/atoms/chat/index.d.cts +36 -35
  48. package/dist/atoms/chat/index.d.ts +39 -38
  49. package/dist/atoms/chat/index.js +16 -15
  50. package/dist/atoms/globalSearch/index.cjs +1 -1
  51. package/dist/atoms/globalSearch/index.d.cts +6 -6
  52. package/dist/atoms/globalSearch/index.d.ts +6 -6
  53. package/dist/atoms/globalSearch/index.js +1 -1
  54. package/dist/atoms/org/index.cjs +4 -4
  55. package/dist/atoms/org/index.d.cts +27 -25
  56. package/dist/atoms/org/index.d.ts +30 -28
  57. package/dist/atoms/org/index.js +4 -4
  58. package/dist/atoms/search/index.cjs +23 -21
  59. package/dist/atoms/search/index.d.cts +10 -9
  60. package/dist/atoms/search/index.d.ts +13 -12
  61. package/dist/atoms/search/index.js +23 -21
  62. package/dist/atoms/search/types.cjs +1 -1
  63. package/dist/atoms/search/types.d.cts +1 -1
  64. package/dist/atoms/search/types.d.ts +1 -1
  65. package/dist/atoms/search/types.js +1 -1
  66. package/dist/atoms/search/utils.cjs +3 -0
  67. package/dist/atoms/search/utils.d.cts +5 -0
  68. package/dist/atoms/search/utils.d.ts +5 -0
  69. package/dist/atoms/search/utils.js +3 -0
  70. package/dist/{cdnContext-BMjVfBft.cjs → cdnContext-ShKWLgKA.cjs} +2 -2
  71. package/dist/{cdnContext-DgsJ00Tb.js → cdnContext-pfrZ6lfu.js} +2 -2
  72. package/dist/{chat-D1Eat8Ih.cjs → chat-BOuhPeoD.cjs} +11 -11
  73. package/dist/{chat-zA-K4tR_.cjs → chat-BkjIKhc5.cjs} +1 -1
  74. package/dist/{chat-DPJGdUkz.js → chat-C3I3GG1L.js} +10 -10
  75. package/dist/{chat-B4lkFIxz.js → chat-CgLypC3w.js} +1 -1
  76. package/dist/{chatElementDisplayLocation-C1tRM5OD.d.ts → chatElementDisplayLocation-BwiXrkN7.d.ts} +1 -1
  77. package/dist/{chatElementDisplayLocation-9SW40Dd3.d.cts → chatElementDisplayLocation-DWmfNX_u.d.cts} +1 -1
  78. package/dist/chatSearch-B9Rk7Dl3.js +295 -0
  79. package/dist/chatSearch-BqVwk1ya.cjs +418 -0
  80. package/dist/{chatState-BrmBYY8l.js → chatState-CX50Roi9.js} +3 -3
  81. package/dist/{chatState-BisPJd5g.cjs → chatState-xC0pswtB.cjs} +3 -3
  82. package/dist/{commerce-api-DagLj3D_.js → commerce-api-BCSZ4QFV.js} +9 -9
  83. package/dist/{commerce-api-CxDIfeME.cjs → commerce-api-DemPaNpu.cjs} +9 -9
  84. package/dist/{components-g0G58Kat.cjs → components-Cby-Cma3.cjs} +1 -1
  85. package/dist/{components-B1edduHz.js → components-D1mg1-Br.js} +1 -1
  86. package/dist/config/locators/components/chat/index.cjs +1 -1
  87. package/dist/config/locators/components/chat/index.d.cts +1 -1
  88. package/dist/config/locators/components/chat/index.d.ts +1 -1
  89. package/dist/config/locators/components/chat/index.js +1 -1
  90. package/dist/config/locators/components/index.cjs +1 -1
  91. package/dist/config/locators/components/index.d.cts +1 -1
  92. package/dist/config/locators/components/index.d.ts +1 -1
  93. package/dist/config/locators/components/index.js +1 -1
  94. package/dist/config/locators/index.cjs +2 -2
  95. package/dist/config/locators/index.d.cts +2 -2
  96. package/dist/config/locators/index.d.ts +2 -2
  97. package/dist/config/locators/index.js +2 -2
  98. package/dist/contexts/amplitudeContext/index.cjs +13 -12
  99. package/dist/contexts/amplitudeContext/index.d.cts +1 -1
  100. package/dist/contexts/amplitudeContext/index.d.ts +1 -1
  101. package/dist/contexts/amplitudeContext/index.js +13 -12
  102. package/dist/contexts/cdnContext/index.cjs +4 -4
  103. package/dist/contexts/cdnContext/index.js +4 -4
  104. package/dist/contexts/chatContext/index.cjs +37 -35
  105. package/dist/contexts/chatContext/index.d.cts +4 -4
  106. package/dist/contexts/chatContext/index.d.ts +2 -2
  107. package/dist/contexts/chatContext/index.js +33 -31
  108. package/dist/contexts/enviveConfigContext/index.cjs +4 -4
  109. package/dist/contexts/enviveConfigContext/index.d.cts +3 -3
  110. package/dist/contexts/enviveConfigContext/index.d.ts +3 -3
  111. package/dist/contexts/enviveConfigContext/index.js +4 -4
  112. package/dist/contexts/enviveCssContext/index.cjs +15 -14
  113. package/dist/contexts/enviveCssContext/index.js +15 -14
  114. package/dist/contexts/featureFlagContext/index.cjs +5 -5
  115. package/dist/contexts/featureFlagContext/index.d.cts +3 -3
  116. package/dist/contexts/featureFlagContext/index.d.ts +3 -3
  117. package/dist/contexts/featureFlagContext/index.js +5 -5
  118. package/dist/contexts/featureFlagServiceContext/index.cjs +2 -2
  119. package/dist/contexts/featureFlagServiceContext/index.d.cts +4 -4
  120. package/dist/contexts/featureFlagServiceContext/index.d.ts +4 -4
  121. package/dist/contexts/featureFlagServiceContext/index.js +2 -2
  122. package/dist/contexts/graphqlContext/index.cjs +9 -8
  123. package/dist/contexts/graphqlContext/index.d.cts +10 -8
  124. package/dist/contexts/graphqlContext/index.d.ts +13 -11
  125. package/dist/contexts/graphqlContext/index.js +9 -8
  126. package/dist/contexts/localStorageContext/index.cjs +2 -2
  127. package/dist/contexts/localStorageContext/index.js +2 -2
  128. package/dist/contexts/newOrgConfigContext/index.cjs +13 -12
  129. package/dist/contexts/newOrgConfigContext/index.d.cts +12 -27
  130. package/dist/contexts/newOrgConfigContext/index.d.ts +15 -30
  131. package/dist/contexts/newOrgConfigContext/index.js +13 -12
  132. package/dist/contexts/searchContext/index.cjs +17 -16
  133. package/dist/contexts/searchContext/index.d.cts +1 -1
  134. package/dist/contexts/searchContext/index.d.ts +2 -2
  135. package/dist/contexts/searchContext/index.js +17 -16
  136. package/dist/contexts/sessionStorageContext/index.cjs +2 -2
  137. package/dist/contexts/sessionStorageContext/index.js +2 -2
  138. package/dist/contexts/shopifyUrlContext/index.cjs +1 -1
  139. package/dist/contexts/shopifyUrlContext/index.d.cts +3 -3
  140. package/dist/contexts/shopifyUrlContext/index.d.ts +3 -3
  141. package/dist/contexts/shopifyUrlContext/index.js +1 -1
  142. package/dist/contexts/systemSettingsContext/index.cjs +4 -4
  143. package/dist/contexts/systemSettingsContext/index.d.cts +11 -10
  144. package/dist/contexts/systemSettingsContext/index.d.ts +16 -15
  145. package/dist/contexts/systemSettingsContext/index.js +4 -4
  146. package/dist/contexts/types.d.cts +3 -3
  147. package/dist/contexts/types.d.ts +3 -3
  148. package/dist/contexts/userIdentityContext/index.cjs +19 -18
  149. package/dist/contexts/userIdentityContext/index.d.cts +1 -1
  150. package/dist/contexts/userIdentityContext/index.d.ts +1 -1
  151. package/dist/contexts/userIdentityContext/index.js +19 -18
  152. package/dist/{domObserver-B6cRGTny.js → domObserver-B19-69gW.js} +1 -1
  153. package/dist/{domObserver-DQZwhPrc.cjs → domObserver-CwieVNgj.cjs} +1 -1
  154. package/dist/{enviveConfig-BJZ4zTJo.js → enviveConfig-BSfyz_pm.js} +3 -3
  155. package/dist/{enviveConfig-DdBrcGSQ.cjs → enviveConfig-D8vcVPWD.cjs} +3 -3
  156. package/dist/{enviveConfigContext-78orE_uH.cjs → enviveConfigContext-C8cCcdKU.cjs} +3 -3
  157. package/dist/{enviveConfigContext-jBCCWQH9.js → enviveConfigContext-CJqpRSKu.js} +3 -3
  158. package/dist/{featureFlagServiceContext-ChL7DJ53.cjs → featureFlagServiceContext-CUBoBV2i.cjs} +2 -2
  159. package/dist/{featureFlagServiceContext-D1PzHsEs.d.ts → featureFlagServiceContext-Cpw8omUr.d.ts} +2 -2
  160. package/dist/{featureFlagServiceContext-DQwlCTde.d.cts → featureFlagServiceContext-Cvn6fcdB.d.cts} +2 -2
  161. package/dist/{featureFlagServiceContext-DzFfmb1Z.js → featureFlagServiceContext-Dg8okVk1.js} +2 -2
  162. package/dist/{frontendConfig-wg41mBok.d.cts → frontendConfig-DnMZfvcA.d.cts} +3 -3
  163. package/dist/{frontendConfig-DrvrQSm8.d.ts → frontendConfig-Dqxbqo8G.d.ts} +3 -3
  164. package/dist/{globalSearch-Bnjlxtr5.cjs → globalSearch-C94-vEVh.cjs} +1 -1
  165. package/dist/{globalSearch-CRWUqnjq.js → globalSearch-Dlbnfasm.js} +1 -1
  166. package/dist/{graphqlConfig-Bn-HLHsh.cjs → graphqlConfig-B4ddz1vH.cjs} +1 -1
  167. package/dist/{graphqlConfig-DtZm_YaH.js → graphqlConfig-BnjOdeX7.js} +1 -1
  168. package/dist/graphqlContext-6-GcR9zd.d.cts +28 -0
  169. package/dist/{graphqlContext-BJg7B--J.js → graphqlContext-8kw4aLRc.js} +4 -4
  170. package/dist/graphqlContext-EhYZM1v_.d.ts +28 -0
  171. package/dist/{graphqlContext-DI-_VRmb.cjs → graphqlContext-Fwc6Upvh.cjs} +4 -4
  172. package/dist/hooks/AmplitudeOperations/index.cjs +15 -14
  173. package/dist/hooks/AmplitudeOperations/index.d.cts +1 -1
  174. package/dist/hooks/AmplitudeOperations/index.d.ts +1 -1
  175. package/dist/hooks/AmplitudeOperations/index.js +15 -14
  176. package/dist/hooks/AppDetails/index.cjs +13 -12
  177. package/dist/hooks/AppDetails/index.d.cts +9 -8
  178. package/dist/hooks/AppDetails/index.d.ts +12 -11
  179. package/dist/hooks/AppDetails/index.js +13 -12
  180. package/dist/hooks/CdnOperations/index.cjs +4 -4
  181. package/dist/hooks/CdnOperations/index.js +4 -4
  182. package/dist/hooks/ChatToggle/index.cjs +17 -16
  183. package/dist/hooks/ChatToggle/index.d.cts +1 -1
  184. package/dist/hooks/ChatToggle/index.d.ts +1 -1
  185. package/dist/hooks/ChatToggle/index.js +17 -16
  186. package/dist/hooks/ChatToggleAnalytics/index.cjs +17 -16
  187. package/dist/hooks/ChatToggleAnalytics/index.d.cts +1 -1
  188. package/dist/hooks/ChatToggleAnalytics/index.d.ts +1 -1
  189. package/dist/hooks/ChatToggleAnalytics/index.js +17 -16
  190. package/dist/hooks/CustomerSupportHandoff/index.cjs +1 -1
  191. package/dist/hooks/CustomerSupportHandoff/index.js +1 -1
  192. package/dist/hooks/Debounce/index.cjs +1 -1
  193. package/dist/hooks/Debounce/index.js +1 -1
  194. package/dist/hooks/ElementObserver/index.cjs +1 -1
  195. package/dist/hooks/ElementObserver/index.d.cts +1 -1
  196. package/dist/hooks/ElementObserver/index.d.ts +1 -1
  197. package/dist/hooks/ElementObserver/index.js +1 -1
  198. package/dist/hooks/GrabAndScroll/index.d.cts +2 -2
  199. package/dist/hooks/GraphQLConfig/index.cjs +10 -9
  200. package/dist/hooks/GraphQLConfig/index.d.cts +15 -2
  201. package/dist/hooks/GraphQLConfig/index.d.ts +15 -2
  202. package/dist/hooks/GraphQLConfig/index.js +10 -9
  203. package/dist/hooks/IdentifyUser/index.cjs +20 -19
  204. package/dist/hooks/IdentifyUser/index.js +20 -19
  205. package/dist/hooks/ImageResolver/index.cjs +9 -8
  206. package/dist/hooks/ImageResolver/index.js +9 -8
  207. package/dist/hooks/Intersection/index.cjs +1 -1
  208. package/dist/hooks/Intersection/index.js +1 -1
  209. package/dist/hooks/LocalStorageOperations/index.cjs +2 -2
  210. package/dist/hooks/LocalStorageOperations/index.js +2 -2
  211. package/dist/hooks/MessageFilter/index.cjs +7 -6
  212. package/dist/hooks/MessageFilter/index.d.cts +9 -8
  213. package/dist/hooks/MessageFilter/index.d.ts +12 -11
  214. package/dist/hooks/MessageFilter/index.js +7 -6
  215. package/dist/hooks/NewOrgConfig/index.cjs +14 -13
  216. package/dist/hooks/NewOrgConfig/index.d.cts +13 -15
  217. package/dist/hooks/NewOrgConfig/index.d.ts +16 -18
  218. package/dist/hooks/NewOrgConfig/index.js +14 -13
  219. package/dist/hooks/Search/index.cjs +35 -33
  220. package/dist/hooks/Search/index.d.cts +13 -18
  221. package/dist/hooks/Search/index.d.ts +16 -21
  222. package/dist/hooks/Search/index.js +34 -32
  223. package/dist/hooks/SearchOperations/index.cjs +18 -17
  224. package/dist/hooks/SearchOperations/index.d.cts +1 -1
  225. package/dist/hooks/SearchOperations/index.d.ts +2 -2
  226. package/dist/hooks/SearchOperations/index.js +18 -17
  227. package/dist/hooks/SessionStorageOperations/index.cjs +2 -2
  228. package/dist/hooks/SessionStorageOperations/index.js +2 -2
  229. package/dist/hooks/ShopifyUrlOperations/index.cjs +1 -1
  230. package/dist/hooks/ShopifyUrlOperations/index.d.cts +3 -3
  231. package/dist/hooks/ShopifyUrlOperations/index.d.ts +3 -3
  232. package/dist/hooks/ShopifyUrlOperations/index.js +1 -1
  233. package/dist/hooks/SystemSettingsContext/index.cjs +5 -5
  234. package/dist/hooks/SystemSettingsContext/index.d.cts +11 -10
  235. package/dist/hooks/SystemSettingsContext/index.d.ts +14 -13
  236. package/dist/hooks/SystemSettingsContext/index.js +5 -5
  237. package/dist/hooks/TrackComponentVisibleEvent/index.cjs +15 -14
  238. package/dist/hooks/TrackComponentVisibleEvent/index.d.cts +2 -2
  239. package/dist/hooks/TrackComponentVisibleEvent/index.d.ts +2 -2
  240. package/dist/hooks/TrackComponentVisibleEvent/index.js +15 -14
  241. package/dist/hooks/UpdateAnalyticsProps/index.cjs +14 -13
  242. package/dist/hooks/UpdateAnalyticsProps/index.js +14 -13
  243. package/dist/hooks/utils.cjs +8 -0
  244. package/dist/hooks/utils.d.cts +13 -0
  245. package/dist/hooks/utils.d.ts +13 -0
  246. package/dist/hooks/utils.js +3 -0
  247. package/dist/{index-DuyZQOE1.d.ts → index-BN-3ctk_.d.ts} +2 -2
  248. package/dist/index-BPxqQmpF.d.ts +1 -0
  249. package/dist/{index-fKJB9EFb.d.ts → index-Bl9pjZeG.d.ts} +34 -34
  250. package/dist/{index-DNUKSg6R.d.ts → index-BoYC9XLW.d.ts} +1 -1
  251. package/dist/{index-REhT-Pls.d.cts → index-C12-NmS7.d.cts} +1 -1
  252. package/dist/{index-D8ThXrqI.d.ts → index-C6KdON7d.d.ts} +1 -1
  253. package/dist/index-CK_J3QMY.d.ts +676 -0
  254. package/dist/{index-DO0s5KNA.d.cts → index-CVa3DeXJ.d.cts} +1 -1
  255. package/dist/index-C_MIfxF0.d.cts +676 -0
  256. package/dist/{index-DBqgBV9N.d.ts → index-DOii3C6b.d.ts} +1 -1
  257. package/dist/{index-CyXULMyI.d.cts → index-Dcgz5i3Q.d.cts} +33 -33
  258. package/dist/{index-BS7-_CW4.d.ts → index-Dr_c2DDq.d.ts} +1 -1
  259. package/dist/{index-D9VegTU-.d.ts → index-DsiilEj-.d.ts} +1 -1
  260. package/dist/index-RcVcRKH7.d.cts +1 -0
  261. package/dist/{index-D46Rd0io.d.cts → index-hdbCEjYy.d.cts} +1 -1
  262. package/dist/interceptors/index.cjs +2 -2
  263. package/dist/interceptors/index.d.cts +10 -9
  264. package/dist/interceptors/index.d.ts +13 -12
  265. package/dist/interceptors/index.js +2 -2
  266. package/dist/interceptors/types.cjs +1 -1
  267. package/dist/interceptors/types.d.cts +9 -8
  268. package/dist/interceptors/types.d.ts +12 -11
  269. package/dist/interceptors/types.js +1 -1
  270. package/dist/{localStorageContext-6OrGDFid.js → localStorageContext-Dwgto93_.js} +2 -2
  271. package/dist/{localStorageContext-Bld0OWmG.cjs → localStorageContext-cnMYDllE.cjs} +2 -2
  272. package/dist/{logger-CSL2jqI9.cjs → logger-Cp7J4YJT.cjs} +1 -1
  273. package/dist/{logger-D5MFf3nW.js → logger-oAgZx2-m.js} +1 -1
  274. package/dist/{models-ZpQcRZQK.cjs → models-B1P-dSCW.cjs} +25 -24
  275. package/dist/{models-Dn8Emdzc.js → models-CgvSM2fW.js} +4 -3
  276. package/dist/{newOrgConfigAtom-DkSi45_Q.cjs → newOrgConfigAtom-D6R-7HCk.cjs} +1 -1
  277. package/dist/{newOrgConfigAtom--tewb_G0.js → newOrgConfigAtom-bn1lnljf.js} +1 -1
  278. package/dist/newOrgConfigContext-BKb9qGfc.d.cts +16 -0
  279. package/dist/newOrgConfigContext-BX6cyQRB.cjs +68 -0
  280. package/dist/newOrgConfigContext-D9PpVqyW.d.ts +16 -0
  281. package/dist/newOrgConfigContext-UshqFMAV.js +53 -0
  282. package/dist/{nodeSelector-XsUa5vNH.d.cts → nodeSelector-B3bPtEjX.d.cts} +1 -1
  283. package/dist/{nodeSelector-DybpVr-i.d.ts → nodeSelector-D5gjDWZ3.d.ts} +1 -1
  284. package/dist/{org-ClUxpHPZ.cjs → org-CIhjzxWr.cjs} +1 -1
  285. package/dist/{org-B2uRkPt3.js → org-CeWXnpwF.js} +1 -1
  286. package/dist/{orgAnalyticsConfig-DOceTdNp.js → orgAnalyticsConfig-BC4_sEmn.js} +1 -1
  287. package/dist/{orgAnalyticsConfig-CuWXijsr.cjs → orgAnalyticsConfig-DsGbyFhO.cjs} +1 -1
  288. package/dist/{search-DsQm_pAi.cjs → search-76xcuxjY.cjs} +5 -5
  289. package/dist/{search-Bn4x-3TG.js → search-B6xaOds7.js} +5 -5
  290. package/dist/{search-BIomqYy6.d.ts → search-BLShhjvR.d.ts} +2 -2
  291. package/dist/{search-filter-types-Byd0lEUa.d.cts → search-filter-types-BBIjvwJV.d.cts} +1 -1
  292. package/dist/{search-filter-types-B5xcaEit.d.ts → search-filter-types-BlmWOnlA.d.ts} +1 -1
  293. package/dist/{search-B_Hg-Es2.d.cts → search-y-ioX5Mz.d.cts} +1 -1
  294. package/dist/{searchContext-fQDGSvUF.js → searchContext-5qTU8CbH.js} +7 -7
  295. package/dist/{searchContext-Cn-pCoDy.cjs → searchContext-DmXo2rpU.cjs} +7 -7
  296. package/dist/{searchServiceAdapter-DrjFCiw8.cjs → searchServiceAdapter-DEv1tTn0.cjs} +1 -1
  297. package/dist/{searchServiceAdapter-BSPZOg1r.js → searchServiceAdapter-WyCU55NV.js} +1 -1
  298. package/dist/{sessionStorageContext-CXE7iHtP.cjs → sessionStorageContext-B-UFXyJR.cjs} +2 -2
  299. package/dist/{sessionStorageContext-C5MUl2zf.js → sessionStorageContext-DnuKi3Gk.js} +2 -2
  300. package/dist/{shopifyUrlContext-7ppKx1jJ.cjs → shopifyUrlContext-Lm-Xcut2.cjs} +1 -1
  301. package/dist/{shopifyUrlContext-BSYWsoX9.js → shopifyUrlContext-jLW63VLY.js} +1 -1
  302. package/dist/{spiffyWidgets-DxGuuuCG.d.cts → spiffyWidgets-BuS00VaQ.d.cts} +1 -1
  303. package/dist/{spiffyWidgets-CdxRcXhW.d.ts → spiffyWidgets-GILaqHv6.d.ts} +1 -1
  304. package/dist/{systemSettingsContext-Cjyo2o3N.js → systemSettingsContext--LcXOVJz.js} +2 -2
  305. package/dist/{systemSettingsContext-BdAe_3Ll.cjs → systemSettingsContext-CafaP6Zh.cjs} +2 -2
  306. package/dist/{test-types-ZuRAYwox.d.ts → test-types-EzMFw_U3.d.ts} +1 -1
  307. package/dist/{test-types-DQB1JqOf.d.cts → test-types-ThQiO_cc.d.cts} +1 -1
  308. package/dist/types/index.d.cts +2 -2
  309. package/dist/types/index.d.ts +2 -2
  310. package/dist/{types-YvACLe2e.d.ts → types-6siNDmGv.d.ts} +2 -2
  311. package/dist/{types-BCz-hOvv.d.ts → types-BN2z0HcL.d.ts} +1 -1
  312. package/dist/{types-Eip78dWv.d.cts → types-CKMMb_gX.d.cts} +1 -1
  313. package/dist/{types-DIk0FLwd.js → types-CS0Hrzja.js} +1 -1
  314. package/dist/{types-DNLkuGWZ.cjs → types-CxObxLKs.cjs} +1 -1
  315. package/dist/{types-DzwBmZHy.d.cts → types-D4aa7_7x.d.cts} +1 -1
  316. package/dist/types.d.cts +3 -3
  317. package/dist/types.d.ts +3 -3
  318. package/dist/{unsupportedProductExceptions-Dak4AD-t.cjs → unsupportedProductExceptions-CKiri_vO.cjs} +1 -1
  319. package/dist/{unsupportedProductExceptions--t7AQFou.js → unsupportedProductExceptions-ClxlJ6cU.js} +1 -1
  320. package/dist/{useAmplitudeOperations-Cco_B3A5.cjs → useAmplitudeOperations-aGOqxc4V.cjs} +2 -2
  321. package/dist/{useAmplitudeOperations-C6Osqkso.js → useAmplitudeOperations-wQnkMaDm.js} +2 -2
  322. package/dist/{useAppDetails-CGqtN6sJ.cjs → useAppDetails-9WXEc3mg.cjs} +4 -4
  323. package/dist/{useAppDetails-DwX2Rhed.js → useAppDetails-mNC2PBqH.js} +4 -4
  324. package/dist/{useDebounce-BJqnCBcl.cjs → useDebounce-BaIp-A1W.cjs} +1 -1
  325. package/dist/{useDebounce-Ce31ph7m.js → useDebounce-CxPj9WmE.js} +1 -1
  326. package/dist/useGraphQLConfig-CTsRsKd2.js +63 -0
  327. package/dist/useGraphQLConfig-D7naV2RD.cjs +76 -0
  328. package/dist/{useIntersection-Czeo04jt.js → useIntersection-B4J9UhaG.js} +1 -1
  329. package/dist/{useIntersection-DnZNLcnu.cjs → useIntersection-DKWc5MY6.cjs} +1 -1
  330. package/dist/{useMessageInterceptor-C9p9No1n.cjs → useMessageInterceptor-CstX10ih.cjs} +1 -1
  331. package/dist/{useMessageInterceptor-tntd2rvB.js → useMessageInterceptor-D5oAekXn.js} +1 -1
  332. package/dist/{userIdentityContext-C1HzZFb2.cjs → userIdentityContext-BA6EN-pz.cjs} +6 -6
  333. package/dist/{userIdentityContext-DBXoLrFu.d.cts → userIdentityContext-D2oFVFzo.d.cts} +1 -1
  334. package/dist/{userIdentityContext-CDfosvOO.js → userIdentityContext-FTwTL0WF.js} +5 -5
  335. package/dist/{userIdentityContext-W1OWF3cG.d.ts → userIdentityContext-wYRpgkaJ.d.ts} +1 -1
  336. package/dist/utils-2SWrJ12w.cjs +29 -0
  337. package/dist/utils-ARmpTh1O.js +27 -0
  338. package/dist/utils-B1xLx9S8.d.ts +15 -0
  339. package/dist/utils-B3x_9JTY.d.cts +15 -0
  340. package/dist/utils-BSYichA7.d.cts +22 -0
  341. package/dist/{utils-C7S9YiFp.js → utils-Bcz5kAgP.js} +40 -2
  342. package/dist/{utils-CF13DfA1.js → utils-BgMcvG6l.js} +4 -4
  343. package/dist/{utils-BA5HXmkL.cjs → utils-CMqFfqZx.cjs} +57 -1
  344. package/dist/utils-Cavu4XiM.cjs +33 -0
  345. package/dist/utils-CqBxIpEV.js +23 -0
  346. package/dist/{utils-BTDw2aMx.cjs → utils-D_aOvxMg.cjs} +4 -4
  347. package/dist/utils-FU_r-pTj.d.ts +22 -0
  348. package/package.json +13 -1
  349. package/src/contexts/newOrgConfigContext/newOrgConfigContext.tsx +6 -13
  350. package/src/hooks/GraphQLConfig/useGraphQLConfig.ts +5 -5
  351. package/src/hooks/NewOrgConfig/useNewOrgConfig.ts +2 -2
  352. package/dist/NewOrgConfig-CRyIfb_l.js +0 -15
  353. package/dist/api-DSFlctlc.cjs +0 -269
  354. package/dist/api-JTNjuOfc.js +0 -190
  355. package/dist/chatSearch-B5jMnCYX.js +0 -315
  356. package/dist/chatSearch-DWMiyWN0.cjs +0 -444
  357. package/dist/index-BCLaqnc2.d.cts +0 -689
  358. package/dist/index-Bs0QtkSu.d.ts +0 -689
  359. package/dist/index-CKeS9dud.d.ts +0 -28
  360. package/dist/index-Cz10TYQA.d.cts +0 -28
  361. package/dist/newOrgConfigContext-B3aeblfE.cjs +0 -68
  362. package/dist/newOrgConfigContext-B5mzHKTG.js +0 -53
  363. package/dist/useGraphQLConfig-ByOZb3oZ.js +0 -63
  364. package/dist/useGraphQLConfig-DItL4BgM.cjs +0 -76
  365. /package/dist/{AmplitudeOperations-CgIVPUlr.cjs → AmplitudeOperations-CNyxbBY6.cjs} +0 -0
  366. /package/dist/{AmplitudeOperations-YpyaR7Mp.js → AmplitudeOperations-Oa2efWtF.js} +0 -0
  367. /package/dist/{atomStore-C2OI76yN.js → atomStore-BS6qtYZF.js} +0 -0
  368. /package/dist/{atomStore-DWmT1six.cjs → atomStore-BjRyLFEx.cjs} +0 -0
  369. /package/dist/{types-DQoXDiso.js → types-DtTnp0o0.js} +0 -0
  370. /package/dist/{types-o3zWarRp.cjs → types-a8gm_IaQ.cjs} +0 -0
  371. /package/dist/{utilityTypes-CWJZb9BZ.js → utilityTypes-DynzxjK3.js} +0 -0
  372. /package/dist/{utilityTypes-YGiMSyV7.cjs → utilityTypes-xb8SjKSV.cjs} +0 -0
  373. /package/dist/{variantInfo-DRFLcGc7.cjs → variantInfo-B7IwRpCg.cjs} +0 -0
  374. /package/dist/{variantInfo-58JLeDJb.js → variantInfo-BtOYUGWa.js} +0 -0
@@ -1,269 +0,0 @@
1
- const require_chunk = require('./chunk-CUT6urMc.cjs');
2
- const require_logger = require('./logger-CSL2jqI9.cjs');
3
- let __spiffy_ai_commerce_api_client = require("@spiffy-ai/commerce-api-client");
4
- __spiffy_ai_commerce_api_client = require_chunk.__toESM(__spiffy_ai_commerce_api_client);
5
-
6
- //#region src/application/models/guards/utils.ts
7
- /**
8
- * Checks if an object has a property of a specific type
9
- *
10
- * @param obj - The object to check
11
- * @param prop - The property name to check
12
- * @param type - The expected type of the property
13
- * @param isOptional - Whether the property is optional (defaults to false)
14
- *
15
- * @returns boolean indicating if the object has the property of the specified type
16
- */
17
- const hasPropertyOfType = (obj, prop, type, isOptional = false) => {
18
- try {
19
- if (obj == null || typeof obj !== "object") return false;
20
- if (!(prop in obj)) return isOptional;
21
- const value = obj[prop];
22
- if (isOptional && value == null) return true;
23
- if (type === "array") return Array.isArray(value);
24
- return typeof value === type;
25
- } catch (err) {
26
- return false;
27
- }
28
- };
29
-
30
- //#endregion
31
- //#region src/application/models/guards/api/isApiPDPEventAttributes.ts
32
- const isApiPDPAttributes = (data) => {
33
- if (data == null || typeof data !== "object") return false;
34
- if (!("product_id" in data) || typeof data.product_id !== "string") return false;
35
- if ("parent_product_id" in data && typeof data.parent_product_id !== "string") return false;
36
- if ("url" in data && data.url != null && typeof data.url !== "string") return false;
37
- return true;
38
- };
39
-
40
- //#endregion
41
- //#region src/application/models/guards/api/isApiQueryTypedEventAttributes.ts
42
- const isApiQueryTypedAttributes = (data) => data != null && typeof data === "object" && "query" in data && typeof data.query === "string";
43
-
44
- //#endregion
45
- //#region src/application/models/guards/api/isApiResponse.ts
46
- const isApiResponse = (data) => {
47
- if (data == null || typeof data !== "object") {
48
- require_logger.logger_default.logError("isApiResponse: data is null or not an object", void 0, { data });
49
- return false;
50
- }
51
- if (!hasPropertyOfType(data, "id", "string")) {
52
- require_logger.logger_default.logError("isApiResponse: id is not a string", void 0, { data });
53
- return false;
54
- }
55
- if (!hasPropertyOfType(data, "category", "string") || !Object.values(__spiffy_ai_commerce_api_client.ResponseCategory).includes(data.category)) {
56
- require_logger.logger_default.logError("isApiResponse: category is not a string or not a valid response category", void 0, { data });
57
- return false;
58
- }
59
- if (!hasPropertyOfType(data, "created_at", "string")) {
60
- require_logger.logger_default.logError("isApiResponse: created_at is not a string", void 0, { data });
61
- return false;
62
- }
63
- if (!hasPropertyOfType(data, "attributes", "object", true)) {
64
- require_logger.logger_default.logError("isApiResponse: attributes is not an object", void 0, { data });
65
- return false;
66
- }
67
- return true;
68
- };
69
-
70
- //#endregion
71
- //#region src/application/models/guards/api/isApiProductResponseAttributes.ts
72
- const isApiProductResponseAttributes = (attributes) => {
73
- if (attributes == null || typeof attributes !== "object") {
74
- require_logger.logger_default.logError("isApiProductResponseAttributes: attributes is null or not an object", void 0, { attributes });
75
- return false;
76
- }
77
- if (!hasPropertyOfType(attributes, "description", "string", true)) {
78
- require_logger.logger_default.logError("isApiProductResponseAttributes: description is not a string", void 0, { attributes });
79
- return false;
80
- }
81
- if (!hasPropertyOfType(attributes, "image_url", "string", true)) {
82
- require_logger.logger_default.logError("isApiProductResponseAttributes: image_url is not a string", void 0, { attributes });
83
- return false;
84
- }
85
- if (!hasPropertyOfType(attributes, "title", "string")) {
86
- require_logger.logger_default.logError("isApiProductResponseAttributes: title is not a string", void 0, { attributes });
87
- return false;
88
- }
89
- if (!hasPropertyOfType(attributes, "url", "string")) {
90
- require_logger.logger_default.logError("isApiProductResponseAttributes: url is not a string", void 0, { attributes });
91
- return false;
92
- }
93
- if (!hasPropertyOfType(attributes, "original_price", "number", true)) {
94
- require_logger.logger_default.logError("isApiProductResponseAttributes: original_price is not a number", void 0, { attributes });
95
- return false;
96
- }
97
- if (!hasPropertyOfType(attributes, "sale_price", "number", true)) {
98
- require_logger.logger_default.logError("isApiProductResponseAttributes: sale_price is not a number", void 0, { attributes });
99
- return false;
100
- }
101
- if (!hasPropertyOfType(attributes, "average_rating", "number", true)) {
102
- require_logger.logger_default.logError("isApiProductResponseAttributes: average_rating is not a number", void 0, { attributes });
103
- return false;
104
- }
105
- if (!hasPropertyOfType(attributes, "number_reviews", "number", true)) {
106
- require_logger.logger_default.logError("isApiProductResponseAttributes: number_reviews is not a number", void 0, { attributes });
107
- return false;
108
- }
109
- if (!hasPropertyOfType(attributes, "metadata", "array", true)) {
110
- require_logger.logger_default.logError("isApiProductResponseAttributes: metadata is not an array", void 0, { attributes });
111
- return false;
112
- }
113
- return true;
114
- };
115
-
116
- //#endregion
117
- //#region src/application/models/guards/api/isApiReviewRichInformation.ts
118
- const isApiReviewRichInformation = (richInfo) => {
119
- if (richInfo == null || typeof richInfo !== "object") return false;
120
- if ("cons" in richInfo && (!Array.isArray(richInfo.cons) || richInfo.cons.some((con) => typeof con !== "string"))) return false;
121
- if ("pros" in richInfo && (!Array.isArray(richInfo.pros) || richInfo.pros.some((pro) => typeof pro !== "string"))) return false;
122
- if ("review_date" in richInfo && typeof richInfo.review_date !== "string") return false;
123
- if ("reviewer_title" in richInfo && typeof richInfo.reviewer_title !== "string") return false;
124
- if ("product_familiarity" in richInfo && typeof richInfo.product_familiarity !== "string") return false;
125
- return true;
126
- };
127
-
128
- //#endregion
129
- //#region src/application/models/guards/api/isApiReviewResponseAttributes.ts
130
- const isApiReviewResponseAttributes = (obj) => {
131
- if (obj == null || typeof obj !== "object") return false;
132
- if ("title" in obj && obj.title != null && typeof obj.title !== "string") return false;
133
- if ("review" in obj && typeof obj.review !== "string") return false;
134
- if ("reviewer" in obj && typeof obj.reviewer !== "string") return false;
135
- if ("stars" in obj && typeof obj.stars !== "number") return false;
136
- if ("rich_information" in obj && !isApiReviewRichInformation(obj.rich_information)) return false;
137
- return true;
138
- };
139
-
140
- //#endregion
141
- //#region src/application/models/guards/api/isApiSearchEventAttributes.ts
142
- const isApiSearchAttributes = (data) => {
143
- if (data == null || typeof data !== "object") return false;
144
- if (!("search_term" in data) || typeof data.search_term !== "string") return false;
145
- if ("selected_filters" in data && !Array.isArray(data.selected_filters)) return false;
146
- if (!!data.search_term) return true;
147
- if (!("search_results" in data) || !Array.isArray(data.search_results) || !data.search_results.every((v) => typeof v === "string")) return false;
148
- return true;
149
- };
150
-
151
- //#endregion
152
- //#region src/application/models/guards/api/isApiSuggestion.ts
153
- const isSuggestion = (data) => {
154
- if (data == null || typeof data !== "object") return false;
155
- if (!("id" in data) || typeof data.id !== "string") return false;
156
- if (!("category" in data) || typeof data.category !== "string" || !Object.values(__spiffy_ai_commerce_api_client.SuggestionCategory).includes(data.category)) return false;
157
- if (!("created_at" in data) || typeof data.created_at !== "string") return false;
158
- if (!("content" in data) || typeof data.content !== "string") return false;
159
- if ("is_answer" in data && data.is_answer != null && typeof data.is_answer !== "boolean") return false;
160
- return true;
161
- };
162
-
163
- //#endregion
164
- //#region src/application/models/guards/api/isApiSuggestionClickedEventAttributes.ts
165
- const isApiSuggestionClickedAttributes = (data) => data != null && typeof data === "object" && "suggestion_id" in data && typeof data.suggestion_id === "string";
166
-
167
- //#endregion
168
- //#region src/application/models/guards/api/isApiTextResponseAttributes.ts
169
- const isApiTextResponseAttributes = (attributes) => typeof attributes === "object" && attributes != null && "content" in attributes && typeof attributes.content === "string";
170
-
171
- //#endregion
172
- //#region src/application/models/guards/api/isApiUserEvent.ts
173
- const isApiUserEvent = (data) => {
174
- if (data == null || typeof data !== "object") return false;
175
- if (!("event_id" in data) || typeof data.event_id !== "string") return false;
176
- if (!("created_at" in data) || typeof data.created_at !== "string") return false;
177
- if (!("category" in data) || typeof data.category !== "string" || !Object.values(__spiffy_ai_commerce_api_client.UserEventCategory).includes(data.category)) return false;
178
- return true;
179
- };
180
-
181
- //#endregion
182
- //#region src/application/models/guards/api/isApiProductSearchAttributes.ts
183
- const isApiProductSearchResponseAttributes = (attributes) => {
184
- if (attributes == null || typeof attributes !== "object") return false;
185
- if ("generated_query" in attributes && typeof attributes.generated_query !== "string") return false;
186
- if ("product_count" in attributes && attributes.product_count != null && typeof attributes.product_count !== "number") return false;
187
- return true;
188
- };
189
-
190
- //#endregion
191
- Object.defineProperty(exports, 'hasPropertyOfType', {
192
- enumerable: true,
193
- get: function () {
194
- return hasPropertyOfType;
195
- }
196
- });
197
- Object.defineProperty(exports, 'isApiPDPAttributes', {
198
- enumerable: true,
199
- get: function () {
200
- return isApiPDPAttributes;
201
- }
202
- });
203
- Object.defineProperty(exports, 'isApiProductResponseAttributes', {
204
- enumerable: true,
205
- get: function () {
206
- return isApiProductResponseAttributes;
207
- }
208
- });
209
- Object.defineProperty(exports, 'isApiProductSearchResponseAttributes', {
210
- enumerable: true,
211
- get: function () {
212
- return isApiProductSearchResponseAttributes;
213
- }
214
- });
215
- Object.defineProperty(exports, 'isApiQueryTypedAttributes', {
216
- enumerable: true,
217
- get: function () {
218
- return isApiQueryTypedAttributes;
219
- }
220
- });
221
- Object.defineProperty(exports, 'isApiResponse', {
222
- enumerable: true,
223
- get: function () {
224
- return isApiResponse;
225
- }
226
- });
227
- Object.defineProperty(exports, 'isApiReviewResponseAttributes', {
228
- enumerable: true,
229
- get: function () {
230
- return isApiReviewResponseAttributes;
231
- }
232
- });
233
- Object.defineProperty(exports, 'isApiReviewRichInformation', {
234
- enumerable: true,
235
- get: function () {
236
- return isApiReviewRichInformation;
237
- }
238
- });
239
- Object.defineProperty(exports, 'isApiSearchAttributes', {
240
- enumerable: true,
241
- get: function () {
242
- return isApiSearchAttributes;
243
- }
244
- });
245
- Object.defineProperty(exports, 'isApiSuggestionClickedAttributes', {
246
- enumerable: true,
247
- get: function () {
248
- return isApiSuggestionClickedAttributes;
249
- }
250
- });
251
- Object.defineProperty(exports, 'isApiTextResponseAttributes', {
252
- enumerable: true,
253
- get: function () {
254
- return isApiTextResponseAttributes;
255
- }
256
- });
257
- Object.defineProperty(exports, 'isApiUserEvent', {
258
- enumerable: true,
259
- get: function () {
260
- return isApiUserEvent;
261
- }
262
- });
263
- Object.defineProperty(exports, 'isSuggestion', {
264
- enumerable: true,
265
- get: function () {
266
- return isSuggestion;
267
- }
268
- });
269
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLURTRmxjdGxjLmNqcyIsIm5hbWVzIjpbIlJlc3BvbnNlQ2F0ZWdvcnkiLCJTdWdnZXN0aW9uQ2F0ZWdvcnkiLCJVc2VyRXZlbnRDYXRlZ29yeSJdLCJzb3VyY2VzIjpbIi4uL3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvZ3VhcmRzL3V0aWxzLnRzIiwiLi4vc3JjL2FwcGxpY2F0aW9uL21vZGVscy9ndWFyZHMvYXBpL2lzQXBpUERQRXZlbnRBdHRyaWJ1dGVzLnRzIiwiLi4vc3JjL2FwcGxpY2F0aW9uL21vZGVscy9ndWFyZHMvYXBpL2lzQXBpUXVlcnlUeXBlZEV2ZW50QXR0cmlidXRlcy50cyIsIi4uL3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvZ3VhcmRzL2FwaS9pc0FwaVJlc3BvbnNlLnRzIiwiLi4vc3JjL2FwcGxpY2F0aW9uL21vZGVscy9ndWFyZHMvYXBpL2lzQXBpUHJvZHVjdFJlc3BvbnNlQXR0cmlidXRlcy50cyIsIi4uL3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvZ3VhcmRzL2FwaS9pc0FwaVJldmlld1JpY2hJbmZvcm1hdGlvbi50cyIsIi4uL3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvZ3VhcmRzL2FwaS9pc0FwaVJldmlld1Jlc3BvbnNlQXR0cmlidXRlcy50cyIsIi4uL3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvZ3VhcmRzL2FwaS9pc0FwaVNlYXJjaEV2ZW50QXR0cmlidXRlcy50cyIsIi4uL3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvZ3VhcmRzL2FwaS9pc0FwaVN1Z2dlc3Rpb24udHMiLCIuLi9zcmMvYXBwbGljYXRpb24vbW9kZWxzL2d1YXJkcy9hcGkvaXNBcGlTdWdnZXN0aW9uQ2xpY2tlZEV2ZW50QXR0cmlidXRlcy50cyIsIi4uL3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvZ3VhcmRzL2FwaS9pc0FwaVRleHRSZXNwb25zZUF0dHJpYnV0ZXMudHMiLCIuLi9zcmMvYXBwbGljYXRpb24vbW9kZWxzL2d1YXJkcy9hcGkvaXNBcGlVc2VyRXZlbnQudHMiLCIuLi9zcmMvYXBwbGljYXRpb24vbW9kZWxzL2d1YXJkcy9hcGkvaXNBcGlQcm9kdWN0U2VhcmNoQXR0cmlidXRlcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENoZWNrcyBpZiBhbiBvYmplY3QgaGFzIGEgcHJvcGVydHkgb2YgYSBzcGVjaWZpYyB0eXBlXG4gKlxuICogQHBhcmFtIG9iaiAtIFRoZSBvYmplY3QgdG8gY2hlY2tcbiAqIEBwYXJhbSBwcm9wIC0gVGhlIHByb3BlcnR5IG5hbWUgdG8gY2hlY2tcbiAqIEBwYXJhbSB0eXBlIC0gVGhlIGV4cGVjdGVkIHR5cGUgb2YgdGhlIHByb3BlcnR5XG4gKiBAcGFyYW0gaXNPcHRpb25hbCAtIFdoZXRoZXIgdGhlIHByb3BlcnR5IGlzIG9wdGlvbmFsIChkZWZhdWx0cyB0byBmYWxzZSlcbiAqXG4gKiBAcmV0dXJucyBib29sZWFuIGluZGljYXRpbmcgaWYgdGhlIG9iamVjdCBoYXMgdGhlIHByb3BlcnR5IG9mIHRoZSBzcGVjaWZpZWQgdHlwZVxuICovXG5leHBvcnQgY29uc3QgaGFzUHJvcGVydHlPZlR5cGUgPSA8VCBleHRlbmRzIG9iamVjdD4oXG4gIG9iajogdW5rbm93bixcbiAgcHJvcDoga2V5b2YgVCxcbiAgdHlwZTogJ3N0cmluZycgfCAnbnVtYmVyJyB8ICdib29sZWFuJyB8ICdvYmplY3QnIHwgJ2FycmF5JyxcbiAgaXNPcHRpb25hbDogYm9vbGVhbiA9IGZhbHNlLFxuKTogb2JqIGlzIFQgPT4ge1xuICB0cnkge1xuICAgIGlmIChvYmogPT0gbnVsbCB8fCB0eXBlb2Ygb2JqICE9PSAnb2JqZWN0Jykge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIElmIHByb3BlcnR5IGlzIG5vdCBwcmVzZW50LCBpdCdzIHZhbGlkIGZvciBhbiBvcHRpb25hbCBwcm9wZXJ0eVxuICAgIGlmICghKHByb3AgaW4gb2JqKSkge1xuICAgICAgcmV0dXJuIGlzT3B0aW9uYWw7XG4gICAgfVxuXG4gICAgY29uc3QgdmFsdWUgPSAob2JqIGFzIFQpW3Byb3BdO1xuXG4gICAgLy8gRm9yIG9wdGlvbmFsIHByb3BlcnRpZXMsIG51bGwgb3IgdW5kZWZpbmVkIHZhbHVlcyBhcmUgdmFsaWRcbiAgICBpZiAoaXNPcHRpb25hbCAmJiB2YWx1ZSA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAodHlwZSA9PT0gJ2FycmF5Jykge1xuICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodmFsdWUpO1xuICAgIH1cblxuICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09IHR5cGU7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIC8vIHN3YWxsb3cgdGhlIGVycm9yIGFzIGl0IHNob3VsZCBiZSByZXBvcnRlZCBpbiBtb3JlIGRldGFpbCBieSB0aGUgY2FsbGVyXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59O1xuIiwiaW1wb3J0IHsgUERQQXR0cmlidXRlcyB9IGZyb20gJ0BzcGlmZnktYWkvY29tbWVyY2UtYXBpLWNsaWVudCc7XG5cbmV4cG9ydCBjb25zdCBpc0FwaVBEUEF0dHJpYnV0ZXMgPSAoZGF0YTogdW5rbm93bik6IGRhdGEgaXMgUERQQXR0cmlidXRlcyA9PiB7XG4gIGlmIChkYXRhID09IG51bGwgfHwgdHlwZW9mIGRhdGEgIT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKCEoJ3Byb2R1Y3RfaWQnIGluIGRhdGEpIHx8IHR5cGVvZiBkYXRhLnByb2R1Y3RfaWQgIT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKCdwYXJlbnRfcHJvZHVjdF9pZCcgaW4gZGF0YSAmJiB0eXBlb2YgZGF0YS5wYXJlbnRfcHJvZHVjdF9pZCAhPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoJ3VybCcgaW4gZGF0YSAmJiBkYXRhLnVybCAhPSBudWxsICYmIHR5cGVvZiBkYXRhLnVybCAhPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn07XG4iLCJpbXBvcnQgeyBRdWVyeVR5cGVkQXR0cmlidXRlcyB9IGZyb20gJ0BzcGlmZnktYWkvY29tbWVyY2UtYXBpLWNsaWVudCc7XG5cbmV4cG9ydCBjb25zdCBpc0FwaVF1ZXJ5VHlwZWRBdHRyaWJ1dGVzID0gKGRhdGE6IHVua25vd24pOiBkYXRhIGlzIFF1ZXJ5VHlwZWRBdHRyaWJ1dGVzID0+XG4gIGRhdGEgIT0gbnVsbCAmJiB0eXBlb2YgZGF0YSA9PT0gJ29iamVjdCcgJiYgJ3F1ZXJ5JyBpbiBkYXRhICYmIHR5cGVvZiBkYXRhLnF1ZXJ5ID09PSAnc3RyaW5nJztcbiIsImltcG9ydCBMb2dnZXIgZnJvbSAnc3JjL2FwcGxpY2F0aW9uL2xvZ2dpbmcvbG9nZ2VyJztcbmltcG9ydCB7IFJlc3BvbnNlLCBSZXNwb25zZUNhdGVnb3J5IH0gZnJvbSAnQHNwaWZmeS1haS9jb21tZXJjZS1hcGktY2xpZW50JztcbmltcG9ydCB7IGhhc1Byb3BlcnR5T2ZUeXBlIH0gZnJvbSAnc3JjL2FwcGxpY2F0aW9uL21vZGVscy9ndWFyZHMvdXRpbHMnO1xuXG5leHBvcnQgY29uc3QgaXNBcGlSZXNwb25zZSA9IChkYXRhOiB1bmtub3duKTogZGF0YSBpcyBSZXNwb25zZSA9PiB7XG4gIGlmIChkYXRhID09IG51bGwgfHwgdHlwZW9mIGRhdGEgIT09ICdvYmplY3QnKSB7XG4gICAgTG9nZ2VyLmxvZ0Vycm9yKCdpc0FwaVJlc3BvbnNlOiBkYXRhIGlzIG51bGwgb3Igbm90IGFuIG9iamVjdCcsIHVuZGVmaW5lZCwgeyBkYXRhIH0pO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmICghaGFzUHJvcGVydHlPZlR5cGUoZGF0YSwgJ2lkJywgJ3N0cmluZycpKSB7XG4gICAgTG9nZ2VyLmxvZ0Vycm9yKCdpc0FwaVJlc3BvbnNlOiBpZCBpcyBub3QgYSBzdHJpbmcnLCB1bmRlZmluZWQsIHsgZGF0YSB9KTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoXG4gICAgIWhhc1Byb3BlcnR5T2ZUeXBlKGRhdGEsICdjYXRlZ29yeScsICdzdHJpbmcnKSB8fFxuICAgICFPYmplY3QudmFsdWVzKFJlc3BvbnNlQ2F0ZWdvcnkpLmluY2x1ZGVzKGRhdGEuY2F0ZWdvcnkgYXMgUmVzcG9uc2VDYXRlZ29yeSlcbiAgKSB7XG4gICAgTG9nZ2VyLmxvZ0Vycm9yKFxuICAgICAgJ2lzQXBpUmVzcG9uc2U6IGNhdGVnb3J5IGlzIG5vdCBhIHN0cmluZyBvciBub3QgYSB2YWxpZCByZXNwb25zZSBjYXRlZ29yeScsXG4gICAgICB1bmRlZmluZWQsXG4gICAgICB7IGRhdGEgfSxcbiAgICApO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmICghaGFzUHJvcGVydHlPZlR5cGUoZGF0YSwgJ2NyZWF0ZWRfYXQnLCAnc3RyaW5nJykpIHtcbiAgICBMb2dnZXIubG9nRXJyb3IoJ2lzQXBpUmVzcG9uc2U6IGNyZWF0ZWRfYXQgaXMgbm90IGEgc3RyaW5nJywgdW5kZWZpbmVkLCB7IGRhdGEgfSk7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKCFoYXNQcm9wZXJ0eU9mVHlwZShkYXRhLCAnYXR0cmlidXRlcycsICdvYmplY3QnLCB0cnVlKSkge1xuICAgIExvZ2dlci5sb2dFcnJvcignaXNBcGlSZXNwb25zZTogYXR0cmlidXRlcyBpcyBub3QgYW4gb2JqZWN0JywgdW5kZWZpbmVkLCB7IGRhdGEgfSk7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59O1xuIiwiaW1wb3J0IExvZ2dlciBmcm9tICdzcmMvYXBwbGljYXRpb24vbG9nZ2luZy9sb2dnZXInO1xuaW1wb3J0IHsgUmVzcG9uc2VQcm9kdWN0QXR0cmlidXRlcyB9IGZyb20gJ0BzcGlmZnktYWkvY29tbWVyY2UtYXBpLWNsaWVudCc7XG5pbXBvcnQgeyBoYXNQcm9wZXJ0eU9mVHlwZSB9IGZyb20gJy4uL3V0aWxzJztcblxuZXhwb3J0IGNvbnN0IGlzQXBpUHJvZHVjdFJlc3BvbnNlQXR0cmlidXRlcyA9IChcbiAgYXR0cmlidXRlczogdW5rbm93bixcbik6IGF0dHJpYnV0ZXMgaXMgUmVzcG9uc2VQcm9kdWN0QXR0cmlidXRlcyA9PiB7XG4gIGlmIChhdHRyaWJ1dGVzID09IG51bGwgfHwgdHlwZW9mIGF0dHJpYnV0ZXMgIT09ICdvYmplY3QnKSB7XG4gICAgTG9nZ2VyLmxvZ0Vycm9yKFxuICAgICAgJ2lzQXBpUHJvZHVjdFJlc3BvbnNlQXR0cmlidXRlczogYXR0cmlidXRlcyBpcyBudWxsIG9yIG5vdCBhbiBvYmplY3QnLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAge1xuICAgICAgICBhdHRyaWJ1dGVzLFxuICAgICAgfSxcbiAgICApO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmICghaGFzUHJvcGVydHlPZlR5cGUoYXR0cmlidXRlcywgJ2Rlc2NyaXB0aW9uJywgJ3N0cmluZycsIHRydWUpKSB7XG4gICAgTG9nZ2VyLmxvZ0Vycm9yKCdpc0FwaVByb2R1Y3RSZXNwb25zZUF0dHJpYnV0ZXM6IGRlc2NyaXB0aW9uIGlzIG5vdCBhIHN0cmluZycsIHVuZGVmaW5lZCwge1xuICAgICAgYXR0cmlidXRlcyxcbiAgICB9KTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoXG4gICAgIWhhc1Byb3BlcnR5T2ZUeXBlKGF0dHJpYnV0ZXMsICdpbWFnZV91cmwnLCAnc3RyaW5nJywgdHJ1ZSlcbiAgKSB7XG4gICAgTG9nZ2VyLmxvZ0Vycm9yKCdpc0FwaVByb2R1Y3RSZXNwb25zZUF0dHJpYnV0ZXM6IGltYWdlX3VybCBpcyBub3QgYSBzdHJpbmcnLCB1bmRlZmluZWQsIHtcbiAgICAgIGF0dHJpYnV0ZXMsXG4gICAgfSk7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKCFoYXNQcm9wZXJ0eU9mVHlwZShhdHRyaWJ1dGVzLCAndGl0bGUnLCAnc3RyaW5nJykpIHtcbiAgICBMb2dnZXIubG9nRXJyb3IoJ2lzQXBpUHJvZHVjdFJlc3BvbnNlQXR0cmlidXRlczogdGl0bGUgaXMgbm90IGEgc3RyaW5nJywgdW5kZWZpbmVkLCB7XG4gICAgICBhdHRyaWJ1dGVzLFxuICAgIH0pO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmICghaGFzUHJvcGVydHlPZlR5cGUoYXR0cmlidXRlcywgJ3VybCcsICdzdHJpbmcnKSkge1xuICAgIExvZ2dlci5sb2dFcnJvcignaXNBcGlQcm9kdWN0UmVzcG9uc2VBdHRyaWJ1dGVzOiB1cmwgaXMgbm90IGEgc3RyaW5nJywgdW5kZWZpbmVkLCB7XG4gICAgICBhdHRyaWJ1dGVzLFxuICAgIH0pO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmICghaGFzUHJvcGVydHlPZlR5cGUoYXR0cmlidXRlcywgJ29yaWdpbmFsX3ByaWNlJywgJ251bWJlcicsIHRydWUpKSB7XG4gICAgTG9nZ2VyLmxvZ0Vycm9yKCdpc0FwaVByb2R1Y3RSZXNwb25zZUF0dHJpYnV0ZXM6IG9yaWdpbmFsX3ByaWNlIGlzIG5vdCBhIG51bWJlcicsIHVuZGVmaW5lZCwge1xuICAgICAgYXR0cmlidXRlcyxcbiAgICB9KTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoIWhhc1Byb3BlcnR5T2ZUeXBlKGF0dHJpYnV0ZXMsICdzYWxlX3ByaWNlJywgJ251bWJlcicsIHRydWUpKSB7XG4gICAgTG9nZ2VyLmxvZ0Vycm9yKCdpc0FwaVByb2R1Y3RSZXNwb25zZUF0dHJpYnV0ZXM6IHNhbGVfcHJpY2UgaXMgbm90IGEgbnVtYmVyJywgdW5kZWZpbmVkLCB7XG4gICAgICBhdHRyaWJ1dGVzLFxuICAgIH0pO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmICghaGFzUHJvcGVydHlPZlR5cGUoYXR0cmlidXRlcywgJ2F2ZXJhZ2VfcmF0aW5nJywgJ251bWJlcicsIHRydWUpKSB7XG4gICAgTG9nZ2VyLmxvZ0Vycm9yKCdpc0FwaVByb2R1Y3RSZXNwb25zZUF0dHJpYnV0ZXM6IGF2ZXJhZ2VfcmF0aW5nIGlzIG5vdCBhIG51bWJlcicsIHVuZGVmaW5lZCwge1xuICAgICAgYXR0cmlidXRlcyxcbiAgICB9KTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoIWhhc1Byb3BlcnR5T2ZUeXBlKGF0dHJpYnV0ZXMsICdudW1iZXJfcmV2aWV3cycsICdudW1iZXInLCB0cnVlKSkge1xuICAgIExvZ2dlci5sb2dFcnJvcignaXNBcGlQcm9kdWN0UmVzcG9uc2VBdHRyaWJ1dGVzOiBudW1iZXJfcmV2aWV3cyBpcyBub3QgYSBudW1iZXInLCB1bmRlZmluZWQsIHtcbiAgICAgIGF0dHJpYnV0ZXMsXG4gICAgfSk7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKCFoYXNQcm9wZXJ0eU9mVHlwZShhdHRyaWJ1dGVzLCAnbWV0YWRhdGEnLCAnYXJyYXknLCB0cnVlKSkge1xuICAgIExvZ2dlci5sb2dFcnJvcignaXNBcGlQcm9kdWN0UmVzcG9uc2VBdHRyaWJ1dGVzOiBtZXRhZGF0YSBpcyBub3QgYW4gYXJyYXknLCB1bmRlZmluZWQsIHtcbiAgICAgIGF0dHJpYnV0ZXMsXG4gICAgfSk7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59O1xuIiwiaW1wb3J0IHsgQXBpUmV2aWV3UmljaEluZm9ybWF0aW9uIH0gZnJvbSAnc3JjL2FwcGxpY2F0aW9uL21vZGVscy9hcGkvcmVzcG9uc2VHZW5lcmljcyc7XG5cbmV4cG9ydCBjb25zdCBpc0FwaVJldmlld1JpY2hJbmZvcm1hdGlvbiA9IChcbiAgcmljaEluZm86IHVua25vd24sXG4pOiByaWNoSW5mbyBpcyBBcGlSZXZpZXdSaWNoSW5mb3JtYXRpb24gPT4ge1xuICBpZiAocmljaEluZm8gPT0gbnVsbCB8fCB0eXBlb2YgcmljaEluZm8gIT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKFxuICAgICdjb25zJyBpbiByaWNoSW5mbyAmJlxuICAgICghQXJyYXkuaXNBcnJheShyaWNoSW5mby5jb25zKSB8fCByaWNoSW5mby5jb25zLnNvbWUoKGNvbikgPT4gdHlwZW9mIGNvbiAhPT0gJ3N0cmluZycpKVxuICApIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoXG4gICAgJ3Byb3MnIGluIHJpY2hJbmZvICYmXG4gICAgKCFBcnJheS5pc0FycmF5KHJpY2hJbmZvLnByb3MpIHx8IHJpY2hJbmZvLnByb3Muc29tZSgocHJvKSA9PiB0eXBlb2YgcHJvICE9PSAnc3RyaW5nJykpXG4gICkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmICgncmV2aWV3X2RhdGUnIGluIHJpY2hJbmZvICYmIHR5cGVvZiByaWNoSW5mby5yZXZpZXdfZGF0ZSAhPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoJ3Jldmlld2VyX3RpdGxlJyBpbiByaWNoSW5mbyAmJiB0eXBlb2YgcmljaEluZm8ucmV2aWV3ZXJfdGl0bGUgIT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKCdwcm9kdWN0X2ZhbWlsaWFyaXR5JyBpbiByaWNoSW5mbyAmJiB0eXBlb2YgcmljaEluZm8ucHJvZHVjdF9mYW1pbGlhcml0eSAhPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn07XG4iLCJpbXBvcnQgeyBBcGlSZXZpZXdSZXNwb25zZUF0dHJpYnV0ZXMgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzL2FwaS9yZXNwb25zZUdlbmVyaWNzJztcbmltcG9ydCB7IGlzQXBpUmV2aWV3UmljaEluZm9ybWF0aW9uIH0gZnJvbSAnLi9pc0FwaVJldmlld1JpY2hJbmZvcm1hdGlvbic7XG5cbmV4cG9ydCBjb25zdCBpc0FwaVJldmlld1Jlc3BvbnNlQXR0cmlidXRlcyA9IChvYmo6IHVua25vd24pOiBvYmogaXMgQXBpUmV2aWV3UmVzcG9uc2VBdHRyaWJ1dGVzID0+IHtcbiAgaWYgKG9iaiA9PSBudWxsIHx8IHR5cGVvZiBvYmogIT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKCd0aXRsZScgaW4gb2JqICYmIG9iai50aXRsZSAhPSBudWxsICYmIHR5cGVvZiBvYmoudGl0bGUgIT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKCdyZXZpZXcnIGluIG9iaiAmJiB0eXBlb2Ygb2JqLnJldmlldyAhPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoJ3Jldmlld2VyJyBpbiBvYmogJiYgdHlwZW9mIG9iai5yZXZpZXdlciAhPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoJ3N0YXJzJyBpbiBvYmogJiYgdHlwZW9mIG9iai5zdGFycyAhPT0gJ251bWJlcicpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoJ3JpY2hfaW5mb3JtYXRpb24nIGluIG9iaiAmJiAhaXNBcGlSZXZpZXdSaWNoSW5mb3JtYXRpb24ob2JqLnJpY2hfaW5mb3JtYXRpb24pKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59O1xuIiwiaW1wb3J0IHsgU2VhcmNoQXR0cmlidXRlcyB9IGZyb20gJ0BzcGlmZnktYWkvY29tbWVyY2UtYXBpLWNsaWVudCc7XG5cbmV4cG9ydCBjb25zdCBpc0FwaVNlYXJjaEF0dHJpYnV0ZXMgPSAoZGF0YTogdW5rbm93bik6IGRhdGEgaXMgU2VhcmNoQXR0cmlidXRlcyA9PiB7XG4gIGlmIChkYXRhID09IG51bGwgfHwgdHlwZW9mIGRhdGEgIT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKCEoJ3NlYXJjaF90ZXJtJyBpbiBkYXRhKSB8fCB0eXBlb2YgZGF0YS5zZWFyY2hfdGVybSAhPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgaWYgKCdzZWxlY3RlZF9maWx0ZXJzJyBpbiBkYXRhICYmICFBcnJheS5pc0FycmF5KGRhdGEuc2VsZWN0ZWRfZmlsdGVycykpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoISFkYXRhLnNlYXJjaF90ZXJtKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBpZiAoXG4gICAgISgnc2VhcmNoX3Jlc3VsdHMnIGluIGRhdGEpIHx8XG4gICAgIUFycmF5LmlzQXJyYXkoZGF0YS5zZWFyY2hfcmVzdWx0cykgfHxcbiAgICAhZGF0YS5zZWFyY2hfcmVzdWx0cy5ldmVyeSgodikgPT4gdHlwZW9mIHYgPT09ICdzdHJpbmcnKVxuICApIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn07XG4iLCJpbXBvcnQge1xuICBTdWdnZXN0aW9uIGFzIENvbW1lcmNlU3VnZ2VzdGlvbixcbiAgU3VnZ2VzdGlvbkNhdGVnb3J5LFxufSBmcm9tICdAc3BpZmZ5LWFpL2NvbW1lcmNlLWFwaS1jbGllbnQnO1xuXG5leHBvcnQgY29uc3QgaXNTdWdnZXN0aW9uID0gKGRhdGE6IHVua25vd24pOiBkYXRhIGlzIENvbW1lcmNlU3VnZ2VzdGlvbiA9PiB7XG4gIGlmIChkYXRhID09IG51bGwgfHwgdHlwZW9mIGRhdGEgIT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKCEoJ2lkJyBpbiBkYXRhKSB8fCB0eXBlb2YgZGF0YS5pZCAhPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoXG4gICAgISgnY2F0ZWdvcnknIGluIGRhdGEpIHx8XG4gICAgdHlwZW9mIGRhdGEuY2F0ZWdvcnkgIT09ICdzdHJpbmcnIHx8XG4gICAgIU9iamVjdC52YWx1ZXMoU3VnZ2VzdGlvbkNhdGVnb3J5KS5pbmNsdWRlcyhkYXRhLmNhdGVnb3J5IGFzIFN1Z2dlc3Rpb25DYXRlZ29yeSlcbiAgKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKCEoJ2NyZWF0ZWRfYXQnIGluIGRhdGEpIHx8IHR5cGVvZiBkYXRhLmNyZWF0ZWRfYXQgIT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKCEoJ2NvbnRlbnQnIGluIGRhdGEpIHx8IHR5cGVvZiBkYXRhLmNvbnRlbnQgIT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKCdpc19hbnN3ZXInIGluIGRhdGEgJiYgZGF0YS5pc19hbnN3ZXIgIT0gbnVsbCAmJiB0eXBlb2YgZGF0YS5pc19hbnN3ZXIgIT09ICdib29sZWFuJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufTtcbiIsImltcG9ydCB7IFN1Z2dlc3Rpb25DbGlja2VkQXR0cmlidXRlcyB9IGZyb20gJ0BzcGlmZnktYWkvY29tbWVyY2UtYXBpLWNsaWVudCc7XG5cbmV4cG9ydCBjb25zdCBpc0FwaVN1Z2dlc3Rpb25DbGlja2VkQXR0cmlidXRlcyA9IChcbiAgZGF0YTogdW5rbm93bixcbik6IGRhdGEgaXMgU3VnZ2VzdGlvbkNsaWNrZWRBdHRyaWJ1dGVzID0+XG4gIGRhdGEgIT0gbnVsbCAmJlxuICB0eXBlb2YgZGF0YSA9PT0gJ29iamVjdCcgJiZcbiAgJ3N1Z2dlc3Rpb25faWQnIGluIGRhdGEgJiZcbiAgdHlwZW9mIGRhdGEuc3VnZ2VzdGlvbl9pZCA9PT0gJ3N0cmluZyc7XG4iLCJpbXBvcnQgeyBBcGlUZXh0UmVzcG9uc2VBdHRyaWJ1dGVzIH0gZnJvbSAnc3JjL2FwcGxpY2F0aW9uL21vZGVscy9hcGkvcmVzcG9uc2VHZW5lcmljcyc7XG5cbmV4cG9ydCBjb25zdCBpc0FwaVRleHRSZXNwb25zZUF0dHJpYnV0ZXMgPSAoXG4gIGF0dHJpYnV0ZXM6IHVua25vd24sXG4pOiBhdHRyaWJ1dGVzIGlzIEFwaVRleHRSZXNwb25zZUF0dHJpYnV0ZXMgPT5cbiAgdHlwZW9mIGF0dHJpYnV0ZXMgPT09ICdvYmplY3QnICYmXG4gIGF0dHJpYnV0ZXMgIT0gbnVsbCAmJlxuICAnY29udGVudCcgaW4gYXR0cmlidXRlcyAmJlxuICB0eXBlb2YgYXR0cmlidXRlcy5jb250ZW50ID09PSAnc3RyaW5nJztcbiIsImltcG9ydCB7IFVzZXJFdmVudCwgVXNlckV2ZW50Q2F0ZWdvcnkgfSBmcm9tICdAc3BpZmZ5LWFpL2NvbW1lcmNlLWFwaS1jbGllbnQnO1xuXG5leHBvcnQgY29uc3QgaXNBcGlVc2VyRXZlbnQgPSAoZGF0YTogdW5rbm93bik6IGRhdGEgaXMgVXNlckV2ZW50ID0+IHtcbiAgaWYgKGRhdGEgPT0gbnVsbCB8fCB0eXBlb2YgZGF0YSAhPT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoISgnZXZlbnRfaWQnIGluIGRhdGEpIHx8IHR5cGVvZiBkYXRhLmV2ZW50X2lkICE9PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmICghKCdjcmVhdGVkX2F0JyBpbiBkYXRhKSB8fCB0eXBlb2YgZGF0YS5jcmVhdGVkX2F0ICE9PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmIChcbiAgICAhKCdjYXRlZ29yeScgaW4gZGF0YSkgfHxcbiAgICB0eXBlb2YgZGF0YS5jYXRlZ29yeSAhPT0gJ3N0cmluZycgfHxcbiAgICAhT2JqZWN0LnZhbHVlcyhVc2VyRXZlbnRDYXRlZ29yeSkuaW5jbHVkZXMoZGF0YS5jYXRlZ29yeSBhcyBVc2VyRXZlbnRDYXRlZ29yeSlcbiAgKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59O1xuIiwiaW1wb3J0IHsgUHJvZHVjdFNlYXJjaFJlc3BvbnNlQXR0cmlidXRlcyB9IGZyb20gJ0BzcGlmZnktYWkvY29tbWVyY2UtYXBpLWNsaWVudCc7XG5cbmV4cG9ydCBjb25zdCBpc0FwaVByb2R1Y3RTZWFyY2hSZXNwb25zZUF0dHJpYnV0ZXMgPSAoXG4gIGF0dHJpYnV0ZXM6IHVua25vd24sXG4pOiBhdHRyaWJ1dGVzIGlzIFByb2R1Y3RTZWFyY2hSZXNwb25zZUF0dHJpYnV0ZXMgPT4ge1xuICBpZiAoYXR0cmlidXRlcyA9PSBudWxsIHx8IHR5cGVvZiBhdHRyaWJ1dGVzICE9PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmICgnZ2VuZXJhdGVkX3F1ZXJ5JyBpbiBhdHRyaWJ1dGVzICYmIHR5cGVvZiBhdHRyaWJ1dGVzLmdlbmVyYXRlZF9xdWVyeSAhPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoXG4gICAgJ3Byb2R1Y3RfY291bnQnIGluIGF0dHJpYnV0ZXMgJiZcbiAgICBhdHRyaWJ1dGVzLnByb2R1Y3RfY291bnQgIT0gbnVsbCAmJlxuICAgIHR5cGVvZiBhdHRyaWJ1dGVzLnByb2R1Y3RfY291bnQgIT09ICdudW1iZXInXG4gICkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQVVBLE1BQWEscUJBQ1gsS0FDQSxNQUNBLE1BQ0EsYUFBc0IsVUFDVDtBQUNiLEtBQUk7QUFDRixNQUFJLE9BQU8sUUFBUSxPQUFPLFFBQVEsU0FDaEMsUUFBTztBQUlULE1BQUksRUFBRSxRQUFRLEtBQ1osUUFBTztFQUdULE1BQU0sUUFBUyxJQUFVO0FBR3pCLE1BQUksY0FBYyxTQUFTLEtBQ3pCLFFBQU87QUFHVCxNQUFJLFNBQVMsUUFDWCxRQUFPLE1BQU0sUUFBUSxNQUFNO0FBRzdCLFNBQU8sT0FBTyxVQUFVO1VBQ2pCLEtBQUs7QUFFWixTQUFPOzs7Ozs7QUN0Q1gsTUFBYSxzQkFBc0IsU0FBeUM7QUFDMUUsS0FBSSxRQUFRLFFBQVEsT0FBTyxTQUFTLFNBQ2xDLFFBQU87QUFHVCxLQUFJ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
@@ -1,190 +0,0 @@
1
- import { logger_default } from "./logger-D5MFf3nW.js";
2
- import { ResponseCategory, SuggestionCategory, UserEventCategory } from "@spiffy-ai/commerce-api-client";
3
-
4
- //#region src/application/models/guards/utils.ts
5
- /**
6
- * Checks if an object has a property of a specific type
7
- *
8
- * @param obj - The object to check
9
- * @param prop - The property name to check
10
- * @param type - The expected type of the property
11
- * @param isOptional - Whether the property is optional (defaults to false)
12
- *
13
- * @returns boolean indicating if the object has the property of the specified type
14
- */
15
- const hasPropertyOfType = (obj, prop, type, isOptional = false) => {
16
- try {
17
- if (obj == null || typeof obj !== "object") return false;
18
- if (!(prop in obj)) return isOptional;
19
- const value = obj[prop];
20
- if (isOptional && value == null) return true;
21
- if (type === "array") return Array.isArray(value);
22
- return typeof value === type;
23
- } catch (err) {
24
- return false;
25
- }
26
- };
27
-
28
- //#endregion
29
- //#region src/application/models/guards/api/isApiPDPEventAttributes.ts
30
- const isApiPDPAttributes = (data) => {
31
- if (data == null || typeof data !== "object") return false;
32
- if (!("product_id" in data) || typeof data.product_id !== "string") return false;
33
- if ("parent_product_id" in data && typeof data.parent_product_id !== "string") return false;
34
- if ("url" in data && data.url != null && typeof data.url !== "string") return false;
35
- return true;
36
- };
37
-
38
- //#endregion
39
- //#region src/application/models/guards/api/isApiQueryTypedEventAttributes.ts
40
- const isApiQueryTypedAttributes = (data) => data != null && typeof data === "object" && "query" in data && typeof data.query === "string";
41
-
42
- //#endregion
43
- //#region src/application/models/guards/api/isApiResponse.ts
44
- const isApiResponse = (data) => {
45
- if (data == null || typeof data !== "object") {
46
- logger_default.logError("isApiResponse: data is null or not an object", void 0, { data });
47
- return false;
48
- }
49
- if (!hasPropertyOfType(data, "id", "string")) {
50
- logger_default.logError("isApiResponse: id is not a string", void 0, { data });
51
- return false;
52
- }
53
- if (!hasPropertyOfType(data, "category", "string") || !Object.values(ResponseCategory).includes(data.category)) {
54
- logger_default.logError("isApiResponse: category is not a string or not a valid response category", void 0, { data });
55
- return false;
56
- }
57
- if (!hasPropertyOfType(data, "created_at", "string")) {
58
- logger_default.logError("isApiResponse: created_at is not a string", void 0, { data });
59
- return false;
60
- }
61
- if (!hasPropertyOfType(data, "attributes", "object", true)) {
62
- logger_default.logError("isApiResponse: attributes is not an object", void 0, { data });
63
- return false;
64
- }
65
- return true;
66
- };
67
-
68
- //#endregion
69
- //#region src/application/models/guards/api/isApiProductResponseAttributes.ts
70
- const isApiProductResponseAttributes = (attributes) => {
71
- if (attributes == null || typeof attributes !== "object") {
72
- logger_default.logError("isApiProductResponseAttributes: attributes is null or not an object", void 0, { attributes });
73
- return false;
74
- }
75
- if (!hasPropertyOfType(attributes, "description", "string", true)) {
76
- logger_default.logError("isApiProductResponseAttributes: description is not a string", void 0, { attributes });
77
- return false;
78
- }
79
- if (!hasPropertyOfType(attributes, "image_url", "string", true)) {
80
- logger_default.logError("isApiProductResponseAttributes: image_url is not a string", void 0, { attributes });
81
- return false;
82
- }
83
- if (!hasPropertyOfType(attributes, "title", "string")) {
84
- logger_default.logError("isApiProductResponseAttributes: title is not a string", void 0, { attributes });
85
- return false;
86
- }
87
- if (!hasPropertyOfType(attributes, "url", "string")) {
88
- logger_default.logError("isApiProductResponseAttributes: url is not a string", void 0, { attributes });
89
- return false;
90
- }
91
- if (!hasPropertyOfType(attributes, "original_price", "number", true)) {
92
- logger_default.logError("isApiProductResponseAttributes: original_price is not a number", void 0, { attributes });
93
- return false;
94
- }
95
- if (!hasPropertyOfType(attributes, "sale_price", "number", true)) {
96
- logger_default.logError("isApiProductResponseAttributes: sale_price is not a number", void 0, { attributes });
97
- return false;
98
- }
99
- if (!hasPropertyOfType(attributes, "average_rating", "number", true)) {
100
- logger_default.logError("isApiProductResponseAttributes: average_rating is not a number", void 0, { attributes });
101
- return false;
102
- }
103
- if (!hasPropertyOfType(attributes, "number_reviews", "number", true)) {
104
- logger_default.logError("isApiProductResponseAttributes: number_reviews is not a number", void 0, { attributes });
105
- return false;
106
- }
107
- if (!hasPropertyOfType(attributes, "metadata", "array", true)) {
108
- logger_default.logError("isApiProductResponseAttributes: metadata is not an array", void 0, { attributes });
109
- return false;
110
- }
111
- return true;
112
- };
113
-
114
- //#endregion
115
- //#region src/application/models/guards/api/isApiReviewRichInformation.ts
116
- const isApiReviewRichInformation = (richInfo) => {
117
- if (richInfo == null || typeof richInfo !== "object") return false;
118
- if ("cons" in richInfo && (!Array.isArray(richInfo.cons) || richInfo.cons.some((con) => typeof con !== "string"))) return false;
119
- if ("pros" in richInfo && (!Array.isArray(richInfo.pros) || richInfo.pros.some((pro) => typeof pro !== "string"))) return false;
120
- if ("review_date" in richInfo && typeof richInfo.review_date !== "string") return false;
121
- if ("reviewer_title" in richInfo && typeof richInfo.reviewer_title !== "string") return false;
122
- if ("product_familiarity" in richInfo && typeof richInfo.product_familiarity !== "string") return false;
123
- return true;
124
- };
125
-
126
- //#endregion
127
- //#region src/application/models/guards/api/isApiReviewResponseAttributes.ts
128
- const isApiReviewResponseAttributes = (obj) => {
129
- if (obj == null || typeof obj !== "object") return false;
130
- if ("title" in obj && obj.title != null && typeof obj.title !== "string") return false;
131
- if ("review" in obj && typeof obj.review !== "string") return false;
132
- if ("reviewer" in obj && typeof obj.reviewer !== "string") return false;
133
- if ("stars" in obj && typeof obj.stars !== "number") return false;
134
- if ("rich_information" in obj && !isApiReviewRichInformation(obj.rich_information)) return false;
135
- return true;
136
- };
137
-
138
- //#endregion
139
- //#region src/application/models/guards/api/isApiSearchEventAttributes.ts
140
- const isApiSearchAttributes = (data) => {
141
- if (data == null || typeof data !== "object") return false;
142
- if (!("search_term" in data) || typeof data.search_term !== "string") return false;
143
- if ("selected_filters" in data && !Array.isArray(data.selected_filters)) return false;
144
- if (!!data.search_term) return true;
145
- if (!("search_results" in data) || !Array.isArray(data.search_results) || !data.search_results.every((v) => typeof v === "string")) return false;
146
- return true;
147
- };
148
-
149
- //#endregion
150
- //#region src/application/models/guards/api/isApiSuggestion.ts
151
- const isSuggestion = (data) => {
152
- if (data == null || typeof data !== "object") return false;
153
- if (!("id" in data) || typeof data.id !== "string") return false;
154
- if (!("category" in data) || typeof data.category !== "string" || !Object.values(SuggestionCategory).includes(data.category)) return false;
155
- if (!("created_at" in data) || typeof data.created_at !== "string") return false;
156
- if (!("content" in data) || typeof data.content !== "string") return false;
157
- if ("is_answer" in data && data.is_answer != null && typeof data.is_answer !== "boolean") return false;
158
- return true;
159
- };
160
-
161
- //#endregion
162
- //#region src/application/models/guards/api/isApiSuggestionClickedEventAttributes.ts
163
- const isApiSuggestionClickedAttributes = (data) => data != null && typeof data === "object" && "suggestion_id" in data && typeof data.suggestion_id === "string";
164
-
165
- //#endregion
166
- //#region src/application/models/guards/api/isApiTextResponseAttributes.ts
167
- const isApiTextResponseAttributes = (attributes) => typeof attributes === "object" && attributes != null && "content" in attributes && typeof attributes.content === "string";
168
-
169
- //#endregion
170
- //#region src/application/models/guards/api/isApiUserEvent.ts
171
- const isApiUserEvent = (data) => {
172
- if (data == null || typeof data !== "object") return false;
173
- if (!("event_id" in data) || typeof data.event_id !== "string") return false;
174
- if (!("created_at" in data) || typeof data.created_at !== "string") return false;
175
- if (!("category" in data) || typeof data.category !== "string" || !Object.values(UserEventCategory).includes(data.category)) return false;
176
- return true;
177
- };
178
-
179
- //#endregion
180
- //#region src/application/models/guards/api/isApiProductSearchAttributes.ts
181
- const isApiProductSearchResponseAttributes = (attributes) => {
182
- if (attributes == null || typeof attributes !== "object") return false;
183
- if ("generated_query" in attributes && typeof attributes.generated_query !== "string") return false;
184
- if ("product_count" in attributes && attributes.product_count != null && typeof attributes.product_count !== "number") return false;
185
- return true;
186
- };
187
-
188
- //#endregion
189
- export { hasPropertyOfType, isApiPDPAttributes, isApiProductResponseAttributes, isApiProductSearchResponseAttributes, isApiQueryTypedAttributes, isApiResponse, isApiReviewResponseAttributes, isApiReviewRichInformation, isApiSearchAttributes, isApiSuggestionClickedAttributes, isApiTextResponseAttributes, isApiUserEvent, isSuggestion };
190
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLUpUTmp1T2ZjLmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uL3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvZ3VhcmRzL3V0aWxzLnRzIiwiLi4vc3JjL2FwcGxpY2F0aW9uL21vZGVscy9ndWFyZHMvYXBpL2lzQXBpUERQRXZlbnRBdHRyaWJ1dGVzLnRzIiwiLi4vc3JjL2FwcGxpY2F0aW9uL21vZGVscy9ndWFyZHMvYXBpL2lzQXBpUXVlcnlUeXBlZEV2ZW50QXR0cmlidXRlcy50cyIsIi4uL3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvZ3VhcmRzL2FwaS9pc0FwaVJlc3BvbnNlLnRzIiwiLi4vc3JjL2FwcGxpY2F0aW9uL21vZGVscy9ndWFyZHMvYXBpL2lzQXBpUHJvZHVjdFJlc3BvbnNlQXR0cmlidXRlcy50cyIsIi4uL3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvZ3VhcmRzL2FwaS9pc0FwaVJldmlld1JpY2hJbmZvcm1hdGlvbi50cyIsIi4uL3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvZ3VhcmRzL2FwaS9pc0FwaVJldmlld1Jlc3BvbnNlQXR0cmlidXRlcy50cyIsIi4uL3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvZ3VhcmRzL2FwaS9pc0FwaVNlYXJjaEV2ZW50QXR0cmlidXRlcy50cyIsIi4uL3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvZ3VhcmRzL2FwaS9pc0FwaVN1Z2dlc3Rpb24udHMiLCIuLi9zcmMvYXBwbGljYXRpb24vbW9kZWxzL2d1YXJkcy9hcGkvaXNBcGlTdWdnZXN0aW9uQ2xpY2tlZEV2ZW50QXR0cmlidXRlcy50cyIsIi4uL3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvZ3VhcmRzL2FwaS9pc0FwaVRleHRSZXNwb25zZUF0dHJpYnV0ZXMudHMiLCIuLi9zcmMvYXBwbGljYXRpb24vbW9kZWxzL2d1YXJkcy9hcGkvaXNBcGlVc2VyRXZlbnQudHMiLCIuLi9zcmMvYXBwbGljYXRpb24vbW9kZWxzL2d1YXJkcy9hcGkvaXNBcGlQcm9kdWN0U2VhcmNoQXR0cmlidXRlcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENoZWNrcyBpZiBhbiBvYmplY3QgaGFzIGEgcHJvcGVydHkgb2YgYSBzcGVjaWZpYyB0eXBlXG4gKlxuICogQHBhcmFtIG9iaiAtIFRoZSBvYmplY3QgdG8gY2hlY2tcbiAqIEBwYXJhbSBwcm9wIC0gVGhlIHByb3BlcnR5IG5hbWUgdG8gY2hlY2tcbiAqIEBwYXJhbSB0eXBlIC0gVGhlIGV4cGVjdGVkIHR5cGUgb2YgdGhlIHByb3BlcnR5XG4gKiBAcGFyYW0gaXNPcHRpb25hbCAtIFdoZXRoZXIgdGhlIHByb3BlcnR5IGlzIG9wdGlvbmFsIChkZWZhdWx0cyB0byBmYWxzZSlcbiAqXG4gKiBAcmV0dXJucyBib29sZWFuIGluZGljYXRpbmcgaWYgdGhlIG9iamVjdCBoYXMgdGhlIHByb3BlcnR5IG9mIHRoZSBzcGVjaWZpZWQgdHlwZVxuICovXG5leHBvcnQgY29uc3QgaGFzUHJvcGVydHlPZlR5cGUgPSA8VCBleHRlbmRzIG9iamVjdD4oXG4gIG9iajogdW5rbm93bixcbiAgcHJvcDoga2V5b2YgVCxcbiAgdHlwZTogJ3N0cmluZycgfCAnbnVtYmVyJyB8ICdib29sZWFuJyB8ICdvYmplY3QnIHwgJ2FycmF5JyxcbiAgaXNPcHRpb25hbDogYm9vbGVhbiA9IGZhbHNlLFxuKTogb2JqIGlzIFQgPT4ge1xuICB0cnkge1xuICAgIGlmIChvYmogPT0gbnVsbCB8fCB0eXBlb2Ygb2JqICE9PSAnb2JqZWN0Jykge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIElmIHByb3BlcnR5IGlzIG5vdCBwcmVzZW50LCBpdCdzIHZhbGlkIGZvciBhbiBvcHRpb25hbCBwcm9wZXJ0eVxuICAgIGlmICghKHByb3AgaW4gb2JqKSkge1xuICAgICAgcmV0dXJuIGlzT3B0aW9uYWw7XG4gICAgfVxuXG4gICAgY29uc3QgdmFsdWUgPSAob2JqIGFzIFQpW3Byb3BdO1xuXG4gICAgLy8gRm9yIG9wdGlvbmFsIHByb3BlcnRpZXMsIG51bGwgb3IgdW5kZWZpbmVkIHZhbHVlcyBhcmUgdmFsaWRcbiAgICBpZiAoaXNPcHRpb25hbCAmJiB2YWx1ZSA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAodHlwZSA9PT0gJ2FycmF5Jykge1xuICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodmFsdWUpO1xuICAgIH1cblxuICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09IHR5cGU7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIC8vIHN3YWxsb3cgdGhlIGVycm9yIGFzIGl0IHNob3VsZCBiZSByZXBvcnRlZCBpbiBtb3JlIGRldGFpbCBieSB0aGUgY2FsbGVyXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59O1xuIiwiaW1wb3J0IHsgUERQQXR0cmlidXRlcyB9IGZyb20gJ0BzcGlmZnktYWkvY29tbWVyY2UtYXBpLWNsaWVudCc7XG5cbmV4cG9ydCBjb25zdCBpc0FwaVBEUEF0dHJpYnV0ZXMgPSAoZGF0YTogdW5rbm93bik6IGRhdGEgaXMgUERQQXR0cmlidXRlcyA9PiB7XG4gIGlmIChkYXRhID09IG51bGwgfHwgdHlwZW9mIGRhdGEgIT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKCEoJ3Byb2R1Y3RfaWQnIGluIGRhdGEpIHx8IHR5cGVvZiBkYXRhLnByb2R1Y3RfaWQgIT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKCdwYXJlbnRfcHJvZHVjdF9pZCcgaW4gZGF0YSAmJiB0eXBlb2YgZGF0YS5wYXJlbnRfcHJvZHVjdF9pZCAhPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoJ3VybCcgaW4gZGF0YSAmJiBkYXRhLnVybCAhPSBudWxsICYmIHR5cGVvZiBkYXRhLnVybCAhPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn07XG4iLCJpbXBvcnQgeyBRdWVyeVR5cGVkQXR0cmlidXRlcyB9IGZyb20gJ0BzcGlmZnktYWkvY29tbWVyY2UtYXBpLWNsaWVudCc7XG5cbmV4cG9ydCBjb25zdCBpc0FwaVF1ZXJ5VHlwZWRBdHRyaWJ1dGVzID0gKGRhdGE6IHVua25vd24pOiBkYXRhIGlzIFF1ZXJ5VHlwZWRBdHRyaWJ1dGVzID0+XG4gIGRhdGEgIT0gbnVsbCAmJiB0eXBlb2YgZGF0YSA9PT0gJ29iamVjdCcgJiYgJ3F1ZXJ5JyBpbiBkYXRhICYmIHR5cGVvZiBkYXRhLnF1ZXJ5ID09PSAnc3RyaW5nJztcbiIsImltcG9ydCBMb2dnZXIgZnJvbSAnc3JjL2FwcGxpY2F0aW9uL2xvZ2dpbmcvbG9nZ2VyJztcbmltcG9ydCB7IFJlc3BvbnNlLCBSZXNwb25zZUNhdGVnb3J5IH0gZnJvbSAnQHNwaWZmeS1haS9jb21tZXJjZS1hcGktY2xpZW50JztcbmltcG9ydCB7IGhhc1Byb3BlcnR5T2ZUeXBlIH0gZnJvbSAnc3JjL2FwcGxpY2F0aW9uL21vZGVscy9ndWFyZHMvdXRpbHMnO1xuXG5leHBvcnQgY29uc3QgaXNBcGlSZXNwb25zZSA9IChkYXRhOiB1bmtub3duKTogZGF0YSBpcyBSZXNwb25zZSA9PiB7XG4gIGlmIChkYXRhID09IG51bGwgfHwgdHlwZW9mIGRhdGEgIT09ICdvYmplY3QnKSB7XG4gICAgTG9nZ2VyLmxvZ0Vycm9yKCdpc0FwaVJlc3BvbnNlOiBkYXRhIGlzIG51bGwgb3Igbm90IGFuIG9iamVjdCcsIHVuZGVmaW5lZCwgeyBkYXRhIH0pO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmICghaGFzUHJvcGVydHlPZlR5cGUoZGF0YSwgJ2lkJywgJ3N0cmluZycpKSB7XG4gICAgTG9nZ2VyLmxvZ0Vycm9yKCdpc0FwaVJlc3BvbnNlOiBpZCBpcyBub3QgYSBzdHJpbmcnLCB1bmRlZmluZWQsIHsgZGF0YSB9KTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoXG4gICAgIWhhc1Byb3BlcnR5T2ZUeXBlKGRhdGEsICdjYXRlZ29yeScsICdzdHJpbmcnKSB8fFxuICAgICFPYmplY3QudmFsdWVzKFJlc3BvbnNlQ2F0ZWdvcnkpLmluY2x1ZGVzKGRhdGEuY2F0ZWdvcnkgYXMgUmVzcG9uc2VDYXRlZ29yeSlcbiAgKSB7XG4gICAgTG9nZ2VyLmxvZ0Vycm9yKFxuICAgICAgJ2lzQXBpUmVzcG9uc2U6IGNhdGVnb3J5IGlzIG5vdCBhIHN0cmluZyBvciBub3QgYSB2YWxpZCByZXNwb25zZSBjYXRlZ29yeScsXG4gICAgICB1bmRlZmluZWQsXG4gICAgICB7IGRhdGEgfSxcbiAgICApO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmICghaGFzUHJvcGVydHlPZlR5cGUoZGF0YSwgJ2NyZWF0ZWRfYXQnLCAnc3RyaW5nJykpIHtcbiAgICBMb2dnZXIubG9nRXJyb3IoJ2lzQXBpUmVzcG9uc2U6IGNyZWF0ZWRfYXQgaXMgbm90IGEgc3RyaW5nJywgdW5kZWZpbmVkLCB7IGRhdGEgfSk7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKCFoYXNQcm9wZXJ0eU9mVHlwZShkYXRhLCAnYXR0cmlidXRlcycsICdvYmplY3QnLCB0cnVlKSkge1xuICAgIExvZ2dlci5sb2dFcnJvcignaXNBcGlSZXNwb25zZTogYXR0cmlidXRlcyBpcyBub3QgYW4gb2JqZWN0JywgdW5kZWZpbmVkLCB7IGRhdGEgfSk7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59O1xuIiwiaW1wb3J0IExvZ2dlciBmcm9tICdzcmMvYXBwbGljYXRpb24vbG9nZ2luZy9sb2dnZXInO1xuaW1wb3J0IHsgUmVzcG9uc2VQcm9kdWN0QXR0cmlidXRlcyB9IGZyb20gJ0BzcGlmZnktYWkvY29tbWVyY2UtYXBpLWNsaWVudCc7XG5pbXBvcnQgeyBoYXNQcm9wZXJ0eU9mVHlwZSB9IGZyb20gJy4uL3V0aWxzJztcblxuZXhwb3J0IGNvbnN0IGlzQXBpUHJvZHVjdFJlc3BvbnNlQXR0cmlidXRlcyA9IChcbiAgYXR0cmlidXRlczogdW5rbm93bixcbik6IGF0dHJpYnV0ZXMgaXMgUmVzcG9uc2VQcm9kdWN0QXR0cmlidXRlcyA9PiB7XG4gIGlmIChhdHRyaWJ1dGVzID09IG51bGwgfHwgdHlwZW9mIGF0dHJpYnV0ZXMgIT09ICdvYmplY3QnKSB7XG4gICAgTG9nZ2VyLmxvZ0Vycm9yKFxuICAgICAgJ2lzQXBpUHJvZHVjdFJlc3BvbnNlQXR0cmlidXRlczogYXR0cmlidXRlcyBpcyBudWxsIG9yIG5vdCBhbiBvYmplY3QnLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAge1xuICAgICAgICBhdHRyaWJ1dGVzLFxuICAgICAgfSxcbiAgICApO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmICghaGFzUHJvcGVydHlPZlR5cGUoYXR0cmlidXRlcywgJ2Rlc2NyaXB0aW9uJywgJ3N0cmluZycsIHRydWUpKSB7XG4gICAgTG9nZ2VyLmxvZ0Vycm9yKCdpc0FwaVByb2R1Y3RSZXNwb25zZUF0dHJpYnV0ZXM6IGRlc2NyaXB0aW9uIGlzIG5vdCBhIHN0cmluZycsIHVuZGVmaW5lZCwge1xuICAgICAgYXR0cmlidXRlcyxcbiAgICB9KTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoXG4gICAgIWhhc1Byb3BlcnR5T2ZUeXBlKGF0dHJpYnV0ZXMsICdpbWFnZV91cmwnLCAnc3RyaW5nJywgdHJ1ZSlcbiAgKSB7XG4gICAgTG9nZ2VyLmxvZ0Vycm9yKCdpc0FwaVByb2R1Y3RSZXNwb25zZUF0dHJpYnV0ZXM6IGltYWdlX3VybCBpcyBub3QgYSBzdHJpbmcnLCB1bmRlZmluZWQsIHtcbiAgICAgIGF0dHJpYnV0ZXMsXG4gICAgfSk7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKCFoYXNQcm9wZXJ0eU9mVHlwZShhdHRyaWJ1dGVzLCAndGl0bGUnLCAnc3RyaW5nJykpIHtcbiAgICBMb2dnZXIubG9nRXJyb3IoJ2lzQXBpUHJvZHVjdFJlc3BvbnNlQXR0cmlidXRlczogdGl0bGUgaXMgbm90IGEgc3RyaW5nJywgdW5kZWZpbmVkLCB7XG4gICAgICBhdHRyaWJ1dGVzLFxuICAgIH0pO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmICghaGFzUHJvcGVydHlPZlR5cGUoYXR0cmlidXRlcywgJ3VybCcsICdzdHJpbmcnKSkge1xuICAgIExvZ2dlci5sb2dFcnJvcignaXNBcGlQcm9kdWN0UmVzcG9uc2VBdHRyaWJ1dGVzOiB1cmwgaXMgbm90IGEgc3RyaW5nJywgdW5kZWZpbmVkLCB7XG4gICAgICBhdHRyaWJ1dGVzLFxuICAgIH0pO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmICghaGFzUHJvcGVydHlPZlR5cGUoYXR0cmlidXRlcywgJ29yaWdpbmFsX3ByaWNlJywgJ251bWJlcicsIHRydWUpKSB7XG4gICAgTG9nZ2VyLmxvZ0Vycm9yKCdpc0FwaVByb2R1Y3RSZXNwb25zZUF0dHJpYnV0ZXM6IG9yaWdpbmFsX3ByaWNlIGlzIG5vdCBhIG51bWJlcicsIHVuZGVmaW5lZCwge1xuICAgICAgYXR0cmlidXRlcyxcbiAgICB9KTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoIWhhc1Byb3BlcnR5T2ZUeXBlKGF0dHJpYnV0ZXMsICdzYWxlX3ByaWNlJywgJ251bWJlcicsIHRydWUpKSB7XG4gICAgTG9nZ2VyLmxvZ0Vycm9yKCdpc0FwaVByb2R1Y3RSZXNwb25zZUF0dHJpYnV0ZXM6IHNhbGVfcHJpY2UgaXMgbm90IGEgbnVtYmVyJywgdW5kZWZpbmVkLCB7XG4gICAgICBhdHRyaWJ1dGVzLFxuICAgIH0pO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmICghaGFzUHJvcGVydHlPZlR5cGUoYXR0cmlidXRlcywgJ2F2ZXJhZ2VfcmF0aW5nJywgJ251bWJlcicsIHRydWUpKSB7XG4gICAgTG9nZ2VyLmxvZ0Vycm9yKCdpc0FwaVByb2R1Y3RSZXNwb25zZUF0dHJpYnV0ZXM6IGF2ZXJhZ2VfcmF0aW5nIGlzIG5vdCBhIG51bWJlcicsIHVuZGVmaW5lZCwge1xuICAgICAgYXR0cmlidXRlcyxcbiAgICB9KTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoIWhhc1Byb3BlcnR5T2ZUeXBlKGF0dHJpYnV0ZXMsICdudW1iZXJfcmV2aWV3cycsICdudW1iZXInLCB0cnVlKSkge1xuICAgIExvZ2dlci5sb2dFcnJvcignaXNBcGlQcm9kdWN0UmVzcG9uc2VBdHRyaWJ1dGVzOiBudW1iZXJfcmV2aWV3cyBpcyBub3QgYSBudW1iZXInLCB1bmRlZmluZWQsIHtcbiAgICAgIGF0dHJpYnV0ZXMsXG4gICAgfSk7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKCFoYXNQcm9wZXJ0eU9mVHlwZShhdHRyaWJ1dGVzLCAnbWV0YWRhdGEnLCAnYXJyYXknLCB0cnVlKSkge1xuICAgIExvZ2dlci5sb2dFcnJvcignaXNBcGlQcm9kdWN0UmVzcG9uc2VBdHRyaWJ1dGVzOiBtZXRhZGF0YSBpcyBub3QgYW4gYXJyYXknLCB1bmRlZmluZWQsIHtcbiAgICAgIGF0dHJpYnV0ZXMsXG4gICAgfSk7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59O1xuIiwiaW1wb3J0IHsgQXBpUmV2aWV3UmljaEluZm9ybWF0aW9uIH0gZnJvbSAnc3JjL2FwcGxpY2F0aW9uL21vZGVscy9hcGkvcmVzcG9uc2VHZW5lcmljcyc7XG5cbmV4cG9ydCBjb25zdCBpc0FwaVJldmlld1JpY2hJbmZvcm1hdGlvbiA9IChcbiAgcmljaEluZm86IHVua25vd24sXG4pOiByaWNoSW5mbyBpcyBBcGlSZXZpZXdSaWNoSW5mb3JtYXRpb24gPT4ge1xuICBpZiAocmljaEluZm8gPT0gbnVsbCB8fCB0eXBlb2YgcmljaEluZm8gIT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKFxuICAgICdjb25zJyBpbiByaWNoSW5mbyAmJlxuICAgICghQXJyYXkuaXNBcnJheShyaWNoSW5mby5jb25zKSB8fCByaWNoSW5mby5jb25zLnNvbWUoKGNvbikgPT4gdHlwZW9mIGNvbiAhPT0gJ3N0cmluZycpKVxuICApIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoXG4gICAgJ3Byb3MnIGluIHJpY2hJbmZvICYmXG4gICAgKCFBcnJheS5pc0FycmF5KHJpY2hJbmZvLnByb3MpIHx8IHJpY2hJbmZvLnByb3Muc29tZSgocHJvKSA9PiB0eXBlb2YgcHJvICE9PSAnc3RyaW5nJykpXG4gICkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmICgncmV2aWV3X2RhdGUnIGluIHJpY2hJbmZvICYmIHR5cGVvZiByaWNoSW5mby5yZXZpZXdfZGF0ZSAhPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoJ3Jldmlld2VyX3RpdGxlJyBpbiByaWNoSW5mbyAmJiB0eXBlb2YgcmljaEluZm8ucmV2aWV3ZXJfdGl0bGUgIT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKCdwcm9kdWN0X2ZhbWlsaWFyaXR5JyBpbiByaWNoSW5mbyAmJiB0eXBlb2YgcmljaEluZm8ucHJvZHVjdF9mYW1pbGlhcml0eSAhPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn07XG4iLCJpbXBvcnQgeyBBcGlSZXZpZXdSZXNwb25zZUF0dHJpYnV0ZXMgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzL2FwaS9yZXNwb25zZUdlbmVyaWNzJztcbmltcG9ydCB7IGlzQXBpUmV2aWV3UmljaEluZm9ybWF0aW9uIH0gZnJvbSAnLi9pc0FwaVJldmlld1JpY2hJbmZvcm1hdGlvbic7XG5cbmV4cG9ydCBjb25zdCBpc0FwaVJldmlld1Jlc3BvbnNlQXR0cmlidXRlcyA9IChvYmo6IHVua25vd24pOiBvYmogaXMgQXBpUmV2aWV3UmVzcG9uc2VBdHRyaWJ1dGVzID0+IHtcbiAgaWYgKG9iaiA9PSBudWxsIHx8IHR5cGVvZiBvYmogIT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKCd0aXRsZScgaW4gb2JqICYmIG9iai50aXRsZSAhPSBudWxsICYmIHR5cGVvZiBvYmoudGl0bGUgIT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKCdyZXZpZXcnIGluIG9iaiAmJiB0eXBlb2Ygb2JqLnJldmlldyAhPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoJ3Jldmlld2VyJyBpbiBvYmogJiYgdHlwZW9mIG9iai5yZXZpZXdlciAhPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoJ3N0YXJzJyBpbiBvYmogJiYgdHlwZW9mIG9iai5zdGFycyAhPT0gJ251bWJlcicpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoJ3JpY2hfaW5mb3JtYXRpb24nIGluIG9iaiAmJiAhaXNBcGlSZXZpZXdSaWNoSW5mb3JtYXRpb24ob2JqLnJpY2hfaW5mb3JtYXRpb24pKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59O1xuIiwiaW1wb3J0IHsgU2VhcmNoQXR0cmlidXRlcyB9IGZyb20gJ0BzcGlmZnktYWkvY29tbWVyY2UtYXBpLWNsaWVudCc7XG5cbmV4cG9ydCBjb25zdCBpc0FwaVNlYXJjaEF0dHJpYnV0ZXMgPSAoZGF0YTogdW5rbm93bik6IGRhdGEgaXMgU2VhcmNoQXR0cmlidXRlcyA9PiB7XG4gIGlmIChkYXRhID09IG51bGwgfHwgdHlwZW9mIGRhdGEgIT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKCEoJ3NlYXJjaF90ZXJtJyBpbiBkYXRhKSB8fCB0eXBlb2YgZGF0YS5zZWFyY2hfdGVybSAhPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgaWYgKCdzZWxlY3RlZF9maWx0ZXJzJyBpbiBkYXRhICYmICFBcnJheS5pc0FycmF5KGRhdGEuc2VsZWN0ZWRfZmlsdGVycykpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoISFkYXRhLnNlYXJjaF90ZXJtKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBpZiAoXG4gICAgISgnc2VhcmNoX3Jlc3VsdHMnIGluIGRhdGEpIHx8XG4gICAgIUFycmF5LmlzQXJyYXkoZGF0YS5zZWFyY2hfcmVzdWx0cykgfHxcbiAgICAhZGF0YS5zZWFyY2hfcmVzdWx0cy5ldmVyeSgodikgPT4gdHlwZW9mIHYgPT09ICdzdHJpbmcnKVxuICApIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn07XG4iLCJpbXBvcnQge1xuICBTdWdnZXN0aW9uIGFzIENvbW1lcmNlU3VnZ2VzdGlvbixcbiAgU3VnZ2VzdGlvbkNhdGVnb3J5LFxufSBmcm9tICdAc3BpZmZ5LWFpL2NvbW1lcmNlLWFwaS1jbGllbnQnO1xuXG5leHBvcnQgY29uc3QgaXNTdWdnZXN0aW9uID0gKGRhdGE6IHVua25vd24pOiBkYXRhIGlzIENvbW1lcmNlU3VnZ2VzdGlvbiA9PiB7XG4gIGlmIChkYXRhID09IG51bGwgfHwgdHlwZW9mIGRhdGEgIT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKCEoJ2lkJyBpbiBkYXRhKSB8fCB0eXBlb2YgZGF0YS5pZCAhPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoXG4gICAgISgnY2F0ZWdvcnknIGluIGRhdGEpIHx8XG4gICAgdHlwZW9mIGRhdGEuY2F0ZWdvcnkgIT09ICdzdHJpbmcnIHx8XG4gICAgIU9iamVjdC52YWx1ZXMoU3VnZ2VzdGlvbkNhdGVnb3J5KS5pbmNsdWRlcyhkYXRhLmNhdGVnb3J5IGFzIFN1Z2dlc3Rpb25DYXRlZ29yeSlcbiAgKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKCEoJ2NyZWF0ZWRfYXQnIGluIGRhdGEpIHx8IHR5cGVvZiBkYXRhLmNyZWF0ZWRfYXQgIT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKCEoJ2NvbnRlbnQnIGluIGRhdGEpIHx8IHR5cGVvZiBkYXRhLmNvbnRlbnQgIT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKCdpc19hbnN3ZXInIGluIGRhdGEgJiYgZGF0YS5pc19hbnN3ZXIgIT0gbnVsbCAmJiB0eXBlb2YgZGF0YS5pc19hbnN3ZXIgIT09ICdib29sZWFuJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufTtcbiIsImltcG9ydCB7IFN1Z2dlc3Rpb25DbGlja2VkQXR0cmlidXRlcyB9IGZyb20gJ0BzcGlmZnktYWkvY29tbWVyY2UtYXBpLWNsaWVudCc7XG5cbmV4cG9ydCBjb25zdCBpc0FwaVN1Z2dlc3Rpb25DbGlja2VkQXR0cmlidXRlcyA9IChcbiAgZGF0YTogdW5rbm93bixcbik6IGRhdGEgaXMgU3VnZ2VzdGlvbkNsaWNrZWRBdHRyaWJ1dGVzID0+XG4gIGRhdGEgIT0gbnVsbCAmJlxuICB0eXBlb2YgZGF0YSA9PT0gJ29iamVjdCcgJiZcbiAgJ3N1Z2dlc3Rpb25faWQnIGluIGRhdGEgJiZcbiAgdHlwZW9mIGRhdGEuc3VnZ2VzdGlvbl9pZCA9PT0gJ3N0cmluZyc7XG4iLCJpbXBvcnQgeyBBcGlUZXh0UmVzcG9uc2VBdHRyaWJ1dGVzIH0gZnJvbSAnc3JjL2FwcGxpY2F0aW9uL21vZGVscy9hcGkvcmVzcG9uc2VHZW5lcmljcyc7XG5cbmV4cG9ydCBjb25zdCBpc0FwaVRleHRSZXNwb25zZUF0dHJpYnV0ZXMgPSAoXG4gIGF0dHJpYnV0ZXM6IHVua25vd24sXG4pOiBhdHRyaWJ1dGVzIGlzIEFwaVRleHRSZXNwb25zZUF0dHJpYnV0ZXMgPT5cbiAgdHlwZW9mIGF0dHJpYnV0ZXMgPT09ICdvYmplY3QnICYmXG4gIGF0dHJpYnV0ZXMgIT0gbnVsbCAmJlxuICAnY29udGVudCcgaW4gYXR0cmlidXRlcyAmJlxuICB0eXBlb2YgYXR0cmlidXRlcy5jb250ZW50ID09PSAnc3RyaW5nJztcbiIsImltcG9ydCB7IFVzZXJFdmVudCwgVXNlckV2ZW50Q2F0ZWdvcnkgfSBmcm9tICdAc3BpZmZ5LWFpL2NvbW1lcmNlLWFwaS1jbGllbnQnO1xuXG5leHBvcnQgY29uc3QgaXNBcGlVc2VyRXZlbnQgPSAoZGF0YTogdW5rbm93bik6IGRhdGEgaXMgVXNlckV2ZW50ID0+IHtcbiAgaWYgKGRhdGEgPT0gbnVsbCB8fCB0eXBlb2YgZGF0YSAhPT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoISgnZXZlbnRfaWQnIGluIGRhdGEpIHx8IHR5cGVvZiBkYXRhLmV2ZW50X2lkICE9PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmICghKCdjcmVhdGVkX2F0JyBpbiBkYXRhKSB8fCB0eXBlb2YgZGF0YS5jcmVhdGVkX2F0ICE9PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmIChcbiAgICAhKCdjYXRlZ29yeScgaW4gZGF0YSkgfHxcbiAgICB0eXBlb2YgZGF0YS5jYXRlZ29yeSAhPT0gJ3N0cmluZycgfHxcbiAgICAhT2JqZWN0LnZhbHVlcyhVc2VyRXZlbnRDYXRlZ29yeSkuaW5jbHVkZXMoZGF0YS5jYXRlZ29yeSBhcyBVc2VyRXZlbnRDYXRlZ29yeSlcbiAgKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59O1xuIiwiaW1wb3J0IHsgUHJvZHVjdFNlYXJjaFJlc3BvbnNlQXR0cmlidXRlcyB9IGZyb20gJ0BzcGlmZnktYWkvY29tbWVyY2UtYXBpLWNsaWVudCc7XG5cbmV4cG9ydCBjb25zdCBpc0FwaVByb2R1Y3RTZWFyY2hSZXNwb25zZUF0dHJpYnV0ZXMgPSAoXG4gIGF0dHJpYnV0ZXM6IHVua25vd24sXG4pOiBhdHRyaWJ1dGVzIGlzIFByb2R1Y3RTZWFyY2hSZXNwb25zZUF0dHJpYnV0ZXMgPT4ge1xuICBpZiAoYXR0cmlidXRlcyA9PSBudWxsIHx8IHR5cGVvZiBhdHRyaWJ1dGVzICE9PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmICgnZ2VuZXJhdGVkX3F1ZXJ5JyBpbiBhdHRyaWJ1dGVzICYmIHR5cGVvZiBhdHRyaWJ1dGVzLmdlbmVyYXRlZF9xdWVyeSAhPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoXG4gICAgJ3Byb2R1Y3RfY291bnQnIGluIGF0dHJpYnV0ZXMgJiZcbiAgICBhdHRyaWJ1dGVzLnByb2R1Y3RfY291bnQgIT0gbnVsbCAmJlxuICAgIHR5cGVvZiBhdHRyaWJ1dGVzLnByb2R1Y3RfY291bnQgIT09ICdudW1iZXInXG4gICkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFVQSxNQUFhLHFCQUNYLEtBQ0EsTUFDQSxNQUNBLGFBQXNCLFVBQ1Q7QUFDYixLQUFJO0FBQ0YsTUFBSSxPQUFPLFFBQVEsT0FBTyxRQUFRLFNBQ2hDLFFBQU87QUFJVCxNQUFJLEVBQUUsUUFBUSxLQUNaLFFBQU87RUFHVCxNQUFNLFFBQVMsSUFBVTtBQUd6QixNQUFJLGNBQWMsU0FBUyxLQUN6QixRQUFPO0FBR1QsTUFBSSxTQUFTLFFBQ1gsUUFBTyxNQUFNLFFBQVEsTUFBTTtBQUc3QixTQUFPLE9BQU8sVUFBVTtVQUNqQixLQUFLO0FBRVosU0FBTzs7Ozs7O0FDdENYLE1BQWEsc0JBQXNCLFNBQXlDO0FBQzFFLEtBQUksUUFBUSxRQUFRLE9BQU8sU0FBUyxTQUNsQyxRQUFPO0FBR1QsS0FBSSxFQUFFLGdCQUFnQixTQUFTLE9BQU8sS0FBSyxlQUFlLFNBQ3hELFFBQU87QUFHVCxLQUFJLHVCQUF1QixR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