@angular/fire 7.6.0 → 16.0.0-canary.2d48ab0

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 (479) hide show
  1. package/README.md +11 -4
  2. package/analytics/analytics.module.d.ts +2 -2
  3. package/analytics/firebase.d.ts +4 -1
  4. package/analytics/is-analytics-supported-factory.d.ts +4 -0
  5. package/analytics/screen-tracking.service.d.ts +3 -3
  6. package/app-check/app-check.d.ts +0 -6
  7. package/app-check/app-check.module.d.ts +3 -4
  8. package/app-check/firebase.d.ts +2 -1
  9. package/app-check/public_api.d.ts +2 -1
  10. package/auth/auth.module.d.ts +2 -2
  11. package/auth/firebase.d.ts +3 -1
  12. package/auth-guard/auth-guard.d.ts +6 -6
  13. package/compat/analytics/analytics.d.ts +1 -3
  14. package/compat/analytics/analytics.module.d.ts +1 -1
  15. package/compat/analytics/screen-tracking.service.d.ts +1 -1
  16. package/compat/analytics/user-tracking.service.d.ts +1 -1
  17. package/compat/auth/auth.d.ts +4 -4
  18. package/compat/auth-guard/auth-guard.d.ts +8 -6
  19. package/compat/database/database.d.ts +4 -4
  20. package/compat/database/interfaces.d.ts +14 -14
  21. package/compat/database/list/audit-trail.d.ts +1 -1
  22. package/compat/database/list/create-reference.d.ts +1 -1
  23. package/compat/database/list/data-operation.d.ts +1 -1
  24. package/compat/database/list/state-changes.d.ts +1 -1
  25. package/compat/database/object/create-reference.d.ts +1 -1
  26. package/compat/database/observable/fromRef.d.ts +1 -1
  27. package/compat/database/utils.d.ts +1 -1
  28. package/compat/firebase.app.module.d.ts +1 -1
  29. package/compat/firestore/collection/collection.d.ts +2 -2
  30. package/compat/firestore/collection-group/collection-group.d.ts +2 -2
  31. package/compat/firestore/document/document.d.ts +4 -4
  32. package/compat/firestore/firestore.d.ts +7 -7
  33. package/compat/firestore/interfaces.d.ts +19 -19
  34. package/compat/functions/functions.d.ts +3 -3
  35. package/compat/messaging/messaging.d.ts +2 -2
  36. package/compat/performance/performance.d.ts +2 -2
  37. package/compat/proxy.d.ts +8 -8
  38. package/compat/remote-config/interfaces.d.ts +1 -1
  39. package/compat/remote-config/remote-config.d.ts +15 -49
  40. package/compat/storage/interfaces.d.ts +8 -8
  41. package/compat/storage/observable/fromTask.d.ts +1 -2
  42. package/compat/storage/pipes/storageUrl.pipe.d.ts +1 -1
  43. package/compat/storage/ref.d.ts +1 -1
  44. package/compat/storage/storage.d.ts +3 -3
  45. package/compat/storage/task.d.ts +1 -1
  46. package/core.d.ts +8 -12
  47. package/database/database.module.d.ts +2 -2
  48. package/docs/app-check.md +1 -1
  49. package/docs/auth.md +6 -6
  50. package/docs/database.md +1 -1
  51. package/docs/deploy/getting-started.md +2 -2
  52. package/docs/firestore.md +1 -1
  53. package/docs/install-and-setup.md +1 -1
  54. package/docs/install-firebase-tools.md +78 -0
  55. package/docs/universal/cloud-functions.md +27 -6
  56. package/docs/universal/getting-started.md +9 -134
  57. package/{esm2015/analytics/analytics.js → esm2022/analytics/analytics.mjs} +1 -1
  58. package/esm2022/analytics/analytics.module.mjs +94 -0
  59. package/esm2022/analytics/firebase.mjs +17 -0
  60. package/esm2022/analytics/is-analytics-supported-factory.mjs +16 -0
  61. package/esm2022/analytics/overrides.mjs +3 -0
  62. package/esm2022/analytics/screen-tracking.service.mjs +148 -0
  63. package/esm2022/analytics/user-tracking.service.mjs +44 -0
  64. package/{esm2015/app/app.js → esm2022/app/app.mjs} +1 -1
  65. package/esm2022/app/app.module.mjs +85 -0
  66. package/esm2022/app-check/app-check.mjs +10 -0
  67. package/esm2022/app-check/app-check.module.mjs +78 -0
  68. package/esm2022/app-check/firebase.mjs +10 -0
  69. package/esm2022/app-check/public_api.mjs +5 -0
  70. package/{esm2015/auth/auth.js → esm2022/auth/auth.mjs} +1 -1
  71. package/esm2022/auth/auth.module.mjs +71 -0
  72. package/esm2022/auth/firebase.mjs +58 -0
  73. package/esm2022/auth-guard/auth-guard.mjs +53 -0
  74. package/{esm2015/auth-guard/auth-guard.module.js → esm2022/auth-guard/auth-guard.module.mjs} +7 -7
  75. package/esm2022/compat/analytics/analytics.mjs +160 -0
  76. package/esm2022/compat/analytics/analytics.module.mjs +35 -0
  77. package/esm2022/compat/analytics/screen-tracking.service.mjs +49 -0
  78. package/esm2022/compat/analytics/user-tracking.service.mjs +53 -0
  79. package/esm2022/compat/auth/auth.mjs +161 -0
  80. package/{esm2015/compat/auth/auth.module.js → esm2022/compat/auth/auth.module.mjs} +7 -7
  81. package/{esm2015/compat/auth/public_api.js → esm2022/compat/auth/public_api.mjs} +1 -1
  82. package/esm2022/compat/auth-guard/auth-guard.mjs +53 -0
  83. package/{esm2015/compat/auth-guard/auth-guard.module.js → esm2022/compat/auth-guard/auth-guard.module.mjs} +7 -7
  84. package/{esm2015/compat/cache.js → esm2022/compat/cache.mjs} +4 -3
  85. package/esm2022/compat/database/database.mjs +119 -0
  86. package/{esm2015/compat/database/database.module.js → esm2022/compat/database/database.module.mjs} +7 -7
  87. package/esm2022/compat/database/interfaces.mjs +2 -0
  88. package/{esm2015/compat/database/list/audit-trail.js → esm2022/compat/database/list/audit-trail.mjs} +3 -3
  89. package/esm2022/compat/database/list/changes.mjs +85 -0
  90. package/esm2022/compat/database/list/create-reference.mjs +44 -0
  91. package/{esm2015/compat/database/list/data-operation.js → esm2022/compat/database/list/data-operation.mjs} +1 -1
  92. package/{esm2015/compat/database/list/snapshot-changes.js → esm2022/compat/database/list/snapshot-changes.mjs} +1 -1
  93. package/{esm2015/compat/database/list/state-changes.js → esm2022/compat/database/list/state-changes.mjs} +2 -2
  94. package/{esm2015/compat/database/object/create-reference.js → esm2022/compat/database/object/create-reference.mjs} +2 -2
  95. package/{esm2015/compat/database/object/snapshot-changes.js → esm2022/compat/database/object/snapshot-changes.mjs} +1 -1
  96. package/esm2022/compat/database/observable/fromRef.mjs +48 -0
  97. package/{esm2015/compat/database/utils.js → esm2022/compat/database/utils.mjs} +1 -1
  98. package/{esm2015/compat/firebase.app.js → esm2022/compat/firebase.app.mjs} +1 -1
  99. package/esm2022/compat/firebase.app.module.mjs +71 -0
  100. package/esm2022/compat/firestore/collection/changes.mjs +108 -0
  101. package/esm2022/compat/firestore/collection/collection.mjs +123 -0
  102. package/esm2022/compat/firestore/collection-group/collection-group.mjs +86 -0
  103. package/esm2022/compat/firestore/document/document.mjs +87 -0
  104. package/esm2022/compat/firestore/firestore.mjs +257 -0
  105. package/{esm2015/compat/firestore/firestore.module.js → esm2022/compat/firestore/firestore.module.mjs} +7 -7
  106. package/esm2022/compat/firestore/interfaces.mjs +2 -0
  107. package/esm2022/compat/firestore/observable/fromRef.mjs +40 -0
  108. package/esm2022/compat/functions/functions.mjs +69 -0
  109. package/{esm2015/compat/functions/functions.module.js → esm2022/compat/functions/functions.module.mjs} +7 -7
  110. package/{esm2015/compat/functions/public_api.js → esm2022/compat/functions/public_api.mjs} +1 -1
  111. package/esm2022/compat/messaging/messaging.mjs +81 -0
  112. package/{esm2015/compat/messaging/messaging.module.js → esm2022/compat/messaging/messaging.module.mjs} +7 -7
  113. package/esm2022/compat/performance/performance.mjs +105 -0
  114. package/esm2022/compat/performance/performance.module.mjs +27 -0
  115. package/esm2022/compat/performance/performance.service.mjs +28 -0
  116. package/esm2022/compat/proxy.mjs +58 -0
  117. package/esm2022/compat/remote-config/remote-config.mjs +206 -0
  118. package/{esm2015/compat/remote-config/remote-config.module.js → esm2022/compat/remote-config/remote-config.module.mjs} +7 -7
  119. package/esm2022/compat/storage/observable/fromTask.mjs +36 -0
  120. package/esm2022/compat/storage/pipes/storageUrl.pipe.mjs +58 -0
  121. package/{esm2015/compat/storage/ref.js → esm2022/compat/storage/ref.mjs} +3 -3
  122. package/esm2022/compat/storage/storage.mjs +95 -0
  123. package/esm2022/compat/storage/storage.module.mjs +22 -0
  124. package/{esm2015/compat/storage/task.js → esm2022/compat/storage/task.mjs} +2 -2
  125. package/esm2022/core.mjs +43 -0
  126. package/{esm2015/database/database.js → esm2022/database/database.mjs} +1 -1
  127. package/esm2022/database/database.module.mjs +74 -0
  128. package/esm2022/firestore/firebase.mjs +73 -0
  129. package/{esm2015/firestore/firestore.js → esm2022/firestore/firestore.mjs} +1 -1
  130. package/esm2022/firestore/firestore.module.mjs +74 -0
  131. package/esm2022/firestore/lite/firebase.mjs +48 -0
  132. package/{esm2015/firestore/lite/lite.js → esm2022/firestore/lite/lite.mjs} +1 -1
  133. package/esm2022/firestore/lite/lite.module.mjs +73 -0
  134. package/esm2022/firestore/lite/rxfire.mjs +12 -0
  135. package/esm2022/firestore/rxfire.mjs +15 -0
  136. package/{esm2015/functions/functions.js → esm2022/functions/functions.mjs} +1 -1
  137. package/esm2022/functions/functions.module.mjs +74 -0
  138. package/esm2022/messaging/is-messaging-supported-factory.mjs +16 -0
  139. package/{esm2015/messaging/messaging.js → esm2022/messaging/messaging.mjs} +1 -1
  140. package/esm2022/messaging/messaging.module.mjs +86 -0
  141. package/esm2022/messaging/overrides.mjs +3 -0
  142. package/{esm2015/performance/performance.js → esm2022/performance/performance.mjs} +1 -1
  143. package/esm2022/performance/performance.module.mjs +81 -0
  144. package/esm2022/remote-config/is-remote-config-supported-factory.mjs +16 -0
  145. package/esm2022/remote-config/overrides.mjs +3 -0
  146. package/{esm2015/remote-config/remote-config.js → esm2022/remote-config/remote-config.mjs} +1 -1
  147. package/esm2022/remote-config/remote-config.module.mjs +86 -0
  148. package/{esm2015/storage/storage.js → esm2022/storage/storage.mjs} +1 -1
  149. package/esm2022/storage/storage.module.mjs +74 -0
  150. package/esm2022/zones.mjs +194 -0
  151. package/{fesm2015/angular-fire-analytics.js → fesm2022/angular-fire-analytics.mjs} +68 -41
  152. package/fesm2022/angular-fire-analytics.mjs.map +1 -0
  153. package/{fesm2015/angular-fire-app-check.js → fesm2022/angular-fire-app-check.mjs} +18 -25
  154. package/fesm2022/angular-fire-app-check.mjs.map +1 -0
  155. package/{fesm2015/angular-fire-app.js → fesm2022/angular-fire-app.mjs} +10 -9
  156. package/fesm2022/angular-fire-app.mjs.map +1 -0
  157. package/{fesm2015/angular-fire-auth-guard.js → fesm2022/angular-fire-auth-guard.mjs} +31 -27
  158. package/fesm2022/angular-fire-auth-guard.mjs.map +1 -0
  159. package/{fesm2015/angular-fire-auth.js → fesm2022/angular-fire-auth.mjs} +14 -13
  160. package/fesm2022/angular-fire-auth.mjs.map +1 -0
  161. package/{fesm2015/angular-fire-compat-analytics.js → fesm2022/angular-fire-compat-analytics.mjs} +43 -41
  162. package/fesm2022/angular-fire-compat-analytics.mjs.map +1 -0
  163. package/{fesm2015/angular-fire-compat-auth-guard.js → fesm2022/angular-fire-compat-auth-guard.mjs} +30 -26
  164. package/fesm2022/angular-fire-compat-auth-guard.mjs.map +1 -0
  165. package/{fesm2015/angular-fire-compat-auth.js → fesm2022/angular-fire-compat-auth.mjs} +38 -16
  166. package/fesm2022/angular-fire-compat-auth.mjs.map +1 -0
  167. package/{fesm2015/angular-fire-compat-database.js → fesm2022/angular-fire-compat-database.mjs} +138 -132
  168. package/fesm2022/angular-fire-compat-database.mjs.map +1 -0
  169. package/{fesm2015/angular-fire-compat-firestore.js → fesm2022/angular-fire-compat-firestore.mjs} +119 -98
  170. package/fesm2022/angular-fire-compat-firestore.mjs.map +1 -0
  171. package/{fesm2015/angular-fire-compat-functions.js → fesm2022/angular-fire-compat-functions.mjs} +13 -12
  172. package/fesm2022/angular-fire-compat-functions.mjs.map +1 -0
  173. package/{fesm2015/angular-fire-compat-messaging.js → fesm2022/angular-fire-compat-messaging.mjs} +25 -19
  174. package/fesm2022/angular-fire-compat-messaging.mjs.map +1 -0
  175. package/{fesm2015/angular-fire-compat-performance.js → fesm2022/angular-fire-compat-performance.mjs} +29 -34
  176. package/fesm2022/angular-fire-compat-performance.mjs.map +1 -0
  177. package/{fesm2015/angular-fire-compat-remote-config.js → fesm2022/angular-fire-compat-remote-config.mjs} +35 -22
  178. package/fesm2022/angular-fire-compat-remote-config.mjs.map +1 -0
  179. package/{fesm2015/angular-fire-compat-storage.js → fesm2022/angular-fire-compat-storage.mjs} +30 -23
  180. package/fesm2022/angular-fire-compat-storage.mjs.map +1 -0
  181. package/{fesm2015/angular-fire-compat.js → fesm2022/angular-fire-compat.mjs} +25 -25
  182. package/fesm2022/angular-fire-compat.mjs.map +1 -0
  183. package/{fesm2015/angular-fire-database.js → fesm2022/angular-fire-database.mjs} +11 -12
  184. package/fesm2022/angular-fire-database.mjs.map +1 -0
  185. package/{fesm2015/angular-fire-firestore-lite.js → fesm2022/angular-fire-firestore-lite.mjs} +25 -15
  186. package/fesm2022/angular-fire-firestore-lite.mjs.map +1 -0
  187. package/fesm2022/angular-fire-firestore.mjs +180 -0
  188. package/fesm2022/angular-fire-firestore.mjs.map +1 -0
  189. package/{fesm2015/angular-fire-functions.js → fesm2022/angular-fire-functions.mjs} +12 -13
  190. package/fesm2022/angular-fire-functions.mjs.map +1 -0
  191. package/{fesm2015/angular-fire-messaging.js → fesm2022/angular-fire-messaging.mjs} +33 -19
  192. package/fesm2022/angular-fire-messaging.mjs.map +1 -0
  193. package/{fesm2015/angular-fire-performance.js → fesm2022/angular-fire-performance.mjs} +11 -11
  194. package/fesm2022/angular-fire-performance.mjs.map +1 -0
  195. package/{fesm2015/angular-fire-remote-config.js → fesm2022/angular-fire-remote-config.mjs} +34 -20
  196. package/fesm2022/angular-fire-remote-config.mjs.map +1 -0
  197. package/{fesm2015/angular-fire-storage.js → fesm2022/angular-fire-storage.mjs} +10 -11
  198. package/fesm2022/angular-fire-storage.mjs.map +1 -0
  199. package/{fesm2015/angular-fire.js → fesm2022/angular-fire.mjs} +33 -58
  200. package/fesm2022/angular-fire.mjs.map +1 -0
  201. package/firestore/firebase.d.ts +21 -1
  202. package/firestore/firestore.module.d.ts +2 -2
  203. package/firestore/lite/firebase.d.ts +10 -1
  204. package/firestore/lite/lite.module.d.ts +2 -2
  205. package/firestore/lite/rxfire.d.ts +3 -1
  206. package/firestore/rxfire.d.ts +3 -1
  207. package/functions/functions.module.d.ts +2 -2
  208. package/messaging/is-messaging-supported-factory.d.ts +4 -0
  209. package/messaging/messaging.module.d.ts +2 -2
  210. package/package.json +169 -19
  211. package/performance/performance.module.d.ts +2 -2
  212. package/remote-config/is-remote-config-supported-factory.d.ts +4 -0
  213. package/remote-config/remote-config.module.d.ts +2 -2
  214. package/schematics/add/index.js +2 -2
  215. package/schematics/common.js +9 -5
  216. package/schematics/deploy/actions.js +69 -69
  217. package/schematics/deploy/builder.js +7 -7
  218. package/schematics/firebaseTools.js +9 -5
  219. package/schematics/setup/index.js +27 -27
  220. package/schematics/setup/prompts.js +22 -18
  221. package/schematics/update/index.js +1 -1
  222. package/schematics/update/v7/index.js +7 -7
  223. package/schematics/utils.js +34 -34
  224. package/storage/storage.module.d.ts +2 -2
  225. package/analytics/package.json +0 -11
  226. package/app/package.json +0 -11
  227. package/app-check/package.json +0 -11
  228. package/auth/package.json +0 -11
  229. package/auth-guard/package.json +0 -11
  230. package/bundles/angular-fire-analytics.umd.js +0 -673
  231. package/bundles/angular-fire-analytics.umd.js.map +0 -1
  232. package/bundles/angular-fire-app-check.umd.js +0 -465
  233. package/bundles/angular-fire-app-check.umd.js.map +0 -1
  234. package/bundles/angular-fire-app.umd.js +0 -477
  235. package/bundles/angular-fire-app.umd.js.map +0 -1
  236. package/bundles/angular-fire-auth-guard.umd.js +0 -109
  237. package/bundles/angular-fire-auth-guard.umd.js.map +0 -1
  238. package/bundles/angular-fire-auth.umd.js +0 -557
  239. package/bundles/angular-fire-auth.umd.js.map +0 -1
  240. package/bundles/angular-fire-compat-analytics.umd.js +0 -672
  241. package/bundles/angular-fire-compat-analytics.umd.js.map +0 -1
  242. package/bundles/angular-fire-compat-auth-guard.umd.js +0 -112
  243. package/bundles/angular-fire-compat-auth-guard.umd.js.map +0 -1
  244. package/bundles/angular-fire-compat-auth.umd.js +0 -559
  245. package/bundles/angular-fire-compat-auth.umd.js.map +0 -1
  246. package/bundles/angular-fire-compat-database.umd.js +0 -799
  247. package/bundles/angular-fire-compat-database.umd.js.map +0 -1
  248. package/bundles/angular-fire-compat-firestore.umd.js +0 -1073
  249. package/bundles/angular-fire-compat-firestore.umd.js.map +0 -1
  250. package/bundles/angular-fire-compat-functions.umd.js +0 -443
  251. package/bundles/angular-fire-compat-functions.umd.js.map +0 -1
  252. package/bundles/angular-fire-compat-messaging.umd.js +0 -465
  253. package/bundles/angular-fire-compat-messaging.umd.js.map +0 -1
  254. package/bundles/angular-fire-compat-performance.umd.js +0 -212
  255. package/bundles/angular-fire-compat-performance.umd.js.map +0 -1
  256. package/bundles/angular-fire-compat-remote-config.umd.js +0 -605
  257. package/bundles/angular-fire-compat-remote-config.umd.js.map +0 -1
  258. package/bundles/angular-fire-compat-storage.umd.js +0 -598
  259. package/bundles/angular-fire-compat-storage.umd.js.map +0 -1
  260. package/bundles/angular-fire-compat.umd.js +0 -535
  261. package/bundles/angular-fire-compat.umd.js.map +0 -1
  262. package/bundles/angular-fire-database.umd.js +0 -557
  263. package/bundles/angular-fire-database.umd.js.map +0 -1
  264. package/bundles/angular-fire-firestore-lite.umd.js +0 -531
  265. package/bundles/angular-fire-firestore-lite.umd.js.map +0 -1
  266. package/bundles/angular-fire-firestore.umd.js +0 -565
  267. package/bundles/angular-fire-firestore.umd.js.map +0 -1
  268. package/bundles/angular-fire-functions.umd.js +0 -461
  269. package/bundles/angular-fire-functions.umd.js.map +0 -1
  270. package/bundles/angular-fire-messaging.umd.js +0 -473
  271. package/bundles/angular-fire-messaging.umd.js.map +0 -1
  272. package/bundles/angular-fire-performance.umd.js +0 -473
  273. package/bundles/angular-fire-performance.umd.js.map +0 -1
  274. package/bundles/angular-fire-remote-config.umd.js +0 -499
  275. package/bundles/angular-fire-remote-config.umd.js.map +0 -1
  276. package/bundles/angular-fire-storage.umd.js +0 -485
  277. package/bundles/angular-fire-storage.umd.js.map +0 -1
  278. package/bundles/angular-fire.umd.js +0 -308
  279. package/bundles/angular-fire.umd.js.map +0 -1
  280. package/compat/analytics/package.json +0 -11
  281. package/compat/auth/package.json +0 -11
  282. package/compat/auth-guard/package.json +0 -11
  283. package/compat/database/package.json +0 -11
  284. package/compat/firestore/package.json +0 -11
  285. package/compat/functions/package.json +0 -11
  286. package/compat/messaging/package.json +0 -11
  287. package/compat/package.json +0 -11
  288. package/compat/performance/package.json +0 -11
  289. package/compat/remote-config/package.json +0 -11
  290. package/compat/storage/package.json +0 -11
  291. package/database/package.json +0 -11
  292. package/esm2015/analytics/analytics.module.js +0 -93
  293. package/esm2015/analytics/firebase.js +0 -14
  294. package/esm2015/analytics/overrides.js +0 -3
  295. package/esm2015/analytics/screen-tracking.service.js +0 -139
  296. package/esm2015/analytics/user-tracking.service.js +0 -43
  297. package/esm2015/app/app.module.js +0 -84
  298. package/esm2015/app-check/app-check.js +0 -16
  299. package/esm2015/app-check/app-check.module.js +0 -81
  300. package/esm2015/app-check/firebase.js +0 -9
  301. package/esm2015/app-check/public_api.js +0 -4
  302. package/esm2015/auth/auth.module.js +0 -71
  303. package/esm2015/auth/firebase.js +0 -56
  304. package/esm2015/auth-guard/auth-guard.js +0 -49
  305. package/esm2015/compat/analytics/analytics.js +0 -163
  306. package/esm2015/compat/analytics/analytics.module.js +0 -32
  307. package/esm2015/compat/analytics/screen-tracking.service.js +0 -49
  308. package/esm2015/compat/analytics/user-tracking.service.js +0 -52
  309. package/esm2015/compat/auth/auth.js +0 -139
  310. package/esm2015/compat/auth-guard/auth-guard.js +0 -49
  311. package/esm2015/compat/database/database.js +0 -117
  312. package/esm2015/compat/database/interfaces.js +0 -2
  313. package/esm2015/compat/database/list/changes.js +0 -85
  314. package/esm2015/compat/database/list/create-reference.js +0 -41
  315. package/esm2015/compat/database/observable/fromRef.js +0 -47
  316. package/esm2015/compat/firebase.app.module.js +0 -69
  317. package/esm2015/compat/firestore/collection/changes.js +0 -107
  318. package/esm2015/compat/firestore/collection/collection.js +0 -117
  319. package/esm2015/compat/firestore/collection-group/collection-group.js +0 -81
  320. package/esm2015/compat/firestore/document/document.js +0 -82
  321. package/esm2015/compat/firestore/firestore.js +0 -254
  322. package/esm2015/compat/firestore/interfaces.js +0 -2
  323. package/esm2015/compat/firestore/observable/fromRef.js +0 -39
  324. package/esm2015/compat/functions/functions.js +0 -68
  325. package/esm2015/compat/messaging/messaging.js +0 -75
  326. package/esm2015/compat/performance/performance.js +0 -110
  327. package/esm2015/compat/performance/performance.module.js +0 -28
  328. package/esm2015/compat/performance/performance.service.js +0 -27
  329. package/esm2015/compat/proxy.js +0 -61
  330. package/esm2015/compat/remote-config/remote-config.js +0 -193
  331. package/esm2015/compat/storage/observable/fromTask.js +0 -34
  332. package/esm2015/compat/storage/pipes/storageUrl.pipe.js +0 -54
  333. package/esm2015/compat/storage/storage.js +0 -94
  334. package/esm2015/compat/storage/storage.module.js +0 -22
  335. package/esm2015/core.js +0 -79
  336. package/esm2015/database/database.module.js +0 -74
  337. package/esm2015/firestore/firebase.js +0 -53
  338. package/esm2015/firestore/firestore.module.js +0 -74
  339. package/esm2015/firestore/lite/firebase.js +0 -39
  340. package/esm2015/firestore/lite/lite.module.js +0 -74
  341. package/esm2015/firestore/lite/rxfire.js +0 -10
  342. package/esm2015/firestore/rxfire.js +0 -13
  343. package/esm2015/functions/functions.module.js +0 -74
  344. package/esm2015/messaging/messaging.module.js +0 -85
  345. package/esm2015/messaging/overrides.js +0 -3
  346. package/esm2015/performance/performance.module.js +0 -81
  347. package/esm2015/remote-config/overrides.js +0 -3
  348. package/esm2015/remote-config/remote-config.module.js +0 -85
  349. package/esm2015/storage/storage.module.js +0 -74
  350. package/esm2015/zones.js +0 -183
  351. package/fesm2015/angular-fire-analytics.js.map +0 -1
  352. package/fesm2015/angular-fire-app-check.js.map +0 -1
  353. package/fesm2015/angular-fire-app.js.map +0 -1
  354. package/fesm2015/angular-fire-auth-guard.js.map +0 -1
  355. package/fesm2015/angular-fire-auth.js.map +0 -1
  356. package/fesm2015/angular-fire-compat-analytics.js.map +0 -1
  357. package/fesm2015/angular-fire-compat-auth-guard.js.map +0 -1
  358. package/fesm2015/angular-fire-compat-auth.js.map +0 -1
  359. package/fesm2015/angular-fire-compat-database.js.map +0 -1
  360. package/fesm2015/angular-fire-compat-firestore.js.map +0 -1
  361. package/fesm2015/angular-fire-compat-functions.js.map +0 -1
  362. package/fesm2015/angular-fire-compat-messaging.js.map +0 -1
  363. package/fesm2015/angular-fire-compat-performance.js.map +0 -1
  364. package/fesm2015/angular-fire-compat-remote-config.js.map +0 -1
  365. package/fesm2015/angular-fire-compat-storage.js.map +0 -1
  366. package/fesm2015/angular-fire-compat.js.map +0 -1
  367. package/fesm2015/angular-fire-database.js.map +0 -1
  368. package/fesm2015/angular-fire-firestore-lite.js.map +0 -1
  369. package/fesm2015/angular-fire-firestore.js +0 -159
  370. package/fesm2015/angular-fire-firestore.js.map +0 -1
  371. package/fesm2015/angular-fire-functions.js.map +0 -1
  372. package/fesm2015/angular-fire-messaging.js.map +0 -1
  373. package/fesm2015/angular-fire-performance.js.map +0 -1
  374. package/fesm2015/angular-fire-remote-config.js.map +0 -1
  375. package/fesm2015/angular-fire-storage.js.map +0 -1
  376. package/fesm2015/angular-fire.js.map +0 -1
  377. package/firestore/lite/package.json +0 -11
  378. package/firestore/package.json +0 -11
  379. package/firestore-protos.js +0 -4
  380. package/functions/package.json +0 -11
  381. package/messaging/package.json +0 -11
  382. package/performance/package.json +0 -11
  383. package/remote-config/package.json +0 -11
  384. package/storage/package.json +0 -11
  385. /package/analytics/{angular-fire-analytics.d.ts → index.d.ts} +0 -0
  386. /package/app/{angular-fire-app.d.ts → index.d.ts} +0 -0
  387. /package/app-check/{angular-fire-app-check.d.ts → index.d.ts} +0 -0
  388. /package/auth/{angular-fire-auth.d.ts → index.d.ts} +0 -0
  389. /package/auth-guard/{angular-fire-auth-guard.d.ts → index.d.ts} +0 -0
  390. /package/compat/analytics/{angular-fire-compat-analytics.d.ts → index.d.ts} +0 -0
  391. /package/compat/auth/{angular-fire-compat-auth.d.ts → index.d.ts} +0 -0
  392. /package/compat/auth-guard/{angular-fire-compat-auth-guard.d.ts → index.d.ts} +0 -0
  393. /package/compat/database/{angular-fire-compat-database.d.ts → index.d.ts} +0 -0
  394. /package/compat/firestore/{angular-fire-compat-firestore.d.ts → index.d.ts} +0 -0
  395. /package/compat/functions/{angular-fire-compat-functions.d.ts → index.d.ts} +0 -0
  396. /package/compat/{angular-fire-compat.d.ts → index.d.ts} +0 -0
  397. /package/compat/messaging/{angular-fire-compat-messaging.d.ts → index.d.ts} +0 -0
  398. /package/compat/performance/{angular-fire-compat-performance.d.ts → index.d.ts} +0 -0
  399. /package/compat/remote-config/{angular-fire-compat-remote-config.d.ts → index.d.ts} +0 -0
  400. /package/compat/storage/{angular-fire-compat-storage.d.ts → index.d.ts} +0 -0
  401. /package/database/{angular-fire-database.d.ts → index.d.ts} +0 -0
  402. /package/{esm2015/analytics/angular-fire-analytics.js → esm2022/analytics/angular-fire-analytics.mjs} +0 -0
  403. /package/{esm2015/analytics/public_api.js → esm2022/analytics/public_api.mjs} +0 -0
  404. /package/{esm2015/angular-fire.js → esm2022/angular-fire.mjs} +0 -0
  405. /package/{esm2015/app/angular-fire-app.js → esm2022/app/angular-fire-app.mjs} +0 -0
  406. /package/{esm2015/app/firebase.js → esm2022/app/firebase.mjs} +0 -0
  407. /package/{esm2015/app/public_api.js → esm2022/app/public_api.mjs} +0 -0
  408. /package/{esm2015/app-check/angular-fire-app-check.js → esm2022/app-check/angular-fire-app-check.mjs} +0 -0
  409. /package/{esm2015/auth/angular-fire-auth.js → esm2022/auth/angular-fire-auth.mjs} +0 -0
  410. /package/{esm2015/auth/public_api.js → esm2022/auth/public_api.mjs} +0 -0
  411. /package/{esm2015/auth/rxfire.js → esm2022/auth/rxfire.mjs} +0 -0
  412. /package/{esm2015/auth-guard/angular-fire-auth-guard.js → esm2022/auth-guard/angular-fire-auth-guard.mjs} +0 -0
  413. /package/{esm2015/auth-guard/public_api.js → esm2022/auth-guard/public_api.mjs} +0 -0
  414. /package/{esm2015/compat/analytics/angular-fire-compat-analytics.js → esm2022/compat/analytics/angular-fire-compat-analytics.mjs} +0 -0
  415. /package/{esm2015/compat/analytics/base.js → esm2022/compat/analytics/base.mjs} +0 -0
  416. /package/{esm2015/compat/analytics/public_api.js → esm2022/compat/analytics/public_api.mjs} +0 -0
  417. /package/{esm2015/compat/angular-fire-compat.js → esm2022/compat/angular-fire-compat.mjs} +0 -0
  418. /package/{esm2015/compat/auth/angular-fire-compat-auth.js → esm2022/compat/auth/angular-fire-compat-auth.mjs} +0 -0
  419. /package/{esm2015/compat/auth/base.js → esm2022/compat/auth/base.mjs} +0 -0
  420. /package/{esm2015/compat/auth-guard/angular-fire-compat-auth-guard.js → esm2022/compat/auth-guard/angular-fire-compat-auth-guard.mjs} +0 -0
  421. /package/{esm2015/compat/auth-guard/public_api.js → esm2022/compat/auth-guard/public_api.mjs} +0 -0
  422. /package/{esm2015/compat/database/angular-fire-compat-database.js → esm2022/compat/database/angular-fire-compat-database.mjs} +0 -0
  423. /package/{esm2015/compat/database/list/remove.js → esm2022/compat/database/list/remove.mjs} +0 -0
  424. /package/{esm2015/compat/database/list/utils.js → esm2022/compat/database/list/utils.mjs} +0 -0
  425. /package/{esm2015/compat/database/public_api.js → esm2022/compat/database/public_api.mjs} +0 -0
  426. /package/{esm2015/compat/firestore/angular-fire-compat-firestore.js → esm2022/compat/firestore/angular-fire-compat-firestore.mjs} +0 -0
  427. /package/{esm2015/compat/firestore/public_api.js → esm2022/compat/firestore/public_api.mjs} +0 -0
  428. /package/{esm2015/compat/functions/angular-fire-compat-functions.js → esm2022/compat/functions/angular-fire-compat-functions.mjs} +0 -0
  429. /package/{esm2015/compat/functions/base.js → esm2022/compat/functions/base.mjs} +0 -0
  430. /package/{esm2015/compat/messaging/angular-fire-compat-messaging.js → esm2022/compat/messaging/angular-fire-compat-messaging.mjs} +0 -0
  431. /package/{esm2015/compat/messaging/base.js → esm2022/compat/messaging/base.mjs} +0 -0
  432. /package/{esm2015/compat/messaging/public_api.js → esm2022/compat/messaging/public_api.mjs} +0 -0
  433. /package/{esm2015/compat/performance/angular-fire-compat-performance.js → esm2022/compat/performance/angular-fire-compat-performance.mjs} +0 -0
  434. /package/{esm2015/compat/performance/base.js → esm2022/compat/performance/base.mjs} +0 -0
  435. /package/{esm2015/compat/performance/public_api.js → esm2022/compat/performance/public_api.mjs} +0 -0
  436. /package/{esm2015/compat/public_api.js → esm2022/compat/public_api.mjs} +0 -0
  437. /package/{esm2015/compat/remote-config/angular-fire-compat-remote-config.js → esm2022/compat/remote-config/angular-fire-compat-remote-config.mjs} +0 -0
  438. /package/{esm2015/compat/remote-config/base.js → esm2022/compat/remote-config/base.mjs} +0 -0
  439. /package/{esm2015/compat/remote-config/interfaces.js → esm2022/compat/remote-config/interfaces.mjs} +0 -0
  440. /package/{esm2015/compat/remote-config/public_api.js → esm2022/compat/remote-config/public_api.mjs} +0 -0
  441. /package/{esm2015/compat/storage/angular-fire-compat-storage.js → esm2022/compat/storage/angular-fire-compat-storage.mjs} +0 -0
  442. /package/{esm2015/compat/storage/interfaces.js → esm2022/compat/storage/interfaces.mjs} +0 -0
  443. /package/{esm2015/compat/storage/public_api.js → esm2022/compat/storage/public_api.mjs} +0 -0
  444. /package/{esm2015/database/angular-fire-database.js → esm2022/database/angular-fire-database.mjs} +0 -0
  445. /package/{esm2015/database/firebase.js → esm2022/database/firebase.mjs} +0 -0
  446. /package/{esm2015/database/public_api.js → esm2022/database/public_api.mjs} +0 -0
  447. /package/{esm2015/database/rxfire.js → esm2022/database/rxfire.mjs} +0 -0
  448. /package/{esm2015/firestore/angular-fire-firestore.js → esm2022/firestore/angular-fire-firestore.mjs} +0 -0
  449. /package/{esm2015/firestore/lite/angular-fire-firestore-lite.js → esm2022/firestore/lite/angular-fire-firestore-lite.mjs} +0 -0
  450. /package/{esm2015/firestore/lite/public_api.js → esm2022/firestore/lite/public_api.mjs} +0 -0
  451. /package/{esm2015/firestore/public_api.js → esm2022/firestore/public_api.mjs} +0 -0
  452. /package/{esm2015/functions/angular-fire-functions.js → esm2022/functions/angular-fire-functions.mjs} +0 -0
  453. /package/{esm2015/functions/firebase.js → esm2022/functions/firebase.mjs} +0 -0
  454. /package/{esm2015/functions/public_api.js → esm2022/functions/public_api.mjs} +0 -0
  455. /package/{esm2015/functions/rxfire.js → esm2022/functions/rxfire.mjs} +0 -0
  456. /package/{esm2015/messaging/angular-fire-messaging.js → esm2022/messaging/angular-fire-messaging.mjs} +0 -0
  457. /package/{esm2015/messaging/firebase.js → esm2022/messaging/firebase.mjs} +0 -0
  458. /package/{esm2015/messaging/public_api.js → esm2022/messaging/public_api.mjs} +0 -0
  459. /package/{esm2015/performance/angular-fire-performance.js → esm2022/performance/angular-fire-performance.mjs} +0 -0
  460. /package/{esm2015/performance/firebase.js → esm2022/performance/firebase.mjs} +0 -0
  461. /package/{esm2015/performance/public_api.js → esm2022/performance/public_api.mjs} +0 -0
  462. /package/{esm2015/performance/rxfire.js → esm2022/performance/rxfire.mjs} +0 -0
  463. /package/{esm2015/public_api.js → esm2022/public_api.mjs} +0 -0
  464. /package/{esm2015/remote-config/angular-fire-remote-config.js → esm2022/remote-config/angular-fire-remote-config.mjs} +0 -0
  465. /package/{esm2015/remote-config/firebase.js → esm2022/remote-config/firebase.mjs} +0 -0
  466. /package/{esm2015/remote-config/public_api.js → esm2022/remote-config/public_api.mjs} +0 -0
  467. /package/{esm2015/remote-config/rxfire.js → esm2022/remote-config/rxfire.mjs} +0 -0
  468. /package/{esm2015/storage/angular-fire-storage.js → esm2022/storage/angular-fire-storage.mjs} +0 -0
  469. /package/{esm2015/storage/firebase.js → esm2022/storage/firebase.mjs} +0 -0
  470. /package/{esm2015/storage/public_api.js → esm2022/storage/public_api.mjs} +0 -0
  471. /package/{esm2015/storage/rxfire.js → esm2022/storage/rxfire.mjs} +0 -0
  472. /package/firestore/{angular-fire-firestore.d.ts → index.d.ts} +0 -0
  473. /package/firestore/lite/{angular-fire-firestore-lite.d.ts → index.d.ts} +0 -0
  474. /package/functions/{angular-fire-functions.d.ts → index.d.ts} +0 -0
  475. /package/{angular-fire.d.ts → index.d.ts} +0 -0
  476. /package/messaging/{angular-fire-messaging.d.ts → index.d.ts} +0 -0
  477. /package/performance/{angular-fire-performance.d.ts → index.d.ts} +0 -0
  478. /package/remote-config/{angular-fire-remote-config.d.ts → index.d.ts} +0 -0
  479. /package/storage/{angular-fire-storage.d.ts → index.d.ts} +0 -0
