studiokit-scaffolding-js 7.6.2 → 7.7.0

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 (340) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +141 -141
  3. package/lib/components/AccessibilityStatement.js +1 -1
  4. package/lib/components/AccessibleOverlayTrigger.js +3 -3
  5. package/lib/components/ActionList.js +1 -1
  6. package/lib/components/AlertDialog.js +1 -1
  7. package/lib/components/AlertWithIcon.js +1 -1
  8. package/lib/components/Buttons/PopoverButton.js +1 -1
  9. package/lib/components/ConnectedModal.js +3 -3
  10. package/lib/components/Downtime.js +1 -1
  11. package/lib/components/Dropdowns/GroupsDropdown.js +1 -1
  12. package/lib/components/Dropdowns/ManagedNavDropdown.js +4 -4
  13. package/lib/components/Dropdowns/UserDropdown.js +2 -2
  14. package/lib/components/Dropdowns/index.js +1 -1
  15. package/lib/components/EmptyCoursesMessage.js +1 -1
  16. package/lib/components/EntityOwnerList.js +1 -1
  17. package/lib/components/Error.js +1 -1
  18. package/lib/components/ErrorBoundary.js +1 -1
  19. package/lib/components/ErrorMessage.js +1 -1
  20. package/lib/components/ExpiringSoonAlert.d.ts +2 -0
  21. package/lib/components/ExpiringSoonAlert.js +142 -0
  22. package/lib/components/Footer/index.css +59 -59
  23. package/lib/components/Footer/index.js +1 -1
  24. package/lib/components/Forms/DateField.js +1 -1
  25. package/lib/components/Forms/TimeField.js +1 -1
  26. package/lib/components/Forms/index.js +1 -1
  27. package/lib/components/FullscreenHeader.js +1 -1
  28. package/lib/components/Groups/CreateEditCopySaveButtons.js +1 -1
  29. package/lib/components/Groups/ExternalGroups/Attach.js +1 -1
  30. package/lib/components/Groups/ExternalGroups/Table.js +1 -1
  31. package/lib/components/Groups/GroupCreateOrEditCommonProps.js +1 -1
  32. package/lib/components/Groups/RosterSyncInfo.js +1 -1
  33. package/lib/components/HOC/AccessibleAppComponent.js +6 -6
  34. package/lib/components/HOC/ActivityRequiredComponent.js +50 -50
  35. package/lib/components/HOC/AsyncComponent.js +1 -1
  36. package/lib/components/HOC/AuthenticatedComponent.js +1 -1
  37. package/lib/components/HOC/CollectionComponent.js +11 -11
  38. package/lib/components/HOC/CollectionFirstItemComponent.js +4 -4
  39. package/lib/components/HOC/CollectionItemComponent.js +11 -11
  40. package/lib/components/HOC/ConnectedModalComponent.js +15 -15
  41. package/lib/components/HOC/DataDependentComponent.js +1 -1
  42. package/lib/components/HOC/EntityComponent.js +12 -12
  43. package/lib/components/HOC/FullscreenModalComponent.js +15 -15
  44. package/lib/components/HOC/GroupActivityRequiredComponent.js +19 -19
  45. package/lib/components/HOC/GuidComponent.js +5 -5
  46. package/lib/components/HOC/ModelContextDependencyVerifyComponent.js +7 -7
  47. package/lib/components/HOC/ModelErrorRedirectComponent.js +12 -12
  48. package/lib/components/HOC/SearchPersistorComponent.js +43 -43
  49. package/lib/components/HOC/UnauthenticatedComponent.js +1 -1
  50. package/lib/components/HOC/UserComponent.js +1 -1
  51. package/lib/components/Icons/IconAlphaList.js +1 -1
  52. package/lib/components/Icons/IconExternalUser.js +1 -1
  53. package/lib/components/Icons/IconImpersonation.js +1 -1
  54. package/lib/components/Icons/IconSheriff.js +2 -2
  55. package/lib/components/Icons/IconStopImpersonating.js +1 -1
  56. package/lib/components/Icons/IconTable.js +1 -1
  57. package/lib/components/Icons/IconTableDeleteCol.js +1 -1
  58. package/lib/components/Icons/IconTableDeleteRow.js +1 -1
  59. package/lib/components/Icons/IconTableInsertCol.js +1 -1
  60. package/lib/components/Icons/IconTableInsertRow.js +1 -1
  61. package/lib/components/Impersonation/Button.js +1 -1
  62. package/lib/components/Impersonation/Link.js +1 -1
  63. package/lib/components/Impersonation/UserDetail.css +24 -24
  64. package/lib/components/Impersonation/UserDetail.js +3 -3
  65. package/lib/components/LoadErrorAlert.js +1 -1
  66. package/lib/components/Loading.js +1 -1
  67. package/lib/components/LockDownBrowser/Check.js +1 -1
  68. package/lib/components/LockDownBrowser/ExitButton.js +1 -1
  69. package/lib/components/LockDownBrowser/Launch.js +1 -1
  70. package/lib/components/Lti/Confirm.js +1 -1
  71. package/lib/components/Lti/CreateNonLtiGroupAlertDialog.js +1 -1
  72. package/lib/components/Lti/Launch.js +1 -1
  73. package/lib/components/Lti/LaunchGroup.js +1 -1
  74. package/lib/components/ManageTable.js +1 -1
  75. package/lib/components/ManageTableNoDataComponent.js +1 -1
  76. package/lib/components/NewVersionAlert.js +1 -1
  77. package/lib/components/NotFound.js +1 -1
  78. package/lib/components/Notifications.js +1 -1
  79. package/lib/components/PaginationNextButton.js +1 -1
  80. package/lib/components/PaginationPreviousButton.js +1 -1
  81. package/lib/components/Quill/CustomToolbar.js +1 -1
  82. package/lib/components/Quill/Formats/Image.js +5 -5
  83. package/lib/components/Quill/Formats/List.js +3 -3
  84. package/lib/components/Quill/Formats/Video.js +3 -3
  85. package/lib/components/Quill/ImageDropModule.js +17 -17
  86. package/lib/components/Quill/ImageWarning.js +1 -1
  87. package/lib/components/Quill/ImageWithAltTextModal.js +1 -1
  88. package/lib/components/Quill/Specs/CustomImageSpec.js +7 -7
  89. package/lib/components/Quill/Specs/CustomVideoSpec.js +9 -9
  90. package/lib/components/Quill/TableModule/Blots/BaseTableBlot.js +8 -8
  91. package/lib/components/Quill/TableModule/Blots/TableBlot.js +1 -1
  92. package/lib/components/Quill/TableModule/Blots/TableBodyBlot.js +1 -1
  93. package/lib/components/Quill/TableModule/Blots/TableCellBlot.js +1 -1
  94. package/lib/components/Quill/TableModule/Blots/TableContainer.js +1 -1
  95. package/lib/components/Quill/TableModule/Blots/TableRowBlot.js +1 -1
  96. package/lib/components/Quill/TableModule/constants.js +1 -1
  97. package/lib/components/Quill/TableModule/index.css +171 -171
  98. package/lib/components/Quill/TableModule/index.js +1 -1
  99. package/lib/components/Quill/TableModule/utils.js +1 -1
  100. package/lib/components/Quill/accessibilityFix.js +14 -14
  101. package/lib/components/Quill/index.js +1 -1
  102. package/lib/components/RefreshIndicator/Bordered.js +1 -1
  103. package/lib/components/RefreshIndicator/Inline.js +1 -1
  104. package/lib/components/RefreshIndicator/index.js +1 -1
  105. package/lib/components/SearchControls.js +1 -1
  106. package/lib/components/SentryRoute.js +1 -1
  107. package/lib/components/Tables/RoleFilter.js +1 -1
  108. package/lib/components/Tables/TextFilter.js +1 -1
  109. package/lib/components/TimeZoneInfo.js +1 -1
  110. package/lib/components/UserRoles/Add.js +1 -1
  111. package/lib/components/UserRoles/Context.js +4 -4
  112. package/lib/components/UserRoles/RoleCell.js +1 -1
  113. package/lib/components/UserRoles/Select.js +1 -1
  114. package/lib/components/UserRoles/Table.js +1 -1
  115. package/lib/components/UserRoles/index.js +3 -3
  116. package/lib/config/eslint/index.js +1 -1
  117. package/lib/config/eslint/lib/order.js +1 -1
  118. package/lib/config/eslint/lib/typescript.js +1 -1
  119. package/lib/config/eslint/react.js +1 -1
  120. package/lib/config/eslint/rules/accessibleOverlayTrigger.js +1 -1
  121. package/lib/config/eslint/studiokit.js +1 -1
  122. package/lib/constants/baseActivity.js +1 -1
  123. package/lib/constants/baseRole.js +1 -1
  124. package/lib/constants/configuration.js +1 -1
  125. package/lib/constants/externalProviderType.js +1 -1
  126. package/lib/constants/fetchErrorData.js +1 -1
  127. package/lib/constants/index.js +1 -1
  128. package/lib/constants/lockDownBrowser.js +1 -1
  129. package/lib/constants/mockData.d.ts +4 -1
  130. package/lib/constants/mockData.js +30 -4
  131. package/lib/constants/modelStatus.js +1 -1
  132. package/lib/constants/notificationType.js +1 -1
  133. package/lib/constants/number.d.ts +1 -0
  134. package/lib/constants/number.js +8 -0
  135. package/lib/constants/operatingSystem.js +1 -1
  136. package/lib/constants/shard.js +1 -1
  137. package/lib/constants/slot.js +1 -1
  138. package/lib/constants/svgMock.js +1 -1
  139. package/lib/constants/table.js +1 -1
  140. package/lib/constants/tier.js +1 -1
  141. package/lib/constants/userRole.js +1 -1
  142. package/lib/css/base/_base.css +98 -98
  143. package/lib/css/base/_print.css +66 -66
  144. package/lib/css/base/_typography.css +130 -130
  145. package/lib/css/components/_actionList.css +70 -70
  146. package/lib/css/components/_alert.css +86 -86
  147. package/lib/css/components/_bootstrap-grid.css +27 -27
  148. package/lib/css/components/_buttons.css +435 -435
  149. package/lib/css/components/_forms.css +157 -157
  150. package/lib/css/components/_menu.css +55 -55
  151. package/lib/css/components/_modals.css +132 -132
  152. package/lib/css/components/_quill.css +329 -329
  153. package/lib/css/components/_tables.css +506 -506
  154. package/lib/css/components/_tags.css +12 -12
  155. package/lib/css/index-with-variables.css +15 -15
  156. package/lib/css/index.css +14 -14
  157. package/lib/css/utils/_border.css +463 -463
  158. package/lib/css/utils/_color.css +317 -317
  159. package/lib/css/utils/_display.css +307 -307
  160. package/lib/css/utils/_focus.css +12 -12
  161. package/lib/css/utils/_general.css +50 -50
  162. package/lib/css/utils/_icon.css +35 -35
  163. package/lib/css/utils/_text.css +25 -25
  164. package/lib/css/utils/_width.css +60 -60
  165. package/lib/css/variables.css +100 -100
  166. package/lib/endpointMappings.js +23 -10
  167. package/lib/hooks/useCollection.js +1 -1
  168. package/lib/hooks/useCollectionConfiguration.js +7 -7
  169. package/lib/hooks/useCollectionItem.js +1 -1
  170. package/lib/hooks/useEventCalback.js +13 -13
  171. package/lib/hooks/useGuid.js +3 -3
  172. package/lib/hooks/usePeriodicallyUpdatingState.d.ts +8 -0
  173. package/lib/hooks/usePeriodicallyUpdatingState.js +59 -0
  174. package/lib/hooks/usePrevious.js +23 -23
  175. package/lib/index.js +1 -1
  176. package/lib/redux/actionCreator.js +1 -1
  177. package/lib/redux/actions/AuthAction.d.ts +16 -5
  178. package/lib/redux/actions/AuthAction.js +19 -9
  179. package/lib/redux/actions/ModalAction.js +1 -1
  180. package/lib/redux/actions/ModelAction.js +19 -19
  181. package/lib/redux/actions/NotificationAction.js +1 -1
  182. package/lib/redux/actions/SearchAction.js +1 -1
  183. package/lib/redux/actions/index.js +1 -1
  184. package/lib/redux/configureReducers.js +7 -7
  185. package/lib/redux/configureStore.js +1 -1
  186. package/lib/redux/helpers.js +1 -1
  187. package/lib/redux/reducers/authReducer.d.ts +2 -2
  188. package/lib/redux/reducers/authReducer.js +30 -15
  189. package/lib/redux/reducers/index.js +1 -1
  190. package/lib/redux/reducers/modalsReducer.js +1 -1
  191. package/lib/redux/reducers/modelsReducer.js +48 -48
  192. package/lib/redux/reducers/notificationsReducer.js +1 -1
  193. package/lib/redux/reducers/searchReducer.js +9 -9
  194. package/lib/redux/sagas/appInsightsSaga.js +2 -2
  195. package/lib/redux/sagas/authSaga.d.ts +7 -3
  196. package/lib/redux/sagas/authSaga.js +286 -102
  197. package/lib/redux/sagas/caliperSaga.js +20 -17
  198. package/lib/redux/sagas/clockOffsetSaga.js +9 -9
  199. package/lib/redux/sagas/configurationSaga.js +1 -1
  200. package/lib/redux/sagas/downtimeApiErrorSaga.js +1 -1
  201. package/lib/redux/sagas/errorSaga.js +1 -1
  202. package/lib/redux/sagas/googleAnalyticsSaga.js +2 -2
  203. package/lib/redux/sagas/identityProviderSaga.js +24 -11
  204. package/lib/redux/sagas/initialDataLoadSaga.js +1 -1
  205. package/lib/redux/sagas/lockDownBrowserErrorSaga.js +1 -1
  206. package/lib/redux/sagas/modelFetchSaga.js +66 -79
  207. package/lib/redux/sagas/noStoreSaga.js +1 -1
  208. package/lib/redux/sagas/postLoginDataSaga.js +7 -7
  209. package/lib/redux/sagas/postLoginRedirectSaga.js +5 -5
  210. package/lib/redux/sagas/rootSaga.js +8 -8
  211. package/lib/redux/sagas/sentrySaga.js +2 -2
  212. package/lib/redux/sagas/userIdSaga.js +2 -2
  213. package/lib/services/codeProviderService.js +1 -1
  214. package/lib/services/documentService.js +4 -4
  215. package/lib/services/fetchService.js +26 -26
  216. package/lib/services/mockAuthPersistenceService.d.ts +3 -0
  217. package/lib/services/mockAuthPersistenceService.js +56 -0
  218. package/lib/services/persistenceService.d.ts +3 -3
  219. package/lib/services/persistenceService.js +37 -6
  220. package/lib/services/ticketProviderService.js +1 -1
  221. package/lib/services/userActivityService.d.ts +5 -0
  222. package/lib/services/userActivityService.js +21 -0
  223. package/lib/services/windowService.js +1 -1
  224. package/lib/startup.js +18 -18
  225. package/lib/types/AppConfiguration.d.ts +15 -0
  226. package/lib/types/AppConfiguration.js +1 -1
  227. package/lib/types/Artifact.js +1 -1
  228. package/lib/types/BaseReduxState.js +1 -1
  229. package/lib/types/Client.js +1 -1
  230. package/lib/types/Collection.js +1 -1
  231. package/lib/types/Configuration.js +1 -1
  232. package/lib/types/DeepLinkingResponseRequest.js +1 -1
  233. package/lib/types/DeletableModel.js +1 -1
  234. package/lib/types/Event.js +1 -1
  235. package/lib/types/ExternalGroup.js +1 -1
  236. package/lib/types/ExternalProvider.js +1 -1
  237. package/lib/types/ExternalTerm.js +1 -1
  238. package/lib/types/Group.js +1 -1
  239. package/lib/types/IdentityProvider.js +1 -1
  240. package/lib/types/LtiLaunch.js +1 -1
  241. package/lib/types/NameOnlyEntity.js +1 -1
  242. package/lib/types/Notification.js +1 -1
  243. package/lib/types/OptionalRecord.js +1 -1
  244. package/lib/types/OwnerSchedule.js +1 -1
  245. package/lib/types/PropertyOfType.js +1 -1
  246. package/lib/types/Quill.js +1 -1
  247. package/lib/types/RoleDescription.js +1 -1
  248. package/lib/types/Search.js +1 -1
  249. package/lib/types/SimpleLocation.js +1 -1
  250. package/lib/types/UniTime.js +1 -1
  251. package/lib/types/User.js +1 -1
  252. package/lib/types/UserRole.js +1 -1
  253. package/lib/types/auth/AuthPersistenceService.d.ts +17 -0
  254. package/lib/types/auth/AuthPersistenceService.js +6 -0
  255. package/lib/types/auth/AuthState.d.ts +1 -0
  256. package/lib/types/auth/AuthState.js +1 -1
  257. package/lib/types/auth/CasV1LoginRequestBody.js +1 -1
  258. package/lib/types/auth/ClientCredentials.js +1 -1
  259. package/lib/types/auth/CodeProviderService.js +1 -1
  260. package/lib/types/auth/LocalLoginRequestBody.js +1 -1
  261. package/lib/types/auth/TicketProviderService.js +1 -1
  262. package/lib/types/auth/index.d.ts +1 -1
  263. package/lib/types/auth/index.js +12 -12
  264. package/lib/types/externals.d.js +1 -1
  265. package/lib/types/index.js +1 -1
  266. package/lib/types/net/EndpointConfig.js +1 -1
  267. package/lib/types/net/EndpointMapping.js +1 -1
  268. package/lib/types/net/EndpointMappings.js +1 -1
  269. package/lib/types/net/ErrorHandler.d.ts +1 -1
  270. package/lib/types/net/ErrorHandler.js +1 -1
  271. package/lib/types/net/FetchCancelledData.js +1 -1
  272. package/lib/types/net/FetchConfig.d.ts +1 -0
  273. package/lib/types/net/FetchConfig.js +1 -1
  274. package/lib/types/net/FetchErrorData.js +1 -1
  275. package/lib/types/net/FetchResult.js +1 -1
  276. package/lib/types/net/HTTPMethod.js +1 -1
  277. package/lib/types/net/HTTPStatusCode.js +1 -1
  278. package/lib/types/net/Metadata.js +1 -1
  279. package/lib/types/net/Model.js +1 -1
  280. package/lib/types/net/ModelCollection.js +1 -1
  281. package/lib/types/net/ModelsState.js +1 -1
  282. package/lib/types/net/OAuthToken.d.ts +4 -3
  283. package/lib/types/net/OAuthToken.js +1 -1
  284. package/lib/types/net/OAuthTokenResponse.d.ts +2 -0
  285. package/lib/types/net/OAuthTokenResponse.js +6 -0
  286. package/lib/types/net/TokenAccessFunction.d.ts +2 -2
  287. package/lib/types/net/TokenAccessFunction.js +1 -1
  288. package/lib/types/net/index.d.ts +1 -1
  289. package/lib/types/net/index.js +5 -5
  290. package/lib/utils/auth.d.ts +10 -0
  291. package/lib/utils/auth.js +55 -0
  292. package/lib/utils/baseActivity.js +87 -87
  293. package/lib/utils/baseRole.js +1 -1
  294. package/lib/utils/collection.js +20 -20
  295. package/lib/utils/cookies.js +1 -1
  296. package/lib/utils/date.js +111 -111
  297. package/lib/utils/dom.js +42 -42
  298. package/lib/utils/domainIdentifier.js +1 -1
  299. package/lib/utils/entityUserRole.js +1 -1
  300. package/lib/utils/error.js +1 -1
  301. package/lib/utils/events.js +4 -4
  302. package/lib/utils/externalGroup.js +1 -1
  303. package/lib/utils/externalProviders.js +1 -1
  304. package/lib/utils/externalTerms.js +1 -1
  305. package/lib/utils/fetch.js +10 -10
  306. package/lib/utils/group.js +1 -1
  307. package/lib/utils/groupDates.js +1 -1
  308. package/lib/utils/groupRoles.js +1 -1
  309. package/lib/utils/lockDownBrowser.js +1 -1
  310. package/lib/utils/logger.js +1 -1
  311. package/lib/utils/lti.js +1 -1
  312. package/lib/utils/model.js +5 -5
  313. package/lib/utils/number.js +11 -11
  314. package/lib/utils/promise.js +1 -1
  315. package/lib/utils/quill.js +16 -16
  316. package/lib/utils/route.js +1 -1
  317. package/lib/utils/search.js +1 -1
  318. package/lib/utils/serviceWorker.js +1 -1
  319. package/lib/utils/shard.js +9 -9
  320. package/lib/utils/sort.js +1 -1
  321. package/lib/utils/string.js +1 -1
  322. package/lib/utils/table.js +4 -4
  323. package/lib/utils/timer.d.ts +37 -0
  324. package/lib/utils/timer.js +92 -0
  325. package/lib/utils/timezone.js +1 -1
  326. package/lib/utils/url.js +26 -26
  327. package/lib/utils/user.js +1 -1
  328. package/lib/utils/userActivity.d.ts +7 -0
  329. package/lib/utils/userActivity.js +31 -0
  330. package/lib/utils/userAgent.js +1 -1
  331. package/lib/utils/userRole.js +16 -16
  332. package/package.json +204 -203
  333. package/lib/services/dateService.d.ts +0 -4
  334. package/lib/services/dateService.js +0 -18
  335. package/lib/services/oauthPersistenceService.d.ts +0 -2
  336. package/lib/services/oauthPersistenceService.js +0 -30
  337. package/lib/types/auth/OAuthPersistenceService.d.ts +0 -9
  338. package/lib/types/auth/OAuthPersistenceService.js +0 -6
  339. package/lib/types/net/OAuthTokenOrNull.d.ts +0 -2
  340. package/lib/types/net/OAuthTokenOrNull.js +0 -6
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Calculates the time components (hours, minutes, seconds) from a total number of seconds.
3
+ *
4
+ * @param timerSeconds how many seconds remain on a timer
5
+ * @returns an object with each of those components, by name
6
+ */
7
+ export declare const calculateTimeLimitTimeComponents: (timerSeconds: number) => {
8
+ hours: number;
9
+ minutes: number;
10
+ seconds: number;
11
+ };
12
+ /**
13
+ * Format and display a timer duration for use with screen readers
14
+ *
15
+ * @param hours timer hours
16
+ * @param minutes timer minutes
17
+ * @param seconds timer seconds, if any
18
+ * @param isDisplayingRemaining whether the timer is displaying remaining minutes. changes to say "remaining" instead of "duration".
19
+ * @param useLiveRegion whether to have the screen reader announce periodic updates
20
+ *
21
+ * @returns string with the specified format
22
+ */
23
+ export declare const displayScreenReaderTimeLimit: (hours: number, minutes: number, seconds?: number, isDisplayingRemaining?: boolean, useLiveRegion?: boolean) => JSX.Element;
24
+ /**
25
+ * Format and display timer seconds as "hh:mm:ss", with hidden screen reader compatible text.
26
+ *
27
+ * @param timerSeconds number of timer seconds
28
+ * @param isDisplayingRemaining whether the timer is displaying remaining seconds. changes to say "remaining" instead of "duration".
29
+ * @param hideHours whether to hide the hours, and display only "mm:ss". takes no effect if hours is greater than 0.
30
+ */
31
+ export declare const displayDigitalTimerSeconds: (timerSeconds: number, isDisplayingRemaining?: boolean, hideHours?: boolean) => JSX.Element;
32
+ /**
33
+ * Format and display timer minutes as "X hr, Y min"
34
+ *
35
+ * @param timerMinutes number of timer minutes
36
+ */
37
+ export declare const displayShortTimerMinutes: (timerMinutes: number) => JSX.Element;
@@ -0,0 +1,92 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.displayShortTimerMinutes = exports.displayScreenReaderTimeLimit = exports.displayDigitalTimerSeconds = exports.calculateTimeLimitTimeComponents = void 0;
7
+ var _jsxRuntime = require("react/jsx-runtime");
8
+ /**
9
+ * Calculates the time components (hours, minutes, seconds) from a total number of seconds.
10
+ *
11
+ * @param timerSeconds how many seconds remain on a timer
12
+ * @returns an object with each of those components, by name
13
+ */
14
+ const calculateTimeLimitTimeComponents = timerSeconds => {
15
+ const seconds = timerSeconds % 60;
16
+ const minutesAndSeconds = timerSeconds % 3600;
17
+ const minutes = (minutesAndSeconds - seconds) / 60;
18
+ const hours = (timerSeconds - minutesAndSeconds) / 3600;
19
+ return {
20
+ hours,
21
+ minutes,
22
+ seconds
23
+ };
24
+ };
25
+
26
+ /**
27
+ * Format and display a timer duration for use with screen readers
28
+ *
29
+ * @param hours timer hours
30
+ * @param minutes timer minutes
31
+ * @param seconds timer seconds, if any
32
+ * @param isDisplayingRemaining whether the timer is displaying remaining minutes. changes to say "remaining" instead of "duration".
33
+ * @param useLiveRegion whether to have the screen reader announce periodic updates
34
+ *
35
+ * @returns string with the specified format
36
+ */
37
+ exports.calculateTimeLimitTimeComponents = calculateTimeLimitTimeComponents;
38
+ const displayScreenReaderTimeLimit = function (hours, minutes) {
39
+ let seconds = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
40
+ let isDisplayingRemaining = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
41
+ let useLiveRegion = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;
42
+ const hoursSpeech = `${hours} hour${hours !== 1 ? 's' : ''}`;
43
+ const minutesSpeech = `${minutes} minute${minutes !== 1 ? 's' : ''}`;
44
+ const secondsSpeech = `${seconds} second${seconds !== 1 ? 's' : ''}`;
45
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
46
+ role: useLiveRegion ? 'alert' : '',
47
+ "aria-live": useLiveRegion ? 'polite' : 'off',
48
+ className: "sr-only",
49
+ children: `${hours > 0 ? hoursSpeech : ''}${hours > 0 && minutes > 0 ? ' ' : ''}${minutes > 0 ? minutesSpeech : ''}${(hours > 0 || minutes > 0) && seconds > 0 ? ' ' : ''}${seconds > 0 ? secondsSpeech : ''}${isDisplayingRemaining ? ' remaining' : ' duration'}.`
50
+ });
51
+ };
52
+
53
+ /**
54
+ * Format and display timer seconds as "hh:mm:ss", with hidden screen reader compatible text.
55
+ *
56
+ * @param timerSeconds number of timer seconds
57
+ * @param isDisplayingRemaining whether the timer is displaying remaining seconds. changes to say "remaining" instead of "duration".
58
+ * @param hideHours whether to hide the hours, and display only "mm:ss". takes no effect if hours is greater than 0.
59
+ */
60
+ exports.displayScreenReaderTimeLimit = displayScreenReaderTimeLimit;
61
+ const displayDigitalTimerSeconds = function (timerSeconds) {
62
+ let isDisplayingRemaining = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
63
+ let hideHours = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
64
+ const {
65
+ hours,
66
+ minutes,
67
+ seconds
68
+ } = calculateTimeLimitTimeComponents(timerSeconds);
69
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
70
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("span", {
71
+ "aria-hidden": true,
72
+ children: [hours > 0 || !hideHours ? hours >= 10 ? `${hours}:` : `0${hours}:` : '', minutes >= 10 ? minutes : `0${minutes}`, ":", seconds >= 10 ? seconds : `0${seconds}`]
73
+ }), displayScreenReaderTimeLimit(hours, minutes, seconds, isDisplayingRemaining)]
74
+ });
75
+ };
76
+
77
+ /**
78
+ * Format and display timer minutes as "X hr, Y min"
79
+ *
80
+ * @param timerMinutes number of timer minutes
81
+ */
82
+ exports.displayDigitalTimerSeconds = displayDigitalTimerSeconds;
83
+ const displayShortTimerMinutes = timerMinutes => {
84
+ const hours = Math.floor(timerMinutes / 60);
85
+ // if a timer multiplier gives a fraction of a minute we round up
86
+ const minutes = Math.ceil(timerMinutes % 60);
87
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)("span", {
88
+ children: [hours > 0 ? `${hours} hr` : '', hours > 0 && minutes > 0 ? ', ' : '', minutes > 0 ? `${minutes} min` : '']
89
+ });
90
+ };
91
+ exports.displayShortTimerMinutes = displayShortTimerMinutes;
92
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjYWxjdWxhdGVUaW1lTGltaXRUaW1lQ29tcG9uZW50cyIsInRpbWVyU2Vjb25kcyIsInNlY29uZHMiLCJtaW51dGVzQW5kU2Vjb25kcyIsIm1pbnV0ZXMiLCJob3VycyIsImV4cG9ydHMiLCJkaXNwbGF5U2NyZWVuUmVhZGVyVGltZUxpbWl0IiwiYXJndW1lbnRzIiwibGVuZ3RoIiwidW5kZWZpbmVkIiwiaXNEaXNwbGF5aW5nUmVtYWluaW5nIiwidXNlTGl2ZVJlZ2lvbiIsImhvdXJzU3BlZWNoIiwibWludXRlc1NwZWVjaCIsInNlY29uZHNTcGVlY2giLCJfanN4UnVudGltZSIsImpzeCIsInJvbGUiLCJjbGFzc05hbWUiLCJjaGlsZHJlbiIsImRpc3BsYXlEaWdpdGFsVGltZXJTZWNvbmRzIiwiaGlkZUhvdXJzIiwianN4cyIsIkZyYWdtZW50IiwiZGlzcGxheVNob3J0VGltZXJNaW51dGVzIiwidGltZXJNaW51dGVzIiwiTWF0aCIsImZsb29yIiwiY2VpbCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy90aW1lci50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDYWxjdWxhdGVzIHRoZSB0aW1lIGNvbXBvbmVudHMgKGhvdXJzLCBtaW51dGVzLCBzZWNvbmRzKSBmcm9tIGEgdG90YWwgbnVtYmVyIG9mIHNlY29uZHMuXG4gKlxuICogQHBhcmFtIHRpbWVyU2Vjb25kcyBob3cgbWFueSBzZWNvbmRzIHJlbWFpbiBvbiBhIHRpbWVyXG4gKiBAcmV0dXJucyBhbiBvYmplY3Qgd2l0aCBlYWNoIG9mIHRob3NlIGNvbXBvbmVudHMsIGJ5IG5hbWVcbiAqL1xuZXhwb3J0IGNvbnN0IGNhbGN1bGF0ZVRpbWVMaW1pdFRpbWVDb21wb25lbnRzID0gKHRpbWVyU2Vjb25kczogbnVtYmVyKSA9PiB7XG5cdGNvbnN0IHNlY29uZHMgPSB0aW1lclNlY29uZHMgJSA2MFxuXHRjb25zdCBtaW51dGVzQW5kU2Vjb25kcyA9IHRpbWVyU2Vjb25kcyAlIDM2MDBcblx0Y29uc3QgbWludXRlcyA9IChtaW51dGVzQW5kU2Vjb25kcyAtIHNlY29uZHMpIC8gNjBcblx0Y29uc3QgaG91cnMgPSAodGltZXJTZWNvbmRzIC0gbWludXRlc0FuZFNlY29uZHMpIC8gMzYwMFxuXHRyZXR1cm4geyBob3VycywgbWludXRlcywgc2Vjb25kcyB9XG59XG5cbi8qKlxuICogRm9ybWF0IGFuZCBkaXNwbGF5IGEgdGltZXIgZHVyYXRpb24gZm9yIHVzZSB3aXRoIHNjcmVlbiByZWFkZXJzXG4gKlxuICogQHBhcmFtIGhvdXJzIHRpbWVyIGhvdXJzXG4gKiBAcGFyYW0gbWludXRlcyB0aW1lciBtaW51dGVzXG4gKiBAcGFyYW0gc2Vjb25kcyB0aW1lciBzZWNvbmRzLCBpZiBhbnlcbiAqIEBwYXJhbSBpc0Rpc3BsYXlpbmdSZW1haW5pbmcgd2hldGhlciB0aGUgdGltZXIgaXMgZGlzcGxheWluZyByZW1haW5pbmcgbWludXRlcy4gY2hhbmdlcyB0byBzYXkgXCJyZW1haW5pbmdcIiBpbnN0ZWFkIG9mIFwiZHVyYXRpb25cIi5cbiAqIEBwYXJhbSB1c2VMaXZlUmVnaW9uIHdoZXRoZXIgdG8gaGF2ZSB0aGUgc2NyZWVuIHJlYWRlciBhbm5vdW5jZSBwZXJpb2RpYyB1cGRhdGVzXG4gKlxuICogQHJldHVybnMgc3RyaW5nIHdpdGggdGhlIHNwZWNpZmllZCBmb3JtYXRcbiAqL1xuZXhwb3J0IGNvbnN0IGRpc3BsYXlTY3JlZW5SZWFkZXJUaW1lTGltaXQgPSAoXG5cdGhvdXJzOiBudW1iZXIsXG5cdG1pbnV0ZXM6IG51bWJlcixcblx0c2Vjb25kcyA9IDAsXG5cdGlzRGlzcGxheWluZ1JlbWFpbmluZyA9IGZhbHNlLFxuXHR1c2VMaXZlUmVnaW9uID0gZmFsc2Vcbik6IEpTWC5FbGVtZW50ID0+IHtcblx0Y29uc3QgaG91cnNTcGVlY2ggPSBgJHtob3Vyc30gaG91ciR7aG91cnMgIT09IDEgPyAncycgOiAnJ31gXG5cdGNvbnN0IG1pbnV0ZXNTcGVlY2ggPSBgJHttaW51dGVzfSBtaW51dGUke21pbnV0ZXMgIT09IDEgPyAncycgOiAnJ31gXG5cdGNvbnN0IHNlY29uZHNTcGVlY2ggPSBgJHtzZWNvbmRzfSBzZWNvbmQke3NlY29uZHMgIT09IDEgPyAncycgOiAnJ31gXG5cdHJldHVybiAoXG5cdFx0PHNwYW4gcm9sZT17dXNlTGl2ZVJlZ2lvbiA/ICdhbGVydCcgOiAnJ30gYXJpYS1saXZlPXt1c2VMaXZlUmVnaW9uID8gJ3BvbGl0ZScgOiAnb2ZmJ30gY2xhc3NOYW1lPVwic3Itb25seVwiPntgJHtcblx0XHRcdGhvdXJzID4gMCA/IGhvdXJzU3BlZWNoIDogJydcblx0XHR9JHtob3VycyA+IDAgJiYgbWludXRlcyA+IDAgPyAnICcgOiAnJ30ke21pbnV0ZXMgPiAwID8gbWludXRlc1NwZWVjaCA6ICcnfSR7XG5cdFx0XHQoaG91cnMgPiAwIHx8IG1pbnV0ZXMgPiAwKSAmJiBzZWNvbmRzID4gMCA/ICcgJyA6ICcnXG5cdFx0fSR7c2Vjb25kcyA+IDAgPyBzZWNvbmRzU3BlZWNoIDogJyd9JHtpc0Rpc3BsYXlpbmdSZW1haW5pbmcgPyAnIHJlbWFpbmluZycgOiAnIGR1cmF0aW9uJ30uYH08L3NwYW4+XG5cdClcbn1cblxuLyoqXG4gKiBGb3JtYXQgYW5kIGRpc3BsYXkgdGltZXIgc2Vjb25kcyBhcyBcImhoOm1tOnNzXCIsIHdpdGggaGlkZGVuIHNjcmVlbiByZWFkZXIgY29tcGF0aWJsZSB0ZXh0LlxuICpcbiAqIEBwYXJhbSB0aW1lclNlY29uZHMgbnVtYmVyIG9mIHRpbWVyIHNlY29uZHNcbiAqIEBwYXJhbSBpc0Rpc3BsYXlpbmdSZW1haW5pbmcgd2hldGhlciB0aGUgdGltZXIgaXMgZGlzcGxheWluZyByZW1haW5pbmcgc2Vjb25kcy4gY2hhbmdlcyB0byBzYXkgXCJyZW1haW5pbmdcIiBpbnN0ZWFkIG9mIFwiZHVyYXRpb25cIi5cbiAqIEBwYXJhbSBoaWRlSG91cnMgd2hldGhlciB0byBoaWRlIHRoZSBob3VycywgYW5kIGRpc3BsYXkgb25seSBcIm1tOnNzXCIuIHRha2VzIG5vIGVmZmVjdCBpZiBob3VycyBpcyBncmVhdGVyIHRoYW4gMC5cbiAqL1xuZXhwb3J0IGNvbnN0IGRpc3BsYXlEaWdpdGFsVGltZXJTZWNvbmRzID0gKFxuXHR0aW1lclNlY29uZHM6IG51bWJlcixcblx0aXNEaXNwbGF5aW5nUmVtYWluaW5nID0gZmFsc2UsXG5cdGhpZGVIb3VycyA9IGZhbHNlXG4pOiBKU1guRWxlbWVudCA9PiB7XG5cdGNvbnN0IHsgaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMgfSA9IGNhbGN1bGF0ZVRpbWVMaW1pdFRpbWVDb21wb25lbnRzKHRpbWVyU2Vjb25kcylcblx0cmV0dXJuIChcblx0XHQ8PlxuXHRcdFx0PHNwYW4gYXJpYS1oaWRkZW4+XG5cdFx0XHRcdHtob3VycyA+IDAgfHwgIWhpZGVIb3VycyA/IChob3VycyA+PSAxMCA/IGAke2hvdXJzfTpgIDogYDAke2hvdXJzfTpgKSA6ICcnfVxuXHRcdFx0XHR7bWludXRlcyA+PSAxMCA/IG1pbnV0ZXMgOiBgMCR7bWludXRlc31gfTp7c2Vjb25kcyA+PSAxMCA/IHNlY29uZHMgOiBgMCR7c2Vjb25kc31gfVxuXHRcdFx0PC9zcGFuPlxuXHRcdFx0e2Rpc3BsYXlTY3JlZW5SZWFkZXJUaW1lTGltaXQoaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMsIGlzRGlzcGxheWluZ1JlbWFpbmluZyl9XG5cdFx0PC8+XG5cdClcbn1cblxuLyoqXG4gKiBGb3JtYXQgYW5kIGRpc3BsYXkgdGltZXIgbWludXRlcyBhcyBcIlggaHIsIFkgbWluXCJcbiAqXG4gKiBAcGFyYW0gdGltZXJNaW51dGVzIG51bWJlciBvZiB0aW1lciBtaW51dGVzXG4gKi9cbmV4cG9ydCBjb25zdCBkaXNwbGF5U2hvcnRUaW1lck1pbnV0ZXMgPSAodGltZXJNaW51dGVzOiBudW1iZXIpOiBKU1guRWxlbWVudCA9PiB7XG5cdGNvbnN0IGhvdXJzID0gTWF0aC5mbG9vcih0aW1lck1pbnV0ZXMgLyA2MClcblx0Ly8gaWYgYSB0aW1lciBtdWx0aXBsaWVyIGdpdmVzIGEgZnJhY3Rpb24gb2YgYSBtaW51dGUgd2Ugcm91bmQgdXBcblx0Y29uc3QgbWludXRlcyA9IE1hdGguY2VpbCh0aW1lck1pbnV0ZXMgJSA2MClcblx0cmV0dXJuIChcblx0XHQ8c3Bhbj5cblx0XHRcdHtob3VycyA+IDAgPyBgJHtob3Vyc30gaHJgIDogJyd9XG5cdFx0XHR7aG91cnMgPiAwICYmIG1pbnV0ZXMgPiAwID8gJywgJyA6ICcnfVxuXHRcdFx0e21pbnV0ZXMgPiAwID8gYCR7bWludXRlc30gbWluYCA6ICcnfVxuXHRcdDwvc3Bhbj5cblx0KVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sTUFBTUEsZ0NBQWdDLEdBQUlDLFlBQW9CLElBQUs7RUFDekUsTUFBTUMsT0FBTyxHQUFHRCxZQUFZLEdBQUcsRUFBRTtFQUNqQyxNQUFNRSxpQkFBaUIsR0FBR0YsWUFBWSxHQUFHLElBQUk7RUFDN0MsTUFBTUcsT0FBTyxHQUFHLENBQUNELGlCQUFpQixHQUFHRCxPQUFPLElBQUksRUFBRTtFQUNsRCxNQUFNRyxLQUFLLEdBQUcsQ0FBQ0osWUFBWSxHQUFHRSxpQkFBaUIsSUFBSSxJQUFJO0VBQ3ZELE9BQU87SUFBRUUsS0FBSztJQUFFRCxPQUFPO0lBQUVGO0VBQVEsQ0FBQztBQUNuQyxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFWQUksT0FBQSxDQUFBTixnQ0FBQSxHQUFBQSxnQ0FBQTtBQVdPLE1BQU1PLDRCQUE0QixHQUFHLFNBQUFBLENBQzNDRixLQUFhLEVBQ2JELE9BQWUsRUFJRTtFQUFBLElBSGpCRixPQUFPLEdBQUFNLFNBQUEsQ0FBQUMsTUFBQSxRQUFBRCxTQUFBLFFBQUFFLFNBQUEsR0FBQUYsU0FBQSxNQUFHLENBQUM7RUFBQSxJQUNYRyxxQkFBcUIsR0FBQUgsU0FBQSxDQUFBQyxNQUFBLFFBQUFELFNBQUEsUUFBQUUsU0FBQSxHQUFBRixT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
@@ -15,4 +15,4 @@ const getDefaultTimeZoneId = () => {
15
15
  exports.getDefaultTimeZoneId = getDefaultTimeZoneId;
16
16
  const guessTimeZoneId = () => moment.tz.guess();
17
17
  exports.guessTimeZoneId = guessTimeZoneId;
18
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJtb21lbnQiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfY29uZmlndXJhdGlvbiIsImUiLCJ0IiwiV2Vha01hcCIsInIiLCJuIiwiX19lc01vZHVsZSIsIm8iLCJpIiwiZiIsIl9fcHJvdG9fXyIsImRlZmF1bHQiLCJoYXMiLCJnZXQiLCJzZXQiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImRlZmF1bHRUaW1lWm9uZUlkIiwiZ2V0RGVmYXVsdFRpbWVab25lSWQiLCJzaGFyZENvbmZpZyIsImdldFNoYXJkQ29uZmlnIiwiZXhwb3J0cyIsImd1ZXNzVGltZVpvbmVJZCIsInR6IiwiZ3Vlc3MiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvdGltZXpvbmUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgbW9tZW50IGZyb20gJ21vbWVudC10aW1lem9uZSdcclxuaW1wb3J0IHsgZ2V0U2hhcmRDb25maWcgfSBmcm9tICcuLi9jb25zdGFudHMvY29uZmlndXJhdGlvbidcclxuXHJcbmNvbnN0IGRlZmF1bHRUaW1lWm9uZUlkID0gJ0FtZXJpY2EvSW5kaWFuYXBvbGlzJ1xyXG5cclxuZXhwb3J0IGNvbnN0IGdldERlZmF1bHRUaW1lWm9uZUlkID0gKCkgPT4ge1xyXG5cdGNvbnN0IHNoYXJkQ29uZmlnID0gZ2V0U2hhcmRDb25maWcoKVxyXG5cdHJldHVybiBzaGFyZENvbmZpZy5kZWZhdWx0VGltZVpvbmVJZCA/IHNoYXJkQ29uZmlnLmRlZmF1bHRUaW1lWm9uZUlkIDogZGVmYXVsdFRpbWVab25lSWRcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IGd1ZXNzVGltZVpvbmVJZCA9ICgpID0+IG1vbWVudC50ei5ndWVzcygpXHJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsY0FBQSxHQUFBRCxPQUFBO0FBQTJELFNBQUFELHdCQUFBRyxDQUFBLEVBQUFDLENBQUEsNkJBQUFDLE9BQUEsTUFBQUMsQ0FBQSxPQUFBRCxPQUFBLElBQUFFLENBQUEsT0FBQUYsT0FBQSxZQUFBTCx1QkFBQSxZQUFBQSxDQUFBRyxDQUFBLEVBQUFDLENBQUEsU0FBQUEsQ0FBQSxJQUFBRCxDQUFBLElBQUFBLENBQUEsQ0FBQUssVUFBQSxTQUFBTCxDQUFBLE1BQUFNLENBQUEsRUFBQUMsQ0FBQSxFQUFBQyxDQUFBLEtBQUFDLFNBQUEsUUFBQUMsT0FBQSxFQUFBVixDQUFBLGlCQUFBQSxDQUFBLHVCQUFBQSxDQUFBLHlCQUFBQSxDQUFBLFNBQUFRLENBQUEsTUFBQUYsQ0FBQSxHQUFBTCxDQUFBLEdBQUFHLENBQUEsR0FBQUQsQ0FBQSxRQUFBRyxDQUFBLENBQUFLLEdBQUEsQ0FBQVgsQ0FBQSxVQUFBTSxDQUFBLENBQUFNLEdBQUEsQ0FBQVosQ0FBQSxHQUFBTSxDQUFBLENBQUFPLEdBQUEsQ0FBQWIsQ0FBQSxFQUFBUSxDQUFBLGdCQUFBUCxDQUFBLElBQUFELENBQUEsZ0JBQUFDLENBQUEsT0FBQWEsY0FBQSxDQUFBQyxJQUFBLENBQUFmLENBQUEsRUFBQUMsQ0FBQSxPQUFBTSxDQUFBLElBQUFELENBQUEsR0FBQVUsTUFBQSxDQUFBQyxjQUFBLEtBQUFELE1BQUEsQ0FBQUUsd0JBQUEsQ0FBQWxCLENBQUEsRUFBQUMsQ0FBQSxPQUFBTSxDQUFBLENBQUFLLEdBQUEsSUFBQUwsQ0FBQSxDQUFBTSxHQUFBLElBQUFQLENBQUEsQ0FBQUUsQ0FBQSxFQUFBUCxDQUFBLEVBQUFNLENBQUEsSUFBQUMsQ0FBQSxDQUFBUCxDQUFBLElBQUFELENBQUEsQ0FBQUMsQ0FBQSxXQUFBTyxDQUFBLEtBQUFSLENBQUEsRUFBQUMsQ0FBQTtBQUUzRCxNQUFNa0IsaUJBQWlCLEdBQUcsc0JBQXNCO0FBRXpDLE1BQU1DLG9CQUFvQixHQUFHQSxDQUFBLEtBQU07RUFDekMsTUFBTUMsV0FBVyxHQUFHLElBQUFDLDZCQUFjLEVBQUMsQ0FBQztFQUNwQyxPQUFPRCxXQUFXLENBQUNGLGlCQUFpQixHQUFHRSxXQUFXLENBQUNGLGlCQUFpQixHQUFHQSxpQkFBaUI7QUFDekYsQ0FBQztBQUFBSSxPQUFBLENBQUFILG9CQUFBLEdBQUFBLG9CQUFBO0FBRU0sTUFBTUksZUFBZSxHQUFHQSxDQUFBLEtBQU01QixNQUFNLENBQUM2QixFQUFFLENBQUNDLEtBQUssQ0FBQyxDQUFDO0FBQUFILE9BQUEsQ0FBQUMsZUFBQSxHQUFBQSxlQUFBIiwiaWdub3JlTGlzdCI6W119
18
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJtb21lbnQiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfY29uZmlndXJhdGlvbiIsImUiLCJ0IiwiV2Vha01hcCIsInIiLCJuIiwiX19lc01vZHVsZSIsIm8iLCJpIiwiZiIsIl9fcHJvdG9fXyIsImRlZmF1bHQiLCJoYXMiLCJnZXQiLCJzZXQiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImRlZmF1bHRUaW1lWm9uZUlkIiwiZ2V0RGVmYXVsdFRpbWVab25lSWQiLCJzaGFyZENvbmZpZyIsImdldFNoYXJkQ29uZmlnIiwiZXhwb3J0cyIsImd1ZXNzVGltZVpvbmVJZCIsInR6IiwiZ3Vlc3MiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvdGltZXpvbmUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgbW9tZW50IGZyb20gJ21vbWVudC10aW1lem9uZSdcbmltcG9ydCB7IGdldFNoYXJkQ29uZmlnIH0gZnJvbSAnLi4vY29uc3RhbnRzL2NvbmZpZ3VyYXRpb24nXG5cbmNvbnN0IGRlZmF1bHRUaW1lWm9uZUlkID0gJ0FtZXJpY2EvSW5kaWFuYXBvbGlzJ1xuXG5leHBvcnQgY29uc3QgZ2V0RGVmYXVsdFRpbWVab25lSWQgPSAoKSA9PiB7XG5cdGNvbnN0IHNoYXJkQ29uZmlnID0gZ2V0U2hhcmRDb25maWcoKVxuXHRyZXR1cm4gc2hhcmRDb25maWcuZGVmYXVsdFRpbWVab25lSWQgPyBzaGFyZENvbmZpZy5kZWZhdWx0VGltZVpvbmVJZCA6IGRlZmF1bHRUaW1lWm9uZUlkXG59XG5cbmV4cG9ydCBjb25zdCBndWVzc1RpbWVab25lSWQgPSAoKSA9PiBtb21lbnQudHouZ3Vlc3MoKVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSxNQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxjQUFBLEdBQUFELE9BQUE7QUFBMkQsU0FBQUQsd0JBQUFHLENBQUEsRUFBQUMsQ0FBQSw2QkFBQUMsT0FBQSxNQUFBQyxDQUFBLE9BQUFELE9BQUEsSUFBQUUsQ0FBQSxPQUFBRixPQUFBLFlBQUFMLHVCQUFBLFlBQUFBLENBQUFHLENBQUEsRUFBQUMsQ0FBQSxTQUFBQSxDQUFBLElBQUFELENBQUEsSUFBQUEsQ0FBQSxDQUFBSyxVQUFBLFNBQUFMLENBQUEsTUFBQU0sQ0FBQSxFQUFBQyxDQUFBLEVBQUFDLENBQUEsS0FBQUMsU0FBQSxRQUFBQyxPQUFBLEVBQUFWLENBQUEsaUJBQUFBLENBQUEsdUJBQUFBLENBQUEseUJBQUFBLENBQUEsU0FBQVEsQ0FBQSxNQUFBRixDQUFBLEdBQUFMLENBQUEsR0FBQUcsQ0FBQSxHQUFBRCxDQUFBLFFBQUFHLENBQUEsQ0FBQUssR0FBQSxDQUFBWCxDQUFBLFVBQUFNLENBQUEsQ0FBQU0sR0FBQSxDQUFBWixDQUFBLEdBQUFNLENBQUEsQ0FBQU8sR0FBQSxDQUFBYixDQUFBLEVBQUFRLENBQUEsZ0JBQUFQLENBQUEsSUFBQUQsQ0FBQSxnQkFBQUMsQ0FBQSxPQUFBYSxjQUFBLENBQUFDLElBQUEsQ0FBQWYsQ0FBQSxFQUFBQyxDQUFBLE9BQUFNLENBQUEsSUFBQUQsQ0FBQSxHQUFBVSxNQUFBLENBQUFDLGNBQUEsS0FBQUQsTUFBQSxDQUFBRSx3QkFBQSxDQUFBbEIsQ0FBQSxFQUFBQyxDQUFBLE9BQUFNLENBQUEsQ0FBQUssR0FBQSxJQUFBTCxDQUFBLENBQUFNLEdBQUEsSUFBQVAsQ0FBQSxDQUFBRSxDQUFBLEVBQUFQLENBQUEsRUFBQU0sQ0FBQSxJQUFBQyxDQUFBLENBQUFQLENBQUEsSUFBQUQsQ0FBQSxDQUFBQyxDQUFBLFdBQUFPLENBQUEsS0FBQVIsQ0FBQSxFQUFBQyxDQUFBO0FBRTNELE1BQU1rQixpQkFBaUIsR0FBRyxzQkFBc0I7QUFFekMsTUFBTUMsb0JBQW9CLEdBQUdBLENBQUEsS0FBTTtFQUN6QyxNQUFNQyxXQUFXLEdBQUcsSUFBQUMsNkJBQWMsRUFBQyxDQUFDO0VBQ3BDLE9BQU9ELFdBQVcsQ0FBQ0YsaUJBQWlCLEdBQUdFLFdBQVcsQ0FBQ0YsaUJBQWlCLEdBQUdBLGlCQUFpQjtBQUN6RixDQUFDO0FBQUFJLE9BQUEsQ0FBQUgsb0JBQUEsR0FBQUEsb0JBQUE7QUFFTSxNQUFNSSxlQUFlLEdBQUdBLENBQUEsS0FBTTVCLE1BQU0sQ0FBQzZCLEVBQUUsQ0FBQ0MsS0FBSyxDQUFDLENBQUM7QUFBQUgsT0FBQSxDQUFBQyxlQUFBLEdBQUFBLGVBQUEiLCJpZ25vcmVMaXN0IjpbXX0=
package/lib/utils/url.js CHANGED
@@ -98,10 +98,10 @@ let X_FRAME_OPTIONS = exports.X_FRAME_OPTIONS = /*#__PURE__*/function (X_FRAME_O
98
98
  X_FRAME_OPTIONS["ALLOW_FROM"] = "ALLOW-FROM";
99
99
  return X_FRAME_OPTIONS;
100
100
  }({});
101
- /**
102
- * Using the given headers, determine if a url is allowed to be displayed in an iFrame.
103
- * @param headers An array of request headers.
104
- * @returns The parsed result
101
+ /**
102
+ * Using the given headers, determine if a url is allowed to be displayed in an iFrame.
103
+ * @param headers An array of request headers.
104
+ * @returns The parsed result
105
105
  */
106
106
  const parseHeadersResponse = headers => {
107
107
  // default result
@@ -132,15 +132,15 @@ const parseHeadersResponse = headers => {
132
132
  acceptableSources.push(`${location.protocol}//${tempHost}`);
133
133
  }
134
134
  result.iFrameAllowed = !xContentSecurityPolicy.some(x => x.indexOf('frame-ancestors ') >= 0) || xContentSecurityPolicy.some(x => {
135
- /**
136
- * Matches
137
- * * the string `frame-ancestors `
138
- * * one or many of the following, followed by a space, semicolon, or end of string
139
- * * `http:`
140
- * * `https:`
141
- * * `'self'`
142
- * * `'none'`
143
- * * url with optional scheme and optional asterisk wildcards
135
+ /**
136
+ * Matches
137
+ * * the string `frame-ancestors `
138
+ * * one or many of the following, followed by a space, semicolon, or end of string
139
+ * * `http:`
140
+ * * `https:`
141
+ * * `'self'`
142
+ * * `'none'`
143
+ * * url with optional scheme and optional asterisk wildcards
144
144
  */
145
145
  const frameAncestorsRegex = /frame-ancestors ((?:(?:(?:http:)|(?:https:)|(?:'self')|(?:'none')|(?:(?:https?:\/\/)?[\w*.-]+(?:\.[\w*.-]+)+[\w-._~:/?#[\]@!$&'()*+,=]+))(?:[ ;]|$))+)/g;
146
146
  const results = frameAncestorsRegex.exec(x);
@@ -161,10 +161,10 @@ const parseHeadersResponse = headers => {
161
161
  return result;
162
162
  };
163
163
 
164
- /**
165
- * Parse a path string into a location with separate pathname, search, and hash components.
166
- * @param path A path string
167
- * @returns The parsed result
164
+ /**
165
+ * Parse a path string into a location with separate pathname, search, and hash components.
166
+ * @param path A path string
167
+ * @returns The parsed result
168
168
  */
169
169
  exports.parseHeadersResponse = parseHeadersResponse;
170
170
  const parseLocation = path => {
@@ -181,9 +181,9 @@ const parseLocation = path => {
181
181
  };
182
182
  };
183
183
 
184
- /**
185
- * Create a SHA-256 digest of a string value.
186
- * @returns A Promise ArrayBuffer.
184
+ /**
185
+ * Create a SHA-256 digest of a string value.
186
+ * @returns A Promise ArrayBuffer.
187
187
  */
188
188
  exports.parseLocation = parseLocation;
189
189
  const sha256Async = async plain => {
@@ -193,15 +193,15 @@ const sha256Async = async plain => {
193
193
  return await crypto.subtle.digest('SHA-256', data);
194
194
  };
195
195
 
196
- /**
197
- * Convert an ArrayBuffer to string using Uint8 array.
198
- * btoa takes chars from 0-255 and base64 encodes.
199
- * Then convert the base64 encoded to base64url encoded.
200
- * (replace + with -, replace / with _, trim trailing =)
196
+ /**
197
+ * Convert an ArrayBuffer to string using Uint8 array.
198
+ * btoa takes chars from 0-255 and base64 encodes.
199
+ * Then convert the base64 encoded to base64url encoded.
200
+ * (replace + with -, replace / with _, trim trailing =)
201
201
  */
202
202
  exports.sha256Async = sha256Async;
203
203
  const base64UrlEncode = a => {
204
204
  return btoa(String.fromCharCode(...new Uint8Array(a))).replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, '');
205
205
  };
206
206
  exports.base64UrlEncode = base64UrlEncode;
207
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9kYXNoIiwicmVxdWlyZSIsIl9jb25maWd1cmF0aW9uIiwiX3NoYXJkIiwiX3Nsb3QiLCJfdGllciIsIl93aW5kb3dTZXJ2aWNlIiwiX2xvZ2dlciIsIl9zaGFyZDIiLCJnZXRBcGlVcmwiLCJhcHBDb25maWciLCJnZXRBcHBDb25maWciLCJBUElfVVJMIiwic2hhcmRLZXkiLCJJU19TSEFSREVEIiwiZ2V0U2hhcmRLZXkiLCJTSEFSRCIsIlJPT1QiLCJQVVJEVUUiLCJzbG90IiwiU0xPVCIsIlNUQUdJTkciLCJQUk9EVUNUSU9OIiwidGllciIsIlRJRVIiLCJMT0NBTCIsIkRFViIsIlFBIiwiUk9PVF9ET01BSU4iLCJnZXRTdG9yYWdlVXJsIiwiY29uZmlnIiwidXJsIiwiU1RPUkFHRV9VUkwiLCJyZXBsYWNlIiwiaGFzSHR0cFByb3RvY29sIiwidGVzdCIsImlzVXJsVmFsaWQiLCJUUllfTElNSVQiLCJ3YWl0IiwidGltZSIsIlByb21pc2UiLCJyZXNvbHZlIiwic2V0VGltZW91dCIsImZldGNoVGV4dCIsIm9wdGlvbnMiLCJ0cnlDb3VudCIsInJlc3AiLCJmZXRjaCIsInRleHQiLCJlcnJvciIsImdldExvZ2dlciIsIkVycm9yIiwiWF9GUkFNRV9PUFRJT05TIiwiZXhwb3J0cyIsInBhcnNlSGVhZGVyc1Jlc3BvbnNlIiwiaGVhZGVycyIsInJlc3VsdCIsImlzVmFsaWQiLCJpRnJhbWVBbGxvd2VkIiwidW5kZWZpbmVkIiwibG9jYXRpb24iLCJ3aW5kb3dTZXJ2aWNlIiwiZ2V0TG9jYXRpb24iLCJ4Q29udGVudFNlY3VyaXR5UG9saWN5IiwiZmluZCIsInZhbHVlIiwia2V5IiwidG9Mb3dlckNhc2UiLCJpc0FycmF5IiwiYWNjZXB0YWJsZVNvdXJjZXMiLCJwcm90b2NvbCIsImhvc3QiLCJob3N0UGFydHMiLCJzcGxpdCIsImxlbmd0aCIsInNoaWZ0IiwidGVtcEhvc3QiLCJqb2luIiwicHVzaCIsInNvbWUiLCJ4IiwiaW5kZXhPZiIsImZyYW1lQW5jZXN0b3JzUmVnZXgiLCJyZXN1bHRzIiwiZXhlYyIsInNvdXJjZXMiLCJzb3VyY2UiLCJhY2NlcHRhYmxlU291cmNlIiwieEZyYW1lT3B0aW9ucyIsIkRFTlkiLCJTQU1FT1JJR0lOIiwiQUxMT1dfRlJPTSIsInBhcnNlTG9jYXRpb24iLCJwYXRoIiwic2VhcmNoU3RhcnQiLCJoYXNoU3RhcnQiLCJzZWFyY2hFbmQiLCJwYXRobmFtZSIsInN1YnN0cmluZyIsInNlYXJjaCIsImhhc2giLCJzaGEyNTZBc3luYyIsInBsYWluIiwiZW5jb2RlciIsIlRleHRFbmNvZGVyIiwiZGF0YSIsImVuY29kZSIsImNyeXB0byIsInN1YnRsZSIsImRpZ2VzdCIsImJhc2U2NFVybEVuY29kZSIsImEiLCJidG9hIiwiU3RyaW5nIiwiZnJvbUNoYXJDb2RlIiwiVWludDhBcnJheSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy91cmwudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTG9jYXRpb25EZXNjcmlwdG9yIH0gZnJvbSAnaGlzdG9yeSdcclxuaW1wb3J0IHsgRGljdGlvbmFyeSwgZmluZCwgaXNBcnJheSB9IGZyb20gJ2xvZGFzaCdcclxuaW1wb3J0IHsgZ2V0QXBwQ29uZmlnIH0gZnJvbSAnLi4vY29uc3RhbnRzL2NvbmZpZ3VyYXRpb24nXHJcbmltcG9ydCB7IFNIQVJEIH0gZnJvbSAnLi4vY29uc3RhbnRzL3NoYXJkJ1xyXG5pbXBvcnQgeyBTTE9UIH0gZnJvbSAnLi4vY29uc3RhbnRzL3Nsb3QnXHJcbmltcG9ydCB7IFRJRVIgfSBmcm9tICcuLi9jb25zdGFudHMvdGllcidcclxuaW1wb3J0IHsgd2luZG93U2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3dpbmRvd1NlcnZpY2UnXHJcbmltcG9ydCB7IEFwcENvbmZpZ3VyYXRpb24gfSBmcm9tICcuLi90eXBlcydcclxuaW1wb3J0IHsgZ2V0TG9nZ2VyIH0gZnJvbSAnLi9sb2dnZXInXHJcbmltcG9ydCB7IGdldFNoYXJkS2V5IH0gZnJvbSAnLi9zaGFyZCdcclxuXHJcbi8qKiBDYWxjdWxhdGUgdGhlIEFQSSBVUkwgZnJvbSB0aGUgYEFwcENvbmZpZ3VyYXRpb25gLCBhbmQgYHdpbmRvdy5sb2NhdGlvbmAgaWYgdXNpbmcgc2hhcmRzLiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gZ2V0QXBpVXJsKCkge1xyXG5cdGNvbnN0IGFwcENvbmZpZyA9IGdldEFwcENvbmZpZygpXHJcblxyXG5cdC8vIHNraXAgbG9naWMsIGlmIG5vdCB1c2luZyBhIGN1c3RvbSBkb21haW4gKGUuZy4gbG9jYWwgb3Igc3RhZ2luZylcclxuXHRpZiAoYXBwQ29uZmlnLkFQSV9VUkwpIHtcclxuXHRcdHJldHVybiBhcHBDb25maWcuQVBJX1VSTFxyXG5cdH1cclxuXHJcblx0bGV0IHNoYXJkS2V5ID0gJydcclxuXHRpZiAoYXBwQ29uZmlnLklTX1NIQVJERUQpIHtcclxuXHRcdHNoYXJkS2V5ID0gZ2V0U2hhcmRLZXkoKVxyXG5cdFx0Ly8gZGVmYXVsdCBST09UIHRvIHBvaW50IHRvIFBVUkRVRVxyXG5cdFx0aWYgKHNoYXJkS2V5ID09PSBTSEFSRC5ST09UKSB7XHJcblx0XHRcdHNoYXJkS2V5ID0gU0hBUkQuUFVSRFVFXHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRsZXQgc2xvdCA9ICcnXHJcblx0c3dpdGNoIChhcHBDb25maWcuU0xPVCkge1xyXG5cdFx0Y2FzZSBTTE9ULlNUQUdJTkc6XHJcblx0XHRcdHNsb3QgPSAnc3RhZ2luZydcclxuXHRcdFx0YnJlYWtcclxuXHRcdGNhc2UgU0xPVC5QUk9EVUNUSU9OOlxyXG5cdFx0XHRzbG90ID0gJydcclxuXHRcdFx0YnJlYWtcclxuXHR9XHJcblxyXG5cdGxldCB0aWVyID0gJydcclxuXHRzd2l0Y2ggKGFwcENvbmZpZy5USUVSKSB7XHJcblx0XHRjYXNlIFRJRVIuTE9DQUw6XHJcblx0XHRcdHRpZXIgPSAnbG9jYWwnXHJcblx0XHRcdGJyZWFrXHJcblx0XHRjYXNlIFRJRVIuREVWOlxyXG5cdFx0XHR0aWVyID0gJ2RldidcclxuXHRcdFx0YnJlYWtcclxuXHRcdGNhc2UgVElFUi5RQTpcclxuXHRcdFx0dGllciA9ICdxYSdcclxuXHRcdFx0YnJlYWtcclxuXHR9XHJcblxyXG5cdHJldHVybiBgaHR0cHM6Ly8ke3NoYXJkS2V5ID8gYCR7c2hhcmRLZXl9LmAgOiAnJ30ke3Nsb3QgPyBgJHtzbG90fS5gIDogJyd9JHt0aWVyID8gYCR7dGllcn0uYCA6ICcnfWFwaS4ke2FwcENvbmZpZy5ST09UX0RPTUFJTn1gXHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRTdG9yYWdlVXJsKGNvbmZpZzogQXBwQ29uZmlndXJhdGlvbiwgdXJsOiBzdHJpbmcpIHtcclxuXHRyZXR1cm4gY29uZmlnLlRJRVIgPT09IFRJRVIuTE9DQUwgJiYgISFjb25maWcuU1RPUkFHRV9VUkxcclxuXHRcdD8gdXJsLnJlcGxhY2UoJ2h0dHA6Ly8xMjcuMC4wLjE6MTAwMDAnLCBjb25maWcuU1RPUkFHRV9VUkwpXHJcblx0XHQ6IHVybFxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gaGFzSHR0cFByb3RvY29sKHVybDogc3RyaW5nKSB7XHJcblx0cmV0dXJuIC9eKGh0dHB8aHR0cHMpOlxcL1xcLy8udGVzdCh1cmwpXHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBpc1VybFZhbGlkKHVybDogc3RyaW5nKSB7XHJcblx0Ly8gbW9kaWZpZWQgZnJvbSBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL2EvMzgwOTQzNVxyXG5cdHJldHVybiAvXihodHRwcz86XFwvXFwvKT9bLWEtekEtWjAtOUA6JS5fK34jPV17MSwyNTZ9XFwuW2EtekEtWjAtOSgpXXsxLDZ9XFxiKFstYS16QS1aMC05KClAOiVfLn4jPyYvW1xcXSEkJicqKyw7PV0qKSQvLnRlc3QoXHJcblx0XHR1cmxcclxuXHQpXHJcbn1cclxuXHJcbi8qKiBUaGUgdG90YWwgbnVtYmVyIG9mIHRyaWVzIGZvciBgZmV0Y2hUZXh0YCwgaW5jbHVkaW5nIHRoZSBpbml0aWFsIHJlcXVlc3QuICovXHJcbmNvbnN0IFRSWV9MSU1JVCA9IDVcclxuXHJcbmZ1bmN0aW9uIHdhaXQodGltZTogbnVtYmVyKSB7XHJcblx0cmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xyXG5cdFx0c2V0VGltZW91dChyZXNvbHZlLCB0aW1lKVxyXG5cdH0pXHJcbn1cclxuXHJcbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBmZXRjaFRleHQodXJsOiBzdHJpbmcsIG9wdGlvbnM/OiBSZXF1ZXN0SW5pdCkge1xyXG5cdGxldCB0cnlDb3VudCA9IDBcclxuXHRkbyB7XHJcblx0XHR0cnlDb3VudCsrXHJcblx0XHR0cnkge1xyXG5cdFx0XHRjb25zdCByZXNwID0gYXdhaXQgZmV0Y2godXJsLCBvcHRpb25zKVxyXG5cdFx0XHRjb25zdCB0ZXh0ID0gYXdhaXQgcmVzcC50ZXh0KClcclxuXHRcdFx0cmV0dXJuIHRleHRcclxuXHRcdH0gY2F0Y2ggKGVycm9yKSB7XHJcblx0XHRcdGdldExvZ2dlcigpLmVycm9yKGBGYWlsZWQgdG8gZmV0Y2ggJHt1cmx9LiBhdHRlbXB0OiAke3RyeUNvdW50fSwgZXJyb3I6ICR7ZXJyb3J9YClcclxuXHRcdFx0aWYgKHRyeUNvdW50IDwgVFJZX0xJTUlUKSB7XHJcblx0XHRcdFx0YXdhaXQgd2FpdCgyICoqICh0cnlDb3VudCAtIDEpICogMTAwKSAvLyAxMDAsIDIwMCwgNDAwLCA4MDBcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH0gd2hpbGUgKHRyeUNvdW50IDwgVFJZX0xJTUlUKVxyXG5cclxuXHR0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBmZXRjaCAke3VybH0gYWZ0ZXIgJHtUUllfTElNSVR9IGF0dGVtcHRzLmApXHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIFhfRlJBTUVfT1BUSU9OUyB7XHJcblx0REVOWSA9ICdERU5ZJyxcclxuXHRTQU1FT1JJR0lOID0gJ1NBTUVPUklHSU4nLFxyXG5cdEFMTE9XX0ZST00gPSAnQUxMT1ctRlJPTSdcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBQYXJzZWRIZWFkZXJzUmVzcG9uc2Uge1xyXG5cdGlzVmFsaWQ6IGJvb2xlYW5cclxuXHRpRnJhbWVBbGxvd2VkPzogYm9vbGVhblxyXG59XHJcblxyXG4vKipcclxuICogVXNpbmcgdGhlIGdpdmVuIGhlYWRlcnMsIGRldGVybWluZSBpZiBhIHVybCBpcyBhbGxvd2VkIHRvIGJlIGRpc3BsYXllZCBpbiBhbiBpRnJhbWUuXHJcbiAqIEBwYXJhbSBoZWFkZXJzIEFuIGFycmF5IG9mIHJlcXVlc3QgaGVhZGVycy5cclxuICogQHJldHVybnMgVGhlIHBhcnNlZCByZXN1bHRcclxuICovXHJcbmV4cG9ydCBjb25zdCBwYXJzZUhlYWRlcnNSZXNwb25zZSA9IChoZWFkZXJzPzogRGljdGlvbmFyeTxzdHJpbmcgfCBzdHJpbmdbXSB8IHVuZGVmaW5lZD4pID0+IHtcclxuXHQvLyBkZWZhdWx0IHJlc3VsdFxyXG5cdGNvbnN0IHJlc3VsdDogUGFyc2VkSGVhZGVyc1Jlc3BvbnNlID0ge1xyXG5cdFx0aXNWYWxpZDogZmFsc2UsXHJcblx0XHRpRnJhbWVBbGxvd2VkOiB1bmRlZmluZWRcclxuXHR9XHJcblxyXG5cdGlmICghaGVhZGVycykge1xyXG5cdFx0cmV0dXJuIHJlc3VsdFxyXG5cdH1cclxuXHJcblx0cmVzdWx0LmlzVmFsaWQgPSB0cnVlXHJcblx0cmVzdWx0LmlGcmFtZUFsbG93ZWQgPSB0cnVlXHJcblxyXG5cdGNvbnN0IGxvY2F0aW9uID0gd2luZG93U2VydmljZS5nZXRMb2NhdGlvbigpXHJcblxyXG5cdC8vIGNvbnRlbnQtc2VjdXJpdHktcG9saWN5IC8geC1jb250ZW50LXNlY3VyaXR5LXBvbGljeVxyXG5cdC8vIGNhbiBjb250YWluICdmcmFtZS1hbmNlc3RvcnMgPHNvdXJjZT4gPHNvdXJjZT4nIHdpdGggb25lIG9yIG1hbnkgc291cmNlc1xyXG5cdC8vIGlGcmFtZUFsbG93ZWQgaWYgaXQgZG9lcyBub3QgY29udGFpbiAnZnJhbWUtYW5jZXN0b3JzJyBvciBpZiBpdCBkb2VzIHdpdGggYW4gYWNjZXB0YWJsZSBzb3VyY2VcclxuXHRjb25zdCB4Q29udGVudFNlY3VyaXR5UG9saWN5ID0gZmluZChcclxuXHRcdGhlYWRlcnMsXHJcblx0XHQodmFsdWUsIGtleSkgPT5cclxuXHRcdFx0a2V5LnRvTG93ZXJDYXNlKCkgPT09ICdjb250ZW50LXNlY3VyaXR5LXBvbGljeScgfHwga2V5LnRvTG93ZXJDYXNlKCkgPT09ICd4LWNvbnRlbnQtc2VjdXJpdHktcG9saWN5J1xyXG5cdClcclxuXHRpZiAoeENvbnRlbnRTZWN1cml0eVBvbGljeSAmJiBpc0FycmF5KHhDb250ZW50U2VjdXJpdHlQb2xpY3kpKSB7XHJcblx0XHQvLyBkZWZpbmUgYWxsIGFjY2VwdGFibGUgZnJhbWUtYW5jZXN0b3JzIHNvdXJjZXNcclxuXHRcdC8vIHByb3RvY29sLCBmdWxsIGxvY2F0aW9uIGhvc3QsIGhvc3QsIGFuZCBhbGwgd2lsZGNhcmQgcGVybXV0YXRpb25zXHJcblx0XHRjb25zdCBhY2NlcHRhYmxlU291cmNlcyA9IFtsb2NhdGlvbi5wcm90b2NvbCwgYCR7bG9jYXRpb24ucHJvdG9jb2x9Ly8ke2xvY2F0aW9uLmhvc3R9YCwgbG9jYXRpb24uaG9zdF1cclxuXHRcdGNvbnN0IGhvc3RQYXJ0cyA9IGxvY2F0aW9uLmhvc3Quc3BsaXQoJy4nKVxyXG5cdFx0d2hpbGUgKGhvc3RQYXJ0cy5sZW5ndGggPiAyKSB7XHJcblx0XHRcdGhvc3RQYXJ0cy5zaGlmdCgpXHJcblx0XHRcdGNvbnN0IHRlbXBIb3N0ID0gYCouJHtob3N0UGFydHMuam9pbignLicpfWBcclxuXHRcdFx0YWNjZXB0YWJsZVNvdXJjZXMucHVzaCh0ZW1wSG9zdClcclxuXHRcdFx0YWNjZXB0YWJsZVNvdXJjZXMucHVzaChgJHtsb2NhdGlvbi5wcm90b2NvbH0vLyR7dGVtcEhvc3R9YClcclxuXHRcdH1cclxuXHRcdHJlc3VsdC5pRnJhbWVBbGxvd2VkID1cclxuXHRcdFx0IXhDb250ZW50U2VjdXJpdHlQb2xpY3kuc29tZSh4ID0+IHguaW5kZXhPZignZnJhbWUtYW5jZXN0b3JzICcpID49IDApIHx8XHJcblx0XHRcdHhDb250ZW50U2VjdXJpdHlQb2xpY3kuc29tZSh4ID0+IHtcclxuXHRcdFx0XHQvKipcclxuXHRcdFx0XHQgKiBNYXRjaGVzXHJcblx0XHRcdFx0ICogKiB0aGUgc3RyaW5nIGBmcmFtZS1hbmNlc3RvcnMgYFxyXG5cdFx0XHRcdCAqICogb25lIG9yIG1hbnkgb2YgdGhlIGZvbGxvd2luZywgZm9sbG93ZWQgYnkgYSBzcGFjZSwgc2VtaWNvbG9uLCBvciBlbmQgb2Ygc3RyaW5nXHJcblx0XHRcdFx0ICogICAgICogYGh0dHA6YFxyXG5cdFx0XHRcdCAqICAgICAqIGBodHRwczpgXHJcblx0XHRcdFx0ICogICAgICogYCdzZWxmJ2BcclxuXHRcdFx0XHQgKiAgICAgKiBgJ25vbmUnYFxyXG5cdFx0XHRcdCAqICAgICAqIHVybCB3aXRoIG9wdGlvbmFsIHNjaGVtZSBhbmQgb3B0aW9uYWwgYXN0ZXJpc2sgd2lsZGNhcmRzXHJcblx0XHRcdFx0ICovXHJcblx0XHRcdFx0Y29uc3QgZnJhbWVBbmNlc3RvcnNSZWdleCA9XHJcblx0XHRcdFx0XHQvZnJhbWUtYW5jZXN0b3JzICgoPzooPzooPzpodHRwOil8KD86aHR0cHM6KXwoPzonc2VsZicpfCg/Oidub25lJyl8KD86KD86aHR0cHM/OlxcL1xcLyk/W1xcdyouLV0rKD86XFwuW1xcdyouLV0rKStbXFx3LS5ffjovPyNbXFxdQCEkJicoKSorLD1dKykpKD86WyA7XXwkKSkrKS9nXHJcblx0XHRcdFx0Y29uc3QgcmVzdWx0cyA9IGZyYW1lQW5jZXN0b3JzUmVnZXguZXhlYyh4KVxyXG5cdFx0XHRcdGlmICghcmVzdWx0cykge1xyXG5cdFx0XHRcdFx0cmV0dXJuIGZhbHNlXHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdGNvbnN0IHNvdXJjZXMgPSByZXN1bHRzWzFdLnNwbGl0KCcgJylcclxuXHRcdFx0XHRyZXR1cm4gc291cmNlcy5zb21lKHNvdXJjZSA9PiBhY2NlcHRhYmxlU291cmNlcy5zb21lKGFjY2VwdGFibGVTb3VyY2UgPT4gYWNjZXB0YWJsZVNvdXJjZSA9PT0gc291cmNlKSlcclxuXHRcdFx0fSlcclxuXHR9XHJcblxyXG5cdC8vIHgtZnJhbWUtb3B0aW9ucyBjYW4gYmUgWydTQU1FT1JJR0lOJywgJ0RFTlknLCAnQUxMT1ctRlJPTS4uLiddXHJcblx0Ly8gaUZyYW1lQWxsb3dlZCBpZiB0aGUgdGhlIHgtZnJhbWUtb3B0aW9ucyBpcyAnQUxMT1ctRlJPTSB7YXBwIHdlYiB1cmx9J1xyXG5cdGNvbnN0IHhGcmFtZU9wdGlvbnMgPSBmaW5kKGhlYWRlcnMsICh2YWx1ZSwga2V5KSA9PiBrZXkudG9Mb3dlckNhc2UoKSA9PT0gJ3gtZnJhbWUtb3B0aW9ucycpXHJcblx0aWYgKHhGcmFtZU9wdGlvbnMgJiYgaXNBcnJheSh4RnJhbWVPcHRpb25zKSkge1xyXG5cdFx0cmVzdWx0LmlGcmFtZUFsbG93ZWQgPVxyXG5cdFx0XHQheEZyYW1lT3B0aW9ucy5zb21lKHggPT4geCA9PT0gWF9GUkFNRV9PUFRJT05TLkRFTlkgfHwgeCA9PT0gWF9GUkFNRV9PUFRJT05TLlNBTUVPUklHSU4pICYmXHJcblx0XHRcdHhGcmFtZU9wdGlvbnMuc29tZSh4ID0+IHggPT09IGAke1hfRlJBTUVfT1BUSU9OUy5BTExPV19GUk9NfSAke2xvY2F0aW9uLnByb3RvY29sfS8vJHtsb2NhdGlvbi5ob3N0fWApXHJcblx0fVxyXG5cdHJldHVybiByZXN1bHRcclxufVxyXG5cclxuLyoqXHJcbiAqIFBhcnNlIGEgcGF0aCBzdHJpbmcgaW50byBhIGxvY2F0aW9uIHdpdGggc2VwYXJhdGUgcGF0aG5hbWUsIHNlYXJjaCwgYW5kIGhhc2ggY29tcG9uZW50cy5cclxuICogQHBhcmFtIHBhdGggQSBwYXRoIHN0cmluZ1xyXG4gKiBAcmV0dXJucyBUaGUgcGFyc2VkIHJlc3VsdFxyXG4gKi9cclxuZXhwb3J0IGNvbnN0IHBhcnNlTG9jYXRpb24gPSAocGF0aDogc3RyaW5nKTogTG9jYXRpb25EZXNjcmlwdG9yID0+IHtcclxuXHRjb25zdCBzZWFyY2hTdGFydCA9IHBhdGguaW5kZXhPZignPycpXHJcblx0Y29uc3QgaGFzaFN0YXJ0ID0gcGF0aC5pbmRleE9mKCcjJylcclxuXHRjb25zdCBzZWFyY2hFbmQgPSBoYXNoU3RhcnQgPiAtMSA/IGhhc2hTdGFydCA6IHVuZGVmaW5lZFxyXG5cdGNvbnN0IHBhdGhuYW1lID1cclxuXHRcdHNlYXJjaFN0YXJ0ID4gLTEgPyBwYXRoLnN1YnN0cmluZygwLCBzZWFyY2hTdGFydCkgOiBoYXNoU3RhcnQgPiAtMSA/IHBhdGguc3Vic3RyaW5nKDAsIGhhc2hTdGFydCkgOiBwYXRoXHJcblx0Y29uc3Qgc2VhcmNoID0gc2VhcmNoU3RhcnQgPiAtMSA/IHBhdGguc3Vic3RyaW5nKHNlYXJjaFN0YXJ0LCBzZWFyY2hFbmQpIDogdW5kZWZpbmVkXHJcblx0Y29uc3QgaGFzaCA9IGhhc2hTdGFydCA+IC0xID8gcGF0aC5zdWJzdHJpbmcoaGFzaFN0YXJ0KSA6IHVuZGVmaW5lZFxyXG5cdHJldHVybiB7XHJcblx0XHRwYXRobmFtZTogcGF0aG5hbWUgfHwgJy8nLFxyXG5cdFx0c2VhcmNoOiBzZWFyY2gsXHJcblx0XHRoYXNoOiBoYXNoXHJcblx0fVxyXG59XHJcblxyXG4vKipcclxuICogQ3JlYXRlIGEgU0hBLTI1NiBkaWdlc3Qgb2YgYSBzdHJpbmcgdmFsdWUuXHJcbiAqIEByZXR1cm5zIEEgUHJvbWlzZSBBcnJheUJ1ZmZlci5cclxuICovXHJcbmV4cG9ydCBjb25zdCBzaGEyNTZBc3luYyA9IGFzeW5jIChwbGFpbjogc3RyaW5nKSA9PiB7XHJcblx0Ly8gcmV0dXJucyBwcm9taXNlIEFycmF5QnVmZmVyXHJcblx0Y29uc3QgZW5jb2RlciA9IG5ldyBUZXh0RW5jb2RlcigpXHJcblx0Y29uc3QgZGF0YSA9IGVuY29kZXIuZW5jb2RlKHBsYWluKVxyXG5cdHJldHVybiBhd2FpdCBjcnlwdG8uc3VidGxlLmRpZ2VzdCgnU0hBLTI1NicsIGRhdGEpXHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDb252ZXJ0IGFuIEFycmF5QnVmZmVyIHRvIHN0cmluZyB1c2luZyBVaW50OCBhcnJheS5cclxuICogYnRvYSB0YWtlcyBjaGFycyBmcm9tIDAtMjU1IGFuZCBiYXNlNjQgZW5jb2Rlcy5cclxuICogVGhlbiBjb252ZXJ0IHRoZSBiYXNlNjQgZW5jb2RlZCB0byBiYXNlNjR1cmwgZW5jb2RlZC5cclxuICogKHJlcGxhY2UgKyB3aXRoIC0sIHJlcGxhY2UgLyB3aXRoIF8sIHRyaW0gdHJhaWxpbmcgPSlcclxuICovXHJcbmV4cG9ydCBjb25zdCBiYXNlNjRVcmxFbmNvZGUgPSAoYTogQXJyYXlCdWZmZXIpID0+IHtcclxuXHRyZXR1cm4gYnRvYShTdHJpbmcuZnJvbUNoYXJDb2RlKC4uLm5ldyBVaW50OEFycmF5KGEpKSlcclxuXHRcdC5yZXBsYWNlKC9cXCsvZywgJy0nKVxyXG5cdFx0LnJlcGxhY2UoL1xcLy9nLCAnXycpXHJcblx0XHQucmVwbGFjZSgvPSskLywgJycpXHJcbn1cclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFDQSxJQUFBQSxPQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxjQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxNQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxLQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxLQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxjQUFBLEdBQUFMLE9BQUE7QUFFQSxJQUFBTSxPQUFBLEdBQUFOLE9BQUE7QUFDQSxJQUFBTyxPQUFBLEdBQUFQLE9BQUE7QUFFQTtBQUNPLFNBQVNRLFNBQVNBLENBQUEsRUFBRztFQUMzQixNQUFNQyxTQUFTLEdBQUcsSUFBQUMsMkJBQVksRUFBQyxDQUFDOztFQUVoQztFQUNBLElBQUlELFNBQVMsQ0FBQ0UsT0FBTyxFQUFFO0lBQ3RCLE9BQU9GLFNBQVMsQ0FBQ0UsT0FBTztFQUN6QjtFQUVBLElBQUlDLFFBQVEsR0FBRyxFQUFFO0VBQ2pCLElBQUlILFNBQVMsQ0FBQ0ksVUFB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
207
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9kYXNoIiwicmVxdWlyZSIsIl9jb25maWd1cmF0aW9uIiwiX3NoYXJkIiwiX3Nsb3QiLCJfdGllciIsIl93aW5kb3dTZXJ2aWNlIiwiX2xvZ2dlciIsIl9zaGFyZDIiLCJnZXRBcGlVcmwiLCJhcHBDb25maWciLCJnZXRBcHBDb25maWciLCJBUElfVVJMIiwic2hhcmRLZXkiLCJJU19TSEFSREVEIiwiZ2V0U2hhcmRLZXkiLCJTSEFSRCIsIlJPT1QiLCJQVVJEVUUiLCJzbG90IiwiU0xPVCIsIlNUQUdJTkciLCJQUk9EVUNUSU9OIiwidGllciIsIlRJRVIiLCJMT0NBTCIsIkRFViIsIlFBIiwiUk9PVF9ET01BSU4iLCJnZXRTdG9yYWdlVXJsIiwiY29uZmlnIiwidXJsIiwiU1RPUkFHRV9VUkwiLCJyZXBsYWNlIiwiaGFzSHR0cFByb3RvY29sIiwidGVzdCIsImlzVXJsVmFsaWQiLCJUUllfTElNSVQiLCJ3YWl0IiwidGltZSIsIlByb21pc2UiLCJyZXNvbHZlIiwic2V0VGltZW91dCIsImZldGNoVGV4dCIsIm9wdGlvbnMiLCJ0cnlDb3VudCIsInJlc3AiLCJmZXRjaCIsInRleHQiLCJlcnJvciIsImdldExvZ2dlciIsIkVycm9yIiwiWF9GUkFNRV9PUFRJT05TIiwiZXhwb3J0cyIsInBhcnNlSGVhZGVyc1Jlc3BvbnNlIiwiaGVhZGVycyIsInJlc3VsdCIsImlzVmFsaWQiLCJpRnJhbWVBbGxvd2VkIiwidW5kZWZpbmVkIiwibG9jYXRpb24iLCJ3aW5kb3dTZXJ2aWNlIiwiZ2V0TG9jYXRpb24iLCJ4Q29udGVudFNlY3VyaXR5UG9saWN5IiwiZmluZCIsInZhbHVlIiwia2V5IiwidG9Mb3dlckNhc2UiLCJpc0FycmF5IiwiYWNjZXB0YWJsZVNvdXJjZXMiLCJwcm90b2NvbCIsImhvc3QiLCJob3N0UGFydHMiLCJzcGxpdCIsImxlbmd0aCIsInNoaWZ0IiwidGVtcEhvc3QiLCJqb2luIiwicHVzaCIsInNvbWUiLCJ4IiwiaW5kZXhPZiIsImZyYW1lQW5jZXN0b3JzUmVnZXgiLCJyZXN1bHRzIiwiZXhlYyIsInNvdXJjZXMiLCJzb3VyY2UiLCJhY2NlcHRhYmxlU291cmNlIiwieEZyYW1lT3B0aW9ucyIsIkRFTlkiLCJTQU1FT1JJR0lOIiwiQUxMT1dfRlJPTSIsInBhcnNlTG9jYXRpb24iLCJwYXRoIiwic2VhcmNoU3RhcnQiLCJoYXNoU3RhcnQiLCJzZWFyY2hFbmQiLCJwYXRobmFtZSIsInN1YnN0cmluZyIsInNlYXJjaCIsImhhc2giLCJzaGEyNTZBc3luYyIsInBsYWluIiwiZW5jb2RlciIsIlRleHRFbmNvZGVyIiwiZGF0YSIsImVuY29kZSIsImNyeXB0byIsInN1YnRsZSIsImRpZ2VzdCIsImJhc2U2NFVybEVuY29kZSIsImEiLCJidG9hIiwiU3RyaW5nIiwiZnJvbUNoYXJDb2RlIiwiVWludDhBcnJheSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy91cmwudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTG9jYXRpb25EZXNjcmlwdG9yIH0gZnJvbSAnaGlzdG9yeSdcbmltcG9ydCB7IERpY3Rpb25hcnksIGZpbmQsIGlzQXJyYXkgfSBmcm9tICdsb2Rhc2gnXG5pbXBvcnQgeyBnZXRBcHBDb25maWcgfSBmcm9tICcuLi9jb25zdGFudHMvY29uZmlndXJhdGlvbidcbmltcG9ydCB7IFNIQVJEIH0gZnJvbSAnLi4vY29uc3RhbnRzL3NoYXJkJ1xuaW1wb3J0IHsgU0xPVCB9IGZyb20gJy4uL2NvbnN0YW50cy9zbG90J1xuaW1wb3J0IHsgVElFUiB9IGZyb20gJy4uL2NvbnN0YW50cy90aWVyJ1xuaW1wb3J0IHsgd2luZG93U2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3dpbmRvd1NlcnZpY2UnXG5pbXBvcnQgeyBBcHBDb25maWd1cmF0aW9uIH0gZnJvbSAnLi4vdHlwZXMnXG5pbXBvcnQgeyBnZXRMb2dnZXIgfSBmcm9tICcuL2xvZ2dlcidcbmltcG9ydCB7IGdldFNoYXJkS2V5IH0gZnJvbSAnLi9zaGFyZCdcblxuLyoqIENhbGN1bGF0ZSB0aGUgQVBJIFVSTCBmcm9tIHRoZSBgQXBwQ29uZmlndXJhdGlvbmAsIGFuZCBgd2luZG93LmxvY2F0aW9uYCBpZiB1c2luZyBzaGFyZHMuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QXBpVXJsKCkge1xuXHRjb25zdCBhcHBDb25maWcgPSBnZXRBcHBDb25maWcoKVxuXG5cdC8vIHNraXAgbG9naWMsIGlmIG5vdCB1c2luZyBhIGN1c3RvbSBkb21haW4gKGUuZy4gbG9jYWwgb3Igc3RhZ2luZylcblx0aWYgKGFwcENvbmZpZy5BUElfVVJMKSB7XG5cdFx0cmV0dXJuIGFwcENvbmZpZy5BUElfVVJMXG5cdH1cblxuXHRsZXQgc2hhcmRLZXkgPSAnJ1xuXHRpZiAoYXBwQ29uZmlnLklTX1NIQVJERUQpIHtcblx0XHRzaGFyZEtleSA9IGdldFNoYXJkS2V5KClcblx0XHQvLyBkZWZhdWx0IFJPT1QgdG8gcG9pbnQgdG8gUFVSRFVFXG5cdFx0aWYgKHNoYXJkS2V5ID09PSBTSEFSRC5ST09UKSB7XG5cdFx0XHRzaGFyZEtleSA9IFNIQVJELlBVUkRVRVxuXHRcdH1cblx0fVxuXG5cdGxldCBzbG90ID0gJydcblx0c3dpdGNoIChhcHBDb25maWcuU0xPVCkge1xuXHRcdGNhc2UgU0xPVC5TVEFHSU5HOlxuXHRcdFx0c2xvdCA9ICdzdGFnaW5nJ1xuXHRcdFx0YnJlYWtcblx0XHRjYXNlIFNMT1QuUFJPRFVDVElPTjpcblx0XHRcdHNsb3QgPSAnJ1xuXHRcdFx0YnJlYWtcblx0fVxuXG5cdGxldCB0aWVyID0gJydcblx0c3dpdGNoIChhcHBDb25maWcuVElFUikge1xuXHRcdGNhc2UgVElFUi5MT0NBTDpcblx0XHRcdHRpZXIgPSAnbG9jYWwnXG5cdFx0XHRicmVha1xuXHRcdGNhc2UgVElFUi5ERVY6XG5cdFx0XHR0aWVyID0gJ2Rldidcblx0XHRcdGJyZWFrXG5cdFx0Y2FzZSBUSUVSLlFBOlxuXHRcdFx0dGllciA9ICdxYSdcblx0XHRcdGJyZWFrXG5cdH1cblxuXHRyZXR1cm4gYGh0dHBzOi8vJHtzaGFyZEtleSA/IGAke3NoYXJkS2V5fS5gIDogJyd9JHtzbG90ID8gYCR7c2xvdH0uYCA6ICcnfSR7dGllciA/IGAke3RpZXJ9LmAgOiAnJ31hcGkuJHthcHBDb25maWcuUk9PVF9ET01BSU59YFxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3RvcmFnZVVybChjb25maWc6IEFwcENvbmZpZ3VyYXRpb24sIHVybDogc3RyaW5nKSB7XG5cdHJldHVybiBjb25maWcuVElFUiA9PT0gVElFUi5MT0NBTCAmJiAhIWNvbmZpZy5TVE9SQUdFX1VSTFxuXHRcdD8gdXJsLnJlcGxhY2UoJ2h0dHA6Ly8xMjcuMC4wLjE6MTAwMDAnLCBjb25maWcuU1RPUkFHRV9VUkwpXG5cdFx0OiB1cmxcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGhhc0h0dHBQcm90b2NvbCh1cmw6IHN0cmluZykge1xuXHRyZXR1cm4gL14oaHR0cHxodHRwcyk6XFwvXFwvLy50ZXN0KHVybClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzVXJsVmFsaWQodXJsOiBzdHJpbmcpIHtcblx0Ly8gbW9kaWZpZWQgZnJvbSBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL2EvMzgwOTQzNVxuXHRyZXR1cm4gL14oaHR0cHM/OlxcL1xcLyk/Wy1hLXpBLVowLTlAOiUuXyt+Iz1dezEsMjU2fVxcLlthLXpBLVowLTkoKV17MSw2fVxcYihbLWEtekEtWjAtOSgpQDolXy5+Iz8mL1tcXF0hJCYnKissOz1dKikkLy50ZXN0KFxuXHRcdHVybFxuXHQpXG59XG5cbi8qKiBUaGUgdG90YWwgbnVtYmVyIG9mIHRyaWVzIGZvciBgZmV0Y2hUZXh0YCwgaW5jbHVkaW5nIHRoZSBpbml0aWFsIHJlcXVlc3QuICovXG5jb25zdCBUUllfTElNSVQgPSA1XG5cbmZ1bmN0aW9uIHdhaXQodGltZTogbnVtYmVyKSB7XG5cdHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcblx0XHRzZXRUaW1lb3V0KHJlc29sdmUsIHRpbWUpXG5cdH0pXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBmZXRjaFRleHQodXJsOiBzdHJpbmcsIG9wdGlvbnM/OiBSZXF1ZXN0SW5pdCkge1xuXHRsZXQgdHJ5Q291bnQgPSAwXG5cdGRvIHtcblx0XHR0cnlDb3VudCsrXG5cdFx0dHJ5IHtcblx0XHRcdGNvbnN0IHJlc3AgPSBhd2FpdCBmZXRjaCh1cmwsIG9wdGlvbnMpXG5cdFx0XHRjb25zdCB0ZXh0ID0gYXdhaXQgcmVzcC50ZXh0KClcblx0XHRcdHJldHVybiB0ZXh0XG5cdFx0fSBjYXRjaCAoZXJyb3IpIHtcblx0XHRcdGdldExvZ2dlcigpLmVycm9yKGBGYWlsZWQgdG8gZmV0Y2ggJHt1cmx9LiBhdHRlbXB0OiAke3RyeUNvdW50fSwgZXJyb3I6ICR7ZXJyb3J9YClcblx0XHRcdGlmICh0cnlDb3VudCA8IFRSWV9MSU1JVCkge1xuXHRcdFx0XHRhd2FpdCB3YWl0KDIgKiogKHRyeUNvdW50IC0gMSkgKiAxMDApIC8vIDEwMCwgMjAwLCA0MDAsIDgwMFxuXHRcdFx0fVxuXHRcdH1cblx0fSB3aGlsZSAodHJ5Q291bnQgPCBUUllfTElNSVQpXG5cblx0dGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gZmV0Y2ggJHt1cmx9IGFmdGVyICR7VFJZX0xJTUlUfSBhdHRlbXB0cy5gKVxufVxuXG5leHBvcnQgZW51bSBYX0ZSQU1FX09QVElPTlMge1xuXHRERU5ZID0gJ0RFTlknLFxuXHRTQU1FT1JJR0lOID0gJ1NBTUVPUklHSU4nLFxuXHRBTExPV19GUk9NID0gJ0FMTE9XLUZST00nXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFyc2VkSGVhZGVyc1Jlc3BvbnNlIHtcblx0aXNWYWxpZDogYm9vbGVhblxuXHRpRnJhbWVBbGxvd2VkPzogYm9vbGVhblxufVxuXG4vKipcbiAqIFVzaW5nIHRoZSBnaXZlbiBoZWFkZXJzLCBkZXRlcm1pbmUgaWYgYSB1cmwgaXMgYWxsb3dlZCB0byBiZSBkaXNwbGF5ZWQgaW4gYW4gaUZyYW1lLlxuICogQHBhcmFtIGhlYWRlcnMgQW4gYXJyYXkgb2YgcmVxdWVzdCBoZWFkZXJzLlxuICogQHJldHVybnMgVGhlIHBhcnNlZCByZXN1bHRcbiAqL1xuZXhwb3J0IGNvbnN0IHBhcnNlSGVhZGVyc1Jlc3BvbnNlID0gKGhlYWRlcnM/OiBEaWN0aW9uYXJ5PHN0cmluZyB8IHN0cmluZ1tdIHwgdW5kZWZpbmVkPikgPT4ge1xuXHQvLyBkZWZhdWx0IHJlc3VsdFxuXHRjb25zdCByZXN1bHQ6IFBhcnNlZEhlYWRlcnNSZXNwb25zZSA9IHtcblx0XHRpc1ZhbGlkOiBmYWxzZSxcblx0XHRpRnJhbWVBbGxvd2VkOiB1bmRlZmluZWRcblx0fVxuXG5cdGlmICghaGVhZGVycykge1xuXHRcdHJldHVybiByZXN1bHRcblx0fVxuXG5cdHJlc3VsdC5pc1ZhbGlkID0gdHJ1ZVxuXHRyZXN1bHQuaUZyYW1lQWxsb3dlZCA9IHRydWVcblxuXHRjb25zdCBsb2NhdGlvbiA9IHdpbmRvd1NlcnZpY2UuZ2V0TG9jYXRpb24oKVxuXG5cdC8vIGNvbnRlbnQtc2VjdXJpdHktcG9saWN5IC8geC1jb250ZW50LXNlY3VyaXR5LXBvbGljeVxuXHQvLyBjYW4gY29udGFpbiAnZnJhbWUtYW5jZXN0b3JzIDxzb3VyY2U+IDxzb3VyY2U+JyB3aXRoIG9uZSBvciBtYW55IHNvdXJjZXNcblx0Ly8gaUZyYW1lQWxsb3dlZCBpZiBpdCBkb2VzIG5vdCBjb250YWluICdmcmFtZS1hbmNlc3RvcnMnIG9yIGlmIGl0IGRvZXMgd2l0aCBhbiBhY2NlcHRhYmxlIHNvdXJjZVxuXHRjb25zdCB4Q29udGVudFNlY3VyaXR5UG9saWN5ID0gZmluZChcblx0XHRoZWFkZXJzLFxuXHRcdCh2YWx1ZSwga2V5KSA9PlxuXHRcdFx0a2V5LnRvTG93ZXJDYXNlKCkgPT09ICdjb250ZW50LXNlY3VyaXR5LXBvbGljeScgfHwga2V5LnRvTG93ZXJDYXNlKCkgPT09ICd4LWNvbnRlbnQtc2VjdXJpdHktcG9saWN5J1xuXHQpXG5cdGlmICh4Q29udGVudFNlY3VyaXR5UG9saWN5ICYmIGlzQXJyYXkoeENvbnRlbnRTZWN1cml0eVBvbGljeSkpIHtcblx0XHQvLyBkZWZpbmUgYWxsIGFjY2VwdGFibGUgZnJhbWUtYW5jZXN0b3JzIHNvdXJjZXNcblx0XHQvLyBwcm90b2NvbCwgZnVsbCBsb2NhdGlvbiBob3N0LCBob3N0LCBhbmQgYWxsIHdpbGRjYXJkIHBlcm11dGF0aW9uc1xuXHRcdGNvbnN0IGFjY2VwdGFibGVTb3VyY2VzID0gW2xvY2F0aW9uLnByb3RvY29sLCBgJHtsb2NhdGlvbi5wcm90b2NvbH0vLyR7bG9jYXRpb24uaG9zdH1gLCBsb2NhdGlvbi5ob3N0XVxuXHRcdGNvbnN0IGhvc3RQYXJ0cyA9IGxvY2F0aW9uLmhvc3Quc3BsaXQoJy4nKVxuXHRcdHdoaWxlIChob3N0UGFydHMubGVuZ3RoID4gMikge1xuXHRcdFx0aG9zdFBhcnRzLnNoaWZ0KClcblx0XHRcdGNvbnN0IHRlbXBIb3N0ID0gYCouJHtob3N0UGFydHMuam9pbignLicpfWBcblx0XHRcdGFjY2VwdGFibGVTb3VyY2VzLnB1c2godGVtcEhvc3QpXG5cdFx0XHRhY2NlcHRhYmxlU291cmNlcy5wdXNoKGAke2xvY2F0aW9uLnByb3RvY29sfS8vJHt0ZW1wSG9zdH1gKVxuXHRcdH1cblx0XHRyZXN1bHQuaUZyYW1lQWxsb3dlZCA9XG5cdFx0XHQheENvbnRlbnRTZWN1cml0eVBvbGljeS5zb21lKHggPT4geC5pbmRleE9mKCdmcmFtZS1hbmNlc3RvcnMgJykgPj0gMCkgfHxcblx0XHRcdHhDb250ZW50U2VjdXJpdHlQb2xpY3kuc29tZSh4ID0+IHtcblx0XHRcdFx0LyoqXG5cdFx0XHRcdCAqIE1hdGNoZXNcblx0XHRcdFx0ICogKiB0aGUgc3RyaW5nIGBmcmFtZS1hbmNlc3RvcnMgYFxuXHRcdFx0XHQgKiAqIG9uZSBvciBtYW55IG9mIHRoZSBmb2xsb3dpbmcsIGZvbGxvd2VkIGJ5IGEgc3BhY2UsIHNlbWljb2xvbiwgb3IgZW5kIG9mIHN0cmluZ1xuXHRcdFx0XHQgKiAgICAgKiBgaHR0cDpgXG5cdFx0XHRcdCAqICAgICAqIGBodHRwczpgXG5cdFx0XHRcdCAqICAgICAqIGAnc2VsZidgXG5cdFx0XHRcdCAqICAgICAqIGAnbm9uZSdgXG5cdFx0XHRcdCAqICAgICAqIHVybCB3aXRoIG9wdGlvbmFsIHNjaGVtZSBhbmQgb3B0aW9uYWwgYXN0ZXJpc2sgd2lsZGNhcmRzXG5cdFx0XHRcdCAqL1xuXHRcdFx0XHRjb25zdCBmcmFtZUFuY2VzdG9yc1JlZ2V4ID1cblx0XHRcdFx0XHQvZnJhbWUtYW5jZXN0b3JzICgoPzooPzooPzpodHRwOil8KD86aHR0cHM6KXwoPzonc2VsZicpfCg/Oidub25lJyl8KD86KD86aHR0cHM/OlxcL1xcLyk/W1xcdyouLV0rKD86XFwuW1xcdyouLV0rKStbXFx3LS5ffjovPyNbXFxdQCEkJicoKSorLD1dKykpKD86WyA7XXwkKSkrKS9nXG5cdFx0XHRcdGNvbnN0IHJlc3VsdHMgPSBmcmFtZUFuY2VzdG9yc1JlZ2V4LmV4ZWMoeClcblx0XHRcdFx0aWYgKCFyZXN1bHRzKSB7XG5cdFx0XHRcdFx0cmV0dXJuIGZhbHNlXG5cdFx0XHRcdH1cblx0XHRcdFx0Y29uc3Qgc291cmNlcyA9IHJlc3VsdHNbMV0uc3BsaXQoJyAnKVxuXHRcdFx0XHRyZXR1cm4gc291cmNlcy5zb21lKHNvdXJjZSA9PiBhY2NlcHRhYmxlU291cmNlcy5zb21lKGFjY2VwdGFibGVTb3VyY2UgPT4gYWNjZXB0YWJsZVNvdXJjZSA9PT0gc291cmNlKSlcblx0XHRcdH0pXG5cdH1cblxuXHQvLyB4LWZyYW1lLW9wdGlvbnMgY2FuIGJlIFsnU0FNRU9SSUdJTicsICdERU5ZJywgJ0FMTE9XLUZST00uLi4nXVxuXHQvLyBpRnJhbWVBbGxvd2VkIGlmIHRoZSB0aGUgeC1mcmFtZS1vcHRpb25zIGlzICdBTExPVy1GUk9NIHthcHAgd2ViIHVybH0nXG5cdGNvbnN0IHhGcmFtZU9wdGlvbnMgPSBmaW5kKGhlYWRlcnMsICh2YWx1ZSwga2V5KSA9PiBrZXkudG9Mb3dlckNhc2UoKSA9PT0gJ3gtZnJhbWUtb3B0aW9ucycpXG5cdGlmICh4RnJhbWVPcHRpb25zICYmIGlzQXJyYXkoeEZyYW1lT3B0aW9ucykpIHtcblx0XHRyZXN1bHQuaUZyYW1lQWxsb3dlZCA9XG5cdFx0XHQheEZyYW1lT3B0aW9ucy5zb21lKHggPT4geCA9PT0gWF9GUkFNRV9PUFRJT05TLkRFTlkgfHwgeCA9PT0gWF9GUkFNRV9PUFRJT05TLlNBTUVPUklHSU4pICYmXG5cdFx0XHR4RnJhbWVPcHRpb25zLnNvbWUoeCA9PiB4ID09PSBgJHtYX0ZSQU1FX09QVElPTlMuQUxMT1dfRlJPTX0gJHtsb2NhdGlvbi5wcm90b2NvbH0vLyR7bG9jYXRpb24uaG9zdH1gKVxuXHR9XG5cdHJldHVybiByZXN1bHRcbn1cblxuLyoqXG4gKiBQYXJzZSBhIHBhdGggc3RyaW5nIGludG8gYSBsb2NhdGlvbiB3aXRoIHNlcGFyYXRlIHBhdGhuYW1lLCBzZWFyY2gsIGFuZCBoYXNoIGNvbXBvbmVudHMuXG4gKiBAcGFyYW0gcGF0aCBBIHBhdGggc3RyaW5nXG4gKiBAcmV0dXJucyBUaGUgcGFyc2VkIHJlc3VsdFxuICovXG5leHBvcnQgY29uc3QgcGFyc2VMb2NhdGlvbiA9IChwYXRoOiBzdHJpbmcpOiBMb2NhdGlvbkRlc2NyaXB0b3IgPT4ge1xuXHRjb25zdCBzZWFyY2hTdGFydCA9IHBhdGguaW5kZXhPZignPycpXG5cdGNvbnN0IGhhc2hTdGFydCA9IHBhdGguaW5kZXhPZignIycpXG5cdGNvbnN0IHNlYXJjaEVuZCA9IGhhc2hTdGFydCA+IC0xID8gaGFzaFN0YXJ0IDogdW5kZWZpbmVkXG5cdGNvbnN0IHBhdGhuYW1lID1cblx0XHRzZWFyY2hTdGFydCA+IC0xID8gcGF0aC5zdWJzdHJpbmcoMCwgc2VhcmNoU3RhcnQpIDogaGFzaFN0YXJ0ID4gLTEgPyBwYXRoLnN1YnN0cmluZygwLCBoYXNoU3RhcnQpIDogcGF0aFxuXHRjb25zdCBzZWFyY2ggPSBzZWFyY2hTdGFydCA+IC0xID8gcGF0aC5zdWJzdHJpbmcoc2VhcmNoU3RhcnQsIHNlYXJjaEVuZCkgOiB1bmRlZmluZWRcblx0Y29uc3QgaGFzaCA9IGhhc2hTdGFydCA+IC0xID8gcGF0aC5zdWJzdHJpbmcoaGFzaFN0YXJ0KSA6IHVuZGVmaW5lZFxuXHRyZXR1cm4ge1xuXHRcdHBhdGhuYW1lOiBwYXRobmFtZSB8fCAnLycsXG5cdFx0c2VhcmNoOiBzZWFyY2gsXG5cdFx0aGFzaDogaGFzaFxuXHR9XG59XG5cbi8qKlxuICogQ3JlYXRlIGEgU0hBLTI1NiBkaWdlc3Qgb2YgYSBzdHJpbmcgdmFsdWUuXG4gKiBAcmV0dXJucyBBIFByb21pc2UgQXJyYXlCdWZmZXIuXG4gKi9cbmV4cG9ydCBjb25zdCBzaGEyNTZBc3luYyA9IGFzeW5jIChwbGFpbjogc3RyaW5nKSA9PiB7XG5cdC8vIHJldHVybnMgcHJvbWlzZSBBcnJheUJ1ZmZlclxuXHRjb25zdCBlbmNvZGVyID0gbmV3IFRleHRFbmNvZGVyKClcblx0Y29uc3QgZGF0YSA9IGVuY29kZXIuZW5jb2RlKHBsYWluKVxuXHRyZXR1cm4gYXdhaXQgY3J5cHRvLnN1YnRsZS5kaWdlc3QoJ1NIQS0yNTYnLCBkYXRhKVxufVxuXG4vKipcbiAqIENvbnZlcnQgYW4gQXJyYXlCdWZmZXIgdG8gc3RyaW5nIHVzaW5nIFVpbnQ4IGFycmF5LlxuICogYnRvYSB0YWtlcyBjaGFycyBmcm9tIDAtMjU1IGFuZCBiYXNlNjQgZW5jb2Rlcy5cbiAqIFRoZW4gY29udmVydCB0aGUgYmFzZTY0IGVuY29kZWQgdG8gYmFzZTY0dXJsIGVuY29kZWQuXG4gKiAocmVwbGFjZSArIHdpdGggLSwgcmVwbGFjZSAvIHdpdGggXywgdHJpbSB0cmFpbGluZyA9KVxuICovXG5leHBvcnQgY29uc3QgYmFzZTY0VXJsRW5jb2RlID0gKGE6IEFycmF5QnVmZmVyKSA9PiB7XG5cdHJldHVybiBidG9hKFN0cmluZy5mcm9tQ2hhckNvZGUoLi4ubmV3IFVpbnQ4QXJyYXkoYSkpKVxuXHRcdC5yZXBsYWNlKC9cXCsvZywgJy0nKVxuXHRcdC5yZXBsYWNlKC9cXC8vZywgJ18nKVxuXHRcdC5yZXBsYWNlKC89KyQvLCAnJylcbn1cbiJd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
package/lib/utils/user.js CHANGED
@@ -67,4 +67,4 @@ const stopImpersonation = guid => {
67
67
  });
68
68
  };
69
69
  exports.stopImpersonation = stopImpersonation;
70
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29uc3RhbnRzIiwicmVxdWlyZSIsIl9hY3Rpb25DcmVhdG9yIiwiX25vU3RvcmVTYWdhIiwiX2ZldGNoIiwibWFrZVBvc3Nlc3NpdmUiLCJ3b3JkIiwiZW5kc1dpdGgiLCJkaXNwbGF5TmFtZSIsInUiLCJzaG91bGRSZXZlcnNlIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwidW5kZWZpbmVkIiwiZmlyc3ROYW1lIiwibGFzdE5hbWUiLCJlbWFpbCIsImV4cG9ydHMiLCJkaXNwbGF5TmFtZVBvc3Nlc3NpdmUiLCJkaXNwbGF5Rmlyc3ROYW1lIiwiZGlzcGxheUZpcnN0TmFtZVBvc3Nlc3NpdmUiLCJmaWx0ZXJVc2Vyc0J5Um9sZSIsInJvbGUiLCJ1c2VyUm9sZXMiLCJmaWx0ZXIiLCJ1c2VyUm9sZSIsInJvbGVzIiwic29tZSIsInIiLCJzdGFydEltcGVyc29uYXRpb24iLCJndWlkIiwidXNlcklkIiwicmVnaXN0ZXJOb1N0b3JlQWN0aW9uSG9vayIsImRhdGEiLCJ1bnJlZ2lzdGVyTm9TdG9yZUFjdGlvbkhvb2siLCJpc0ZldGNoRXJyb3JEYXRhIiwiYWRkTm90aWZpY2F0aW9uIiwidGV4dCIsImRldGFpbCIsInR5cGUiLCJOT1RJRklDQVRJT05fVFlQRSIsIkVSUk9SIiwiaXNGZXRjaENhbmNlbGxlZERhdGEiLCJyZXNwb25zZSIsIndpbmRvdyIsImxvY2F0aW9uIiwiaHJlZiIsImVuY29kZVVSSUNvbXBvbmVudCIsImNvZGUiLCJkaXNwYXRjaE1vZGVsRmV0Y2hSZXF1ZXN0IiwibW9kZWxOYW1lIiwibm9TdG9yZSIsInF1ZXJ5UGFyYW1zIiwic3RvcEltcGVyc29uYXRpb24iXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvdXNlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOT1RJRklDQVRJT05fVFlQRSB9IGZyb20gJy4uL2NvbnN0YW50cydcclxuaW1wb3J0IHsgYWRkTm90aWZpY2F0aW9uLCBkaXNwYXRjaE1vZGVsRmV0Y2hSZXF1ZXN0IH0gZnJvbSAnLi4vcmVkdXgvYWN0aW9uQ3JlYXRvcidcclxuaW1wb3J0IHsgcmVnaXN0ZXJOb1N0b3JlQWN0aW9uSG9vaywgdW5yZWdpc3Rlck5vU3RvcmVBY3Rpb25Ib29rIH0gZnJvbSAnLi4vcmVkdXgvc2FnYXMvbm9TdG9yZVNhZ2EnXHJcbmltcG9ydCB7IEZldGNoRXJyb3JEYXRhLCBVc2VyLCBVc2VyV2l0aFJvbGVzIH0gZnJvbSAnLi4vdHlwZXMnXHJcbmltcG9ydCB7IGlzRmV0Y2hDYW5jZWxsZWREYXRhLCBpc0ZldGNoRXJyb3JEYXRhIH0gZnJvbSAnLi9mZXRjaCdcclxuXHJcbmNvbnN0IG1ha2VQb3NzZXNzaXZlID0gKHdvcmQ6IHN0cmluZykgPT4gKHdvcmQuZW5kc1dpdGgoJ3MnKSA/IGAke3dvcmR94oCZYCA6IGAke3dvcmR94oCZc2ApXHJcblxyXG5leHBvcnQgY29uc3QgZGlzcGxheU5hbWUgPSAodTogVXNlciwgc2hvdWxkUmV2ZXJzZSA9IGZhbHNlKSA9PlxyXG5cdCEhdS5maXJzdE5hbWUgJiYgISF1Lmxhc3ROYW1lXHJcblx0XHQ/IHNob3VsZFJldmVyc2VcclxuXHRcdFx0PyBgJHt1Lmxhc3ROYW1lfSwgJHt1LmZpcnN0TmFtZX1gXHJcblx0XHRcdDogYCR7dS5maXJzdE5hbWV9ICR7dS5sYXN0TmFtZX1gXHJcblx0XHQ6IHUuZW1haWxcclxuXHJcbmV4cG9ydCBjb25zdCBkaXNwbGF5TmFtZVBvc3Nlc3NpdmUgPSAodTogVXNlcikgPT5cclxuXHQhIXUuZmlyc3ROYW1lICYmICEhdS5sYXN0TmFtZSA/IGAke3UuZmlyc3ROYW1lfSAke21ha2VQb3NzZXNzaXZlKHUubGFzdE5hbWUpfWAgOiBgJHt1LmVtYWlsfeKAmXNgXHJcblxyXG5leHBvcnQgY29uc3QgZGlzcGxheUZpcnN0TmFtZSA9ICh1OiBVc2VyKSA9PiAodS5maXJzdE5hbWUgPyB1LmZpcnN0TmFtZSA6IHUuZW1haWwpXHJcblxyXG5leHBvcnQgY29uc3QgZGlzcGxheUZpcnN0TmFtZVBvc3Nlc3NpdmUgPSAodTogVXNlcikgPT4gKHUuZmlyc3ROYW1lID8gbWFrZVBvc3Nlc3NpdmUodS5maXJzdE5hbWUpIDogYCR7dS5lbWFpbH3igJlzYClcclxuXHJcbmV4cG9ydCBjb25zdCBmaWx0ZXJVc2Vyc0J5Um9sZSA9IChyb2xlOiBzdHJpbmcpID0+ICh1c2VyUm9sZXM6IFVzZXJXaXRoUm9sZXNbXSkgPT4ge1xyXG5cdHJldHVybiB1c2VyUm9sZXMuZmlsdGVyKHVzZXJSb2xlID0+IHVzZXJSb2xlLnJvbGVzLnNvbWUociA9PiByLnJvbGUgPT09IHJvbGUpKVxyXG59XHJcblxyXG5leHBvcnQgY29uc3Qgc3RhcnRJbXBlcnNvbmF0aW9uID0gKGd1aWQ6IHN0cmluZywgdXNlcklkOiBzdHJpbmcpID0+IHtcclxuXHRyZWdpc3Rlck5vU3RvcmVBY3Rpb25Ib29rKGd1aWQsIChkYXRhOiB1bmtub3duKSA9PiB7XHJcblx0XHR1bnJlZ2lzdGVyTm9TdG9yZUFjdGlvbkhvb2soZ3VpZClcclxuXHRcdGlmICghZGF0YSB8fCBpc0ZldGNoRXJyb3JEYXRhKGRhdGEpKSB7XHJcblx0XHRcdGFkZE5vdGlmaWNhdGlvbih7XHJcblx0XHRcdFx0dGV4dDogKGRhdGEgYXMgRmV0Y2hFcnJvckRhdGEgfCBudWxsKT8uZGV0YWlsIHx8ICdDb3VsZCBub3Qgc3RhcnQgaW1wZXJzb25hdGlvbicsXHJcblx0XHRcdFx0dHlwZTogTk9USUZJQ0FUSU9OX1RZUEUuRVJST1JcclxuXHRcdFx0fSlcclxuXHRcdH0gZWxzZSBpZiAoIWlzRmV0Y2hDYW5jZWxsZWREYXRhKGRhdGEpKSB7XHJcblx0XHRcdGNvbnN0IHJlc3BvbnNlID0gZGF0YSBhcyB7IGNvZGU6IHN0cmluZyB9XHJcblx0XHRcdHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gYC8/Y29kZT0ke2VuY29kZVVSSUNvbXBvbmVudChyZXNwb25zZS5jb2RlKX1gXHJcblx0XHR9XHJcblx0fSlcclxuXHJcblx0ZGlzcGF0Y2hNb2RlbEZldGNoUmVxdWVzdCh7XHJcblx0XHRtb2RlbE5hbWU6ICdzdGFydEltcGVyc29uYXRpb24nLFxyXG5cdFx0bm9TdG9yZTogdHJ1ZSxcclxuXHRcdGd1aWQsXHJcblx0XHRxdWVyeVBhcmFtczogeyB1c2VySWQgfVxyXG5cdH0pXHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBzdG9wSW1wZXJzb25hdGlvbiA9IChndWlkOiBzdHJpbmcpID0+IHtcclxuXHRyZWdpc3Rlck5vU3RvcmVBY3Rpb25Ib29rKGd1aWQsIChkYXRhOiB1bmtub3duKSA9PiB7XHJcblx0XHR1bnJlZ2lzdGVyTm9TdG9yZUFjdGlvbkhvb2soZ3VpZClcclxuXHRcdGlmICghZGF0YSB8fCBpc0ZldGNoRXJyb3JEYXRhKGRhdGEpKSB7XHJcblx0XHRcdGFkZE5vdGlmaWNhdGlvbih7XHJcblx0XHRcdFx0dGV4dDogKGRhdGEgYXMgRmV0Y2hFcnJvckRhdGEgfCBudWxsKT8uZGV0YWlsIHx8ICdDb3VsZCBub3Qgc3RvcCBpbXBlcnNvbmF0aW9uJyxcclxuXHRcdFx0XHR0eXBlOiBOT1RJRklDQVRJT05fVFlQRS5FUlJPUlxyXG5cdFx0XHR9KVxyXG5cdFx0fSBlbHNlIGlmICghaXNGZXRjaENhbmNlbGxlZERhdGEoZGF0YSkpIHtcclxuXHRcdFx0Y29uc3QgcmVzcG9uc2UgPSBkYXRhIGFzIHsgY29kZTogc3RyaW5nIH1cclxuXHRcdFx0d2luZG93LmxvY2F0aW9uLmhyZWYgPSBgLz9jb2RlPSR7ZW5jb2RlVVJJQ29tcG9uZW50KHJlc3BvbnNlLmNvZGUpfWBcclxuXHRcdH1cclxuXHR9KVxyXG5cclxuXHRkaXNwYXRjaE1vZGVsRmV0Y2hSZXF1ZXN0KHtcclxuXHRcdG1vZGVsTmFtZTogJ3N0b3BJbXBlcnNvbmF0aW9uJyxcclxuXHRcdG5vU3RvcmU6IHRydWUsXHJcblx0XHRndWlkXHJcblx0fSlcclxufVxyXG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLFVBQUEsR0FBQUMsT0FBQTtBQUNBLElBQUFDLGNBQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLFlBQUEsR0FBQUYs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
70
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29uc3RhbnRzIiwicmVxdWlyZSIsIl9hY3Rpb25DcmVhdG9yIiwiX25vU3RvcmVTYWdhIiwiX2ZldGNoIiwibWFrZVBvc3Nlc3NpdmUiLCJ3b3JkIiwiZW5kc1dpdGgiLCJkaXNwbGF5TmFtZSIsInUiLCJzaG91bGRSZXZlcnNlIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwidW5kZWZpbmVkIiwiZmlyc3ROYW1lIiwibGFzdE5hbWUiLCJlbWFpbCIsImV4cG9ydHMiLCJkaXNwbGF5TmFtZVBvc3Nlc3NpdmUiLCJkaXNwbGF5Rmlyc3ROYW1lIiwiZGlzcGxheUZpcnN0TmFtZVBvc3Nlc3NpdmUiLCJmaWx0ZXJVc2Vyc0J5Um9sZSIsInJvbGUiLCJ1c2VyUm9sZXMiLCJmaWx0ZXIiLCJ1c2VyUm9sZSIsInJvbGVzIiwic29tZSIsInIiLCJzdGFydEltcGVyc29uYXRpb24iLCJndWlkIiwidXNlcklkIiwicmVnaXN0ZXJOb1N0b3JlQWN0aW9uSG9vayIsImRhdGEiLCJ1bnJlZ2lzdGVyTm9TdG9yZUFjdGlvbkhvb2siLCJpc0ZldGNoRXJyb3JEYXRhIiwiYWRkTm90aWZpY2F0aW9uIiwidGV4dCIsImRldGFpbCIsInR5cGUiLCJOT1RJRklDQVRJT05fVFlQRSIsIkVSUk9SIiwiaXNGZXRjaENhbmNlbGxlZERhdGEiLCJyZXNwb25zZSIsIndpbmRvdyIsImxvY2F0aW9uIiwiaHJlZiIsImVuY29kZVVSSUNvbXBvbmVudCIsImNvZGUiLCJkaXNwYXRjaE1vZGVsRmV0Y2hSZXF1ZXN0IiwibW9kZWxOYW1lIiwibm9TdG9yZSIsInF1ZXJ5UGFyYW1zIiwic3RvcEltcGVyc29uYXRpb24iXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvdXNlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOT1RJRklDQVRJT05fVFlQRSB9IGZyb20gJy4uL2NvbnN0YW50cydcbmltcG9ydCB7IGFkZE5vdGlmaWNhdGlvbiwgZGlzcGF0Y2hNb2RlbEZldGNoUmVxdWVzdCB9IGZyb20gJy4uL3JlZHV4L2FjdGlvbkNyZWF0b3InXG5pbXBvcnQgeyByZWdpc3Rlck5vU3RvcmVBY3Rpb25Ib29rLCB1bnJlZ2lzdGVyTm9TdG9yZUFjdGlvbkhvb2sgfSBmcm9tICcuLi9yZWR1eC9zYWdhcy9ub1N0b3JlU2FnYSdcbmltcG9ydCB7IEZldGNoRXJyb3JEYXRhLCBVc2VyLCBVc2VyV2l0aFJvbGVzIH0gZnJvbSAnLi4vdHlwZXMnXG5pbXBvcnQgeyBpc0ZldGNoQ2FuY2VsbGVkRGF0YSwgaXNGZXRjaEVycm9yRGF0YSB9IGZyb20gJy4vZmV0Y2gnXG5cbmNvbnN0IG1ha2VQb3NzZXNzaXZlID0gKHdvcmQ6IHN0cmluZykgPT4gKHdvcmQuZW5kc1dpdGgoJ3MnKSA/IGAke3dvcmR94oCZYCA6IGAke3dvcmR94oCZc2ApXG5cbmV4cG9ydCBjb25zdCBkaXNwbGF5TmFtZSA9ICh1OiBVc2VyLCBzaG91bGRSZXZlcnNlID0gZmFsc2UpID0+XG5cdCEhdS5maXJzdE5hbWUgJiYgISF1Lmxhc3ROYW1lXG5cdFx0PyBzaG91bGRSZXZlcnNlXG5cdFx0XHQ/IGAke3UubGFzdE5hbWV9LCAke3UuZmlyc3ROYW1lfWBcblx0XHRcdDogYCR7dS5maXJzdE5hbWV9ICR7dS5sYXN0TmFtZX1gXG5cdFx0OiB1LmVtYWlsXG5cbmV4cG9ydCBjb25zdCBkaXNwbGF5TmFtZVBvc3Nlc3NpdmUgPSAodTogVXNlcikgPT5cblx0ISF1LmZpcnN0TmFtZSAmJiAhIXUubGFzdE5hbWUgPyBgJHt1LmZpcnN0TmFtZX0gJHttYWtlUG9zc2Vzc2l2ZSh1Lmxhc3ROYW1lKX1gIDogYCR7dS5lbWFpbH3igJlzYFxuXG5leHBvcnQgY29uc3QgZGlzcGxheUZpcnN0TmFtZSA9ICh1OiBVc2VyKSA9PiAodS5maXJzdE5hbWUgPyB1LmZpcnN0TmFtZSA6IHUuZW1haWwpXG5cbmV4cG9ydCBjb25zdCBkaXNwbGF5Rmlyc3ROYW1lUG9zc2Vzc2l2ZSA9ICh1OiBVc2VyKSA9PiAodS5maXJzdE5hbWUgPyBtYWtlUG9zc2Vzc2l2ZSh1LmZpcnN0TmFtZSkgOiBgJHt1LmVtYWlsfeKAmXNgKVxuXG5leHBvcnQgY29uc3QgZmlsdGVyVXNlcnNCeVJvbGUgPSAocm9sZTogc3RyaW5nKSA9PiAodXNlclJvbGVzOiBVc2VyV2l0aFJvbGVzW10pID0+IHtcblx0cmV0dXJuIHVzZXJSb2xlcy5maWx0ZXIodXNlclJvbGUgPT4gdXNlclJvbGUucm9sZXMuc29tZShyID0+IHIucm9sZSA9PT0gcm9sZSkpXG59XG5cbmV4cG9ydCBjb25zdCBzdGFydEltcGVyc29uYXRpb24gPSAoZ3VpZDogc3RyaW5nLCB1c2VySWQ6IHN0cmluZykgPT4ge1xuXHRyZWdpc3Rlck5vU3RvcmVBY3Rpb25Ib29rKGd1aWQsIChkYXRhOiB1bmtub3duKSA9PiB7XG5cdFx0dW5yZWdpc3Rlck5vU3RvcmVBY3Rpb25Ib29rKGd1aWQpXG5cdFx0aWYgKCFkYXRhIHx8IGlzRmV0Y2hFcnJvckRhdGEoZGF0YSkpIHtcblx0XHRcdGFkZE5vdGlmaWNhdGlvbih7XG5cdFx0XHRcdHRleHQ6IChkYXRhIGFzIEZldGNoRXJyb3JEYXRhIHwgbnVsbCk/LmRldGFpbCB8fCAnQ291bGQgbm90IHN0YXJ0IGltcGVyc29uYXRpb24nLFxuXHRcdFx0XHR0eXBlOiBOT1RJRklDQVRJT05fVFlQRS5FUlJPUlxuXHRcdFx0fSlcblx0XHR9IGVsc2UgaWYgKCFpc0ZldGNoQ2FuY2VsbGVkRGF0YShkYXRhKSkge1xuXHRcdFx0Y29uc3QgcmVzcG9uc2UgPSBkYXRhIGFzIHsgY29kZTogc3RyaW5nIH1cblx0XHRcdHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gYC8/Y29kZT0ke2VuY29kZVVSSUNvbXBvbmVudChyZXNwb25zZS5jb2RlKX1gXG5cdFx0fVxuXHR9KVxuXG5cdGRpc3BhdGNoTW9kZWxGZXRjaFJlcXVlc3Qoe1xuXHRcdG1vZGVsTmFtZTogJ3N0YXJ0SW1wZXJzb25hdGlvbicsXG5cdFx0bm9TdG9yZTogdHJ1ZSxcblx0XHRndWlkLFxuXHRcdHF1ZXJ5UGFyYW1zOiB7IHVzZXJJZCB9XG5cdH0pXG59XG5cbmV4cG9ydCBjb25zdCBzdG9wSW1wZXJzb25hdGlvbiA9IChndWlkOiBzdHJpbmcpID0+IHtcblx0cmVnaXN0ZXJOb1N0b3JlQWN0aW9uSG9vayhndWlkLCAoZGF0YTogdW5rbm93bikgPT4ge1xuXHRcdHVucmVnaXN0ZXJOb1N0b3JlQWN0aW9uSG9vayhndWlkKVxuXHRcdGlmICghZGF0YSB8fCBpc0ZldGNoRXJyb3JEYXRhKGRhdGEpKSB7XG5cdFx0XHRhZGROb3RpZmljYXRpb24oe1xuXHRcdFx0XHR0ZXh0OiAoZGF0YSBhcyBGZXRjaEVycm9yRGF0YSB8IG51bGwpPy5kZXRhaWwgfHwgJ0NvdWxkIG5vdCBzdG9wIGltcGVyc29uYXRpb24nLFxuXHRcdFx0XHR0eXBlOiBOT1RJRklDQVRJT05fVFlQRS5FUlJPUlxuXHRcdFx0fSlcblx0XHR9IGVsc2UgaWYgKCFpc0ZldGNoQ2FuY2VsbGVkRGF0YShkYXRhKSkge1xuXHRcdFx0Y29uc3QgcmVzcG9uc2UgPSBkYXRhIGFzIHsgY29kZTogc3RyaW5nIH1cblx0XHRcdHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gYC8/Y29kZT0ke2VuY29kZVVSSUNvbXBvbmVudChyZXNwb25zZS5jb2RlKX1gXG5cdFx0fVxuXHR9KVxuXG5cdGRpc3BhdGNoTW9kZWxGZXRjaFJlcXVlc3Qoe1xuXHRcdG1vZGVsTmFtZTogJ3N0b3BJbXBlcnNvbmF0aW9uJyxcblx0XHRub1N0b3JlOiB0cnVlLFxuXHRcdGd1aWRcblx0fSlcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsVUFBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsY0FBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsWUFBQSxHQUFBRixPQUFBO0FBRUEsSUFBQUcsTUFBQSxHQUFBSCxPQUFBO0FBRUEsTUFBTUksY0FBYyxHQUFJQyxJQUFZLElBQU1BLElBQUksQ0FBQ0MsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUdELElBQUksR0FBRyxHQUFHLEdBQUdBLElBQUksSUFB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
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Using the `lastActivityDate` set in local storage by "studiokit-caliper-js",
3
+ * determine if the user is idle, using `AppConfiguration.SESSION_IDLE_THRESHOLD`
4
+ *
5
+ * NOTE: returns `false` on LOCAL, since caliper is not configured for localhost
6
+ */
7
+ export declare const isUserIdle: () => boolean;
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.isUserIdle = void 0;
8
+ var _momentTimezone = _interopRequireDefault(require("moment-timezone"));
9
+ var _constants = require("../constants");
10
+ var _userActivityService = require("../services/userActivityService");
11
+ /**
12
+ * Using the `lastActivityDate` set in local storage by "studiokit-caliper-js",
13
+ * determine if the user is idle, using `AppConfiguration.SESSION_IDLE_THRESHOLD`
14
+ *
15
+ * NOTE: returns `false` on LOCAL, since caliper is not configured for localhost
16
+ */
17
+ const isUserIdle = () => {
18
+ const appConfig = (0, _constants.getAppConfig)();
19
+ // if (getAppConfig().TIER === TIER.LOCAL) {
20
+ // return false
21
+ // }
22
+ const lastActivityDateString = _userActivityService.userActivityService.getLastActivityDate();
23
+ if (!lastActivityDateString) {
24
+ return false;
25
+ }
26
+ const lastActivityDateUtc = _momentTimezone.default.utc(lastActivityDateString);
27
+ const nowUtc = _momentTimezone.default.utc();
28
+ return nowUtc.diff(lastActivityDateUtc) >= appConfig.SESSION_IDLE_THRESHOLD;
29
+ };
30
+ exports.isUserIdle = isUserIdle;
31
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbW9tZW50VGltZXpvbmUiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9jb25zdGFudHMiLCJfdXNlckFjdGl2aXR5U2VydmljZSIsImlzVXNlcklkbGUiLCJhcHBDb25maWciLCJnZXRBcHBDb25maWciLCJsYXN0QWN0aXZpdHlEYXRlU3RyaW5nIiwidXNlckFjdGl2aXR5U2VydmljZSIsImdldExhc3RBY3Rpdml0eURhdGUiLCJsYXN0QWN0aXZpdHlEYXRlVXRjIiwibW9tZW50IiwidXRjIiwibm93VXRjIiwiZGlmZiIsIlNFU1NJT05fSURMRV9USFJFU0hPTEQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL3VzZXJBY3Rpdml0eS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudC10aW1lem9uZSdcbmltcG9ydCB7IGdldEFwcENvbmZpZyB9IGZyb20gJy4uL2NvbnN0YW50cydcbmltcG9ydCB7IHVzZXJBY3Rpdml0eVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy91c2VyQWN0aXZpdHlTZXJ2aWNlJ1xuXG4vKipcbiAqIFVzaW5nIHRoZSBgbGFzdEFjdGl2aXR5RGF0ZWAgc2V0IGluIGxvY2FsIHN0b3JhZ2UgYnkgXCJzdHVkaW9raXQtY2FsaXBlci1qc1wiLFxuICogZGV0ZXJtaW5lIGlmIHRoZSB1c2VyIGlzIGlkbGUsIHVzaW5nIGBBcHBDb25maWd1cmF0aW9uLlNFU1NJT05fSURMRV9USFJFU0hPTERgXG4gKlxuICogTk9URTogcmV0dXJucyBgZmFsc2VgIG9uIExPQ0FMLCBzaW5jZSBjYWxpcGVyIGlzIG5vdCBjb25maWd1cmVkIGZvciBsb2NhbGhvc3RcbiAqL1xuZXhwb3J0IGNvbnN0IGlzVXNlcklkbGUgPSAoKSA9PiB7XG5cdGNvbnN0IGFwcENvbmZpZyA9IGdldEFwcENvbmZpZygpXG5cdC8vIGlmIChnZXRBcHBDb25maWcoKS5USUVSID09PSBUSUVSLkxPQ0FMKSB7XG5cdC8vIFx0cmV0dXJuIGZhbHNlXG5cdC8vIH1cblx0Y29uc3QgbGFzdEFjdGl2aXR5RGF0ZVN0cmluZyA9IHVzZXJBY3Rpdml0eVNlcnZpY2UuZ2V0TGFzdEFjdGl2aXR5RGF0ZSgpXG5cdGlmICghbGFzdEFjdGl2aXR5RGF0ZVN0cmluZykge1xuXHRcdHJldHVybiBmYWxzZVxuXHR9XG5cblx0Y29uc3QgbGFzdEFjdGl2aXR5RGF0ZVV0YyA9IG1vbWVudC51dGMobGFzdEFjdGl2aXR5RGF0ZVN0cmluZylcblx0Y29uc3Qgbm93VXRjID0gbW9tZW50LnV0YygpXG5cdHJldHVybiBub3dVdGMuZGlmZihsYXN0QWN0aXZpdHlEYXRlVXRjKSA+PSBhcHBDb25maWcuU0VTU0lPTl9JRExFX1RIUkVTSE9MRFxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUEsSUFBQUEsZUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsVUFBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsb0JBQUEsR0FBQUYsT0FBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLE1BQU1HLFVBQVUsR0FBR0EsQ0FBQSxLQUFNO0VBQy9CLE1BQU1DLFNBQVMsR0FBRyxJQUFBQyx1QkFBWSxFQUFDLENBQUM7RUFDaEM7RUFDQTtFQUNBO0VBQ0EsTUFBTUMsc0JBQXNCLEdBQUdDLHdDQUFtQixDQUFDQyxtQkFBbUIsQ0FBQyxDQUFDO0VBQ3hFLElBQUksQ0FBQ0Ysc0JBQXNCLEVBQUU7SUFDNUIsT0FBTyxLQUFLO0VBQ2I7RUFFQSxNQUFNRyxtQkFBbUIsR0FBR0MsdUJBQU0sQ0FBQ0MsR0FBRyxDQUFDTCxzQkFBc0IsQ0FBQztFQUM5RCxNQUFNTSxNQUFNLEdBQUdGLHVCQUFNLENBQUNDLEdBQUcsQ0FBQyxDQUFDO0VBQzNCLE9BQU9DLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDSixtQkFBbUIsQ0FBQyxJQUFJTCxTQUFTLENBQUNVLHNCQUFzQjtBQUM1RSxDQUFDO0FBQUFDLE9BQUEsQ0FBQVosVUFBQSxHQUFBQSxVQUFBIiwiaWdub3JlTGlzdCI6W119
@@ -12,4 +12,4 @@ const getOperatingSystem = () => {
12
12
  return macOSPlatforms.test(userAgent) ? _operatingSystem.OPERATING_SYSTEM.MAC : windowsPlatforms.test(userAgent) ? _operatingSystem.OPERATING_SYSTEM.WINDOWS : _operatingSystem.OPERATING_SYSTEM.UNKNOWN;
13
13
  };
14
14
  exports.getOperatingSystem = getOperatingSystem;
15
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfb3BlcmF0aW5nU3lzdGVtIiwicmVxdWlyZSIsImdldE9wZXJhdGluZ1N5c3RlbSIsInVzZXJBZ2VudCIsIndpbmRvdyIsIm5hdmlnYXRvciIsInRvTG93ZXJDYXNlIiwibWFjT1NQbGF0Zm9ybXMiLCJ3aW5kb3dzUGxhdGZvcm1zIiwidGVzdCIsIk9QRVJBVElOR19TWVNURU0iLCJNQUMiLCJXSU5ET1dTIiwiVU5LTk9XTiIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvdXNlckFnZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9QRVJBVElOR19TWVNURU0gfSBmcm9tICcuLi9jb25zdGFudHMvb3BlcmF0aW5nU3lzdGVtJ1xyXG5cclxuZXhwb3J0IGNvbnN0IGdldE9wZXJhdGluZ1N5c3RlbSA9ICgpID0+IHtcclxuXHRjb25zdCB1c2VyQWdlbnQgPSB3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpXHJcblx0Y29uc3QgbWFjT1NQbGF0Zm9ybXMgPSAvKG1hY2ludG9zaHxtYWNpbnRlbHxtYWNwcGN8bWFjNjhrfG1hY29zKS9pXHJcblx0Y29uc3Qgd2luZG93c1BsYXRmb3JtcyA9IC8od2luMzJ8d2luNjR8d2luZG93c3x3aW5jZSkvaVxyXG5cclxuXHRyZXR1cm4gbWFjT1NQbGF0Zm9ybXMudGVzdCh1c2VyQWdlbnQpXHJcblx0XHQ/IE9QRVJBVElOR19TWVNURU0uTUFDXHJcblx0XHQ6IHdpbmRvd3NQbGF0Zm9ybXMudGVzdCh1c2VyQWdlbnQpXHJcblx0XHRcdD8gT1BFUkFUSU5HX1NZU1RFTS5XSU5ET1dTXHJcblx0XHRcdDogT1BFUkFUSU5HX1NZU1RFTS5VTktOT1dOXHJcbn1cclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSxnQkFBQSxHQUFBQyxPQUFBO0FBRU8sTUFBTUMsa0JBQWtCLEdBQUdBLENBQUEsS0FBTTtFQUN2QyxNQUFNQyxTQUFTLEdBQUdDLE1BQU0sQ0FBQ0MsU0FBUyxDQUFDRixTQUFTLENBQUNHLFdBQVcsQ0FBQyxDQUFDO0VBQzFELE1BQU1DLGNBQWMsR0FBRywyQ0FBMkM7RUFDbEUsTUFBTUMsZ0JBQWdCLEdBQUcsOEJBQThCO0VBRXZELE9BQU9ELGNBQWMsQ0FBQ0UsSUFBSSxDQUFDTixTQUFTLENBQUMsR0FDbENPLGlDQUFnQixDQUFDQyxHQUFHLEdBQ3BCSCxnQkFBZ0IsQ0FBQ0MsSUFBSSxDQUFDTixTQUFTLENBQUMsR0FDL0JPLGlDQUFnQixDQUFDRSxPQUFPLEdBQ3hCRixpQ0FBZ0IsQ0FBQ0csT0FBTztBQUM3QixDQUFDO0FBQUFDLE9BQUEsQ0FBQVosa0JBQUEsR0FBQUEsa0JBQUEiLCJpZ25vcmVMaXN0IjpbXX0=
15
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfb3BlcmF0aW5nU3lzdGVtIiwicmVxdWlyZSIsImdldE9wZXJhdGluZ1N5c3RlbSIsInVzZXJBZ2VudCIsIndpbmRvdyIsIm5hdmlnYXRvciIsInRvTG93ZXJDYXNlIiwibWFjT1NQbGF0Zm9ybXMiLCJ3aW5kb3dzUGxhdGZvcm1zIiwidGVzdCIsIk9QRVJBVElOR19TWVNURU0iLCJNQUMiLCJXSU5ET1dTIiwiVU5LTk9XTiIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvdXNlckFnZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9QRVJBVElOR19TWVNURU0gfSBmcm9tICcuLi9jb25zdGFudHMvb3BlcmF0aW5nU3lzdGVtJ1xuXG5leHBvcnQgY29uc3QgZ2V0T3BlcmF0aW5nU3lzdGVtID0gKCkgPT4ge1xuXHRjb25zdCB1c2VyQWdlbnQgPSB3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpXG5cdGNvbnN0IG1hY09TUGxhdGZvcm1zID0gLyhtYWNpbnRvc2h8bWFjaW50ZWx8bWFjcHBjfG1hYzY4a3xtYWNvcykvaVxuXHRjb25zdCB3aW5kb3dzUGxhdGZvcm1zID0gLyh3aW4zMnx3aW42NHx3aW5kb3dzfHdpbmNlKS9pXG5cblx0cmV0dXJuIG1hY09TUGxhdGZvcm1zLnRlc3QodXNlckFnZW50KVxuXHRcdD8gT1BFUkFUSU5HX1NZU1RFTS5NQUNcblx0XHQ6IHdpbmRvd3NQbGF0Zm9ybXMudGVzdCh1c2VyQWdlbnQpXG5cdFx0XHQ/IE9QRVJBVElOR19TWVNURU0uV0lORE9XU1xuXHRcdFx0OiBPUEVSQVRJTkdfU1lTVEVNLlVOS05PV05cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsZ0JBQUEsR0FBQUMsT0FBQTtBQUVPLE1BQU1DLGtCQUFrQixHQUFHQSxDQUFBLEtBQU07RUFDdkMsTUFBTUMsU0FBUyxHQUFHQyxNQUFNLENBQUNDLFNBQVMsQ0FBQ0YsU0FBUyxDQUFDRyxXQUFXLENBQUMsQ0FBQztFQUMxRCxNQUFNQyxjQUFjLEdBQUcsMkNBQTJDO0VBQ2xFLE1BQU1DLGdCQUFnQixHQUFHLDhCQUE4QjtFQUV2RCxPQUFPRCxjQUFjLENBQUNFLElBQUksQ0FBQ04sU0FBUyxDQUFDLEdBQ2xDTyxpQ0FBZ0IsQ0FBQ0MsR0FBRyxHQUNwQkgsZ0JBQWdCLENBQUNDLElBQUksQ0FBQ04sU0FBUyxDQUFDLEdBQy9CTyxpQ0FBZ0IsQ0FBQ0UsT0FBTyxHQUN4QkYsaUNBQWdCLENBQUNHLE9BQU87QUFDN0IsQ0FBQztBQUFBQyxPQUFBLENBQUFaLGtCQUFBLEdBQUFBLGtCQUFBIiwiaWdub3JlTGlzdCI6W119
@@ -5,29 +5,29 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.sortByRole = exports.sortByHighestAccessRole = exports.isExternal = exports.getUserId = exports.getRoleText = exports.convertToUserWithRoles = void 0;
7
7
  var _baseRole = require("./baseRole");
8
- /**
9
- * Get the user id for a `userRole`, either a `UserRole` or `EntityUserRole`.
10
- * @param userRole The user role
8
+ /**
9
+ * Get the user id for a `userRole`, either a `UserRole` or `EntityUserRole`.
10
+ * @param userRole The user role
11
11
  */
12
12
  const getUserId = userRole => Object.prototype.hasOwnProperty.call(userRole, 'userId') ? userRole.userId : userRole.id;
13
13
 
14
- /**
15
- * Get whether or not the `userRole` has a prop `isExternal` and it is `true`.
16
- * @param userRole The user role
14
+ /**
15
+ * Get whether or not the `userRole` has a prop `isExternal` and it is `true`.
16
+ * @param userRole The user role
17
17
  */
18
18
  exports.getUserId = getUserId;
19
19
  const isExternal = userRole => Object.prototype.hasOwnProperty.call(userRole, 'isExternal') && userRole.isExternal === true;
20
20
 
21
- /**
22
- * Get the text for the given `userRole.role`. Defaults to using `textForBaseRole`.
23
- * @param textForRole Override method for providing role text
21
+ /**
22
+ * Get the text for the given `userRole.role`. Defaults to using `textForBaseRole`.
23
+ * @param textForRole Override method for providing role text
24
24
  */
25
25
  exports.isExternal = isExternal;
26
26
  const getRoleText = textForRole => a => textForRole ? textForRole(a.role) : (0, _baseRole.textForBaseRole)(a.role);
27
27
 
28
- /**
29
- * Sort the userRoles by role, using the provided `roles` order
30
- * @param roles Roles ordered in descing access level
28
+ /**
29
+ * Sort the userRoles by role, using the provided `roles` order
30
+ * @param roles Roles ordered in descing access level
31
31
  */
32
32
  exports.getRoleText = getRoleText;
33
33
  const sortByRole = roles => (a, b) => {
@@ -39,9 +39,9 @@ const sortByRole = roles => (a, b) => {
39
39
  return 0;
40
40
  };
41
41
 
42
- /**
43
- * Sort the users by role, using the provided `roles` order
44
- * @param roles Roles ordered in descing access level
42
+ /**
43
+ * Sort the users by role, using the provided `roles` order
44
+ * @param roles Roles ordered in descing access level
45
45
  */
46
46
  exports.sortByRole = sortByRole;
47
47
  const sortByHighestAccessRole = roles => (a, b) => {
@@ -67,4 +67,4 @@ const convertToUserWithRoles = userRole => {
67
67
  };
68
68
  };
69
69
  exports.convertToUserWithRoles = convertToUserWithRoles;
70
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYmFzZVJvbGUiLCJyZXF1aXJlIiwiZ2V0VXNlcklkIiwidXNlclJvbGUiLCJPYmplY3QiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJ1c2VySWQiLCJpZCIsImV4cG9ydHMiLCJpc0V4dGVybmFsIiwiZ2V0Um9sZVRleHQiLCJ0ZXh0Rm9yUm9sZSIsImEiLCJyb2xlIiwidGV4dEZvckJhc2VSb2xlIiwic29ydEJ5Um9sZSIsInJvbGVzIiwiYiIsImFJbmRleCIsImluZGV4T2YiLCJiSW5kZXgiLCJzb3J0QnlIaWdoZXN0QWNjZXNzUm9sZSIsImFSb2xlIiwic29ydCIsImJSb2xlIiwiY29udmVydFRvVXNlcldpdGhSb2xlcyIsImZpcnN0TmFtZSIsImxhc3ROYW1lIiwiZW1haWwiLCJ1aWQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvdXNlclJvbGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVXNlclJvbGUsIFVzZXJXaXRoUm9sZXMgfSBmcm9tICcuLi90eXBlcy9Vc2VyUm9sZSdcclxuaW1wb3J0IHsgdGV4dEZvckJhc2VSb2xlIH0gZnJvbSAnLi9iYXNlUm9sZSdcclxuXHJcbi8qKlxyXG4gKiBHZXQgdGhlIHVzZXIgaWQgZm9yIGEgYHVzZXJSb2xlYCwgZWl0aGVyIGEgYFVzZXJSb2xlYCBvciBgRW50aXR5VXNlclJvbGVgLlxyXG4gKiBAcGFyYW0gdXNlclJvbGUgVGhlIHVzZXIgcm9sZVxyXG4gKi9cclxuZXhwb3J0IGNvbnN0IGdldFVzZXJJZCA9ICh1c2VyUm9sZTogVXNlclJvbGUpOiBzdHJpbmcgPT5cclxuXHRPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodXNlclJvbGUsICd1c2VySWQnKSA/ICh1c2VyUm9sZSBhcyBhbnkpLnVzZXJJZCA6IHVzZXJSb2xlLmlkXHJcblxyXG4vKipcclxuICogR2V0IHdoZXRoZXIgb3Igbm90IHRoZSBgdXNlclJvbGVgIGhhcyBhIHByb3AgYGlzRXh0ZXJuYWxgIGFuZCBpdCBpcyBgdHJ1ZWAuXHJcbiAqIEBwYXJhbSB1c2VyUm9sZSBUaGUgdXNlciByb2xlXHJcbiAqL1xyXG5leHBvcnQgY29uc3QgaXNFeHRlcm5hbCA9ICh1c2VyUm9sZTogVXNlclJvbGUpOiBib29sZWFuID0+XHJcblx0T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHVzZXJSb2xlLCAnaXNFeHRlcm5hbCcpICYmICh1c2VyUm9sZSBhcyBhbnkpLmlzRXh0ZXJuYWwgPT09IHRydWVcclxuXHJcbi8qKlxyXG4gKiBHZXQgdGhlIHRleHQgZm9yIHRoZSBnaXZlbiBgdXNlclJvbGUucm9sZWAuIERlZmF1bHRzIHRvIHVzaW5nIGB0ZXh0Rm9yQmFzZVJvbGVgLlxyXG4gKiBAcGFyYW0gdGV4dEZvclJvbGUgT3ZlcnJpZGUgbWV0aG9kIGZvciBwcm92aWRpbmcgcm9sZSB0ZXh0XHJcbiAqL1xyXG5leHBvcnQgY29uc3QgZ2V0Um9sZVRleHQgPSAodGV4dEZvclJvbGU/OiAocm9sZTogc3RyaW5nKSA9PiBzdHJpbmcpID0+IChhOiBVc2VyUm9sZSkgPT5cclxuXHR0ZXh0Rm9yUm9sZSA/IHRleHRGb3JSb2xlKGEucm9sZSkgOiB0ZXh0Rm9yQmFzZVJvbGUoYS5yb2xlKVxyXG5cclxuLyoqXHJcbiAqIFNvcnQgdGhlIHVzZXJSb2xlcyBieSByb2xlLCB1c2luZyB0aGUgcHJvdmlkZWQgYHJvbGVzYCBvcmRlclxyXG4gKiBAcGFyYW0gcm9sZXMgUm9sZXMgb3JkZXJlZCBpbiBkZXNjaW5nIGFjY2VzcyBsZXZlbFxyXG4gKi9cclxuZXhwb3J0IGNvbnN0IHNvcnRCeVJvbGUgPSAocm9sZXM6IHN0cmluZ1tdKSA9PiAoYTogVXNlclJvbGUsIGI6IFVzZXJSb2xlKSA9PiB7XHJcblx0Y29uc3QgYUluZGV4ID0gcm9sZXMuaW5kZXhPZihhLnJvbGUpXHJcblx0Y29uc3QgYkluZGV4ID0gcm9sZXMuaW5kZXhPZihiLnJvbGUpXHJcblx0aWYgKGFJbmRleCAhPT0gYkluZGV4KSB7XHJcblx0XHRyZXR1cm4gYUluZGV4ID4gYkluZGV4ID8gMSA6IC0xXHJcblx0fVxyXG5cdHJldHVybiAwXHJcbn1cclxuXHJcbi8qKlxyXG4gKiBTb3J0IHRoZSB1c2VycyBieSByb2xlLCB1c2luZyB0aGUgcHJvdmlkZWQgYHJvbGVzYCBvcmRlclxyXG4gKiBAcGFyYW0gcm9sZXMgUm9sZXMgb3JkZXJlZCBpbiBkZXNjaW5nIGFjY2VzcyBsZXZlbFxyXG4gKi9cclxuZXhwb3J0IGNvbnN0IHNvcnRCeUhpZ2hlc3RBY2Nlc3NSb2xlID0gKHJvbGVzOiBzdHJpbmdbXSkgPT4gKGE6IFVzZXJXaXRoUm9sZXMsIGI6IFVzZXJXaXRoUm9sZXMpID0+IHtcclxuXHRjb25zdCBhUm9sZSA9IGEucm9sZXMuc29ydChzb3J0QnlSb2xlKHJvbGVzKSlbMF0ucm9sZVxyXG5cdGNvbnN0IGJSb2xlID0gYi5yb2xlcy5zb3J0KHNvcnRCeVJvbGUocm9sZXMpKVswXS5yb2xlXHJcblx0Y29uc3QgYUluZGV4ID0gcm9sZXMuaW5kZXhPZihhUm9sZSlcclxuXHRjb25zdCBiSW5kZXggPSByb2xlcy5pbmRleE9mKGJSb2xlKVxyXG5cdGlmIChhSW5kZXggIT09IGJJbmRleCkge1xyXG5cdFx0cmV0dXJuIGFJbmRleCA+IGJJbmRleCA/IDEgOiAtMVxyXG5cdH1cclxuXHRyZXR1cm4gMFxyXG59XHJcblxyXG5leHBvcnQgY29uc3QgY29udmVydFRvVXNlcldpdGhSb2xlcyA9IDxUVXNlclJvbGUgZXh0ZW5kcyBVc2VyUm9sZSA9IFVzZXJSb2xlPihcclxuXHR1c2VyUm9sZTogVFVzZXJSb2xlXHJcbik6IFVzZXJXaXRoUm9sZXM8VFVzZXJSb2xlPiA9PiB7XHJcblx0Y29uc3QgdXNlcklkID0gZ2V0VXNlcklkKHVzZXJSb2xlKVxyXG5cdHJldHVybiB7XHJcblx0XHRpZDogdXNlcklkLFxyXG5cdFx0Zmlyc3ROYW1lOiB1c2VyUm9sZS5maXJzdE5hbWUsXHJcblx0XHRsYXN0TmFtZTogdXNlclJvbGUubGFzdE5hbWUsXHJcblx0XHRlbWFpbDogdXNlclJvbGUuZW1haWwsXHJcblx0XHR1aWQ6IHVzZXJSb2xlLnVpZCxcclxuXHRcdHJvbGVzOiBbdXNlclJvbGVdXHJcblx0fVxyXG59XHJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQ0EsSUFBQUEsU0FBQSxHQUFBQyxPQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDTyxNQUFNQyxTQUFTLEdBQUlDLFFBQWtCLElBQzNDQyxNQUFNLENBQUNDLFNBQVMsQ0FBQ0MsY0FBYyxDQUFDQyxJQUFJLENBQUNKLFFBQVEsRUFBRSxRQUFRLENBQUMsR0FBSUEsUUFBUSxDQUFTSyxNQUFNLEdBQUdMLFFBQVEsQ0FBQ00sRUFBRTs7QUFFbEc7QUFDQTtBQUNBO0FBQ0E7QUFIQUMsT0FBQSxDQUFBUixTQUFBLEdBQUFBLFNBQUE7QUFJTyxNQUFNUyxVQUFVLEdBQUlSLFFBQWtCLElBQzVDQyxNQUFNLENBQUNDLFNBQVMsQ0FBQ0MsY0FBYyxDQUFDQyxJQUFJLENBQUNKLFFBQVEsRUFBRSxZQUFZLENBQUMsSUFBS0EsUUFBUSxDQUFTUSxVQUFVLEtBQUssSUFBSTs7QUFFdEc7QUFDQTtBQUNBO0FBQ0E7QUFIQUQsT0FBQSxDQUFBQyxVQUFBLEdBQUFBLFVBQUE7QUFJTyxNQUFNQyxXQUFXLEdBQUlDLFdBQXNDLElBQU1DLENBQVcsSUFDbEZELFdBQVcsR0FBR0EsV0FBVyxDQUFDQyxDQUFDLENBQUNDLElBQUksQ0FBQyxHQUFHLElBQUFDLHlCQUFlLEVBQUNGLENBQUMsQ0FBQ0MsSUFBSSxDQUFDOztBQUU1RDtBQUNBO0FBQ0E7QUFDQTtBQUhBTCxPQUFBLENBQUFFLFdBQUEsR0FBQUEsV0FBQTtBQUlPLE1BQU1LLFVBQVUsR0FBSUMsS0FBZSxJQUFLLENBQUNKLENBQVcsRUFBRUssQ0FBVyxLQUFLO0VBQzVFLE1BQU1DLE1BQU0sR0FBR0YsS0FBSyxDQUFDRyxPQUFPLENBQUNQLENBQUMsQ0FBQ0MsSUFBSSxDQUFDO0VBQ3BDLE1BQU1PLE1BQU0sR0FBR0osS0FBSyxDQUFDRyxPQUFPLENBQUNGLENBQUMsQ0FBQ0osSUFBSSxDQUFDO0VBQ3BDLElBQUlLLE1BQU0sS0FBS0UsTUFBTSxFQUFFO0lBQ3RCLE9BQU9GLE1BQU0sR0FBR0UsTUFBTSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7RUFDaEM7RUFDQSxPQUFPLENBQUM7QUFDVCxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBSEFaLE9BQUEsQ0FBQU8sVUFBQSxHQUFBQSxVQUFBO0FBSU8sTUFBTU0sdUJBQXVCLEdBQUlMLEtBQWUsSUFBSyxDQUFDSixDQUFnQixFQUFFSyxDQUFnQixLQUFLO0VBQ25HLE1BQU1LLEtBQUssR0FBR1YsQ0FBQyxDQUFDSSxLQUFLLENBQUNPLElBQUksQ0FBQ1IsVUFBVSxDQUFDQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDSCxJQUFJO0VBQ3JELE1BQU1XLEtBQUssR0FBR1AsQ0FBQyxDQUFDRCxLQUFLLENBQUNPLElBQUksQ0FBQ1IsVUFBVSxDQUFDQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDSCxJQUFJO0VBQ3JELE1BQU1LLE1BQU0sR0FBR0YsS0FBSyxDQUFDRyxPQUFPLENBQUNHLEtBQUssQ0FBQztFQUNuQyxNQUFNRixNQUFNLEdBQUdKLEtBQUssQ0FBQ0csT0FBTyxDQUFDSyxLQUFLLENBQUM7RUFDbkMsSUFBSU4sTUFBTSxLQUFLRSxNQUFNLEVBQUU7SUFDdEIsT0FBT0YsTUFBTSxHQUFHRSxNQUFNLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztFQUNoQztFQUNBLE9BQU8sQ0FBQztBQUNULENBQUM7QUFBQVosT0FBQSxDQUFBYSx1QkFBQSxHQUFBQSx1QkFBQTtBQUVNLE1BQU1JLHNCQUFzQixHQUNsQ3hCLFFBQW1CLElBQ1c7RUFDOUIsTUFBTUssTUFBTSxHQUFHTixTQUFTLENBQUNDLFFBQVEsQ0FBQztFQUNsQyxPQUFPO0lBQ05NLEVBQUUsRUFBRUQsTUFBTTtJQUNWb0IsU0FBUyxFQUFFekIsUUFBUSxDQUFDeUIsU0FBUztJQUM3QkMsUUFBUSxFQUFFMUIsUUFBUSxDQUFDMEIsUUFBUTtJQUMzQkMsS0FBSyxFQUFFM0IsUUFBUSxDQUFDMkIsS0FBSztJQUNyQkMsR0FBRyxFQUFFNUIsUUFBUSxDQUFDNEIsR0FBRztJQUNqQmIsS0FBSyxFQUFFLENBQUNmLFFBQVE7RUFDakIsQ0FBQztBQUNGLENBQUM7QUFBQU8sT0FBQSxDQUFBaUIsc0JBQUEsR0FBQUEsc0JBQUEiLCJpZ25vcmVMaXN0IjpbXX0=
70
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYmFzZVJvbGUiLCJyZXF1aXJlIiwiZ2V0VXNlcklkIiwidXNlclJvbGUiLCJPYmplY3QiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJ1c2VySWQiLCJpZCIsImV4cG9ydHMiLCJpc0V4dGVybmFsIiwiZ2V0Um9sZVRleHQiLCJ0ZXh0Rm9yUm9sZSIsImEiLCJyb2xlIiwidGV4dEZvckJhc2VSb2xlIiwic29ydEJ5Um9sZSIsInJvbGVzIiwiYiIsImFJbmRleCIsImluZGV4T2YiLCJiSW5kZXgiLCJzb3J0QnlIaWdoZXN0QWNjZXNzUm9sZSIsImFSb2xlIiwic29ydCIsImJSb2xlIiwiY29udmVydFRvVXNlcldpdGhSb2xlcyIsImZpcnN0TmFtZSIsImxhc3ROYW1lIiwiZW1haWwiLCJ1aWQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvdXNlclJvbGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVXNlclJvbGUsIFVzZXJXaXRoUm9sZXMgfSBmcm9tICcuLi90eXBlcy9Vc2VyUm9sZSdcbmltcG9ydCB7IHRleHRGb3JCYXNlUm9sZSB9IGZyb20gJy4vYmFzZVJvbGUnXG5cbi8qKlxuICogR2V0IHRoZSB1c2VyIGlkIGZvciBhIGB1c2VyUm9sZWAsIGVpdGhlciBhIGBVc2VyUm9sZWAgb3IgYEVudGl0eVVzZXJSb2xlYC5cbiAqIEBwYXJhbSB1c2VyUm9sZSBUaGUgdXNlciByb2xlXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRVc2VySWQgPSAodXNlclJvbGU6IFVzZXJSb2xlKTogc3RyaW5nID0+XG5cdE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh1c2VyUm9sZSwgJ3VzZXJJZCcpID8gKHVzZXJSb2xlIGFzIGFueSkudXNlcklkIDogdXNlclJvbGUuaWRcblxuLyoqXG4gKiBHZXQgd2hldGhlciBvciBub3QgdGhlIGB1c2VyUm9sZWAgaGFzIGEgcHJvcCBgaXNFeHRlcm5hbGAgYW5kIGl0IGlzIGB0cnVlYC5cbiAqIEBwYXJhbSB1c2VyUm9sZSBUaGUgdXNlciByb2xlXG4gKi9cbmV4cG9ydCBjb25zdCBpc0V4dGVybmFsID0gKHVzZXJSb2xlOiBVc2VyUm9sZSk6IGJvb2xlYW4gPT5cblx0T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHVzZXJSb2xlLCAnaXNFeHRlcm5hbCcpICYmICh1c2VyUm9sZSBhcyBhbnkpLmlzRXh0ZXJuYWwgPT09IHRydWVcblxuLyoqXG4gKiBHZXQgdGhlIHRleHQgZm9yIHRoZSBnaXZlbiBgdXNlclJvbGUucm9sZWAuIERlZmF1bHRzIHRvIHVzaW5nIGB0ZXh0Rm9yQmFzZVJvbGVgLlxuICogQHBhcmFtIHRleHRGb3JSb2xlIE92ZXJyaWRlIG1ldGhvZCBmb3IgcHJvdmlkaW5nIHJvbGUgdGV4dFxuICovXG5leHBvcnQgY29uc3QgZ2V0Um9sZVRleHQgPSAodGV4dEZvclJvbGU/OiAocm9sZTogc3RyaW5nKSA9PiBzdHJpbmcpID0+IChhOiBVc2VyUm9sZSkgPT5cblx0dGV4dEZvclJvbGUgPyB0ZXh0Rm9yUm9sZShhLnJvbGUpIDogdGV4dEZvckJhc2VSb2xlKGEucm9sZSlcblxuLyoqXG4gKiBTb3J0IHRoZSB1c2VyUm9sZXMgYnkgcm9sZSwgdXNpbmcgdGhlIHByb3ZpZGVkIGByb2xlc2Agb3JkZXJcbiAqIEBwYXJhbSByb2xlcyBSb2xlcyBvcmRlcmVkIGluIGRlc2NpbmcgYWNjZXNzIGxldmVsXG4gKi9cbmV4cG9ydCBjb25zdCBzb3J0QnlSb2xlID0gKHJvbGVzOiBzdHJpbmdbXSkgPT4gKGE6IFVzZXJSb2xlLCBiOiBVc2VyUm9sZSkgPT4ge1xuXHRjb25zdCBhSW5kZXggPSByb2xlcy5pbmRleE9mKGEucm9sZSlcblx0Y29uc3QgYkluZGV4ID0gcm9sZXMuaW5kZXhPZihiLnJvbGUpXG5cdGlmIChhSW5kZXggIT09IGJJbmRleCkge1xuXHRcdHJldHVybiBhSW5kZXggPiBiSW5kZXggPyAxIDogLTFcblx0fVxuXHRyZXR1cm4gMFxufVxuXG4vKipcbiAqIFNvcnQgdGhlIHVzZXJzIGJ5IHJvbGUsIHVzaW5nIHRoZSBwcm92aWRlZCBgcm9sZXNgIG9yZGVyXG4gKiBAcGFyYW0gcm9sZXMgUm9sZXMgb3JkZXJlZCBpbiBkZXNjaW5nIGFjY2VzcyBsZXZlbFxuICovXG5leHBvcnQgY29uc3Qgc29ydEJ5SGlnaGVzdEFjY2Vzc1JvbGUgPSAocm9sZXM6IHN0cmluZ1tdKSA9PiAoYTogVXNlcldpdGhSb2xlcywgYjogVXNlcldpdGhSb2xlcykgPT4ge1xuXHRjb25zdCBhUm9sZSA9IGEucm9sZXMuc29ydChzb3J0QnlSb2xlKHJvbGVzKSlbMF0ucm9sZVxuXHRjb25zdCBiUm9sZSA9IGIucm9sZXMuc29ydChzb3J0QnlSb2xlKHJvbGVzKSlbMF0ucm9sZVxuXHRjb25zdCBhSW5kZXggPSByb2xlcy5pbmRleE9mKGFSb2xlKVxuXHRjb25zdCBiSW5kZXggPSByb2xlcy5pbmRleE9mKGJSb2xlKVxuXHRpZiAoYUluZGV4ICE9PSBiSW5kZXgpIHtcblx0XHRyZXR1cm4gYUluZGV4ID4gYkluZGV4ID8gMSA6IC0xXG5cdH1cblx0cmV0dXJuIDBcbn1cblxuZXhwb3J0IGNvbnN0IGNvbnZlcnRUb1VzZXJXaXRoUm9sZXMgPSA8VFVzZXJSb2xlIGV4dGVuZHMgVXNlclJvbGUgPSBVc2VyUm9sZT4oXG5cdHVzZXJSb2xlOiBUVXNlclJvbGVcbik6IFVzZXJXaXRoUm9sZXM8VFVzZXJSb2xlPiA9PiB7XG5cdGNvbnN0IHVzZXJJZCA9IGdldFVzZXJJZCh1c2VyUm9sZSlcblx0cmV0dXJuIHtcblx0XHRpZDogdXNlcklkLFxuXHRcdGZpcnN0TmFtZTogdXNlclJvbGUuZmlyc3ROYW1lLFxuXHRcdGxhc3ROYW1lOiB1c2VyUm9sZS5sYXN0TmFtZSxcblx0XHRlbWFpbDogdXNlclJvbGUuZW1haWwsXG5cdFx0dWlkOiB1c2VyUm9sZS51aWQsXG5cdFx0cm9sZXM6IFt1c2VyUm9sZV1cblx0fVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFDQSxJQUFB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