@@ -0,0 +1,86 @@
1
+ import { APP_INITIALIZER, InjectionToken, Injector, NgModule, NgZone, Optional } from '@angular/core';
2
+ import { VERSION, ɵAngularFireSchedulers, ɵgetDefaultInstanceOf } from '@angular/fire';
3
+ import { FirebaseApp, FirebaseApps } from '@angular/fire/app';
4
+ import { registerVersion } from 'firebase/app';
5
+ import { isRemoteConfigSupportedFactory } from './is-remote-config-supported-factory';
6
+ import { REMOTE_CONFIG_PROVIDER_NAME, RemoteConfig, RemoteConfigInstances } from './remote-config';
7
+ import * as i0 from "@angular/core";
8
+ export const PROVIDED_REMOTE_CONFIG_INSTANCES = new InjectionToken('angularfire2.remote-config-instances');
9
+ export function defaultRemoteConfigInstanceFactory(provided, defaultApp) {
10
+ if (!isRemoteConfigSupportedFactory.sync()) {
11
+ return null;
12
+ }
13
+ const defaultRemoteConfig = ɵgetDefaultInstanceOf(REMOTE_CONFIG_PROVIDER_NAME, provided, defaultApp);
14
+ return defaultRemoteConfig && new RemoteConfig(defaultRemoteConfig);
15
+ }
16
+ export function remoteConfigInstanceFactory(fn) {
17
+ return (zone, injector) => {
18
+ if (!isRemoteConfigSupportedFactory.sync()) {
19
+ return null;
20
+ }
21
+ const remoteConfig = zone.runOutsideAngular(() => fn(injector));
22
+ return new RemoteConfig(remoteConfig);
23
+ };
24
+ }
25
+ const REMOTE_CONFIG_INSTANCES_PROVIDER = {
26
+ provide: RemoteConfigInstances,
27
+ deps: [
28
+ [new Optional(), PROVIDED_REMOTE_CONFIG_INSTANCES],
29
+ ]
30
+ };
31
+ const DEFAULT_REMOTE_CONFIG_INSTANCE_PROVIDER = {
32
+ provide: RemoteConfig,
33
+ useFactory: defaultRemoteConfigInstanceFactory,
34
+ deps: [
35
+ [new Optional(), PROVIDED_REMOTE_CONFIG_INSTANCES],
36
+ FirebaseApp,
37
+ ]
38
+ };
39
+ export class RemoteConfigModule {
40
+ constructor() {
41
+ registerVersion('angularfire', VERSION.full, 'rc');
42
+ }
43
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.10", ngImport: i0, type: RemoteConfigModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
44
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.10", ngImport: i0, type: RemoteConfigModule });
45
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.10", ngImport: i0, type: RemoteConfigModule, providers: [
46
+ DEFAULT_REMOTE_CONFIG_INSTANCE_PROVIDER,
47
+ REMOTE_CONFIG_INSTANCES_PROVIDER,
48
+ {
49
+ provide: APP_INITIALIZER,
50
+ useValue: isRemoteConfigSupportedFactory.async,
51
+ multi: true,
52
+ },
53
+ ] });
54
+ }
55
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.10", ngImport: i0, type: RemoteConfigModule, decorators: [{
56
+ type: NgModule,
57
+ args: [{
58
+ providers: [
59
+ DEFAULT_REMOTE_CONFIG_INSTANCE_PROVIDER,
60
+ REMOTE_CONFIG_INSTANCES_PROVIDER,
61
+ {
62
+ provide: APP_INITIALIZER,
63
+ useValue: isRemoteConfigSupportedFactory.async,
64
+ multi: true,
65
+ },
66
+ ]
67
+ }]
68
+ }], ctorParameters: function () { return []; } });
69
+ export function provideRemoteConfig(fn, ...deps) {
70
+ return {
71
+ ngModule: RemoteConfigModule,
72
+ providers: [{
73
+ provide: PROVIDED_REMOTE_CONFIG_INSTANCES,
74
+ useFactory: remoteConfigInstanceFactory(fn),
75
+ multi: true,
76
+ deps: [
77
+ NgZone,
78
+ Injector,
79
+ ɵAngularFireSchedulers,
80
+ FirebaseApps,
81
+ ...deps,
82
+ ]
83
+ }]
84
+ };
85
+ }
86
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtb3RlLWNvbmZpZy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvcmVtb3RlLWNvbmZpZy9yZW1vdGUtY29uZmlnLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQXVCLFFBQVEsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNILE9BQU8sRUFBRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkYsT0FBTyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRS9DLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxZQUFZLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUFFbkcsTUFBTSxDQUFDLE1BQU0sZ0NBQWdDLEdBQUcsSUFBSSxjQUFjLENBQWlCLHNDQUFzQyxDQUFDLENBQUM7QUFFM0gsTUFBTSxVQUFVLGtDQUFrQyxDQUNoRCxRQUEwQyxFQUMxQyxVQUF1QjtJQUV2QixJQUFJLENBQUMsOEJBQThCLENBQUMsSUFBSSxFQUFFLEVBQUU7UUFBRSxPQUFPLElBQUksQ0FBQztLQUFFO0lBQzVELE1BQU0sbUJBQW1CLEdBQUcscUJBQXFCLENBQXVCLDJCQUEyQixFQUFFLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUMzSCxPQUFPLG1CQUFtQixJQUFJLElBQUksWUFBWSxDQUFDLG1CQUFtQixDQUFDLENBQUM7QUFDdEUsQ0FBQztBQUVELE1BQU0sVUFBVSwyQkFBMkIsQ0FBQyxFQUFnRDtJQUMxRixPQUFPLENBQUMsSUFBWSxFQUFFLFFBQWtCLEVBQUUsRUFBRTtRQUMxQyxJQUFJLENBQUMsOEJBQThCLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFBRSxPQUFPLElBQUksQ0FBQztTQUFFO1FBQzVELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUNoRSxPQUFPLElBQUksWUFBWSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3hDLENBQUMsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLGdDQUFnQyxHQUFHO0lBQ3ZDLE9BQU8sRUFBRSxxQkFBcUI7SUFDOUIsSUFBSSxFQUFFO1FBQ0osQ0FBQyxJQUFJLFFBQVEsRUFBRSxFQUFFLGdDQUFnQyxDQUFFO0tBQ3BEO0NBQ0YsQ0FBQztBQUVGLE1BQU0sdUNBQXVDLEdBQUc7SUFDOUMsT0FBTyxFQUFFLFlBQVk7SUFDckIsVUFBVSxFQUFFLGtDQUFrQztJQUM5QyxJQUFJLEVBQUU7UUFDSixDQUFDLElBQUksUUFBUSxFQUFFLEVBQUUsZ0NBQWdDLENBQUU7UUFDbkQsV0FBVztLQUNaO0NBQ0YsQ0FBQztBQWFGLE1BQU0sT0FBTyxrQkFBa0I7SUFDN0I7UUFDRSxlQUFlLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDckQsQ0FBQzt3R0FIVSxrQkFBa0I7eUdBQWxCLGtCQUFrQjt5R0FBbEIsa0JBQWtCLGFBVmxCO1lBQ1QsdUNBQXVDO1lBQ3ZDLGdDQUFnQztZQUNoQztnQkFDRSxPQUFPLEVBQUUsZUFBZTtnQkFDeEIsUUFBUSxFQUFFLDhCQUE4QixDQUFDLEtBQUs7Z0JBQzlDLEtBQUssRUFBRSxJQUFJO2FBQ1o7U0FDRjs7NEZBRVUsa0JBQWtCO2tCQVg5QixRQUFRO21CQUFDO29CQUNSLFNBQVMsRUFBRTt3QkFDVCx1Q0FBdUM7d0JBQ3ZDLGdDQUFnQzt3QkFDaEM7NEJBQ0UsT0FBTyxFQUFFLGVBQWU7NEJBQ3hCLFFBQVEsRUFBRSw4QkFBOEIsQ0FBQyxLQUFLOzRCQUM5QyxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRjtpQkFDRjs7QUFPRCxNQUFNLFVBQVUsbUJBQW1CLENBQ2pDLEVBQWdELEVBQUUsR0FBRyxJQUFXO0lBRWhFLE9BQU87UUFDTCxRQUFRLEVBQUUsa0JBQWtCO1FBQzVCLFNBQVMsRUFBRSxDQUFDO2dCQUNWLE9BQU8sRUFBRSxnQ0FBZ0M7Z0JBQ3pDLFVBQVUsRUFBRSwyQkFBMkIsQ0FBQyxFQUFFLENBQUM7Z0JBQzNDLEtBQUssRUFBRSxJQUFJO2dCQUNYLElBQUksRUFBRTtvQkFDSixNQUFNO29CQUNOLFFBQVE7b0JBQ1Isc0JBQXNCO29CQUN0QixZQUFZO29CQUNaLEdBQUcsSUFBSTtpQkFDUjthQUNGLENBQUM7S0FDSCxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFQUF9JTklUSUFMSVpFUiwgSW5qZWN0aW9uVG9rZW4sIEluamVjdG9yLCBNb2R1bGVXaXRoUHJvdmlkZXJzLCBOZ01vZHVsZSwgTmdab25lLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVkVSU0lPTiwgybVBbmd1bGFyRmlyZVNjaGVkdWxlcnMsIMm1Z2V0RGVmYXVsdEluc3RhbmNlT2YgfSBmcm9tICdAYW5ndWxhci9maXJlJztcbmltcG9ydCB7IEZpcmViYXNlQXBwLCBGaXJlYmFzZUFwcHMgfSBmcm9tICdAYW5ndWxhci9maXJlL2FwcCc7XG5pbXBvcnQgeyByZWdpc3RlclZlcnNpb24gfSBmcm9tICdmaXJlYmFzZS9hcHAnO1xuaW1wb3J0IHsgUmVtb3RlQ29uZmlnIGFzIEZpcmViYXNlUmVtb3RlQ29uZmlnIH0gZnJvbSAnZmlyZWJhc2UvcmVtb3RlLWNvbmZpZyc7XG5pbXBvcnQgeyBpc1JlbW90ZUNvbmZpZ1N1cHBvcnRlZEZhY3RvcnkgfSBmcm9tICcuL2lzLXJlbW90ZS1jb25maWctc3VwcG9ydGVkLWZhY3RvcnknO1xuaW1wb3J0IHsgUkVNT1RFX0NPTkZJR19QUk9WSURFUl9OQU1FLCBSZW1vdGVDb25maWcsIFJlbW90ZUNvbmZpZ0luc3RhbmNlcyB9IGZyb20gJy4vcmVtb3RlLWNvbmZpZyc7XG5cbmV4cG9ydCBjb25zdCBQUk9WSURFRF9SRU1PVEVfQ09ORklHX0lOU1RBTkNFUyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxSZW1vdGVDb25maWdbXT4oJ2FuZ3VsYXJmaXJlMi5yZW1vdGUtY29uZmlnLWluc3RhbmNlcycpO1xuXG5leHBvcnQgZnVuY3Rpb24gZGVmYXVsdFJlbW90ZUNvbmZpZ0luc3RhbmNlRmFjdG9yeShcbiAgcHJvdmlkZWQ6IEZpcmViYXNlUmVtb3RlQ29uZmlnW118dW5kZWZpbmVkLFxuICBkZWZhdWx0QXBwOiBGaXJlYmFzZUFwcCxcbikge1xuICBpZiAoIWlzUmVtb3RlQ29uZmlnU3VwcG9ydGVkRmFjdG9yeS5zeW5jKCkpIHsgcmV0dXJuIG51bGw7IH1cbiAgY29uc3QgZGVmYXVsdFJlbW90ZUNvbmZpZyA9IMm1Z2V0RGVmYXVsdEluc3RhbmNlT2Y8RmlyZWJhc2VSZW1vdGVDb25maWc+KFJFTU9URV9DT05GSUdfUFJPVklERVJfTkFNRSwgcHJvdmlkZWQsIGRlZmF1bHRBcHApO1xuICByZXR1cm4gZGVmYXVsdFJlbW90ZUNvbmZpZyAmJiBuZXcgUmVtb3RlQ29uZmlnKGRlZmF1bHRSZW1vdGVDb25maWcpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVtb3RlQ29uZmlnSW5zdGFuY2VGYWN0b3J5KGZuOiAoaW5qZWN0b3I6IEluamVjdG9yKSA9PiBGaXJlYmFzZVJlbW90ZUNvbmZpZykge1xuICByZXR1cm4gKHpvbmU6IE5nWm9uZSwgaW5qZWN0b3I6IEluamVjdG9yKSA9PiB7XG4gICAgaWYgKCFpc1JlbW90ZUNvbmZpZ1N1cHBvcnRlZEZhY3Rvcnkuc3luYygpKSB7IHJldHVybiBudWxsOyB9XG4gICAgY29uc3QgcmVtb3RlQ29uZmlnID0gem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiBmbihpbmplY3RvcikpO1xuICAgIHJldHVybiBuZXcgUmVtb3RlQ29uZmlnKHJlbW90ZUNvbmZpZyk7XG4gIH07XG59XG5cbmNvbnN0IFJFTU9URV9DT05GSUdfSU5TVEFOQ0VTX1BST1ZJREVSID0ge1xuICBwcm92aWRlOiBSZW1vdGVDb25maWdJbnN0YW5jZXMsXG4gIGRlcHM6IFtcbiAgICBbbmV3IE9wdGlvbmFsKCksIFBST1ZJREVEX1JFTU9URV9DT05GSUdfSU5TVEFOQ0VTIF0sXG4gIF1cbn07XG5cbmNvbnN0IERFRkFVTFRfUkVNT1RFX0NPTkZJR19JTlNUQU5DRV9QUk9WSURFUiA9IHtcbiAgcHJvdmlkZTogUmVtb3RlQ29uZmlnLFxuICB1c2VGYWN0b3J5OiBkZWZhdWx0UmVtb3RlQ29uZmlnSW5zdGFuY2VGYWN0b3J5LFxuICBkZXBzOiBbXG4gICAgW25ldyBPcHRpb25hbCgpLCBQUk9WSURFRF9SRU1PVEVfQ09ORklHX0lOU1RBTkNFUyBdLFxuICAgIEZpcmViYXNlQXBwLFxuICBdXG59O1xuXG5ATmdNb2R1bGUoe1xuICBwcm92aWRlcnM6IFtcbiAgICBERUZBVUxUX1JFTU9URV9DT05GSUdfSU5TVEFOQ0VfUFJPVklERVIsXG4gICAgUkVNT1RFX0NPTkZJR19JTlNUQU5DRVNfUFJPVklERVIsXG4gICAge1xuICAgICAgcHJvdmlkZTogQVBQX0lOSVRJQUxJWkVSLFxuICAgICAgdXNlVmFsdWU6IGlzUmVtb3RlQ29uZmlnU3VwcG9ydGVkRmFjdG9yeS5hc3luYyxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgUmVtb3RlQ29uZmlnTW9kdWxlIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgcmVnaXN0ZXJWZXJzaW9uKCdhbmd1bGFyZmlyZScsIFZFUlNJT04uZnVsbCwgJ3JjJyk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVSZW1vdGVDb25maWcoXG4gIGZuOiAoaW5qZWN0b3I6IEluamVjdG9yKSA9PiBGaXJlYmFzZVJlbW90ZUNvbmZpZywgLi4uZGVwczogYW55W11cbik6IE1vZHVsZVdpdGhQcm92aWRlcnM8UmVtb3RlQ29uZmlnTW9kdWxlPiB7XG4gIHJldHVybiB7XG4gICAgbmdNb2R1bGU6IFJlbW90ZUNvbmZpZ01vZHVsZSxcbiAgICBwcm92aWRlcnM6IFt7XG4gICAgICBwcm92aWRlOiBQUk9WSURFRF9SRU1PVEVfQ09ORklHX0lOU1RBTkNFUyxcbiAgICAgIHVzZUZhY3Rvcnk6IHJlbW90ZUNvbmZpZ0luc3RhbmNlRmFjdG9yeShmbiksXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICAgIGRlcHM6IFtcbiAgICAgICAgTmdab25lLFxuICAgICAgICBJbmplY3RvcixcbiAgICAgICAgybVBbmd1bGFyRmlyZVNjaGVkdWxlcnMsXG4gICAgICAgIEZpcmViYXNlQXBwcyxcbiAgICAgICAgLi4uZGVwcyxcbiAgICAgIF1cbiAgICB9XVxuICB9O1xufVxuIl19
@@ -13,4 +13,4 @@ export class StorageInstances {
13
13
  }
14
14
  }
15
15
  export const storageInstance$ = timer(0, 300).pipe(concatMap(() => from(ɵgetAllInstancesOf(STORAGE_PROVIDER_NAME))), distinct());
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zdG9yYWdlL3N0b3JhZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ25DLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFNckQsTUFBTSxPQUFPLE9BQU87SUFDbEIsWUFBWSxJQUFxQjtRQUMvQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7Q0FDRjtBQUVELE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLFNBQVMsQ0FBQztBQUsvQyxNQUFNLE9BQU8sZ0JBQWdCO0lBQzNCO1FBQ0UsT0FBTyxrQkFBa0IsQ0FBa0IscUJBQXFCLENBQUMsQ0FBQztJQUNwRSxDQUFDO0NBQ0Y7QUFFRCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxLQUFLLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FDaEQsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBa0IscUJBQXFCLENBQUMsQ0FBQyxDQUFDLEVBQ2pGLFFBQVEsRUFBRSxDQUNYLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGaXJlYmFzZVN0b3JhZ2UgfSBmcm9tICdmaXJlYmFzZS9zdG9yYWdlJztcbmltcG9ydCB7IMm1Z2V0QWxsSW5zdGFuY2VzT2YgfSBmcm9tICdAYW5ndWxhci9maXJlJztcbmltcG9ydCB7IGZyb20sIHRpbWVyIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjb25jYXRNYXAsIGRpc3RpbmN0IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG4vLyBzZWUgbm90ZXMgaW4gY29yZS9maXJlYmFzZS5hcHAubW9kdWxlLnRzIGZvciB3aHkgd2UncmUgYnVpbGRpbmcgdGhlIGNsYXNzIGxpa2UgdGhpc1xuLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWVtcHR5LWludGVyZmFjZVxuZXhwb3J0IGludGVyZmFjZSBTdG9yYWdlIGV4dGVuZHMgRmlyZWJhc2VTdG9yYWdlIHt9XG5cbmV4cG9ydCBjbGFzcyBTdG9yYWdlIHtcbiAgY29uc3RydWN0b3IoYXV0aDogRmlyZWJhc2VTdG9yYWdlKSB7XG4gICAgcmV0dXJuIGF1dGg7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IFNUT1JBR0VfUFJPVklERVJfTkFNRSA9ICdzdG9yYWdlJztcblxuLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWVtcHR5LWludGVyZmFjZVxuZXhwb3J0IGludGVyZmFjZSBTdG9yYWdlSW5zdGFuY2VzIGV4dGVuZHMgQXJyYXk8RmlyZWJhc2VTdG9yYWdlPiB7fVxuXG5leHBvcnQgY2xhc3MgU3RvcmFnZUluc3RhbmNlcyB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHJldHVybiDJtWdldEFsbEluc3RhbmNlc09mPEZpcmViYXNlU3RvcmFnZT4oU1RPUkFHRV9QUk9WSURFUl9OQU1FKTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3Qgc3RvcmFnZUluc3RhbmNlJCA9IHRpbWVyKDAsIDMwMCkucGlwZShcbiAgY29uY2F0TWFwKCgpID0+IGZyb20oybVnZXRBbGxJbnN0YW5jZXNPZjxGaXJlYmFzZVN0b3JhZ2U+KFNUT1JBR0VfUFJPVklERVJfTkFNRSkpKSxcbiAgZGlzdGluY3QoKSxcbik7XG4iXX0=
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zdG9yYWdlL3N0b3JhZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5ELE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ25DLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFNckQsTUFBTSxPQUFPLE9BQU87SUFDbEIsWUFBWSxJQUFxQjtRQUMvQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7Q0FDRjtBQUVELE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLFNBQVMsQ0FBQztBQUsvQyxNQUFNLE9BQU8sZ0JBQWdCO0lBQzNCO1FBQ0UsT0FBTyxrQkFBa0IsQ0FBa0IscUJBQXFCLENBQUMsQ0FBQztJQUNwRSxDQUFDO0NBQ0Y7QUFFRCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxLQUFLLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FDaEQsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBa0IscUJBQXFCLENBQUMsQ0FBQyxDQUFDLEVBQ2pGLFFBQVEsRUFBRSxDQUNYLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyDJtWdldEFsbEluc3RhbmNlc09mIH0gZnJvbSAnQGFuZ3VsYXIvZmlyZSc7XG5pbXBvcnQgeyBGaXJlYmFzZVN0b3JhZ2UgfSBmcm9tICdmaXJlYmFzZS9zdG9yYWdlJztcbmltcG9ydCB7IGZyb20sIHRpbWVyIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjb25jYXRNYXAsIGRpc3RpbmN0IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG4vLyBzZWUgbm90ZXMgaW4gY29yZS9maXJlYmFzZS5hcHAubW9kdWxlLnRzIGZvciB3aHkgd2UncmUgYnVpbGRpbmcgdGhlIGNsYXNzIGxpa2UgdGhpc1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1pbnRlcmZhY2VcbmV4cG9ydCBpbnRlcmZhY2UgU3RvcmFnZSBleHRlbmRzIEZpcmViYXNlU3RvcmFnZSB7fVxuXG5leHBvcnQgY2xhc3MgU3RvcmFnZSB7XG4gIGNvbnN0cnVjdG9yKGF1dGg6IEZpcmViYXNlU3RvcmFnZSkge1xuICAgIHJldHVybiBhdXRoO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBTVE9SQUdFX1BST1ZJREVSX05BTUUgPSAnc3RvcmFnZSc7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktaW50ZXJmYWNlXG5leHBvcnQgaW50ZXJmYWNlIFN0b3JhZ2VJbnN0YW5jZXMgZXh0ZW5kcyBBcnJheTxGaXJlYmFzZVN0b3JhZ2U+IHt9XG5cbmV4cG9ydCBjbGFzcyBTdG9yYWdlSW5zdGFuY2VzIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgcmV0dXJuIMm1Z2V0QWxsSW5zdGFuY2VzT2Y8RmlyZWJhc2VTdG9yYWdlPihTVE9SQUdFX1BST1ZJREVSX05BTUUpO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBzdG9yYWdlSW5zdGFuY2UkID0gdGltZXIoMCwgMzAwKS5waXBlKFxuICBjb25jYXRNYXAoKCkgPT4gZnJvbSjJtWdldEFsbEluc3RhbmNlc09mPEZpcmViYXNlU3RvcmFnZT4oU1RPUkFHRV9QUk9WSURFUl9OQU1FKSkpLFxuICBkaXN0aW5jdCgpLFxuKTtcbiJdfQ==
@@ -0,0 +1,74 @@
1
+ import { InjectionToken, Injector, NgModule, NgZone, Optional } from '@angular/core';
2
+ import { VERSION, ɵAngularFireSchedulers, ɵgetDefaultInstanceOf } from '@angular/fire';
3
+ import { ɵAppCheckInstances } from '@angular/fire';
4
+ import { FirebaseApp, FirebaseApps } from '@angular/fire/app';
5
+ import { AuthInstances } from '@angular/fire/auth';
6
+ import { registerVersion } from 'firebase/app';
7
+ import { STORAGE_PROVIDER_NAME, Storage, StorageInstances } from './storage';
8
+ import * as i0 from "@angular/core";
9
+ export const PROVIDED_STORAGE_INSTANCES = new InjectionToken('angularfire2.storage-instances');
10
+ export function defaultStorageInstanceFactory(provided, defaultApp) {
11
+ const defaultStorage = ɵgetDefaultInstanceOf(STORAGE_PROVIDER_NAME, provided, defaultApp);
12
+ return defaultStorage && new Storage(defaultStorage);
13
+ }
14
+ export function storageInstanceFactory(fn) {
15
+ return (zone, injector) => {
16
+ const storage = zone.runOutsideAngular(() => fn(injector));
17
+ return new Storage(storage);
18
+ };
19
+ }
20
+ const STORAGE_INSTANCES_PROVIDER = {
21
+ provide: StorageInstances,
22
+ deps: [
23
+ [new Optional(), PROVIDED_STORAGE_INSTANCES],
24
+ ]
25
+ };
26
+ const DEFAULT_STORAGE_INSTANCE_PROVIDER = {
27
+ provide: Storage,
28
+ useFactory: defaultStorageInstanceFactory,
29
+ deps: [
30
+ [new Optional(), PROVIDED_STORAGE_INSTANCES],
31
+ FirebaseApp,
32
+ ]
33
+ };
34
+ export class StorageModule {
35
+ constructor() {
36
+ registerVersion('angularfire', VERSION.full, 'gcs');
37
+ }
38
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.10", ngImport: i0, type: StorageModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
39
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.10", ngImport: i0, type: StorageModule });
40
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.10", ngImport: i0, type: StorageModule, providers: [
41
+ DEFAULT_STORAGE_INSTANCE_PROVIDER,
42
+ STORAGE_INSTANCES_PROVIDER,
43
+ ] });
44
+ }
45
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.10", ngImport: i0, type: StorageModule, decorators: [{
46
+ type: NgModule,
47
+ args: [{
48
+ providers: [
49
+ DEFAULT_STORAGE_INSTANCE_PROVIDER,
50
+ STORAGE_INSTANCES_PROVIDER,
51
+ ]
52
+ }]
53
+ }], ctorParameters: function () { return []; } });
54
+ export function provideStorage(fn, ...deps) {
55
+ return {
56
+ ngModule: StorageModule,
57
+ providers: [{
58
+ provide: PROVIDED_STORAGE_INSTANCES,
59
+ useFactory: storageInstanceFactory(fn),
60
+ multi: true,
61
+ deps: [
62
+ NgZone,
63
+ Injector,
64
+ ɵAngularFireSchedulers,
65
+ FirebaseApps,
66
+ // Defensively load Auth first, if provided
67
+ [new Optional(), AuthInstances],
68
+ [new Optional(), ɵAppCheckInstances],
69
+ ...deps,
70
+ ]
71
+ }]
72
+ };
73
+ }
74
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvc3RvcmFnZS9zdG9yYWdlLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBdUIsUUFBUSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUcsT0FBTyxFQUFFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUUvQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sV0FBVyxDQUFDOztBQUU3RSxNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FBRyxJQUFJLGNBQWMsQ0FBWSxnQ0FBZ0MsQ0FBQyxDQUFDO0FBRTFHLE1BQU0sVUFBVSw2QkFBNkIsQ0FBQyxRQUFxQyxFQUFFLFVBQXVCO0lBQzFHLE1BQU0sY0FBYyxHQUFHLHFCQUFxQixDQUFrQixxQkFBcUIsRUFBRSxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDM0csT0FBTyxjQUFjLElBQUksSUFBSSxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUM7QUFDdkQsQ0FBQztBQUVELE1BQU0sVUFBVSxzQkFBc0IsQ0FBQyxFQUEyQztJQUNoRixPQUFPLENBQUMsSUFBWSxFQUFFLFFBQWtCLEVBQUUsRUFBRTtRQUMxQyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFDM0QsT0FBTyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM5QixDQUFDLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSwwQkFBMEIsR0FBRztJQUNqQyxPQUFPLEVBQUUsZ0JBQWdCO0lBQ3pCLElBQUksRUFBRTtRQUNKLENBQUMsSUFBSSxRQUFRLEVBQUUsRUFBRSwwQkFBMEIsQ0FBRTtLQUM5QztDQUNGLENBQUM7QUFFRixNQUFNLGlDQUFpQyxHQUFHO0lBQ3hDLE9BQU8sRUFBRSxPQUFPO0lBQ2hCLFVBQVUsRUFBRSw2QkFBNkI7SUFDekMsSUFBSSxFQUFFO1FBQ0osQ0FBQyxJQUFJLFFBQVEsRUFBRSxFQUFFLDBCQUEwQixDQUFFO1FBQzdDLFdBQVc7S0FDWjtDQUNGLENBQUM7QUFRRixNQUFNLE9BQU8sYUFBYTtJQUN4QjtRQUNFLGVBQWUsQ0FBQyxhQUFhLEVBQUUsT0FBTyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN0RCxDQUFDO3dHQUhVLGFBQWE7eUdBQWIsYUFBYTt5R0FBYixhQUFhLGFBTGI7WUFDVCxpQ0FBaUM7WUFDakMsMEJBQTBCO1NBQzNCOzs0RkFFVSxhQUFhO2tCQU56QixRQUFRO21CQUFDO29CQUNSLFNBQVMsRUFBRTt3QkFDVCxpQ0FBaUM7d0JBQ2pDLDBCQUEwQjtxQkFDM0I7aUJBQ0Y7O0FBT0QsTUFBTSxVQUFVLGNBQWMsQ0FBQyxFQUEyQyxFQUFFLEdBQUcsSUFBVztJQUN4RixPQUFPO1FBQ0wsUUFBUSxFQUFFLGFBQWE7UUFDdkIsU0FBUyxFQUFFLENBQUM7Z0JBQ1YsT0FBTyxFQUFFLDBCQUEwQjtnQkFDbkMsVUFBVSxFQUFFLHNCQUFzQixDQUFDLEVBQUUsQ0FBQztnQkFDdEMsS0FBSyxFQUFFLElBQUk7Z0JBQ1gsSUFBSSxFQUFFO29CQUNKLE1BQU07b0JBQ04sUUFBUTtvQkFDUixzQkFBc0I7b0JBQ3RCLFlBQVk7b0JBQ1osMkNBQTJDO29CQUMzQyxDQUFDLElBQUksUUFBUSxFQUFFLEVBQUUsYUFBYSxDQUFFO29CQUNoQyxDQUFDLElBQUksUUFBUSxFQUFFLEVBQUUsa0JBQWtCLENBQUU7b0JBQ3JDLEdBQUcsSUFBSTtpQkFDUjthQUNGLENBQUM7S0FDSCxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuLCBJbmplY3RvciwgTW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGUsIE5nWm9uZSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFZFUlNJT04sIMm1QW5ndWxhckZpcmVTY2hlZHVsZXJzLCDJtWdldERlZmF1bHRJbnN0YW5jZU9mIH0gZnJvbSAnQGFuZ3VsYXIvZmlyZSc7XG5pbXBvcnQgeyDJtUFwcENoZWNrSW5zdGFuY2VzIH0gZnJvbSAnQGFuZ3VsYXIvZmlyZSc7XG5pbXBvcnQgeyBGaXJlYmFzZUFwcCwgRmlyZWJhc2VBcHBzIH0gZnJvbSAnQGFuZ3VsYXIvZmlyZS9hcHAnO1xuaW1wb3J0IHsgQXV0aEluc3RhbmNlcyB9IGZyb20gJ0Bhbmd1bGFyL2ZpcmUvYXV0aCc7XG5pbXBvcnQgeyByZWdpc3RlclZlcnNpb24gfSBmcm9tICdmaXJlYmFzZS9hcHAnO1xuaW1wb3J0IHsgRmlyZWJhc2VTdG9yYWdlIH0gZnJvbSAnZmlyZWJhc2Uvc3RvcmFnZSc7XG5pbXBvcnQgeyBTVE9SQUdFX1BST1ZJREVSX05BTUUsIFN0b3JhZ2UsIFN0b3JhZ2VJbnN0YW5jZXMgfSBmcm9tICcuL3N0b3JhZ2UnO1xuXG5leHBvcnQgY29uc3QgUFJPVklERURfU1RPUkFHRV9JTlNUQU5DRVMgPSBuZXcgSW5qZWN0aW9uVG9rZW48U3RvcmFnZVtdPignYW5ndWxhcmZpcmUyLnN0b3JhZ2UtaW5zdGFuY2VzJyk7XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWZhdWx0U3RvcmFnZUluc3RhbmNlRmFjdG9yeShwcm92aWRlZDogRmlyZWJhc2VTdG9yYWdlW118dW5kZWZpbmVkLCBkZWZhdWx0QXBwOiBGaXJlYmFzZUFwcCkge1xuICBjb25zdCBkZWZhdWx0U3RvcmFnZSA9IMm1Z2V0RGVmYXVsdEluc3RhbmNlT2Y8RmlyZWJhc2VTdG9yYWdlPihTVE9SQUdFX1BST1ZJREVSX05BTUUsIHByb3ZpZGVkLCBkZWZhdWx0QXBwKTtcbiAgcmV0dXJuIGRlZmF1bHRTdG9yYWdlICYmIG5ldyBTdG9yYWdlKGRlZmF1bHRTdG9yYWdlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0b3JhZ2VJbnN0YW5jZUZhY3RvcnkoZm46IChpbmplY3RvcjogSW5qZWN0b3IpID0+IEZpcmViYXNlU3RvcmFnZSkge1xuICByZXR1cm4gKHpvbmU6IE5nWm9uZSwgaW5qZWN0b3I6IEluamVjdG9yKSA9PiB7XG4gICAgY29uc3Qgc3RvcmFnZSA9IHpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4gZm4oaW5qZWN0b3IpKTtcbiAgICByZXR1cm4gbmV3IFN0b3JhZ2Uoc3RvcmFnZSk7XG4gIH07XG59XG5cbmNvbnN0IFNUT1JBR0VfSU5TVEFOQ0VTX1BST1ZJREVSID0ge1xuICBwcm92aWRlOiBTdG9yYWdlSW5zdGFuY2VzLFxuICBkZXBzOiBbXG4gICAgW25ldyBPcHRpb25hbCgpLCBQUk9WSURFRF9TVE9SQUdFX0lOU1RBTkNFUyBdLFxuICBdXG59O1xuXG5jb25zdCBERUZBVUxUX1NUT1JBR0VfSU5TVEFOQ0VfUFJPVklERVIgPSB7XG4gIHByb3ZpZGU6IFN0b3JhZ2UsXG4gIHVzZUZhY3Rvcnk6IGRlZmF1bHRTdG9yYWdlSW5zdGFuY2VGYWN0b3J5LFxuICBkZXBzOiBbXG4gICAgW25ldyBPcHRpb25hbCgpLCBQUk9WSURFRF9TVE9SQUdFX0lOU1RBTkNFUyBdLFxuICAgIEZpcmViYXNlQXBwLFxuICBdXG59O1xuXG5ATmdNb2R1bGUoe1xuICBwcm92aWRlcnM6IFtcbiAgICBERUZBVUxUX1NUT1JBR0VfSU5TVEFOQ0VfUFJPVklERVIsXG4gICAgU1RPUkFHRV9JTlNUQU5DRVNfUFJPVklERVIsXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgU3RvcmFnZU1vZHVsZSB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHJlZ2lzdGVyVmVyc2lvbignYW5ndWxhcmZpcmUnLCBWRVJTSU9OLmZ1bGwsICdnY3MnKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZVN0b3JhZ2UoZm46IChpbmplY3RvcjogSW5qZWN0b3IpID0+IEZpcmViYXNlU3RvcmFnZSwgLi4uZGVwczogYW55W10pOiBNb2R1bGVXaXRoUHJvdmlkZXJzPFN0b3JhZ2VNb2R1bGU+IHtcbiAgcmV0dXJuIHtcbiAgICBuZ01vZHVsZTogU3RvcmFnZU1vZHVsZSxcbiAgICBwcm92aWRlcnM6IFt7XG4gICAgICBwcm92aWRlOiBQUk9WSURFRF9TVE9SQUdFX0lOU1RBTkNFUyxcbiAgICAgIHVzZUZhY3Rvcnk6IHN0b3JhZ2VJbnN0YW5jZUZhY3RvcnkoZm4pLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgICBkZXBzOiBbXG4gICAgICAgIE5nWm9uZSxcbiAgICAgICAgSW5qZWN0b3IsXG4gICAgICAgIMm1QW5ndWxhckZpcmVTY2hlZHVsZXJzLFxuICAgICAgICBGaXJlYmFzZUFwcHMsXG4gICAgICAgIC8vIERlZmVuc2l2ZWx5IGxvYWQgQXV0aCBmaXJzdCwgaWYgcHJvdmlkZWRcbiAgICAgICAgW25ldyBPcHRpb25hbCgpLCBBdXRoSW5zdGFuY2VzIF0sXG4gICAgICAgIFtuZXcgT3B0aW9uYWwoKSwgybVBcHBDaGVja0luc3RhbmNlcyBdLFxuICAgICAgICAuLi5kZXBzLFxuICAgICAgXVxuICAgIH1dXG4gIH07XG59XG4iXX0=
@@ -0,0 +1,194 @@
1
+ /* eslint-disable @typescript-eslint/ban-ts-comment */
2
+ import { Injectable, NgZone } from '@angular/core';
3
+ import { Observable, asyncScheduler, queueScheduler } from 'rxjs';
4
+ import { observeOn, subscribeOn, tap } from 'rxjs/operators';
5
+ import * as i0 from "@angular/core";
6
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
7
+ function noop() {
8
+ }
9
+ /**
10
+ * Schedules tasks so that they are invoked inside the Zone that is passed in the constructor.
11
+ */
12
+ export class ɵZoneScheduler {
13
+ zone;
14
+ delegate;
15
+ constructor(zone, delegate = queueScheduler) {
16
+ this.zone = zone;
17
+ this.delegate = delegate;
18
+ }
19
+ now() {
20
+ return this.delegate.now();
21
+ }
22
+ schedule(work, delay, state) {
23
+ const targetZone = this.zone;
24
+ // Wrap the specified work function to make sure that if nested scheduling takes place the
25
+ // work is executed in the correct zone
26
+ const workInZone = function (state) {
27
+ targetZone.runGuarded(() => {
28
+ work.apply(this, [state]);
29
+ });
30
+ };
31
+ // Scheduling itself needs to be run in zone to ensure setInterval calls for async scheduling are done
32
+ // inside the correct zone. This scheduler needs to schedule asynchronously always to ensure that
33
+ // firebase emissions are never synchronous. Specifying a delay causes issues with the queueScheduler delegate.
34
+ return this.delegate.schedule(workInZone, delay, state);
35
+ }
36
+ }
37
+ class BlockUntilFirstOperator {
38
+ zone;
39
+ // @ts-ignore
40
+ task = null;
41
+ constructor(zone) {
42
+ this.zone = zone;
43
+ }
44
+ call(subscriber, source) {
45
+ const unscheduleTask = this.unscheduleTask.bind(this);
46
+ // @ts-ignore
47
+ this.task = this.zone.run(() => Zone.current.scheduleMacroTask('firebaseZoneBlock', noop, {}, noop, noop));
48
+ return source.pipe(tap({ next: unscheduleTask, complete: unscheduleTask, error: unscheduleTask })).subscribe(subscriber).add(unscheduleTask);
49
+ }
50
+ unscheduleTask() {
51
+ // maybe this is a race condition, invoke in a timeout
52
+ // hold for 10ms while I try to figure out what is going on
53
+ setTimeout(() => {
54
+ if (this.task != null && this.task.state === 'scheduled') {
55
+ this.task.invoke();
56
+ this.task = null;
57
+ }
58
+ }, 10);
59
+ }
60
+ }
61
+ export class ɵAngularFireSchedulers {
62
+ ngZone;
63
+ outsideAngular;
64
+ insideAngular;
65
+ constructor(ngZone) {
66
+ this.ngZone = ngZone;
67
+ // @ts-ignore
68
+ this.outsideAngular = ngZone.runOutsideAngular(() => new ɵZoneScheduler(Zone.current));
69
+ // @ts-ignore
70
+ this.insideAngular = ngZone.run(() => new ɵZoneScheduler(Zone.current, asyncScheduler));
71
+ globalThis.ɵAngularFireScheduler ||= this;
72
+ }
73
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.10", ngImport: i0, type: ɵAngularFireSchedulers, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });
74
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.10", ngImport: i0, type: ɵAngularFireSchedulers, providedIn: 'root' });
75
+ }
76
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.10", ngImport: i0, type: ɵAngularFireSchedulers, decorators: [{
77
+ type: Injectable,
78
+ args: [{
79
+ providedIn: 'root',
80
+ }]
81
+ }], ctorParameters: function () { return [{ type: i0.NgZone }]; } });
82
+ function getSchedulers() {
83
+ const schedulers = globalThis.ɵAngularFireScheduler;
84
+ if (!schedulers) {
85
+ throw new Error(`Either AngularFireModule has not been provided in your AppModule (this can be done manually or implictly using
86
+ provideFirebaseApp) or you're calling an AngularFire method outside of an NgModule (which is not supported).`);
87
+ }
88
+ return schedulers;
89
+ }
90
+ function runOutsideAngular(fn) {
91
+ return getSchedulers().ngZone.runOutsideAngular(() => fn());
92
+ }
93
+ function run(fn) {
94
+ return getSchedulers().ngZone.run(() => fn());
95
+ }
96
+ export function observeOutsideAngular(obs$) {
97
+ return obs$.pipe(observeOn(getSchedulers().outsideAngular));
98
+ }
99
+ export function observeInsideAngular(obs$) {
100
+ return obs$.pipe(observeOn(getSchedulers().insideAngular));
101
+ }
102
+ export function keepUnstableUntilFirst(obs$) {
103
+ return ɵkeepUnstableUntilFirstFactory(getSchedulers())(obs$);
104
+ }
105
+ /**
106
+ * Operator to block the zone until the first value has been emitted or the observable
107
+ * has completed/errored. This is used to make sure that universal waits until the first
108
+ * value from firebase but doesn't block the zone forever since the firebase subscription
109
+ * is still alive.
110
+ */
111
+ export function ɵkeepUnstableUntilFirstFactory(schedulers) {
112
+ return function keepUnstableUntilFirst(obs$) {
113
+ obs$ = obs$.lift(new BlockUntilFirstOperator(schedulers.ngZone));
114
+ return obs$.pipe(
115
+ // Run the subscribe body outside of Angular (e.g. calling Firebase SDK to add a listener to a change event)
116
+ subscribeOn(schedulers.outsideAngular),
117
+ // Run operators inside the angular zone (e.g. side effects via tap())
118
+ observeOn(schedulers.insideAngular)
119
+ // INVESTIGATE https://github.com/angular/angularfire/pull/2315
120
+ // share()
121
+ );
122
+ };
123
+ }
124
+ // @ts-ignore
125
+ const zoneWrapFn = (it, macrotask) => {
126
+ // eslint-disable-next-line @typescript-eslint/no-this-alias
127
+ const _this = this;
128
+ // function() is needed for the arguments object
129
+ return function () {
130
+ const _arguments = arguments;
131
+ if (macrotask) {
132
+ setTimeout(() => {
133
+ if (macrotask.state === 'scheduled') {
134
+ macrotask.invoke();
135
+ }
136
+ }, 10);
137
+ }
138
+ return run(() => it.apply(_this, _arguments));
139
+ };
140
+ };
141
+ export const ɵzoneWrap = (it, blockUntilFirst) => {
142
+ // function() is needed for the arguments object
143
+ return function () {
144
+ // @ts-ignore
145
+ let macrotask;
146
+ const _arguments = arguments;
147
+ // if this is a callback function, e.g, onSnapshot, we should create a microtask and invoke it
148
+ // only once one of the callback functions is tripped.
149
+ for (let i = 0; i < arguments.length; i++) {
150
+ if (typeof _arguments[i] === 'function') {
151
+ if (blockUntilFirst) {
152
+ // @ts-ignore
153
+ macrotask ||= run(() => Zone.current.scheduleMacroTask('firebaseZoneBlock', noop, {}, noop, noop));
154
+ }
155
+ // TODO create a microtask to track callback functions
156
+ _arguments[i] = zoneWrapFn(_arguments[i], macrotask);
157
+ }
158
+ }
159
+ const ret = runOutsideAngular(() => it.apply(this, _arguments));
160
+ if (!blockUntilFirst) {
161
+ if (ret instanceof Observable) {
162
+ const schedulers = getSchedulers();
163
+ return ret.pipe(subscribeOn(schedulers.outsideAngular), observeOn(schedulers.insideAngular));
164
+ }
165
+ else {
166
+ return run(() => ret);
167
+ }
168
+ }
169
+ if (ret instanceof Observable) {
170
+ return ret.pipe(keepUnstableUntilFirst);
171
+ }
172
+ else if (ret instanceof Promise) {
173
+ // eslint-disable-next-line @typescript-eslint/no-misused-promises
174
+ return run(() => new Promise((resolve, reject) => ret.then(it => run(() => resolve(it)), reason => run(() => reject(reason)))));
175
+ }
176
+ else if (typeof ret === 'function' && macrotask) {
177
+ // Handle unsubscribe
178
+ // function() is needed for the arguments object
179
+ return function () {
180
+ setTimeout(() => {
181
+ if (macrotask && macrotask.state === 'scheduled') {
182
+ macrotask.invoke();
183
+ }
184
+ }, 10);
185
+ return ret.apply(this, arguments);
186
+ };
187
+ }
188
+ else {
189
+ // TODO how do we handle storage uploads in Zone? and other stuff with cancel() etc?
190
+ return run(() => ret);
191
+ }
192
+ };
193
+ };
194
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiem9uZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvem9uZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsc0RBQXNEO0FBQ3RELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFDTCxVQUFVLEVBT1YsY0FBYyxFQUNkLGNBQWMsRUFDZixNQUFNLE1BQU0sQ0FBQztBQUNkLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQUU3RCxnRUFBZ0U7QUFDaEUsU0FBUyxJQUFJO0FBQ2IsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGNBQWM7SUFDTDtJQUFtQjtJQUF2QyxZQUFvQixJQUFTLEVBQVUsV0FBZ0IsY0FBYztRQUFqRCxTQUFJLEdBQUosSUFBSSxDQUFLO1FBQVUsYUFBUSxHQUFSLFFBQVEsQ0FBc0I7SUFDckUsQ0FBQztJQUVELEdBQUc7UUFDRCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVELFFBQVEsQ0FBQyxJQUF1RCxFQUFFLEtBQWMsRUFBRSxLQUFXO1FBQzNGLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDN0IsMEZBQTBGO1FBQzFGLHVDQUF1QztRQUN2QyxNQUFNLFVBQVUsR0FBRyxVQUFxQyxLQUFVO1lBQ2hFLFVBQVUsQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFO2dCQUN6QixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDNUIsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUM7UUFFRixzR0FBc0c7UUFDdEcsaUdBQWlHO1FBQ2pHLCtHQUErRztRQUMvRyxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxL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Q1AsT0FBTyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztZQUNwQyxDQUFDLENBQUM7U0FDSDthQUFNO1lBQ0wsb0ZBQW9GO1lBQ3BGLE9BQU8sR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3ZCO0lBQ0gsQ0FBUSxDQUFDO0FBQ1gsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50ICovXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBOZ1pvbmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIE9ic2VydmFibGUsXG4gIE9wZXJhdG9yLFxuICBTY2hlZHVsZXJBY3Rpb24sXG4gIFNjaGVkdWxlckxpa2UsXG4gIFN1YnNjcmliZXIsXG4gIFN1YnNjcmlwdGlvbixcbiAgVGVhcmRvd25Mb2dpYyxcbiAgYXN5bmNTY2hlZHVsZXIsXG4gIHF1ZXVlU2NoZWR1bGVyXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgb2JzZXJ2ZU9uLCBzdWJzY3JpYmVPbiwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXG5mdW5jdGlvbiBub29wKCkge1xufVxuXG4vKipcbiAqIFNjaGVkdWxlcyB0YXNrcyBzbyB0aGF0IHRoZXkgYXJlIGludm9rZWQgaW5zaWRlIHRoZSBab25lIHRoYXQgaXMgcGFzc2VkIGluIHRoZSBjb25zdHJ1Y3Rvci5cbiAqL1xuZXhwb3J0IGNsYXNzIMm1Wm9uZVNjaGVkdWxlciBpbXBsZW1lbnRzIFNjaGVkdWxlckxpa2Uge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHpvbmU6IGFueSwgcHJpdmF0ZSBkZWxlZ2F0ZTogYW55ID0gcXVldWVTY2hlZHVsZXIpIHtcbiAgfVxuXG4gIG5vdygpIHtcbiAgICByZXR1cm4gdGhpcy5kZWxlZ2F0ZS5ub3coKTtcbiAgfVxuXG4gIHNjaGVkdWxlKHdvcms6ICh0aGlzOiBTY2hlZHVsZXJBY3Rpb248YW55Piwgc3RhdGU/OiBhbnkpID0+IHZvaWQsIGRlbGF5PzogbnVtYmVyLCBzdGF0ZT86IGFueSk6IFN1YnNjcmlwdGlvbiB7XG4gICAgY29uc3QgdGFyZ2V0Wm9uZSA9IHRoaXMuem9uZTtcbiAgICAvLyBXcmFwIHRoZSBzcGVjaWZpZWQgd29yayBmdW5jdGlvbiB0byBtYWtlIHN1cmUgdGhhdCBpZiBuZXN0ZWQgc2NoZWR1bGluZyB0YWtlcyBwbGFjZSB0aGVcbiAgICAvLyB3b3JrIGlzIGV4ZWN1dGVkIGluIHRoZSBjb3JyZWN0IHpvbmVcbiAgICBjb25zdCB3b3JrSW5ab25lID0gZnVuY3Rpb24odGhpczogU2NoZWR1bGVyQWN0aW9uPGFueT4sIHN0YXRlOiBhbnkpIHtcbiAgICAgIHRhcmdldFpvbmUucnVuR3VhcmRlZCgoKSA9PiB7XG4gICAgICAgIHdvcmsuYXBwbHkodGhpcywgW3N0YXRlXSk7XG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgLy8gU2NoZWR1bGluZyBpdHNlbGYgbmVlZHMgdG8gYmUgcnVuIGluIHpvbmUgdG8gZW5zdXJlIHNldEludGVydmFsIGNhbGxzIGZvciBhc3luYyBzY2hlZHVsaW5nIGFyZSBkb25lXG4gICAgLy8gaW5zaWRlIHRoZSBjb3JyZWN0IHpvbmUuIFRoaXMgc2NoZWR1bGVyIG5lZWRzIHRvIHNjaGVkdWxlIGFzeW5jaHJvbm91c2x5IGFsd2F5cyB0byBlbnN1cmUgdGhhdFxuICAgIC8vIGZpcmViYXNlIGVtaXNzaW9ucyBhcmUgbmV2ZXIgc3luY2hyb25vdXMuIFNwZWNpZnlpbmcgYSBkZWxheSBjYXVzZXMgaXNzdWVzIHdpdGggdGhlIHF1ZXVlU2NoZWR1bGVyIGRlbGVnYXRlLlxuICAgIHJldHVybiB0aGlzLmRlbGVnYXRlLnNjaGVkdWxlKHdvcmtJblpvbmUsIGRlbGF5LCBzdGF0ZSk7XG4gIH1cbn1cblxuY2xhc3MgQmxvY2tVbnRpbEZpcnN0T3BlcmF0b3I8VD4gaW1wbGVtZW50cyBPcGVyYXRvcjxULCBUPiB7XG4gIC8vIEB0cy1pZ25vcmVcbiAgcHJpdmF0ZSB0YXNrOiBNYWNyb1Rhc2sgfCBudWxsID0gbnVsbDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHpvbmU6IGFueSkge1xuICB9XG5cbiAgY2FsbChzdWJzY3JpYmVyOiBTdWJzY3JpYmVyPFQ+LCBzb3VyY2U6IE9ic2VydmFibGU8VD4pOiBUZWFyZG93bkxvZ2ljIHtcbiAgICBjb25zdCB1bnNjaGVkdWxlVGFzayA9IHRoaXMudW5zY2hlZHVsZVRhc2suYmluZCh0aGlzKTtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdGhpcy50YXNrID0gdGhpcy56b25lLnJ1bigoKSA9PiBab25lLmN1cnJlbnQuc2NoZWR1bGVNYWNyb1Rhc2soJ2ZpcmViYXNlWm9uZUJsb2NrJywgbm9vcCwge30sIG5vb3AsIG5vb3ApKTtcblxuICAgIHJldHVybiBzb3VyY2UucGlwZShcbiAgICAgIHRhcCh7IG5leHQ6IHVuc2NoZWR1bGVUYXNrLCBjb21wbGV0ZTogdW5zY2hlZHVsZVRhc2ssIGVycm9yOiB1bnNjaGVkdWxlVGFzayB9KVxuICAgICkuc3Vic2NyaWJlKHN1YnNjcmliZXIpLmFkZCh1bnNjaGVkdWxlVGFzayk7XG4gIH1cblxuICBwcml2YXRlIHVuc2NoZWR1bGVUYXNrKCkge1xuICAgIC8vIG1heWJlIHRoaXMgaXMgYSByYWNlIGNvbmRpdGlvbiwgaW52b2tlIGluIGEgdGltZW91dFxuICAgIC8vIGhvbGQgZm9yIDEwbXMgd2hpbGUgSSB0cnkgdG8gZmlndXJlIG91dCB3aGF0IGlzIGdvaW5nIG9uXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy50YXNrICE9IG51bGwgJiYgdGhpcy50YXNrLnN0YXRlID09PSAnc2NoZWR1bGVkJykge1xuICAgICAgICB0aGlzLnRhc2suaW52b2tlKCk7XG4gICAgICAgIHRoaXMudGFzayA9IG51bGw7XG4gICAgICB9XG4gICAgfSwgMTApO1xuICB9XG59XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyDJtUFuZ3VsYXJGaXJlU2NoZWR1bGVycyB7XG4gIHB1YmxpYyByZWFkb25seSBvdXRzaWRlQW5ndWxhcjogybVab25lU2NoZWR1bGVyO1xuICBwdWJsaWMgcmVhZG9ubHkgaW5zaWRlQW5ndWxhcjogybVab25lU2NoZWR1bGVyO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBuZ1pvbmU6IE5nWm9uZSkge1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB0aGlzLm91dHNpZGVBbmd1bGFyID0gbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IG5ldyDJtVpvbmVTY2hlZHVsZXIoWm9uZS5jdXJyZW50KSk7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHRoaXMuaW5zaWRlQW5ndWxhciA9IG5nWm9uZS5ydW4oKCkgPT4gbmV3IMm1Wm9uZVNjaGVkdWxlcihab25lLmN1cnJlbnQsIGFzeW5jU2NoZWR1bGVyKSk7XG4gICAgZ2xvYmFsVGhpcy7JtUFuZ3VsYXJGaXJlU2NoZWR1bGVyIHx8PSB0aGlzO1xuICB9XG59XG5cbmZ1bmN0aW9uIGdldFNjaGVkdWxlcnMoKSB7XG4gIGNvbnN0IHNjaGVkdWxlcnMgPSBnbG9iYWxUaGlzLsm1QW5ndWxhckZpcmVTY2hlZHVsZXIgYXMgybVBbmd1bGFyRmlyZVNjaGVkdWxlcnN8dW5kZWZpbmVkO1xuICBpZiAoIXNjaGVkdWxlcnMpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG5gRWl0aGVyIEFuZ3VsYXJGaXJlTW9kdWxlIGhhcyBub3QgYmVlbiBwcm92aWRlZCBpbiB5b3VyIEFwcE1vZHVsZSAodGhpcyBjYW4gYmUgZG9uZSBtYW51YWxseSBvciBpbXBsaWN0bHkgdXNpbmdcbnByb3ZpZGVGaXJlYmFzZUFwcCkgb3IgeW91J3JlIGNhbGxpbmcgYW4gQW5ndWxhckZpcmUgbWV0aG9kIG91dHNpZGUgb2YgYW4gTmdNb2R1bGUgKHdoaWNoIGlzIG5vdCBzdXBwb3J0ZWQpLmApO1xuICB9XG4gIHJldHVybiBzY2hlZHVsZXJzO1xufVxuXG5mdW5jdGlvbiBydW5PdXRzaWRlQW5ndWxhcjxUPihmbjogKC4uLmFyZ3M6IGFueVtdKSA9PiBUKTogVCB7XG4gIHJldHVybiBnZXRTY2hlZHVsZXJzKCkubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IGZuKCkpO1xufVxuXG5mdW5jdGlvbiBydW48VD4oZm46ICguLi5hcmdzOiBhbnlbXSkgPT4gVCk6IFQge1xuICByZXR1cm4gZ2V0U2NoZWR1bGVycygpLm5nWm9uZS5ydW4oKCkgPT4gZm4oKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBvYnNlcnZlT3V0c2lkZUFuZ3VsYXI8VD4ob2JzJDogT2JzZXJ2YWJsZTxUPik6IE9ic2VydmFibGU8VD4ge1xuICByZXR1cm4gb2JzJC5waXBlKG9ic2VydmVPbihnZXRTY2hlZHVsZXJzKCkub3V0c2lkZUFuZ3VsYXIpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG9ic2VydmVJbnNpZGVBbmd1bGFyPFQ+KG9icyQ6IE9ic2VydmFibGU8VD4pOiBPYnNlcnZhYmxlPFQ+IHtcbiAgcmV0dXJuIG9icyQucGlwZShvYnNlcnZlT24oZ2V0U2NoZWR1bGVycygpLmluc2lkZUFuZ3VsYXIpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGtlZXBVbnN0YWJsZVVudGlsRmlyc3Q8VD4ob2JzJDogT2JzZXJ2YWJsZTxUPik6IE9ic2VydmFibGU8VD4ge1xuICByZXR1cm4gybVrZWVwVW5zdGFibGVVbnRpbEZpcnN0RmFjdG9yeShnZXRTY2hlZHVsZXJzKCkpKG9icyQpO1xufVxuXG4vKipcbiAqIE9wZXJhdG9yIHRvIGJsb2NrIHRoZSB6b25lIHVudGlsIHRoZSBmaXJzdCB2YWx1ZSBoYXMgYmVlbiBlbWl0dGVkIG9yIHRoZSBvYnNlcnZhYmxlXG4gKiBoYXMgY29tcGxldGVkL2Vycm9yZWQuIFRoaXMgaXMgdXNlZCB0byBtYWtlIHN1cmUgdGhhdCB1bml2ZXJzYWwgd2FpdHMgdW50aWwgdGhlIGZpcnN0XG4gKiB2YWx1ZSBmcm9tIGZpcmViYXNlIGJ1dCBkb2Vzbid0IGJsb2NrIHRoZSB6b25lIGZvcmV2ZXIgc2luY2UgdGhlIGZpcmViYXNlIHN1YnNjcmlwdGlvblxuICogaXMgc3RpbGwgYWxpdmUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiDJtWtlZXBVbnN0YWJsZVVudGlsRmlyc3RGYWN0b3J5KHNjaGVkdWxlcnM6IMm1QW5ndWxhckZpcmVTY2hlZHVsZXJzKSB7XG4gIHJldHVybiBmdW5jdGlvbiBrZWVwVW5zdGFibGVVbnRpbEZpcnN0PFQ+KG9icyQ6IE9ic2VydmFibGU8VD4pOiBPYnNlcnZhYmxlPFQ+IHtcbiAgICBvYnMkID0gb2JzJC5saWZ0KFxuICAgICAgbmV3IEJsb2NrVW50aWxGaXJzdE9wZXJhdG9yKHNjaGVkdWxlcnMubmdab25lKVxuICAgICk7XG5cbiAgICByZXR1cm4gb2JzJC5waXBlKFxuICAgICAgLy8gUnVuIHRoZSBzdWJzY3JpYmUgYm9keSBvdXRzaWRlIG9mIEFuZ3VsYXIgKGUuZy4gY2FsbGluZyBGaXJlYmFzZSBTREsgdG8gYWRkIGEgbGlzdGVuZXIgdG8gYSBjaGFuZ2UgZXZlbnQpXG4gICAgICBzdWJzY3JpYmVPbihzY2hlZHVsZXJzLm91dHNpZGVBbmd1bGFyKSxcbiAgICAgIC8vIFJ1biBvcGVyYXRvcnMgaW5zaWRlIHRoZSBhbmd1bGFyIHpvbmUgKGUuZy4gc2lkZSBlZmZlY3RzIHZpYSB0YXAoKSlcbiAgICAgIG9ic2VydmVPbihzY2hlZHVsZXJzLmluc2lkZUFuZ3VsYXIpXG4gICAgICAvLyBJTlZFU1RJR0FURSBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyZmlyZS9wdWxsLzIzMTVcbiAgICAgIC8vIHNoYXJlKClcbiAgICApO1xuICB9O1xufVxuXG4vLyBAdHMtaWdub3JlXG5jb25zdCB6b25lV3JhcEZuID0gKGl0OiAoLi4uYXJnczogYW55W10pID0+IGFueSwgbWFjcm90YXNrOiBNYWNyb1Rhc2t8dW5kZWZpbmVkKSA9PiB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdGhpcy1hbGlhc1xuICBjb25zdCBfdGhpcyA9IHRoaXM7XG4gIC8vIGZ1bmN0aW9uKCkgaXMgbmVlZGVkIGZvciB0aGUgYXJndW1lbnRzIG9iamVjdFxuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgY29uc3QgX2FyZ3VtZW50cyA9IGFyZ3VtZW50cztcbiAgICBpZiAobWFjcm90YXNrKSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgaWYgKG1hY3JvdGFzay5zdGF0ZSA9PT0gJ3NjaGVkdWxlZCcpIHtcbiAgICAgICAgICBtYWNyb3Rhc2suaW52b2tlKCk7XG4gICAgICAgIH1cbiAgICAgIH0sIDEwKTtcbiAgICB9XG4gICAgcmV0dXJuIHJ1bigoKSA9PiBpdC5hcHBseShfdGhpcywgX2FyZ3VtZW50cykpO1xuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IMm1em9uZVdyYXAgPSA8VD0gdW5rbm93bj4oaXQ6IFQsIGJsb2NrVW50aWxGaXJzdDogYm9vbGVhbik6IFQgPT4ge1xuICAvLyBmdW5jdGlvbigpIGlzIG5lZWRlZCBmb3IgdGhlIGFyZ3VtZW50cyBvYmplY3RcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBsZXQgbWFjcm90YXNrOiBNYWNyb1Rhc2sgfCB1bmRlZmluZWQ7XG4gICAgY29uc3QgX2FyZ3VtZW50cyA9IGFyZ3VtZW50cztcbiAgICAvLyBpZiB0aGlzIGlzIGEgY2FsbGJhY2sgZnVuY3Rpb24sIGUuZywgb25TbmFwc2hvdCwgd2Ugc2hvdWxkIGNyZWF0ZSBhIG1pY3JvdGFzayBhbmQgaW52b2tlIGl0XG4gICAgLy8gb25seSBvbmNlIG9uZSBvZiB0aGUgY2FsbGJhY2sgZnVuY3Rpb25zIGlzIHRyaXBwZWQuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmICh0eXBlb2YgX2FyZ3VtZW50c1tpXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBpZiAoYmxvY2tVbnRpbEZpcnN0KSB7XG4gICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIG1hY3JvdGFzayB8fD0gcnVuKCgpID0+IFpvbmUuY3VycmVudC5zY2hlZHVsZU1hY3JvVGFzaygnZmlyZWJhc2Vab25lQmxvY2snLCBub29wLCB7fSwgbm9vcCwgbm9vcCkpO1xuICAgICAgICB9XG4gICAgICAgIC8vIFRPRE8gY3JlYXRlIGEgbWljcm90YXNrIHRvIHRyYWNrIGNhbGxiYWNrIGZ1bmN0aW9uc1xuICAgICAgICBfYXJndW1lbnRzW2ldID0gem9uZVdyYXBGbihfYXJndW1lbnRzW2ldLCBtYWNyb3Rhc2spO1xuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCByZXQgPSBydW5PdXRzaWRlQW5ndWxhcigoKSA9PiAoaXQgYXMgYW55KS5hcHBseSh0aGlzLCBfYXJndW1lbnRzKSk7XG4gICAgaWYgKCFibG9ja1VudGlsRmlyc3QpIHtcbiAgICAgIGlmIChyZXQgaW5zdGFuY2VvZiBPYnNlcnZhYmxlKSB7XG4gICAgICAgIGNvbnN0IHNjaGVkdWxlcnMgPSBnZXRTY2hlZHVsZXJzKCk7XG4gICAgICAgIHJldHVybiByZXQucGlwZShcbiAgICAgICAgICBzdWJzY3JpYmVPbihzY2hlZHVsZXJzLm91dHNpZGVBbmd1bGFyKSxcbiAgICAgICAgICBvYnNlcnZlT24oc2NoZWR1bGVycy5pbnNpZGVBbmd1bGFyKSxcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBydW4oKCkgPT4gcmV0KTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHJldCBpbnN0YW5jZW9mIE9ic2VydmFibGUpIHtcbiAgICAgIHJldHVybiByZXQucGlwZShrZWVwVW5zdGFibGVVbnRpbEZpcnN0KSBhcyBhbnk7XG4gICAgfSBlbHNlIGlmIChyZXQgaW5zdGFuY2VvZiBQcm9taXNlKSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW1pc3VzZWQtcHJvbWlzZXNcbiAgICAgIHJldHVybiBydW4oKCkgPT4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gcmV0LnRoZW4oaXQgPT4gcnVuKCgpID0+IHJlc29sdmUoaXQpKSwgcmVhc29uID0+IHJ1bigoKSA9PiByZWplY3QocmVhc29uKSkpKSk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgcmV0ID09PSAnZnVuY3Rpb24nICYmIG1hY3JvdGFzaykge1xuICAgICAgLy8gSGFuZGxlIHVuc3Vic2NyaWJlXG4gICAgICAvLyBmdW5jdGlvbigpIGlzIG5lZWRlZCBmb3IgdGhlIGFyZ3VtZW50cyBvYmplY3RcbiAgICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgaWYgKG1hY3JvdGFzayAmJiBtYWNyb3Rhc2suc3RhdGUgPT09ICdzY2hlZHVsZWQnKSB7XG4gICAgICAgICAgICBtYWNyb3Rhc2suaW52b2tlKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9LCAxMCk7XG4gICAgICAgIHJldHVybiByZXQuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFRPRE8gaG93IGRvIHdlIGhhbmRsZSBzdG9yYWdlIHVwbG9hZHMgaW4gWm9uZT8gYW5kIG90aGVyIHN0dWZmIHdpdGggY2FuY2VsKCkgZXRjP1xuICAgICAgcmV0dXJuIHJ1bigoKSA9PiByZXQpO1xuICAgIH1cbiAgfSBhcyBhbnk7XG59O1xuIl19