qpp-style 2.0.1 → 2.0.2-sm.2

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 (595) hide show
  1. package/.babelrc +10 -0
  2. package/.editorconfig +22 -0
  3. package/.eslintignore +5 -0
  4. package/.eslintrc.js +31 -0
  5. package/.husky/pre-commit +5 -0
  6. package/README.md +35 -55
  7. package/components/Accordion/Accordion.stories.js +20 -0
  8. package/components/Accordion/index.jsx +93 -0
  9. package/components/Alert/Alert.stories.js +61 -0
  10. package/components/Alert/index.js +53 -0
  11. package/components/Breadcrumb/Breadcrumb.md +28 -0
  12. package/components/Breadcrumb/index.js +83 -0
  13. package/components/Button/index.js +90 -0
  14. package/components/CalloutBox/index.js +109 -0
  15. package/components/Card/index.js +137 -0
  16. package/components/Details/Details.stories.js +63 -0
  17. package/components/Details/DetailsIcons.js +50 -0
  18. package/components/Details/index.js +53 -0
  19. package/components/Dropdown/index.js +85 -0
  20. package/components/DropdownButton/DropdownButton.stories.js +127 -0
  21. package/components/DropdownButton/Menu.js +25 -0
  22. package/components/DropdownButton/MenuButton.js +41 -0
  23. package/components/DropdownButton/MenuItem.js +25 -0
  24. package/components/DropdownButton/MenuItemLink.js +27 -0
  25. package/components/Error/Collapsible.jsx +88 -0
  26. package/components/Error/ErrorUI.jsx +31 -0
  27. package/components/Error/error.js +26 -0
  28. package/components/FlashNotification/FlashNotificationUI.jsx +91 -0
  29. package/components/FlashNotification/index.js +30 -0
  30. package/components/Footer/FooterUI.jsx +212 -0
  31. package/components/Footer/SocialLinks.jsx +60 -0
  32. package/components/Footer/Subscribe.jsx +34 -0
  33. package/components/Footer/footer.js +20 -0
  34. package/components/GovBanner/index.js +117 -0
  35. package/components/Header/Header.md +111 -0
  36. package/components/Header/HeaderAccountMenu.jsx +94 -0
  37. package/components/Header/HeaderCancel.jsx +16 -0
  38. package/components/Header/HeaderContainer.jsx +74 -0
  39. package/components/Header/HeaderLogo.jsx +42 -0
  40. package/components/Header/HeaderMenuButton.js +50 -0
  41. package/components/Header/HeaderMenuItem.jsx +239 -0
  42. package/components/Header/HeaderMenuLink.js +56 -0
  43. package/components/Header/HeaderMenuSignOutButton.js +62 -0
  44. package/components/Header/HeaderMobileButton.js +37 -0
  45. package/components/Header/HeaderUI.jsx +167 -0
  46. package/components/Header/HelpIcon.jsx +32 -0
  47. package/components/Header/ImpersonatorBanner.jsx +82 -0
  48. package/components/Header/NavigationButtonIcon.jsx +27 -0
  49. package/components/Header/default-content.json +280 -0
  50. package/components/Header/header.js +40 -0
  51. package/components/Header/hooks.js +66 -0
  52. package/components/Header/utag-helpers.js +9 -0
  53. package/components/Infotip/Infotip.jsx +75 -0
  54. package/components/Infotip/InfotipIcon.jsx +41 -0
  55. package/components/Infotip/index.js +3 -0
  56. package/components/Link/index.js +61 -0
  57. package/components/Modal/LegacyModal.jsx +72 -0
  58. package/components/Modal/Modal.jsx +140 -0
  59. package/components/Modal/index.jsx +22 -0
  60. package/components/NotificationBanner/CollapsedView.js +39 -0
  61. package/components/NotificationBanner/ExpandedView.js +45 -0
  62. package/components/NotificationBanner/index.js +221 -0
  63. package/components/SanitizedContent/index.jsx +200 -0
  64. package/components/Search/index.js +98 -0
  65. package/components/SessionDialog/sessionDialog.js +26 -0
  66. package/components/SessionDialogUI.jsx +261 -0
  67. package/components/SideNav/AnimationGroup/AnimationGroup.jsx +27 -0
  68. package/components/SideNav/Chart/ScoreChart.jsx +268 -0
  69. package/components/SideNav/Chart/__tests__/ScoreChart.test.js +22 -0
  70. package/components/SideNav/Chart/__tests__/__snapshots__/ScoreChart.test.js.snap +173 -0
  71. package/components/SideNav/Chart/index.js +3 -0
  72. package/components/SideNav/Content/LevelOneContent.jsx +199 -0
  73. package/components/SideNav/Content/LevelTwoContent.jsx +216 -0
  74. package/components/SideNav/Content/SelectRole/index.js +77 -0
  75. package/components/SideNav/Content/SelectRole/utils.js +140 -0
  76. package/components/SideNav/Content/index.js +4 -0
  77. package/components/SideNav/Details/IndividualDetails.jsx +18 -0
  78. package/components/SideNav/Details/PracticeDetails.jsx +45 -0
  79. package/components/SideNav/Details/index.js +4 -0
  80. package/components/SideNav/Links/CmsSwitchLink.jsx +41 -0
  81. package/components/SideNav/Links/NavItemInline.jsx +54 -0
  82. package/components/SideNav/Links/NavLinkContainer.jsx +38 -0
  83. package/components/SideNav/Links/NavLinkDrawer.jsx +276 -0
  84. package/components/SideNav/Links/NavLinkInline.jsx +110 -0
  85. package/components/SideNav/Links/NavLinkToggle.jsx +34 -0
  86. package/components/SideNav/Links/index.js +13 -0
  87. package/components/SideNav/SideNav.md +50 -0
  88. package/components/SideNav/UI/SideNavUI.jsx +298 -0
  89. package/components/SideNav/UI/default-content.json +117 -0
  90. package/components/SideNav/UI/index.js +3 -0
  91. package/components/SideNav/UI/utils.js +0 -0
  92. package/components/SideNav/helpers.js +351 -0
  93. package/components/SideNav/index.js +53 -0
  94. package/components/Tabs/Tab.js +26 -0
  95. package/components/Tabs/TabPanel.js +41 -0
  96. package/components/Tabs/index.js +100 -0
  97. package/components/TextInput/index.js +137 -0
  98. package/components/Tooltip/Tooltip.jsx +88 -0
  99. package/components/Tooltip/Tooltip.stories.js +80 -0
  100. package/components/Tooltip/index.js +3 -0
  101. package/components/Tooltip/position.js +68 -0
  102. package/components/hooks/useGetConfig.js +75 -0
  103. package/components/index.js +128 -0
  104. package/coverage/clover.xml +1453 -0
  105. package/coverage/coverage-final.json +71 -0
  106. package/coverage/lcov-report/Tooltip.jsx.html +232 -0
  107. package/coverage/lcov-report/base.css +224 -0
  108. package/coverage/lcov-report/block-navigation.js +87 -0
  109. package/coverage/lcov-report/components/Accordion/index.html +116 -0
  110. package/coverage/lcov-report/components/Accordion/index.jsx.html +364 -0
  111. package/coverage/lcov-report/components/Button/index.html +116 -0
  112. package/coverage/lcov-report/components/Button/index.js.html +355 -0
  113. package/coverage/lcov-report/components/Error/Collapsible.jsx.html +349 -0
  114. package/coverage/lcov-report/components/Error/ErrorUI.jsx.html +178 -0
  115. package/coverage/lcov-report/components/Error/index.html +131 -0
  116. package/coverage/lcov-report/components/Footer/FooterUI.jsx.html +706 -0
  117. package/coverage/lcov-report/components/Footer/SocialLinks.jsx.html +265 -0
  118. package/coverage/lcov-report/components/Footer/Subscribe.jsx.html +187 -0
  119. package/coverage/lcov-report/components/Footer/index.html +146 -0
  120. package/coverage/lcov-report/components/GovBanner/index.html +116 -0
  121. package/coverage/lcov-report/components/GovBanner/index.js.html +436 -0
  122. package/coverage/lcov-report/components/Header/HeaderAccountMenu.jsx.html +367 -0
  123. package/coverage/lcov-report/components/Header/HeaderCancel.jsx.html +133 -0
  124. package/coverage/lcov-report/components/Header/HeaderContainer.jsx.html +307 -0
  125. package/coverage/lcov-report/components/Header/HeaderLogo.jsx.html +211 -0
  126. package/coverage/lcov-report/components/Header/HeaderMenuButton.js.html +235 -0
  127. package/coverage/lcov-report/components/Header/HeaderMenuItem.jsx.html +802 -0
  128. package/coverage/lcov-report/components/Header/HeaderMenuLink.js.html +253 -0
  129. package/coverage/lcov-report/components/Header/HeaderMenuSignOutButton.js.html +271 -0
  130. package/coverage/lcov-report/components/Header/HeaderMobileButton.js.html +196 -0
  131. package/coverage/lcov-report/components/Header/HeaderUI.jsx.html +586 -0
  132. package/coverage/lcov-report/components/Header/HelpIcon.jsx.html +181 -0
  133. package/coverage/lcov-report/components/Header/ImpersonatorBanner.jsx.html +328 -0
  134. package/coverage/lcov-report/components/Header/NavigationButtonIcon.jsx.html +166 -0
  135. package/coverage/lcov-report/components/Header/hooks.js.html +283 -0
  136. package/coverage/lcov-report/components/Header/index.html +326 -0
  137. package/coverage/lcov-report/components/Header/utag-helpers.js.html +112 -0
  138. package/coverage/lcov-report/components/Infotip/Infotip.jsx.html +310 -0
  139. package/coverage/lcov-report/components/Infotip/InfotipIcon.jsx.html +208 -0
  140. package/coverage/lcov-report/components/Infotip/index.html +146 -0
  141. package/coverage/lcov-report/components/Infotip/index.js.html +94 -0
  142. package/coverage/lcov-report/components/Modal/LegacyModal.jsx.html +301 -0
  143. package/coverage/lcov-report/components/Modal/Modal.jsx.html +505 -0
  144. package/coverage/lcov-report/components/Modal/index.html +146 -0
  145. package/coverage/lcov-report/components/Modal/index.jsx.html +151 -0
  146. package/coverage/lcov-report/components/NotificationBanner/CollapsedView.js.html +202 -0
  147. package/coverage/lcov-report/components/NotificationBanner/ExpandedView.js.html +220 -0
  148. package/coverage/lcov-report/components/NotificationBanner/index.html +146 -0
  149. package/coverage/lcov-report/components/NotificationBanner/index.js.html +748 -0
  150. package/coverage/lcov-report/components/SanitizedContent/index.html +116 -0
  151. package/coverage/lcov-report/components/SanitizedContent/index.jsx.html +685 -0
  152. package/coverage/lcov-report/components/SessionDialogUI.jsx.html +868 -0
  153. package/coverage/lcov-report/components/SideNav/Content/SelectRole/index.html +116 -0
  154. package/coverage/lcov-report/components/SideNav/Content/SelectRole/utils.js.html +505 -0
  155. package/coverage/lcov-report/components/SideNav/helpers.js.html +1138 -0
  156. package/coverage/lcov-report/components/SideNav/index.html +116 -0
  157. package/coverage/lcov-report/components/Tooltip/Tooltip.jsx.html +349 -0
  158. package/coverage/lcov-report/components/Tooltip/index.html +146 -0
  159. package/coverage/lcov-report/components/Tooltip/index.js.html +94 -0
  160. package/coverage/lcov-report/components/Tooltip/position.js.html +289 -0
  161. package/coverage/lcov-report/components/hooks/index.html +116 -0
  162. package/coverage/lcov-report/components/hooks/useGetConfig.js.html +310 -0
  163. package/coverage/lcov-report/components/index.html +116 -0
  164. package/coverage/lcov-report/favicon.png +0 -0
  165. package/coverage/lcov-report/index.html +476 -0
  166. package/coverage/lcov-report/index.js.html +94 -0
  167. package/coverage/lcov-report/lib/Chevron.jsx.html +181 -0
  168. package/coverage/lcov-report/lib/SvgComponents.jsx.html +2200 -0
  169. package/coverage/lcov-report/lib/index.html +131 -0
  170. package/coverage/lcov-report/position.js.html +289 -0
  171. package/coverage/lcov-report/prettify.css +1 -0
  172. package/coverage/lcov-report/prettify.js +2 -0
  173. package/coverage/lcov-report/react/components/Accordion/index.html +116 -0
  174. package/coverage/lcov-report/react/components/Accordion/index.jsx.html +364 -0
  175. package/coverage/lcov-report/react/components/Button/index.html +116 -0
  176. package/coverage/lcov-report/react/components/Button/index.js.html +355 -0
  177. package/coverage/lcov-report/react/components/Dropdown/index.html +116 -0
  178. package/coverage/lcov-report/react/components/Dropdown/index.js.html +340 -0
  179. package/coverage/lcov-report/react/components/Error/Collapsible.jsx.html +349 -0
  180. package/coverage/lcov-report/react/components/Error/ErrorUI.jsx.html +178 -0
  181. package/coverage/lcov-report/react/components/Error/error.js.html +163 -0
  182. package/coverage/lcov-report/react/components/Error/index.html +146 -0
  183. package/coverage/lcov-report/react/components/Footer/FooterUI.jsx.html +718 -0
  184. package/coverage/lcov-report/react/components/Footer/SocialLinks.jsx.html +265 -0
  185. package/coverage/lcov-report/react/components/Footer/Subscribe.jsx.html +187 -0
  186. package/coverage/lcov-report/react/components/Footer/footer.js.html +145 -0
  187. package/coverage/lcov-report/react/components/Footer/index.html +161 -0
  188. package/coverage/lcov-report/react/components/GovBanner/index.html +116 -0
  189. package/coverage/lcov-report/react/components/GovBanner/index.js.html +436 -0
  190. package/coverage/lcov-report/react/components/Header/HeaderAccountMenu.jsx.html +367 -0
  191. package/coverage/lcov-report/react/components/Header/HeaderCancel.jsx.html +133 -0
  192. package/coverage/lcov-report/react/components/Header/HeaderContainer.jsx.html +307 -0
  193. package/coverage/lcov-report/react/components/Header/HeaderLogo.jsx.html +211 -0
  194. package/coverage/lcov-report/react/components/Header/HeaderMenuButton.js.html +235 -0
  195. package/coverage/lcov-report/react/components/Header/HeaderMenuItem.jsx.html +802 -0
  196. package/coverage/lcov-report/react/components/Header/HeaderMenuLink.js.html +253 -0
  197. package/coverage/lcov-report/react/components/Header/HeaderMenuSignOutButton.js.html +271 -0
  198. package/coverage/lcov-report/react/components/Header/HeaderMobileButton.js.html +196 -0
  199. package/coverage/lcov-report/react/components/Header/HeaderUI.jsx.html +586 -0
  200. package/coverage/lcov-report/react/components/Header/HelpIcon.jsx.html +181 -0
  201. package/coverage/lcov-report/react/components/Header/ImpersonatorBanner.jsx.html +328 -0
  202. package/coverage/lcov-report/react/components/Header/NavigationButtonIcon.jsx.html +166 -0
  203. package/coverage/lcov-report/react/components/Header/header.js.html +205 -0
  204. package/coverage/lcov-report/react/components/Header/hooks.js.html +283 -0
  205. package/coverage/lcov-report/react/components/Header/index.html +341 -0
  206. package/coverage/lcov-report/react/components/Header/utag-helpers.js.html +112 -0
  207. package/coverage/lcov-report/react/components/Infotip/Infotip.jsx.html +298 -0
  208. package/coverage/lcov-report/react/components/Infotip/InfotipContent.jsx.html +223 -0
  209. package/coverage/lcov-report/react/components/Infotip/InfotipIcon.jsx.html +208 -0
  210. package/coverage/lcov-report/react/components/Infotip/index.html +161 -0
  211. package/coverage/lcov-report/react/components/Infotip/index.js.html +94 -0
  212. package/coverage/lcov-report/react/components/Modal/LegacyModal.jsx.html +301 -0
  213. package/coverage/lcov-report/react/components/Modal/Modal.jsx.html +505 -0
  214. package/coverage/lcov-report/react/components/Modal/index.html +146 -0
  215. package/coverage/lcov-report/react/components/Modal/index.jsx.html +151 -0
  216. package/coverage/lcov-report/react/components/NotificationBanner/CollapsedView.js.html +202 -0
  217. package/coverage/lcov-report/react/components/NotificationBanner/ExpandedView.js.html +220 -0
  218. package/coverage/lcov-report/react/components/NotificationBanner/index.html +146 -0
  219. package/coverage/lcov-report/react/components/NotificationBanner/index.js.html +748 -0
  220. package/coverage/lcov-report/react/components/SanitizedContent/index.html +116 -0
  221. package/coverage/lcov-report/react/components/SanitizedContent/index.jsx.html +685 -0
  222. package/coverage/lcov-report/react/components/SessionDialog/index.html +116 -0
  223. package/coverage/lcov-report/react/components/SessionDialog/sessionDialog.js.html +163 -0
  224. package/coverage/lcov-report/react/components/SessionDialogUI.jsx.html +868 -0
  225. package/coverage/lcov-report/react/components/SideNav/AnimationGroup/AnimationGroup.jsx.html +166 -0
  226. package/coverage/lcov-report/react/components/SideNav/AnimationGroup/index.html +116 -0
  227. package/coverage/lcov-report/react/components/SideNav/Chart/ScoreChart.jsx.html +889 -0
  228. package/coverage/lcov-report/react/components/SideNav/Chart/index.html +131 -0
  229. package/coverage/lcov-report/react/components/SideNav/Chart/index.js.html +94 -0
  230. package/coverage/lcov-report/react/components/SideNav/Content/LevelOneContent.jsx.html +682 -0
  231. package/coverage/lcov-report/react/components/SideNav/Content/LevelTwoContent.jsx.html +733 -0
  232. package/coverage/lcov-report/react/components/SideNav/Content/SelectRole/index.html +131 -0
  233. package/coverage/lcov-report/react/components/SideNav/Content/SelectRole/index.js.html +316 -0
  234. package/coverage/lcov-report/react/components/SideNav/Content/SelectRole/utils.js.html +505 -0
  235. package/coverage/lcov-report/react/components/SideNav/Content/index.html +146 -0
  236. package/coverage/lcov-report/react/components/SideNav/Content/index.js.html +97 -0
  237. package/coverage/lcov-report/react/components/SideNav/Details/IndividualDetails.jsx.html +139 -0
  238. package/coverage/lcov-report/react/components/SideNav/Details/PracticeDetails.jsx.html +220 -0
  239. package/coverage/lcov-report/react/components/SideNav/Details/index.html +146 -0
  240. package/coverage/lcov-report/react/components/SideNav/Details/index.js.html +97 -0
  241. package/coverage/lcov-report/react/components/SideNav/Links/CmsSwitchLink.jsx.html +208 -0
  242. package/coverage/lcov-report/react/components/SideNav/Links/NavItemInline.jsx.html +247 -0
  243. package/coverage/lcov-report/react/components/SideNav/Links/NavLinkContainer.jsx.html +199 -0
  244. package/coverage/lcov-report/react/components/SideNav/Links/NavLinkDrawer.jsx.html +913 -0
  245. package/coverage/lcov-report/react/components/SideNav/Links/NavLinkInline.jsx.html +421 -0
  246. package/coverage/lcov-report/react/components/SideNav/Links/NavLinkToggle.jsx.html +187 -0
  247. package/coverage/lcov-report/react/components/SideNav/Links/index.html +206 -0
  248. package/coverage/lcov-report/react/components/SideNav/Links/index.js.html +124 -0
  249. package/coverage/lcov-report/react/components/SideNav/UI/SideNavUI.jsx.html +1087 -0
  250. package/coverage/lcov-report/react/components/SideNav/UI/index.html +131 -0
  251. package/coverage/lcov-report/react/components/SideNav/UI/index.js.html +94 -0
  252. package/coverage/lcov-report/react/components/SideNav/helpers.js.html +1138 -0
  253. package/coverage/lcov-report/react/components/SideNav/index.html +131 -0
  254. package/coverage/lcov-report/react/components/SideNav/index.js.html +244 -0
  255. package/coverage/lcov-report/react/components/Tooltip/Tooltip.jsx.html +232 -0
  256. package/coverage/lcov-report/react/components/Tooltip/index.html +146 -0
  257. package/coverage/lcov-report/react/components/Tooltip/index.js.html +94 -0
  258. package/coverage/lcov-report/react/components/Tooltip/position.js.html +289 -0
  259. package/coverage/lcov-report/react/components/hooks/index.html +116 -0
  260. package/coverage/lcov-report/react/components/hooks/useGetConfig.js.html +310 -0
  261. package/coverage/lcov-report/react/components/index.html +116 -0
  262. package/coverage/lcov-report/react/index.html +116 -0
  263. package/coverage/lcov-report/react/index.js.html +178 -0
  264. package/coverage/lcov-report/react/lib/Chevron.jsx.html +181 -0
  265. package/coverage/lcov-report/react/lib/SvgComponents.jsx.html +2200 -0
  266. package/coverage/lcov-report/react/lib/index.html +131 -0
  267. package/coverage/lcov-report/react/lib/svg-definitions.svg.html +460 -0
  268. package/coverage/lcov-report/react/session/index.html +161 -0
  269. package/coverage/lcov-report/react/session/index.js.html +100 -0
  270. package/coverage/lcov-report/react/session/logout.js.html +307 -0
  271. package/coverage/lcov-report/react/session/refresh.js.html +232 -0
  272. package/coverage/lcov-report/react/session/ttl.js.html +196 -0
  273. package/coverage/lcov-report/session/index.html +161 -0
  274. package/coverage/lcov-report/session/index.js.html +100 -0
  275. package/coverage/lcov-report/session/logout.js.html +307 -0
  276. package/coverage/lcov-report/session/refresh.js.html +232 -0
  277. package/coverage/lcov-report/session/ttl.js.html +196 -0
  278. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  279. package/coverage/lcov-report/sorter.js +196 -0
  280. package/coverage/lcov.info +3189 -0
  281. package/dist/browser.js +3 -53
  282. package/dist/browser.js.LICENSE.txt +70 -0
  283. package/dist/browser.js.map +1 -0
  284. package/dist/index.js +3 -53
  285. package/dist/index.js.LICENSE.txt +70 -0
  286. package/dist/index.js.map +1 -0
  287. package/dist/react/index.js +3 -0
  288. package/dist/react/index.js.LICENSE.txt +96 -0
  289. package/dist/react/index.js.map +1 -0
  290. package/fonts/PublicSans-Black.ttf +0 -0
  291. package/fonts/PublicSans-BlackItalic.ttf +0 -0
  292. package/fonts/PublicSans-Bold.ttf +0 -0
  293. package/fonts/PublicSans-BoldItalic.ttf +0 -0
  294. package/fonts/PublicSans-ExtraBold.ttf +0 -0
  295. package/fonts/PublicSans-ExtraBoldItalic.ttf +0 -0
  296. package/fonts/PublicSans-ExtraLight.ttf +0 -0
  297. package/fonts/PublicSans-ExtraLightItalic.ttf +0 -0
  298. package/fonts/PublicSans-Italic.ttf +0 -0
  299. package/fonts/PublicSans-Light.ttf +0 -0
  300. package/fonts/PublicSans-LightItalic.ttf +0 -0
  301. package/fonts/PublicSans-Medium.ttf +0 -0
  302. package/fonts/PublicSans-MediumItalic.ttf +0 -0
  303. package/fonts/PublicSans-Regular.ttf +0 -0
  304. package/fonts/PublicSans-SemiBold.ttf +0 -0
  305. package/fonts/PublicSans-SemiBoldItalic.ttf +0 -0
  306. package/fonts/PublicSans-Thin.ttf +0 -0
  307. package/fonts/PublicSans-ThinItalic.ttf +0 -0
  308. package/images/favicon/manifest.json +3 -3
  309. package/images/hhs-logo-black.svg +10 -0
  310. package/images/icon-dot-gov.svg +1 -0
  311. package/images/icon-https.svg +1 -0
  312. package/images/icons/close-x.svg +6 -0
  313. package/images/icons/svg/arrow-down.svg +3 -0
  314. package/images/icons/svg/arrow-download.svg +1 -0
  315. package/images/icons/svg/arrow-right.svg +1 -0
  316. package/images/icons/svg/arrow-up.svg +3 -0
  317. package/images/icons/svg/calendar.svg +1 -0
  318. package/images/icons/svg/checkmark.svg +7 -0
  319. package/images/icons/svg/chevron-down.svg +11 -0
  320. package/images/icons/svg/chevron-left.svg +12 -0
  321. package/images/icons/svg/chevron-right.svg +12 -0
  322. package/images/icons/svg/chevron-up.svg +12 -0
  323. package/images/icons/svg/clipboard.svg +1 -0
  324. package/images/icons/svg/close.svg +1 -0
  325. package/images/icons/svg/divide.svg +13 -0
  326. package/images/icons/svg/doctors-and-clinicians-preview.svg +10 -0
  327. package/images/icons/svg/download.svg +1 -0
  328. package/images/icons/svg/dropdown-arrow.svg +1 -0
  329. package/images/icons/svg/equals.svg +13 -0
  330. package/images/icons/svg/exclamation.svg +11 -0
  331. package/images/icons/svg/external.svg +1 -0
  332. package/images/icons/svg/file-download.svg +1 -0
  333. package/images/icons/svg/file-upload.svg +1 -0
  334. package/images/icons/svg/info.svg +20 -0
  335. package/images/icons/svg/manage-user-access.svg +8 -0
  336. package/images/icons/svg/multiply.svg +12 -0
  337. package/images/icons/svg/performance-feedback.svg +1 -0
  338. package/images/icons/svg/plus.svg +12 -0
  339. package/images/icons/svg/preview.svg +17 -0
  340. package/images/icons/svg/print.svg +1 -0
  341. package/images/icons/svg/registration.svg +8 -0
  342. package/images/icons/svg/reporting.svg +17 -0
  343. package/images/icons/svg/save-disk.svg +5 -0
  344. package/images/icons/svg/search.svg +1 -0
  345. package/images/icons/svg/subtract.svg +15 -0
  346. package/images/icons/svg/targeted-review.svg +15 -0
  347. package/images/icons/svg/tooltip-question.svg +1 -0
  348. package/images/icons/svg/trash.svg +1 -0
  349. package/images/icons/svg/upload.svg +1 -0
  350. package/images/us_flag_small.png +0 -0
  351. package/index.js +31 -0
  352. package/jest/mediaFileTransformer.js +9 -0
  353. package/jest.config.js +195 -0
  354. package/lib/Chevron.jsx +32 -0
  355. package/lib/SvgComponents.jsx +585 -0
  356. package/lib/svg-definitions.svg +125 -0
  357. package/package.json +76 -54
  358. package/{js/session → session}/index.js +2 -4
  359. package/session/logout.js +74 -0
  360. package/{js/session → session}/refresh.js +9 -7
  361. package/session/ttl.js +37 -0
  362. package/storybook-static/229.630347465201d1822126.manager.bundle.js +1 -0
  363. package/storybook-static/295.aa3c5122636a27ad7c7b.manager.bundle.js +1 -0
  364. package/storybook-static/468.d976c69e47003b4dcfa3.manager.bundle.js +2 -0
  365. package/storybook-static/468.d976c69e47003b4dcfa3.manager.bundle.js.LICENSE.txt +94 -0
  366. package/storybook-static/51.fc4b02f2a75c894ae64e.manager.bundle.js +2 -0
  367. package/storybook-static/51.fc4b02f2a75c894ae64e.manager.bundle.js.LICENSE.txt +8 -0
  368. package/storybook-static/551.45aead073703cc6fb12b.manager.bundle.js +1 -0
  369. package/storybook-static/807.1a7f4dcf15e4696572ca.manager.bundle.js +2 -0
  370. package/storybook-static/807.1a7f4dcf15e4696572ca.manager.bundle.js.LICENSE.txt +31 -0
  371. package/storybook-static/897.9b5fee8cc7074607c812.manager.bundle.js +2 -0
  372. package/storybook-static/897.9b5fee8cc7074607c812.manager.bundle.js.LICENSE.txt +12 -0
  373. package/storybook-static/935.532759f0652585685af7.manager.bundle.js +1 -0
  374. package/storybook-static/favicon.ico +0 -0
  375. package/storybook-static/index.html +59 -0
  376. package/storybook-static/main.ad4edcd27d527a119d7a.manager.bundle.js +1 -0
  377. package/storybook-static/project.json +1 -0
  378. package/storybook-static/runtime~main.b165398bf7ef3e30d431.manager.bundle.js +1 -0
  379. package/styles/_global.scss +81 -59
  380. package/styles/_main.scss +11 -3
  381. package/styles/_paths.scss +1 -1
  382. package/styles/_qpp-style.scss +7 -4
  383. package/styles/components/_accordion.scss +266 -149
  384. package/styles/components/_alerts.scss +5 -7
  385. package/styles/components/_autocomplete.scss +47 -0
  386. package/styles/components/_breadcrumbs.scss +18 -17
  387. package/styles/components/_buttons.scss +545 -275
  388. package/styles/components/_error-page.scss +56 -0
  389. package/styles/components/_flash-notification.scss +98 -0
  390. package/styles/components/_fonts.scss +12 -13
  391. package/styles/components/_forms.scss +144 -70
  392. package/styles/components/_grid.scss +26 -20
  393. package/styles/components/_info-modal.scss +92 -19
  394. package/styles/components/_links.scss +4 -3
  395. package/styles/components/_modals.scss +10 -9
  396. package/styles/components/_notification-banner.scss +165 -0
  397. package/styles/components/_panels.scss +23 -21
  398. package/styles/components/_pie-chart.scss +3 -3
  399. package/styles/components/_score-chart.scss +135 -105
  400. package/styles/components/_spinner.scss +7 -0
  401. package/styles/components/_tables.scss +96 -72
  402. package/styles/components/_tabs.scss +69 -0
  403. package/styles/components/_text.scss +114 -48
  404. package/styles/components/_tooltip.scss +23 -0
  405. package/styles/components/_variables.scss +87 -58
  406. package/styles/components/_wells.scss +39 -29
  407. package/styles/qppds/README.md +0 -0
  408. package/styles/qppds/base/_backgrounds.scss +7 -0
  409. package/styles/qppds/base/_fonts.scss +50 -0
  410. package/styles/qppds/base/_icon.scss +31 -0
  411. package/styles/qppds/base/_layout.scss +5 -0
  412. package/styles/qppds/base/_typography.scss +97 -0
  413. package/styles/qppds/base/index.scss +8 -0
  414. package/styles/qppds/components/_alert.scss +101 -0
  415. package/styles/qppds/components/_breadcrumbs.scss +91 -0
  416. package/styles/qppds/components/_button.scss +306 -0
  417. package/styles/qppds/components/_card.scss +175 -0
  418. package/styles/qppds/components/_checkbox.scss +199 -0
  419. package/styles/qppds/components/_circular-loader.scss +47 -0
  420. package/styles/qppds/components/_details.scss +90 -0
  421. package/styles/qppds/components/_dropdown-menu.scss +125 -0
  422. package/styles/qppds/components/_dropdown.scss +56 -0
  423. package/styles/qppds/components/_footer.scss +606 -0
  424. package/styles/qppds/components/_gov-banner.scss +344 -0
  425. package/styles/qppds/components/_header.scss +913 -0
  426. package/styles/qppds/components/_link.scss +52 -0
  427. package/styles/qppds/components/_modal.scss +118 -0
  428. package/styles/qppds/components/_page-header.scss +104 -0
  429. package/styles/qppds/components/_pagination.scss +227 -0
  430. package/styles/qppds/components/_process-list.scss +104 -0
  431. package/styles/qppds/components/_radio-button.scss +184 -0
  432. package/styles/qppds/components/_search.scss +118 -0
  433. package/styles/qppds/components/_sidebar.scss +10 -0
  434. package/styles/qppds/components/_step-indicator.scss +190 -0
  435. package/styles/qppds/components/_table.scss +157 -0
  436. package/styles/qppds/components/_tabs.scss +197 -0
  437. package/styles/qppds/components/_text-input.scss +60 -0
  438. package/styles/qppds/components/index.scss +24 -0
  439. package/styles/qppds/components/sidebar/_animations.scss +38 -0
  440. package/styles/{components → qppds/components}/sidebar/_cms.scss +19 -10
  441. package/styles/{components → qppds/components}/sidebar/_details.scss +25 -21
  442. package/styles/qppds/components/sidebar/_links.scss +462 -0
  443. package/styles/qppds/components/sidebar/_select-role-dropdown.scss +21 -0
  444. package/styles/qppds/components/sidebar/_sidebar-animation.scss +125 -0
  445. package/styles/qppds/components/sidebar/_sidebar-tooltip.scss +33 -0
  446. package/styles/qppds/components/sidebar/_sidebar.scss +146 -0
  447. package/styles/qppds/components/sidebar/project-specific/_wi.scss +42 -0
  448. package/styles/qppds/index.scss +4 -0
  449. package/styles/qppds/settings/_functions.scss +6 -0
  450. package/styles/qppds/settings/_index.scss +3 -0
  451. package/styles/qppds/settings/mixins/_borders.scss +6 -0
  452. package/styles/qppds/settings/mixins/_focus.scss +28 -0
  453. package/styles/qppds/settings/mixins/_icons.scss +43 -0
  454. package/styles/qppds/settings/mixins/_index.scss +8 -0
  455. package/styles/qppds/settings/mixins/_layout.scss +74 -0
  456. package/styles/qppds/settings/mixins/_lists.scss +12 -0
  457. package/styles/qppds/settings/mixins/_table.scss +91 -0
  458. package/styles/qppds/settings/mixins/_type.scss +89 -0
  459. package/styles/qppds/settings/mixins/_visually-hidden.scss +30 -0
  460. package/styles/qppds/settings/variables/_color.scss +86 -0
  461. package/styles/qppds/settings/variables/_index.scss +4 -0
  462. package/styles/qppds/settings/variables/_layout.scss +69 -0
  463. package/styles/qppds/settings/variables/_type.scss +135 -0
  464. package/styles/qppds/settings/variables/_z-index.scss +8 -0
  465. package/styles/qppds/utilities/_background-color.scss +134 -0
  466. package/styles/qppds/utilities/_color.scss +40 -0
  467. package/styles/qppds/utilities/_display-visibility.scss +83 -0
  468. package/styles/qppds/utilities/_flexbox.scss +240 -0
  469. package/styles/qppds/utilities/_font-family.scss +9 -0
  470. package/styles/qppds/utilities/_font-size.scss +8 -0
  471. package/styles/qppds/utilities/_font-weight.scss +8 -0
  472. package/styles/qppds/utilities/_gap.scss +38 -0
  473. package/styles/qppds/utilities/_height.scss +79 -0
  474. package/styles/qppds/utilities/_list-style.scss +18 -0
  475. package/styles/qppds/utilities/_margin.scss +136 -0
  476. package/styles/qppds/utilities/_padding.scss +76 -0
  477. package/styles/qppds/utilities/_position.scss +24 -0
  478. package/styles/qppds/utilities/_text-align.scss +40 -0
  479. package/styles/qppds/utilities/_text-transform.scss +7 -0
  480. package/styles/qppds/utilities/_truncate.scss +8 -0
  481. package/styles/qppds/utilities/_vertical-align.scss +72 -0
  482. package/styles/qppds/utilities/_width.scss +81 -0
  483. package/styles/qppds/utilities/index.scss +17 -0
  484. package/styles/qppds.scss +2 -0
  485. package/styles/third-party/_legacy-bootstrap.scss +19 -0
  486. package/styles/third-party/legacy-bootstrap/_buttons.scss +126 -0
  487. package/styles/third-party/legacy-bootstrap/_dropdowns.scss +211 -0
  488. package/styles/third-party/legacy-bootstrap/_forms.scss +510 -0
  489. package/styles/third-party/legacy-bootstrap/_grid.scss +73 -0
  490. package/styles/third-party/legacy-bootstrap/_mixins.scss +27 -0
  491. package/styles/third-party/legacy-bootstrap/_navbar.scss +644 -0
  492. package/styles/third-party/legacy-bootstrap/_navs.scss +193 -0
  493. package/styles/third-party/legacy-bootstrap/_normalize.scss +385 -0
  494. package/styles/third-party/legacy-bootstrap/_scaffolding.scss +116 -0
  495. package/styles/third-party/legacy-bootstrap/_variables.scss +858 -0
  496. package/styles/third-party/legacy-bootstrap/mixins/_buttons.scss +70 -0
  497. package/styles/third-party/legacy-bootstrap/mixins/_clearfix.scss +22 -0
  498. package/styles/third-party/legacy-bootstrap/mixins/_forms.scss +108 -0
  499. package/styles/third-party/legacy-bootstrap/mixins/_grid-framework.scss +86 -0
  500. package/styles/third-party/legacy-bootstrap/mixins/_grid.scss +112 -0
  501. package/styles/third-party/legacy-bootstrap/mixins/_labels.scss +12 -0
  502. package/styles/third-party/legacy-bootstrap/mixins/_nav-divider.scss +10 -0
  503. package/styles/third-party/legacy-bootstrap/mixins/_nav-vertical-align.scss +9 -0
  504. package/styles/third-party/legacy-bootstrap/mixins/_opacity.scss +7 -0
  505. package/styles/third-party/legacy-bootstrap/mixins/_panels.scss +30 -0
  506. package/styles/third-party/legacy-bootstrap/mixins/_reset-filter.scss +7 -0
  507. package/styles/third-party/legacy-bootstrap/mixins/_reset-text.scss +18 -0
  508. package/styles/third-party/legacy-bootstrap/mixins/_resize.scss +6 -0
  509. package/styles/third-party/legacy-bootstrap/mixins/_responsive-visibility.scss +25 -0
  510. package/styles/third-party/legacy-bootstrap/mixins/_size.scss +10 -0
  511. package/styles/third-party/legacy-bootstrap/mixins/_tab-focus.scss +9 -0
  512. package/styles/third-party/legacy-bootstrap/mixins/_table-row.scss +28 -0
  513. package/styles/third-party/legacy-bootstrap/mixins/_text-emphasis.scss +12 -0
  514. package/styles/third-party/legacy-bootstrap/mixins/_text-overflow.scss +8 -0
  515. package/styles/third-party/legacy-bootstrap/mixins/_vendor-prefixes.scss +182 -0
  516. package/styles/utility/_mixins.scss +12 -11
  517. package/styles/utility/_utilities.scss +12 -1
  518. package/svgo.config.js +14 -0
  519. package/test/components/Accordion.test.js +12 -0
  520. package/test/components/ErrorUI.test.js +33 -0
  521. package/test/components/FooterUI.test.js +60 -0
  522. package/test/components/HeaderUI.test.js +45 -0
  523. package/test/components/Infotip.test.js +73 -0
  524. package/test/components/SessionDialogUI.test.js +339 -0
  525. package/test/components/SideNavUI.test.js +23 -0
  526. package/test/components/Tooltip.test.js +147 -0
  527. package/test/index.test.js +8 -0
  528. package/test/session/session.test.js +221 -0
  529. package/test-setup.js +1 -0
  530. package/webpack.config.js +137 -0
  531. package/webpack.config.react.js +75 -0
  532. package/Dockerfile +0 -27
  533. package/Jenkinsfile +0 -22
  534. package/_config.dev.yml +0 -17
  535. package/_layouts/base.html +0 -42
  536. package/css/main.scss +0 -5
  537. package/dist/default.css +0 -2
  538. package/dist/default.css.map +0 -1
  539. package/dist/fonts/FontAwesome.otf +0 -0
  540. package/dist/fonts/Rubik-Bold.ttf +0 -0
  541. package/dist/fonts/Rubik-Light.ttf +0 -0
  542. package/dist/fonts/Rubik-Medium.ttf +0 -0
  543. package/dist/fonts/Rubik-Regular.ttf +0 -0
  544. package/dist/fonts/fontawesome-webfont.eot +0 -0
  545. package/dist/fonts/fontawesome-webfont.ttf +0 -0
  546. package/dist/fonts/fontawesome-webfont.woff +0 -0
  547. package/dist/fonts/fontawesome-webfont.woff2 +0 -0
  548. package/dist/report.html +0 -25
  549. package/js/components/Footer/FooterUI.jsx +0 -39
  550. package/js/components/Footer/footer.js +0 -17
  551. package/js/components/Header/HeaderAbout.jsx +0 -27
  552. package/js/components/Header/HeaderAccountMenu.jsx +0 -114
  553. package/js/components/Header/HeaderApms.jsx +0 -25
  554. package/js/components/Header/HeaderMips.jsx +0 -43
  555. package/js/components/Header/HeaderUI.jsx +0 -87
  556. package/js/components/Header/header.js +0 -15
  557. package/js/components/InfoModal/index.jsx +0 -43
  558. package/js/components/SessionDialogUI.jsx +0 -181
  559. package/js/components/SideNav/Chart/ScoreChart.jsx +0 -246
  560. package/js/components/SideNav/Chart/__tests__/ScoreChart.test.js +0 -28
  561. package/js/components/SideNav/Chart/__tests__/__snapshots__/ScoreChart.test.js.snap +0 -57
  562. package/js/components/SideNav/Chart/index.js +0 -1
  563. package/js/components/SideNav/Content/CmsContent.jsx +0 -81
  564. package/js/components/SideNav/Content/LevelOneContent.jsx +0 -53
  565. package/js/components/SideNav/Content/LevelThreeContent.jsx +0 -98
  566. package/js/components/SideNav/Content/LevelTwoContent.jsx +0 -87
  567. package/js/components/SideNav/Content/index.js +0 -4
  568. package/js/components/SideNav/Details/IndividualDetails.jsx +0 -35
  569. package/js/components/SideNav/Details/PracticeDetails.jsx +0 -33
  570. package/js/components/SideNav/Details/index.js +0 -2
  571. package/js/components/SideNav/Links/CmsReportLink.jsx +0 -114
  572. package/js/components/SideNav/Links/NavLinkBack.jsx +0 -8
  573. package/js/components/SideNav/Links/NavLinkContainer.jsx +0 -33
  574. package/js/components/SideNav/Links/NavLinkDrawer.jsx +0 -72
  575. package/js/components/SideNav/Links/NavLinkInline.jsx +0 -20
  576. package/js/components/SideNav/Links/NavLinkSlideOut.jsx +0 -47
  577. package/js/components/SideNav/Links/NavLinkToggle.jsx +0 -25
  578. package/js/components/SideNav/Links/index.js +0 -7
  579. package/js/components/SideNav/UI/SideNavUI.jsx +0 -109
  580. package/js/components/SideNav/UI/index.js +0 -1
  581. package/js/components/SideNav/index.js +0 -24
  582. package/js/components/index.js +0 -9
  583. package/js/index.js +0 -24
  584. package/js/session/logout.js +0 -41
  585. package/sidebar-demo.html +0 -48
  586. package/styles/components/_footer.scss +0 -164
  587. package/styles/components/_header.scss +0 -393
  588. package/styles/components/_sidebar.scss +0 -6
  589. package/styles/components/_tool-tips.scss +0 -6
  590. package/styles/components/sidebar/_animations.scss +0 -16
  591. package/styles/components/sidebar/_links.scss +0 -269
  592. package/styles/components/sidebar/_sidebar.scss +0 -107
  593. package/styles/guide/_layout.scss +0 -120
  594. package/styles/guide/sidebar-demo.css +0 -121
  595. package/yarn.lock +0 -5694
@@ -0,0 +1,1138 @@
1
+
2
+ <!doctype html>
3
+ <html lang="en">
4
+
5
+ <head>
6
+ <title>Code coverage report for react/components/SideNav/helpers.js</title>
7
+ <meta charset="utf-8" />
8
+ <link rel="stylesheet" href="../../../prettify.css" />
9
+ <link rel="stylesheet" href="../../../base.css" />
10
+ <link rel="shortcut icon" type="image/x-icon" href="../../../favicon.png" />
11
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
12
+ <style type='text/css'>
13
+ .coverage-summary .sorter {
14
+ background-image: url(../../../sort-arrow-sprite.png);
15
+ }
16
+ </style>
17
+ </head>
18
+
19
+ <body>
20
+ <div class='wrapper'>
21
+ <div class='pad1'>
22
+ <h1><a href="../../../index.html">All files</a> / <a href="index.html">react/components/SideNav</a> helpers.js</h1>
23
+ <div class='clearfix'>
24
+
25
+ <div class='fl pad1y space-right2'>
26
+ <span class="strong">67.07% </span>
27
+ <span class="quiet">Statements</span>
28
+ <span class='fraction'>55/82</span>
29
+ </div>
30
+
31
+
32
+ <div class='fl pad1y space-right2'>
33
+ <span class="strong">32.25% </span>
34
+ <span class="quiet">Branches</span>
35
+ <span class='fraction'>10/31</span>
36
+ </div>
37
+
38
+
39
+ <div class='fl pad1y space-right2'>
40
+ <span class="strong">47.05% </span>
41
+ <span class="quiet">Functions</span>
42
+ <span class='fraction'>8/17</span>
43
+ </div>
44
+
45
+
46
+ <div class='fl pad1y space-right2'>
47
+ <span class="strong">68.75% </span>
48
+ <span class="quiet">Lines</span>
49
+ <span class='fraction'>55/80</span>
50
+ </div>
51
+
52
+
53
+ </div>
54
+ <p class="quiet">
55
+ Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
56
+ </p>
57
+ <template id="filterTemplate">
58
+ <div class="quiet">
59
+ Filter:
60
+ <input oninput="onInput()" type="search" id="fileSearch">
61
+ </div>
62
+ </template>
63
+ </div>
64
+ <div class='status-line medium'></div>
65
+ <pre><table class="coverage">
66
+ <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
67
+ <a name='L2'></a><a href='#L2'>2</a>
68
+ <a name='L3'></a><a href='#L3'>3</a>
69
+ <a name='L4'></a><a href='#L4'>4</a>
70
+ <a name='L5'></a><a href='#L5'>5</a>
71
+ <a name='L6'></a><a href='#L6'>6</a>
72
+ <a name='L7'></a><a href='#L7'>7</a>
73
+ <a name='L8'></a><a href='#L8'>8</a>
74
+ <a name='L9'></a><a href='#L9'>9</a>
75
+ <a name='L10'></a><a href='#L10'>10</a>
76
+ <a name='L11'></a><a href='#L11'>11</a>
77
+ <a name='L12'></a><a href='#L12'>12</a>
78
+ <a name='L13'></a><a href='#L13'>13</a>
79
+ <a name='L14'></a><a href='#L14'>14</a>
80
+ <a name='L15'></a><a href='#L15'>15</a>
81
+ <a name='L16'></a><a href='#L16'>16</a>
82
+ <a name='L17'></a><a href='#L17'>17</a>
83
+ <a name='L18'></a><a href='#L18'>18</a>
84
+ <a name='L19'></a><a href='#L19'>19</a>
85
+ <a name='L20'></a><a href='#L20'>20</a>
86
+ <a name='L21'></a><a href='#L21'>21</a>
87
+ <a name='L22'></a><a href='#L22'>22</a>
88
+ <a name='L23'></a><a href='#L23'>23</a>
89
+ <a name='L24'></a><a href='#L24'>24</a>
90
+ <a name='L25'></a><a href='#L25'>25</a>
91
+ <a name='L26'></a><a href='#L26'>26</a>
92
+ <a name='L27'></a><a href='#L27'>27</a>
93
+ <a name='L28'></a><a href='#L28'>28</a>
94
+ <a name='L29'></a><a href='#L29'>29</a>
95
+ <a name='L30'></a><a href='#L30'>30</a>
96
+ <a name='L31'></a><a href='#L31'>31</a>
97
+ <a name='L32'></a><a href='#L32'>32</a>
98
+ <a name='L33'></a><a href='#L33'>33</a>
99
+ <a name='L34'></a><a href='#L34'>34</a>
100
+ <a name='L35'></a><a href='#L35'>35</a>
101
+ <a name='L36'></a><a href='#L36'>36</a>
102
+ <a name='L37'></a><a href='#L37'>37</a>
103
+ <a name='L38'></a><a href='#L38'>38</a>
104
+ <a name='L39'></a><a href='#L39'>39</a>
105
+ <a name='L40'></a><a href='#L40'>40</a>
106
+ <a name='L41'></a><a href='#L41'>41</a>
107
+ <a name='L42'></a><a href='#L42'>42</a>
108
+ <a name='L43'></a><a href='#L43'>43</a>
109
+ <a name='L44'></a><a href='#L44'>44</a>
110
+ <a name='L45'></a><a href='#L45'>45</a>
111
+ <a name='L46'></a><a href='#L46'>46</a>
112
+ <a name='L47'></a><a href='#L47'>47</a>
113
+ <a name='L48'></a><a href='#L48'>48</a>
114
+ <a name='L49'></a><a href='#L49'>49</a>
115
+ <a name='L50'></a><a href='#L50'>50</a>
116
+ <a name='L51'></a><a href='#L51'>51</a>
117
+ <a name='L52'></a><a href='#L52'>52</a>
118
+ <a name='L53'></a><a href='#L53'>53</a>
119
+ <a name='L54'></a><a href='#L54'>54</a>
120
+ <a name='L55'></a><a href='#L55'>55</a>
121
+ <a name='L56'></a><a href='#L56'>56</a>
122
+ <a name='L57'></a><a href='#L57'>57</a>
123
+ <a name='L58'></a><a href='#L58'>58</a>
124
+ <a name='L59'></a><a href='#L59'>59</a>
125
+ <a name='L60'></a><a href='#L60'>60</a>
126
+ <a name='L61'></a><a href='#L61'>61</a>
127
+ <a name='L62'></a><a href='#L62'>62</a>
128
+ <a name='L63'></a><a href='#L63'>63</a>
129
+ <a name='L64'></a><a href='#L64'>64</a>
130
+ <a name='L65'></a><a href='#L65'>65</a>
131
+ <a name='L66'></a><a href='#L66'>66</a>
132
+ <a name='L67'></a><a href='#L67'>67</a>
133
+ <a name='L68'></a><a href='#L68'>68</a>
134
+ <a name='L69'></a><a href='#L69'>69</a>
135
+ <a name='L70'></a><a href='#L70'>70</a>
136
+ <a name='L71'></a><a href='#L71'>71</a>
137
+ <a name='L72'></a><a href='#L72'>72</a>
138
+ <a name='L73'></a><a href='#L73'>73</a>
139
+ <a name='L74'></a><a href='#L74'>74</a>
140
+ <a name='L75'></a><a href='#L75'>75</a>
141
+ <a name='L76'></a><a href='#L76'>76</a>
142
+ <a name='L77'></a><a href='#L77'>77</a>
143
+ <a name='L78'></a><a href='#L78'>78</a>
144
+ <a name='L79'></a><a href='#L79'>79</a>
145
+ <a name='L80'></a><a href='#L80'>80</a>
146
+ <a name='L81'></a><a href='#L81'>81</a>
147
+ <a name='L82'></a><a href='#L82'>82</a>
148
+ <a name='L83'></a><a href='#L83'>83</a>
149
+ <a name='L84'></a><a href='#L84'>84</a>
150
+ <a name='L85'></a><a href='#L85'>85</a>
151
+ <a name='L86'></a><a href='#L86'>86</a>
152
+ <a name='L87'></a><a href='#L87'>87</a>
153
+ <a name='L88'></a><a href='#L88'>88</a>
154
+ <a name='L89'></a><a href='#L89'>89</a>
155
+ <a name='L90'></a><a href='#L90'>90</a>
156
+ <a name='L91'></a><a href='#L91'>91</a>
157
+ <a name='L92'></a><a href='#L92'>92</a>
158
+ <a name='L93'></a><a href='#L93'>93</a>
159
+ <a name='L94'></a><a href='#L94'>94</a>
160
+ <a name='L95'></a><a href='#L95'>95</a>
161
+ <a name='L96'></a><a href='#L96'>96</a>
162
+ <a name='L97'></a><a href='#L97'>97</a>
163
+ <a name='L98'></a><a href='#L98'>98</a>
164
+ <a name='L99'></a><a href='#L99'>99</a>
165
+ <a name='L100'></a><a href='#L100'>100</a>
166
+ <a name='L101'></a><a href='#L101'>101</a>
167
+ <a name='L102'></a><a href='#L102'>102</a>
168
+ <a name='L103'></a><a href='#L103'>103</a>
169
+ <a name='L104'></a><a href='#L104'>104</a>
170
+ <a name='L105'></a><a href='#L105'>105</a>
171
+ <a name='L106'></a><a href='#L106'>106</a>
172
+ <a name='L107'></a><a href='#L107'>107</a>
173
+ <a name='L108'></a><a href='#L108'>108</a>
174
+ <a name='L109'></a><a href='#L109'>109</a>
175
+ <a name='L110'></a><a href='#L110'>110</a>
176
+ <a name='L111'></a><a href='#L111'>111</a>
177
+ <a name='L112'></a><a href='#L112'>112</a>
178
+ <a name='L113'></a><a href='#L113'>113</a>
179
+ <a name='L114'></a><a href='#L114'>114</a>
180
+ <a name='L115'></a><a href='#L115'>115</a>
181
+ <a name='L116'></a><a href='#L116'>116</a>
182
+ <a name='L117'></a><a href='#L117'>117</a>
183
+ <a name='L118'></a><a href='#L118'>118</a>
184
+ <a name='L119'></a><a href='#L119'>119</a>
185
+ <a name='L120'></a><a href='#L120'>120</a>
186
+ <a name='L121'></a><a href='#L121'>121</a>
187
+ <a name='L122'></a><a href='#L122'>122</a>
188
+ <a name='L123'></a><a href='#L123'>123</a>
189
+ <a name='L124'></a><a href='#L124'>124</a>
190
+ <a name='L125'></a><a href='#L125'>125</a>
191
+ <a name='L126'></a><a href='#L126'>126</a>
192
+ <a name='L127'></a><a href='#L127'>127</a>
193
+ <a name='L128'></a><a href='#L128'>128</a>
194
+ <a name='L129'></a><a href='#L129'>129</a>
195
+ <a name='L130'></a><a href='#L130'>130</a>
196
+ <a name='L131'></a><a href='#L131'>131</a>
197
+ <a name='L132'></a><a href='#L132'>132</a>
198
+ <a name='L133'></a><a href='#L133'>133</a>
199
+ <a name='L134'></a><a href='#L134'>134</a>
200
+ <a name='L135'></a><a href='#L135'>135</a>
201
+ <a name='L136'></a><a href='#L136'>136</a>
202
+ <a name='L137'></a><a href='#L137'>137</a>
203
+ <a name='L138'></a><a href='#L138'>138</a>
204
+ <a name='L139'></a><a href='#L139'>139</a>
205
+ <a name='L140'></a><a href='#L140'>140</a>
206
+ <a name='L141'></a><a href='#L141'>141</a>
207
+ <a name='L142'></a><a href='#L142'>142</a>
208
+ <a name='L143'></a><a href='#L143'>143</a>
209
+ <a name='L144'></a><a href='#L144'>144</a>
210
+ <a name='L145'></a><a href='#L145'>145</a>
211
+ <a name='L146'></a><a href='#L146'>146</a>
212
+ <a name='L147'></a><a href='#L147'>147</a>
213
+ <a name='L148'></a><a href='#L148'>148</a>
214
+ <a name='L149'></a><a href='#L149'>149</a>
215
+ <a name='L150'></a><a href='#L150'>150</a>
216
+ <a name='L151'></a><a href='#L151'>151</a>
217
+ <a name='L152'></a><a href='#L152'>152</a>
218
+ <a name='L153'></a><a href='#L153'>153</a>
219
+ <a name='L154'></a><a href='#L154'>154</a>
220
+ <a name='L155'></a><a href='#L155'>155</a>
221
+ <a name='L156'></a><a href='#L156'>156</a>
222
+ <a name='L157'></a><a href='#L157'>157</a>
223
+ <a name='L158'></a><a href='#L158'>158</a>
224
+ <a name='L159'></a><a href='#L159'>159</a>
225
+ <a name='L160'></a><a href='#L160'>160</a>
226
+ <a name='L161'></a><a href='#L161'>161</a>
227
+ <a name='L162'></a><a href='#L162'>162</a>
228
+ <a name='L163'></a><a href='#L163'>163</a>
229
+ <a name='L164'></a><a href='#L164'>164</a>
230
+ <a name='L165'></a><a href='#L165'>165</a>
231
+ <a name='L166'></a><a href='#L166'>166</a>
232
+ <a name='L167'></a><a href='#L167'>167</a>
233
+ <a name='L168'></a><a href='#L168'>168</a>
234
+ <a name='L169'></a><a href='#L169'>169</a>
235
+ <a name='L170'></a><a href='#L170'>170</a>
236
+ <a name='L171'></a><a href='#L171'>171</a>
237
+ <a name='L172'></a><a href='#L172'>172</a>
238
+ <a name='L173'></a><a href='#L173'>173</a>
239
+ <a name='L174'></a><a href='#L174'>174</a>
240
+ <a name='L175'></a><a href='#L175'>175</a>
241
+ <a name='L176'></a><a href='#L176'>176</a>
242
+ <a name='L177'></a><a href='#L177'>177</a>
243
+ <a name='L178'></a><a href='#L178'>178</a>
244
+ <a name='L179'></a><a href='#L179'>179</a>
245
+ <a name='L180'></a><a href='#L180'>180</a>
246
+ <a name='L181'></a><a href='#L181'>181</a>
247
+ <a name='L182'></a><a href='#L182'>182</a>
248
+ <a name='L183'></a><a href='#L183'>183</a>
249
+ <a name='L184'></a><a href='#L184'>184</a>
250
+ <a name='L185'></a><a href='#L185'>185</a>
251
+ <a name='L186'></a><a href='#L186'>186</a>
252
+ <a name='L187'></a><a href='#L187'>187</a>
253
+ <a name='L188'></a><a href='#L188'>188</a>
254
+ <a name='L189'></a><a href='#L189'>189</a>
255
+ <a name='L190'></a><a href='#L190'>190</a>
256
+ <a name='L191'></a><a href='#L191'>191</a>
257
+ <a name='L192'></a><a href='#L192'>192</a>
258
+ <a name='L193'></a><a href='#L193'>193</a>
259
+ <a name='L194'></a><a href='#L194'>194</a>
260
+ <a name='L195'></a><a href='#L195'>195</a>
261
+ <a name='L196'></a><a href='#L196'>196</a>
262
+ <a name='L197'></a><a href='#L197'>197</a>
263
+ <a name='L198'></a><a href='#L198'>198</a>
264
+ <a name='L199'></a><a href='#L199'>199</a>
265
+ <a name='L200'></a><a href='#L200'>200</a>
266
+ <a name='L201'></a><a href='#L201'>201</a>
267
+ <a name='L202'></a><a href='#L202'>202</a>
268
+ <a name='L203'></a><a href='#L203'>203</a>
269
+ <a name='L204'></a><a href='#L204'>204</a>
270
+ <a name='L205'></a><a href='#L205'>205</a>
271
+ <a name='L206'></a><a href='#L206'>206</a>
272
+ <a name='L207'></a><a href='#L207'>207</a>
273
+ <a name='L208'></a><a href='#L208'>208</a>
274
+ <a name='L209'></a><a href='#L209'>209</a>
275
+ <a name='L210'></a><a href='#L210'>210</a>
276
+ <a name='L211'></a><a href='#L211'>211</a>
277
+ <a name='L212'></a><a href='#L212'>212</a>
278
+ <a name='L213'></a><a href='#L213'>213</a>
279
+ <a name='L214'></a><a href='#L214'>214</a>
280
+ <a name='L215'></a><a href='#L215'>215</a>
281
+ <a name='L216'></a><a href='#L216'>216</a>
282
+ <a name='L217'></a><a href='#L217'>217</a>
283
+ <a name='L218'></a><a href='#L218'>218</a>
284
+ <a name='L219'></a><a href='#L219'>219</a>
285
+ <a name='L220'></a><a href='#L220'>220</a>
286
+ <a name='L221'></a><a href='#L221'>221</a>
287
+ <a name='L222'></a><a href='#L222'>222</a>
288
+ <a name='L223'></a><a href='#L223'>223</a>
289
+ <a name='L224'></a><a href='#L224'>224</a>
290
+ <a name='L225'></a><a href='#L225'>225</a>
291
+ <a name='L226'></a><a href='#L226'>226</a>
292
+ <a name='L227'></a><a href='#L227'>227</a>
293
+ <a name='L228'></a><a href='#L228'>228</a>
294
+ <a name='L229'></a><a href='#L229'>229</a>
295
+ <a name='L230'></a><a href='#L230'>230</a>
296
+ <a name='L231'></a><a href='#L231'>231</a>
297
+ <a name='L232'></a><a href='#L232'>232</a>
298
+ <a name='L233'></a><a href='#L233'>233</a>
299
+ <a name='L234'></a><a href='#L234'>234</a>
300
+ <a name='L235'></a><a href='#L235'>235</a>
301
+ <a name='L236'></a><a href='#L236'>236</a>
302
+ <a name='L237'></a><a href='#L237'>237</a>
303
+ <a name='L238'></a><a href='#L238'>238</a>
304
+ <a name='L239'></a><a href='#L239'>239</a>
305
+ <a name='L240'></a><a href='#L240'>240</a>
306
+ <a name='L241'></a><a href='#L241'>241</a>
307
+ <a name='L242'></a><a href='#L242'>242</a>
308
+ <a name='L243'></a><a href='#L243'>243</a>
309
+ <a name='L244'></a><a href='#L244'>244</a>
310
+ <a name='L245'></a><a href='#L245'>245</a>
311
+ <a name='L246'></a><a href='#L246'>246</a>
312
+ <a name='L247'></a><a href='#L247'>247</a>
313
+ <a name='L248'></a><a href='#L248'>248</a>
314
+ <a name='L249'></a><a href='#L249'>249</a>
315
+ <a name='L250'></a><a href='#L250'>250</a>
316
+ <a name='L251'></a><a href='#L251'>251</a>
317
+ <a name='L252'></a><a href='#L252'>252</a>
318
+ <a name='L253'></a><a href='#L253'>253</a>
319
+ <a name='L254'></a><a href='#L254'>254</a>
320
+ <a name='L255'></a><a href='#L255'>255</a>
321
+ <a name='L256'></a><a href='#L256'>256</a>
322
+ <a name='L257'></a><a href='#L257'>257</a>
323
+ <a name='L258'></a><a href='#L258'>258</a>
324
+ <a name='L259'></a><a href='#L259'>259</a>
325
+ <a name='L260'></a><a href='#L260'>260</a>
326
+ <a name='L261'></a><a href='#L261'>261</a>
327
+ <a name='L262'></a><a href='#L262'>262</a>
328
+ <a name='L263'></a><a href='#L263'>263</a>
329
+ <a name='L264'></a><a href='#L264'>264</a>
330
+ <a name='L265'></a><a href='#L265'>265</a>
331
+ <a name='L266'></a><a href='#L266'>266</a>
332
+ <a name='L267'></a><a href='#L267'>267</a>
333
+ <a name='L268'></a><a href='#L268'>268</a>
334
+ <a name='L269'></a><a href='#L269'>269</a>
335
+ <a name='L270'></a><a href='#L270'>270</a>
336
+ <a name='L271'></a><a href='#L271'>271</a>
337
+ <a name='L272'></a><a href='#L272'>272</a>
338
+ <a name='L273'></a><a href='#L273'>273</a>
339
+ <a name='L274'></a><a href='#L274'>274</a>
340
+ <a name='L275'></a><a href='#L275'>275</a>
341
+ <a name='L276'></a><a href='#L276'>276</a>
342
+ <a name='L277'></a><a href='#L277'>277</a>
343
+ <a name='L278'></a><a href='#L278'>278</a>
344
+ <a name='L279'></a><a href='#L279'>279</a>
345
+ <a name='L280'></a><a href='#L280'>280</a>
346
+ <a name='L281'></a><a href='#L281'>281</a>
347
+ <a name='L282'></a><a href='#L282'>282</a>
348
+ <a name='L283'></a><a href='#L283'>283</a>
349
+ <a name='L284'></a><a href='#L284'>284</a>
350
+ <a name='L285'></a><a href='#L285'>285</a>
351
+ <a name='L286'></a><a href='#L286'>286</a>
352
+ <a name='L287'></a><a href='#L287'>287</a>
353
+ <a name='L288'></a><a href='#L288'>288</a>
354
+ <a name='L289'></a><a href='#L289'>289</a>
355
+ <a name='L290'></a><a href='#L290'>290</a>
356
+ <a name='L291'></a><a href='#L291'>291</a>
357
+ <a name='L292'></a><a href='#L292'>292</a>
358
+ <a name='L293'></a><a href='#L293'>293</a>
359
+ <a name='L294'></a><a href='#L294'>294</a>
360
+ <a name='L295'></a><a href='#L295'>295</a>
361
+ <a name='L296'></a><a href='#L296'>296</a>
362
+ <a name='L297'></a><a href='#L297'>297</a>
363
+ <a name='L298'></a><a href='#L298'>298</a>
364
+ <a name='L299'></a><a href='#L299'>299</a>
365
+ <a name='L300'></a><a href='#L300'>300</a>
366
+ <a name='L301'></a><a href='#L301'>301</a>
367
+ <a name='L302'></a><a href='#L302'>302</a>
368
+ <a name='L303'></a><a href='#L303'>303</a>
369
+ <a name='L304'></a><a href='#L304'>304</a>
370
+ <a name='L305'></a><a href='#L305'>305</a>
371
+ <a name='L306'></a><a href='#L306'>306</a>
372
+ <a name='L307'></a><a href='#L307'>307</a>
373
+ <a name='L308'></a><a href='#L308'>308</a>
374
+ <a name='L309'></a><a href='#L309'>309</a>
375
+ <a name='L310'></a><a href='#L310'>310</a>
376
+ <a name='L311'></a><a href='#L311'>311</a>
377
+ <a name='L312'></a><a href='#L312'>312</a>
378
+ <a name='L313'></a><a href='#L313'>313</a>
379
+ <a name='L314'></a><a href='#L314'>314</a>
380
+ <a name='L315'></a><a href='#L315'>315</a>
381
+ <a name='L316'></a><a href='#L316'>316</a>
382
+ <a name='L317'></a><a href='#L317'>317</a>
383
+ <a name='L318'></a><a href='#L318'>318</a>
384
+ <a name='L319'></a><a href='#L319'>319</a>
385
+ <a name='L320'></a><a href='#L320'>320</a>
386
+ <a name='L321'></a><a href='#L321'>321</a>
387
+ <a name='L322'></a><a href='#L322'>322</a>
388
+ <a name='L323'></a><a href='#L323'>323</a>
389
+ <a name='L324'></a><a href='#L324'>324</a>
390
+ <a name='L325'></a><a href='#L325'>325</a>
391
+ <a name='L326'></a><a href='#L326'>326</a>
392
+ <a name='L327'></a><a href='#L327'>327</a>
393
+ <a name='L328'></a><a href='#L328'>328</a>
394
+ <a name='L329'></a><a href='#L329'>329</a>
395
+ <a name='L330'></a><a href='#L330'>330</a>
396
+ <a name='L331'></a><a href='#L331'>331</a>
397
+ <a name='L332'></a><a href='#L332'>332</a>
398
+ <a name='L333'></a><a href='#L333'>333</a>
399
+ <a name='L334'></a><a href='#L334'>334</a>
400
+ <a name='L335'></a><a href='#L335'>335</a>
401
+ <a name='L336'></a><a href='#L336'>336</a>
402
+ <a name='L337'></a><a href='#L337'>337</a>
403
+ <a name='L338'></a><a href='#L338'>338</a>
404
+ <a name='L339'></a><a href='#L339'>339</a>
405
+ <a name='L340'></a><a href='#L340'>340</a>
406
+ <a name='L341'></a><a href='#L341'>341</a>
407
+ <a name='L342'></a><a href='#L342'>342</a>
408
+ <a name='L343'></a><a href='#L343'>343</a>
409
+ <a name='L344'></a><a href='#L344'>344</a>
410
+ <a name='L345'></a><a href='#L345'>345</a>
411
+ <a name='L346'></a><a href='#L346'>346</a>
412
+ <a name='L347'></a><a href='#L347'>347</a>
413
+ <a name='L348'></a><a href='#L348'>348</a>
414
+ <a name='L349'></a><a href='#L349'>349</a>
415
+ <a name='L350'></a><a href='#L350'>350</a>
416
+ <a name='L351'></a><a href='#L351'>351</a>
417
+ <a name='L352'></a><a href='#L352'>352</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
418
+ <span class="cline-any cline-neutral">&nbsp;</span>
419
+ <span class="cline-any cline-neutral">&nbsp;</span>
420
+ <span class="cline-any cline-neutral">&nbsp;</span>
421
+ <span class="cline-any cline-neutral">&nbsp;</span>
422
+ <span class="cline-any cline-neutral">&nbsp;</span>
423
+ <span class="cline-any cline-neutral">&nbsp;</span>
424
+ <span class="cline-any cline-neutral">&nbsp;</span>
425
+ <span class="cline-any cline-neutral">&nbsp;</span>
426
+ <span class="cline-any cline-neutral">&nbsp;</span>
427
+ <span class="cline-any cline-neutral">&nbsp;</span>
428
+ <span class="cline-any cline-neutral">&nbsp;</span>
429
+ <span class="cline-any cline-neutral">&nbsp;</span>
430
+ <span class="cline-any cline-neutral">&nbsp;</span>
431
+ <span class="cline-any cline-neutral">&nbsp;</span>
432
+ <span class="cline-any cline-neutral">&nbsp;</span>
433
+ <span class="cline-any cline-neutral">&nbsp;</span>
434
+ <span class="cline-any cline-neutral">&nbsp;</span>
435
+ <span class="cline-any cline-neutral">&nbsp;</span>
436
+ <span class="cline-any cline-neutral">&nbsp;</span>
437
+ <span class="cline-any cline-neutral">&nbsp;</span>
438
+ <span class="cline-any cline-yes">3x</span>
439
+ <span class="cline-any cline-yes">3x</span>
440
+ <span class="cline-any cline-yes">3x</span>
441
+ <span class="cline-any cline-yes">3x</span>
442
+ <span class="cline-any cline-yes">3x</span>
443
+ <span class="cline-any cline-yes">3x</span>
444
+ <span class="cline-any cline-yes">3x</span>
445
+ <span class="cline-any cline-yes">3x</span>
446
+ <span class="cline-any cline-yes">3x</span>
447
+ <span class="cline-any cline-yes">3x</span>
448
+ <span class="cline-any cline-neutral">&nbsp;</span>
449
+ <span class="cline-any cline-yes">3x</span>
450
+ <span class="cline-any cline-no">&nbsp;</span>
451
+ <span class="cline-any cline-no">&nbsp;</span>
452
+ <span class="cline-any cline-neutral">&nbsp;</span>
453
+ <span class="cline-any cline-no">&nbsp;</span>
454
+ <span class="cline-any cline-neutral">&nbsp;</span>
455
+ <span class="cline-any cline-neutral">&nbsp;</span>
456
+ <span class="cline-any cline-neutral">&nbsp;</span>
457
+ <span class="cline-any cline-yes">3x</span>
458
+ <span class="cline-any cline-no">&nbsp;</span>
459
+ <span class="cline-any cline-neutral">&nbsp;</span>
460
+ <span class="cline-any cline-neutral">&nbsp;</span>
461
+ <span class="cline-any cline-yes">3x</span>
462
+ <span class="cline-any cline-no">&nbsp;</span>
463
+ <span class="cline-any cline-no">&nbsp;</span>
464
+ <span class="cline-any cline-no">&nbsp;</span>
465
+ <span class="cline-any cline-no">&nbsp;</span>
466
+ <span class="cline-any cline-no">&nbsp;</span>
467
+ <span class="cline-any cline-neutral">&nbsp;</span>
468
+ <span class="cline-any cline-no">&nbsp;</span>
469
+ <span class="cline-any cline-neutral">&nbsp;</span>
470
+ <span class="cline-any cline-neutral">&nbsp;</span>
471
+ <span class="cline-any cline-neutral">&nbsp;</span>
472
+ <span class="cline-any cline-neutral">&nbsp;</span>
473
+ <span class="cline-any cline-neutral">&nbsp;</span>
474
+ <span class="cline-any cline-neutral">&nbsp;</span>
475
+ <span class="cline-any cline-neutral">&nbsp;</span>
476
+ <span class="cline-any cline-neutral">&nbsp;</span>
477
+ <span class="cline-any cline-neutral">&nbsp;</span>
478
+ <span class="cline-any cline-neutral">&nbsp;</span>
479
+ <span class="cline-any cline-neutral">&nbsp;</span>
480
+ <span class="cline-any cline-neutral">&nbsp;</span>
481
+ <span class="cline-any cline-neutral">&nbsp;</span>
482
+ <span class="cline-any cline-neutral">&nbsp;</span>
483
+ <span class="cline-any cline-yes">3x</span>
484
+ <span class="cline-any cline-no">&nbsp;</span>
485
+ <span class="cline-any cline-neutral">&nbsp;</span>
486
+ <span class="cline-any cline-neutral">&nbsp;</span>
487
+ <span class="cline-any cline-neutral">&nbsp;</span>
488
+ <span class="cline-any cline-neutral">&nbsp;</span>
489
+ <span class="cline-any cline-neutral">&nbsp;</span>
490
+ <span class="cline-any cline-neutral">&nbsp;</span>
491
+ <span class="cline-any cline-neutral">&nbsp;</span>
492
+ <span class="cline-any cline-neutral">&nbsp;</span>
493
+ <span class="cline-any cline-neutral">&nbsp;</span>
494
+ <span class="cline-any cline-neutral">&nbsp;</span>
495
+ <span class="cline-any cline-neutral">&nbsp;</span>
496
+ <span class="cline-any cline-neutral">&nbsp;</span>
497
+ <span class="cline-any cline-neutral">&nbsp;</span>
498
+ <span class="cline-any cline-neutral">&nbsp;</span>
499
+ <span class="cline-any cline-neutral">&nbsp;</span>
500
+ <span class="cline-any cline-neutral">&nbsp;</span>
501
+ <span class="cline-any cline-neutral">&nbsp;</span>
502
+ <span class="cline-any cline-neutral">&nbsp;</span>
503
+ <span class="cline-any cline-neutral">&nbsp;</span>
504
+ <span class="cline-any cline-neutral">&nbsp;</span>
505
+ <span class="cline-any cline-neutral">&nbsp;</span>
506
+ <span class="cline-any cline-neutral">&nbsp;</span>
507
+ <span class="cline-any cline-neutral">&nbsp;</span>
508
+ <span class="cline-any cline-neutral">&nbsp;</span>
509
+ <span class="cline-any cline-neutral">&nbsp;</span>
510
+ <span class="cline-any cline-neutral">&nbsp;</span>
511
+ <span class="cline-any cline-no">&nbsp;</span>
512
+ <span class="cline-any cline-no">&nbsp;</span>
513
+ <span class="cline-any cline-neutral">&nbsp;</span>
514
+ <span class="cline-any cline-neutral">&nbsp;</span>
515
+ <span class="cline-any cline-yes">3x</span>
516
+ <span class="cline-any cline-neutral">&nbsp;</span>
517
+ <span class="cline-any cline-neutral">&nbsp;</span>
518
+ <span class="cline-any cline-neutral">&nbsp;</span>
519
+ <span class="cline-any cline-neutral">&nbsp;</span>
520
+ <span class="cline-any cline-neutral">&nbsp;</span>
521
+ <span class="cline-any cline-neutral">&nbsp;</span>
522
+ <span class="cline-any cline-neutral">&nbsp;</span>
523
+ <span class="cline-any cline-neutral">&nbsp;</span>
524
+ <span class="cline-any cline-neutral">&nbsp;</span>
525
+ <span class="cline-any cline-neutral">&nbsp;</span>
526
+ <span class="cline-any cline-neutral">&nbsp;</span>
527
+ <span class="cline-any cline-yes">3x</span>
528
+ <span class="cline-any cline-neutral">&nbsp;</span>
529
+ <span class="cline-any cline-neutral">&nbsp;</span>
530
+ <span class="cline-any cline-neutral">&nbsp;</span>
531
+ <span class="cline-any cline-neutral">&nbsp;</span>
532
+ <span class="cline-any cline-yes">3x</span>
533
+ <span class="cline-any cline-yes">1x</span>
534
+ <span class="cline-any cline-yes">1x</span>
535
+ <span class="cline-any cline-neutral">&nbsp;</span>
536
+ <span class="cline-any cline-neutral">&nbsp;</span>
537
+ <span class="cline-any cline-neutral">&nbsp;</span>
538
+ <span class="cline-any cline-yes">1x</span>
539
+ <span class="cline-any cline-neutral">&nbsp;</span>
540
+ <span class="cline-any cline-neutral">&nbsp;</span>
541
+ <span class="cline-any cline-neutral">&nbsp;</span>
542
+ <span class="cline-any cline-neutral">&nbsp;</span>
543
+ <span class="cline-any cline-neutral">&nbsp;</span>
544
+ <span class="cline-any cline-neutral">&nbsp;</span>
545
+ <span class="cline-any cline-neutral">&nbsp;</span>
546
+ <span class="cline-any cline-neutral">&nbsp;</span>
547
+ <span class="cline-any cline-neutral">&nbsp;</span>
548
+ <span class="cline-any cline-neutral">&nbsp;</span>
549
+ <span class="cline-any cline-neutral">&nbsp;</span>
550
+ <span class="cline-any cline-yes">1x</span>
551
+ <span class="cline-any cline-neutral">&nbsp;</span>
552
+ <span class="cline-any cline-neutral">&nbsp;</span>
553
+ <span class="cline-any cline-neutral">&nbsp;</span>
554
+ <span class="cline-any cline-neutral">&nbsp;</span>
555
+ <span class="cline-any cline-neutral">&nbsp;</span>
556
+ <span class="cline-any cline-neutral">&nbsp;</span>
557
+ <span class="cline-any cline-neutral">&nbsp;</span>
558
+ <span class="cline-any cline-neutral">&nbsp;</span>
559
+ <span class="cline-any cline-neutral">&nbsp;</span>
560
+ <span class="cline-any cline-yes">3x</span>
561
+ <span class="cline-any cline-yes">1x</span>
562
+ <span class="cline-any cline-yes">1x</span>
563
+ <span class="cline-any cline-yes">1x</span>
564
+ <span class="cline-any cline-neutral">&nbsp;</span>
565
+ <span class="cline-any cline-neutral">&nbsp;</span>
566
+ <span class="cline-any cline-yes">1x</span>
567
+ <span class="cline-any cline-yes">1x</span>
568
+ <span class="cline-any cline-yes">1x</span>
569
+ <span class="cline-any cline-neutral">&nbsp;</span>
570
+ <span class="cline-any cline-no">&nbsp;</span>
571
+ <span class="cline-any cline-neutral">&nbsp;</span>
572
+ <span class="cline-any cline-neutral">&nbsp;</span>
573
+ <span class="cline-any cline-neutral">&nbsp;</span>
574
+ <span class="cline-any cline-neutral">&nbsp;</span>
575
+ <span class="cline-any cline-neutral">&nbsp;</span>
576
+ <span class="cline-any cline-neutral">&nbsp;</span>
577
+ <span class="cline-any cline-neutral">&nbsp;</span>
578
+ <span class="cline-any cline-yes">3x</span>
579
+ <span class="cline-any cline-yes">1x</span>
580
+ <span class="cline-any cline-yes">1x</span>
581
+ <span class="cline-any cline-neutral">&nbsp;</span>
582
+ <span class="cline-any cline-neutral">&nbsp;</span>
583
+ <span class="cline-any cline-neutral">&nbsp;</span>
584
+ <span class="cline-any cline-neutral">&nbsp;</span>
585
+ <span class="cline-any cline-neutral">&nbsp;</span>
586
+ <span class="cline-any cline-neutral">&nbsp;</span>
587
+ <span class="cline-any cline-neutral">&nbsp;</span>
588
+ <span class="cline-any cline-neutral">&nbsp;</span>
589
+ <span class="cline-any cline-neutral">&nbsp;</span>
590
+ <span class="cline-any cline-yes">3x</span>
591
+ <span class="cline-any cline-yes">1x</span>
592
+ <span class="cline-any cline-yes">1x</span>
593
+ <span class="cline-any cline-yes">1x</span>
594
+ <span class="cline-any cline-yes">1x</span>
595
+ <span class="cline-any cline-no">&nbsp;</span>
596
+ <span class="cline-any cline-neutral">&nbsp;</span>
597
+ <span class="cline-any cline-neutral">&nbsp;</span>
598
+ <span class="cline-any cline-yes">1x</span>
599
+ <span class="cline-any cline-no">&nbsp;</span>
600
+ <span class="cline-any cline-neutral">&nbsp;</span>
601
+ <span class="cline-any cline-neutral">&nbsp;</span>
602
+ <span class="cline-any cline-neutral">&nbsp;</span>
603
+ <span class="cline-any cline-neutral">&nbsp;</span>
604
+ <span class="cline-any cline-neutral">&nbsp;</span>
605
+ <span class="cline-any cline-yes">1x</span>
606
+ <span class="cline-any cline-no">&nbsp;</span>
607
+ <span class="cline-any cline-no">&nbsp;</span>
608
+ <span class="cline-any cline-neutral">&nbsp;</span>
609
+ <span class="cline-any cline-no">&nbsp;</span>
610
+ <span class="cline-any cline-neutral">&nbsp;</span>
611
+ <span class="cline-any cline-neutral">&nbsp;</span>
612
+ <span class="cline-any cline-yes">1x</span>
613
+ <span class="cline-any cline-neutral">&nbsp;</span>
614
+ <span class="cline-any cline-neutral">&nbsp;</span>
615
+ <span class="cline-any cline-neutral">&nbsp;</span>
616
+ <span class="cline-any cline-neutral">&nbsp;</span>
617
+ <span class="cline-any cline-neutral">&nbsp;</span>
618
+ <span class="cline-any cline-neutral">&nbsp;</span>
619
+ <span class="cline-any cline-neutral">&nbsp;</span>
620
+ <span class="cline-any cline-yes">3x</span>
621
+ <span class="cline-any cline-neutral">&nbsp;</span>
622
+ <span class="cline-any cline-neutral">&nbsp;</span>
623
+ <span class="cline-any cline-neutral">&nbsp;</span>
624
+ <span class="cline-any cline-neutral">&nbsp;</span>
625
+ <span class="cline-any cline-neutral">&nbsp;</span>
626
+ <span class="cline-any cline-neutral">&nbsp;</span>
627
+ <span class="cline-any cline-neutral">&nbsp;</span>
628
+ <span class="cline-any cline-yes">1x</span>
629
+ <span class="cline-any cline-yes">1x</span>
630
+ <span class="cline-any cline-neutral">&nbsp;</span>
631
+ <span class="cline-any cline-neutral">&nbsp;</span>
632
+ <span class="cline-any cline-neutral">&nbsp;</span>
633
+ <span class="cline-any cline-neutral">&nbsp;</span>
634
+ <span class="cline-any cline-neutral">&nbsp;</span>
635
+ <span class="cline-any cline-neutral">&nbsp;</span>
636
+ <span class="cline-any cline-neutral">&nbsp;</span>
637
+ <span class="cline-any cline-neutral">&nbsp;</span>
638
+ <span class="cline-any cline-neutral">&nbsp;</span>
639
+ <span class="cline-any cline-neutral">&nbsp;</span>
640
+ <span class="cline-any cline-neutral">&nbsp;</span>
641
+ <span class="cline-any cline-neutral">&nbsp;</span>
642
+ <span class="cline-any cline-yes">3x</span>
643
+ <span class="cline-any cline-neutral">&nbsp;</span>
644
+ <span class="cline-any cline-neutral">&nbsp;</span>
645
+ <span class="cline-any cline-neutral">&nbsp;</span>
646
+ <span class="cline-any cline-neutral">&nbsp;</span>
647
+ <span class="cline-any cline-neutral">&nbsp;</span>
648
+ <span class="cline-any cline-neutral">&nbsp;</span>
649
+ <span class="cline-any cline-neutral">&nbsp;</span>
650
+ <span class="cline-any cline-neutral">&nbsp;</span>
651
+ <span class="cline-any cline-neutral">&nbsp;</span>
652
+ <span class="cline-any cline-neutral">&nbsp;</span>
653
+ <span class="cline-any cline-neutral">&nbsp;</span>
654
+ <span class="cline-any cline-neutral">&nbsp;</span>
655
+ <span class="cline-any cline-neutral">&nbsp;</span>
656
+ <span class="cline-any cline-neutral">&nbsp;</span>
657
+ <span class="cline-any cline-neutral">&nbsp;</span>
658
+ <span class="cline-any cline-neutral">&nbsp;</span>
659
+ <span class="cline-any cline-neutral">&nbsp;</span>
660
+ <span class="cline-any cline-neutral">&nbsp;</span>
661
+ <span class="cline-any cline-neutral">&nbsp;</span>
662
+ <span class="cline-any cline-neutral">&nbsp;</span>
663
+ <span class="cline-any cline-neutral">&nbsp;</span>
664
+ <span class="cline-any cline-neutral">&nbsp;</span>
665
+ <span class="cline-any cline-neutral">&nbsp;</span>
666
+ <span class="cline-any cline-neutral">&nbsp;</span>
667
+ <span class="cline-any cline-neutral">&nbsp;</span>
668
+ <span class="cline-any cline-neutral">&nbsp;</span>
669
+ <span class="cline-any cline-neutral">&nbsp;</span>
670
+ <span class="cline-any cline-neutral">&nbsp;</span>
671
+ <span class="cline-any cline-neutral">&nbsp;</span>
672
+ <span class="cline-any cline-neutral">&nbsp;</span>
673
+ <span class="cline-any cline-neutral">&nbsp;</span>
674
+ <span class="cline-any cline-neutral">&nbsp;</span>
675
+ <span class="cline-any cline-yes">3x</span>
676
+ <span class="cline-any cline-no">&nbsp;</span>
677
+ <span class="cline-any cline-neutral">&nbsp;</span>
678
+ <span class="cline-any cline-neutral">&nbsp;</span>
679
+ <span class="cline-any cline-neutral">&nbsp;</span>
680
+ <span class="cline-any cline-neutral">&nbsp;</span>
681
+ <span class="cline-any cline-neutral">&nbsp;</span>
682
+ <span class="cline-any cline-neutral">&nbsp;</span>
683
+ <span class="cline-any cline-neutral">&nbsp;</span>
684
+ <span class="cline-any cline-neutral">&nbsp;</span>
685
+ <span class="cline-any cline-neutral">&nbsp;</span>
686
+ <span class="cline-any cline-neutral">&nbsp;</span>
687
+ <span class="cline-any cline-neutral">&nbsp;</span>
688
+ <span class="cline-any cline-yes">3x</span>
689
+ <span class="cline-any cline-yes">1x</span>
690
+ <span class="cline-any cline-yes">1x</span>
691
+ <span class="cline-any cline-yes">1x</span>
692
+ <span class="cline-any cline-yes">1x</span>
693
+ <span class="cline-any cline-neutral">&nbsp;</span>
694
+ <span class="cline-any cline-yes">1x</span>
695
+ <span class="cline-any cline-no">&nbsp;</span>
696
+ <span class="cline-any cline-neutral">&nbsp;</span>
697
+ <span class="cline-any cline-neutral">&nbsp;</span>
698
+ <span class="cline-any cline-yes">1x</span>
699
+ <span class="cline-any cline-neutral">&nbsp;</span>
700
+ <span class="cline-any cline-neutral">&nbsp;</span>
701
+ <span class="cline-any cline-neutral">&nbsp;</span>
702
+ <span class="cline-any cline-neutral">&nbsp;</span>
703
+ <span class="cline-any cline-neutral">&nbsp;</span>
704
+ <span class="cline-any cline-neutral">&nbsp;</span>
705
+ <span class="cline-any cline-neutral">&nbsp;</span>
706
+ <span class="cline-any cline-yes">3x</span>
707
+ <span class="cline-any cline-yes">1x</span>
708
+ <span class="cline-any cline-neutral">&nbsp;</span>
709
+ <span class="cline-any cline-neutral">&nbsp;</span>
710
+ <span class="cline-any cline-neutral">&nbsp;</span>
711
+ <span class="cline-any cline-neutral">&nbsp;</span>
712
+ <span class="cline-any cline-neutral">&nbsp;</span>
713
+ <span class="cline-any cline-neutral">&nbsp;</span>
714
+ <span class="cline-any cline-neutral">&nbsp;</span>
715
+ <span class="cline-any cline-neutral">&nbsp;</span>
716
+ <span class="cline-any cline-neutral">&nbsp;</span>
717
+ <span class="cline-any cline-neutral">&nbsp;</span>
718
+ <span class="cline-any cline-neutral">&nbsp;</span>
719
+ <span class="cline-any cline-neutral">&nbsp;</span>
720
+ <span class="cline-any cline-neutral">&nbsp;</span>
721
+ <span class="cline-any cline-neutral">&nbsp;</span>
722
+ <span class="cline-any cline-neutral">&nbsp;</span>
723
+ <span class="cline-any cline-neutral">&nbsp;</span>
724
+ <span class="cline-any cline-neutral">&nbsp;</span>
725
+ <span class="cline-any cline-neutral">&nbsp;</span>
726
+ <span class="cline-any cline-neutral">&nbsp;</span>
727
+ <span class="cline-any cline-neutral">&nbsp;</span>
728
+ <span class="cline-any cline-no">&nbsp;</span>
729
+ <span class="cline-any cline-neutral">&nbsp;</span>
730
+ <span class="cline-any cline-neutral">&nbsp;</span>
731
+ <span class="cline-any cline-neutral">&nbsp;</span>
732
+ <span class="cline-any cline-neutral">&nbsp;</span>
733
+ <span class="cline-any cline-neutral">&nbsp;</span>
734
+ <span class="cline-any cline-neutral">&nbsp;</span>
735
+ <span class="cline-any cline-neutral">&nbsp;</span>
736
+ <span class="cline-any cline-neutral">&nbsp;</span>
737
+ <span class="cline-any cline-neutral">&nbsp;</span>
738
+ <span class="cline-any cline-neutral">&nbsp;</span>
739
+ <span class="cline-any cline-neutral">&nbsp;</span>
740
+ <span class="cline-any cline-neutral">&nbsp;</span>
741
+ <span class="cline-any cline-yes">3x</span>
742
+ <span class="cline-any cline-no">&nbsp;</span>
743
+ <span class="cline-any cline-no">&nbsp;</span>
744
+ <span class="cline-any cline-no">&nbsp;</span>
745
+ <span class="cline-any cline-neutral">&nbsp;</span>
746
+ <span class="cline-any cline-neutral">&nbsp;</span>
747
+ <span class="cline-any cline-yes">3x</span>
748
+ <span class="cline-any cline-neutral">&nbsp;</span>
749
+ <span class="cline-any cline-neutral">&nbsp;</span>
750
+ <span class="cline-any cline-neutral">&nbsp;</span>
751
+ <span class="cline-any cline-neutral">&nbsp;</span>
752
+ <span class="cline-any cline-neutral">&nbsp;</span>
753
+ <span class="cline-any cline-neutral">&nbsp;</span>
754
+ <span class="cline-any cline-neutral">&nbsp;</span>
755
+ <span class="cline-any cline-neutral">&nbsp;</span>
756
+ <span class="cline-any cline-neutral">&nbsp;</span>
757
+ <span class="cline-any cline-neutral">&nbsp;</span>
758
+ <span class="cline-any cline-neutral">&nbsp;</span>
759
+ <span class="cline-any cline-neutral">&nbsp;</span>
760
+ <span class="cline-any cline-neutral">&nbsp;</span>
761
+ <span class="cline-any cline-neutral">&nbsp;</span>
762
+ <span class="cline-any cline-neutral">&nbsp;</span>
763
+ <span class="cline-any cline-neutral">&nbsp;</span>
764
+ <span class="cline-any cline-neutral">&nbsp;</span>
765
+ <span class="cline-any cline-neutral">&nbsp;</span>
766
+ <span class="cline-any cline-neutral">&nbsp;</span>
767
+ <span class="cline-any cline-neutral">&nbsp;</span>
768
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import cookie from 'cookie';
769
+ import {
770
+ AccountHomeIcon,
771
+ DashboardIcon,
772
+ FacilityBasedPreviewIcon,
773
+ HardshipIcon,
774
+ HelpSupportIcon,
775
+ ManageUsersIcon,
776
+ MyApplicationsIcon,
777
+ MyTestDataIcon,
778
+ PaymentIcon,
779
+ PhysicianCompareIcon,
780
+ StarIcon,
781
+ TargetIcon,
782
+ IndividualReporting,
783
+ ManageDocumentsIcon,
784
+ AuthorContentIcon,
785
+ RegistrationIcon,
786
+ } from '../../lib/SvgComponents';
787
+ import { isReviewerRole } from './Content/SelectRole/utils';
788
+ &nbsp;
789
+ const submissionsUrl = '/user/submissions';
790
+ const dashboardUrl = '/user/dashboard';
791
+ const manageUrl = '/user/manage-access';
792
+ const feedbackUrl = `${submissionsUrl}/feedback`;
793
+ const physicianCompareUrl = `${submissionsUrl}/doctors-clinicians-preview`;
794
+ const reportsPortalUrl = `${submissionsUrl}/reports`;
795
+ const facilityBasedPreviewBaseUrl = `${submissionsUrl}/facility-based-preview`;
796
+ const viewingToolUrl = '/user/helpdesk-viewing-tool';
797
+ const contentMgrDashboardUrl = '/user/content-management';
798
+ const registrationUrl = '/user/registration/';
799
+ &nbsp;
800
+ const performanceFeedbackUrl = <span class="fstat-no" title="function not covered" >(p</span>erformanceYear) =&gt; {
801
+ <span class="cstat-no" title="statement not covered" > if (performanceYear) {</span>
802
+ <span class="cstat-no" title="statement not covered" > return `${feedbackUrl}/${performanceYear}`;</span>
803
+ } else {
804
+ <span class="cstat-no" title="statement not covered" > return feedbackUrl;</span>
805
+ }
806
+ };
807
+ &nbsp;
808
+ const facilityBasedPreviewUrl = <span class="fstat-no" title="function not covered" >(p</span>erformanceYear) =&gt; {
809
+ <span class="cstat-no" title="statement not covered" > return `${facilityBasedPreviewBaseUrl}/${performanceYear}`;</span>
810
+ };
811
+ &nbsp;
812
+ const handleNavigation = <span class="fstat-no" title="function not covered" >(e</span>, linkCallbackFunction, label) =&gt; {
813
+ <span class="cstat-no" title="statement not covered" > if (linkCallbackFunction) {</span>
814
+ const { pathname, hash, search } = <span class="cstat-no" title="statement not covered" >e.currentTarget;</span>
815
+ <span class="cstat-no" title="statement not covered" > e.preventDefault();</span>
816
+ <span class="cstat-no" title="statement not covered" > e.stopPropagation();</span>
817
+ <span class="cstat-no" title="statement not covered" > linkCallbackFunction(`${pathname}${hash}${search}`);</span>
818
+ }
819
+ <span class="cstat-no" title="statement not covered" > window?.utag?.link({</span>
820
+ ga_event_category: 'side navbar',
821
+ ga_event_action: 'click',
822
+ ga_event_label: label,
823
+ page_title: `${window.document.title}`,
824
+ page_url: `${window.location.pathname}`,
825
+ event: 'trackEvent',
826
+ });
827
+ };
828
+ &nbsp;
829
+ /**
830
+ * Load icon by url
831
+ * @param {string} url
832
+ * @returns svg icon
833
+ */
834
+ const getIcon = <span class="fstat-no" title="function not covered" >(u</span>rl, linkLabel) =&gt; {
835
+ const icons = <span class="cstat-no" title="statement not covered" >{</span>
836
+ [dashboardUrl]: DashboardIcon,
837
+ [feedbackUrl]: StarIcon,
838
+ [manageUrl]: ManageUsersIcon,
839
+ [physicianCompareUrl]: PhysicianCompareIcon,
840
+ [reportsPortalUrl]: HardshipIcon,
841
+ [submissionsUrl]: AccountHomeIcon,
842
+ [facilityBasedPreviewBaseUrl]: FacilityBasedPreviewIcon,
843
+ [registrationUrl]: RegistrationIcon,
844
+ '/developers': HelpSupportIcon,
845
+ '/resources/help-and-support': HelpSupportIcon,
846
+ '/user/apm-incentive-payments': PaymentIcon,
847
+ '/user/applications': MyApplicationsIcon,
848
+ '/user/exception/#/landing': HardshipIcon,
849
+ '/user/targeted-review/#/landing': TargetIcon,
850
+ '/user/test-data': MyTestDataIcon,
851
+ '/user/self-nomination/#/landing': IndividualReporting,
852
+ '/user/reviewers': AccountHomeIcon,
853
+ '/reviewer/exception': HardshipIcon,
854
+ '/reviewer/targeted-review': TargetIcon,
855
+ '/self-nomination': IndividualReporting,
856
+ '/case-management': FacilityBasedPreviewIcon,
857
+ [contentMgrDashboardUrl]: AccountHomeIcon,
858
+ 'Manage Documents': ManageDocumentsIcon,
859
+ 'Author Content': AuthorContentIcon,
860
+ };
861
+ &nbsp;
862
+ <span class="cstat-no" title="statement not covered" > if (linkLabel) <span class="cstat-no" title="statement not covered" >return icons[linkLabel];</span></span>
863
+ <span class="cstat-no" title="statement not covered" > return icons[url];</span>
864
+ };
865
+ &nbsp;
866
+ const singleRoleContentMap = {
867
+ 'QPP Content Management - Author': 'contentManager',
868
+ 'QPP Content Management - Approver': 'contentManager',
869
+ 'QPP Content Management - Admin': 'contentManager',
870
+ 'QPP Front-end - Author': 'contentManager',
871
+ 'QPP Self-Nomination': 'internalReviewers',
872
+ 'QPP Targeted Review &amp; Exceptions': 'internalReviewers',
873
+ 'QPP Case Management - PIMMS Reviewer': 'internalReviewers',
874
+ 'QPP Case Management - ACO PAC Reviewer': 'internalReviewers',
875
+ 'QPP Case Management - CMS Reviewer': 'internalReviewers',
876
+ };
877
+ &nbsp;
878
+ const multiRoleContentMap = {
879
+ Reviewer: 'internalReviewers',
880
+ 'Content Manager': 'contentManager',
881
+ };
882
+ &nbsp;
883
+ const replaceDefaultContentMgrLinks = (defaultContent) =&gt; {
884
+ const host = window.location.host;
885
+ const updatedDefaultContent = {
886
+ ...defaultContent,
887
+ contentManager: [
888
+ defaultContent.contentManager.find(
889
+ (obj) =&gt; obj.label === 'Dashboard Home'
890
+ ),
891
+ {
892
+ url: `${host}.qpp.cms.gov/cm/`,
893
+ label: 'Manage Documents',
894
+ },
895
+ {
896
+ url: `${host}.qpp.cms.gov/content-management/`,
897
+ label: 'Author Content',
898
+ },
899
+ ],
900
+ };
901
+ return updatedDefaultContent;
902
+ };
903
+ &nbsp;
904
+ /**
905
+ * Load the side nav content for the given role
906
+ * @param {string} roleName role of given user from internalReviewerNames
907
+ * @param {object} navContent object of side nav links by role (levelOneContent &amp; defaultContent)
908
+ * @returns {array} returns an array of objects (side nav menu links) from levelOneContent
909
+ * || defaultContent
910
+ */
911
+ const loadSideNavContent = (roleName, navContent, isMultiRoleUser = false) =&gt; {
912
+ const { levelOneContent, defaultContent } = navContent;
913
+ const updatedDefaultContent = replaceDefaultContentMgrLinks(defaultContent);
914
+ const roleContentMap = isMultiRoleUser
915
+ ? <span class="branch-0 cbranch-no" title="branch not covered" >multiRoleContentMap</span>
916
+ : singleRoleContentMap;
917
+ const contentByRole = roleContentMap[roleName];
918
+ <span class="missing-if-branch" title="else path not taken" >E</span>if (levelOneContent) {
919
+ return levelOneContent[contentByRole] || levelOneContent.default;
920
+ }
921
+ <span class="cstat-no" title="statement not covered" > return updatedDefaultContent[contentByRole] || updatedDefaultContent.default;</span>
922
+ };
923
+ &nbsp;
924
+ /**
925
+ * Check if user is currently impersonating
926
+ * @param {string} docCookie document cookie
927
+ * @returns {boolean}
928
+ */
929
+ const isImpersonating = (docCookie) =&gt; {
930
+ const parsedCookies = cookie.parse(docCookie);
931
+ return (
932
+ parsedCookies.qpp_can_impersonate &amp;&amp; <span class="branch-1 cbranch-no" title="branch not covered" >parsedCookies.qpp_impersonated_user</span>
933
+ );
934
+ };
935
+ &nbsp;
936
+ /**
937
+ * Check if user has multiple roles, used to display Select Role dropdown
938
+ * @param {string} docCookie document cookie
939
+ * @returns {boolean}
940
+ */
941
+ const isMultiRoleUser = (docCookie) =&gt; {
942
+ const activeRoles = new Set();
943
+ const { qpp_cms_internal_authorized } = cookie.parse(docCookie);
944
+ let internalAuthz = [];
945
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (qpp_cms_internal_authorized) {
946
+ <span class="cstat-no" title="statement not covered" > internalAuthz = JSON.parse(qpp_cms_internal_authorized);</span>
947
+ }
948
+ // Filter out test internalCms authz
949
+ const filteredInternalAuthz = internalAuthz.filter(<span class="fstat-no" title="function not covered" >(i</span>nternalAuth) =&gt; {
950
+ <span class="cstat-no" title="statement not covered" > return (</span>
951
+ internalAuth !== 'Test internalCms Resource' &amp;&amp;
952
+ internalAuth !== 'Test internalCms Resource 2'
953
+ );
954
+ });
955
+ &nbsp;
956
+ filteredInternalAuthz.forEach(<span class="fstat-no" title="function not covered" >(e</span>lement) =&gt; {
957
+ <span class="cstat-no" title="statement not covered" > if (isReviewerRole(element)) {</span>
958
+ <span class="cstat-no" title="statement not covered" > return activeRoles.add('reviewer');</span>
959
+ }
960
+ <span class="cstat-no" title="statement not covered" > return activeRoles.add(element);</span>
961
+ });
962
+ &nbsp;
963
+ return activeRoles.size &gt; 1;
964
+ };
965
+ &nbsp;
966
+ /**
967
+ * Transform cookie values to permissions object
968
+ * @param {object} cookies parsed document.cookie values
969
+ * @returns {object}
970
+ */
971
+ const transformCookieValues = (cookies) =&gt; {
972
+ const {
973
+ qpp_can_impersonate,
974
+ qpp_has_authorizations,
975
+ user_has_apm_payments,
976
+ qpp_cms_internal_authorized,
977
+ qpp_ehr_authorized,
978
+ qpp_has_non_registry_authorizations,
979
+ } = cookies;
980
+ return {
981
+ canImpersonate: qpp_can_impersonate === 'true',
982
+ hasAuthorizations: qpp_has_authorizations === 'true',
983
+ hasApmPayments: user_has_apm_payments === 'true',
984
+ internalReviewerNames: qpp_cms_internal_authorized
985
+ ? <span class="branch-0 cbranch-no" title="branch not covered" >JSON.parse(qpp_cms_internal_authorized)</span>
986
+ : [],
987
+ ehrAuthorized: qpp_ehr_authorized === 'true',
988
+ hasNonRegistryAuthorizations:
989
+ qpp_has_non_registry_authorizations === 'true',
990
+ };
991
+ };
992
+ &nbsp;
993
+ const permissionsByRole = {
994
+ 'QPP User': {
995
+ canImpersonate: false,
996
+ hasAuthorizations: true,
997
+ hasApmPayments: true,
998
+ },
999
+ Reviewer: {
1000
+ hasAuthorizations: false,
1001
+ hasApmPaymentss: false,
1002
+ },
1003
+ 'Helpdesk Viewer': {
1004
+ hasAuthorizations: false,
1005
+ hasApmPayments: false,
1006
+ hasNonRegistryAuthorizations: false,
1007
+ internalReviewerNames: ['QPP Helpdesk'],
1008
+ },
1009
+ // Helpdesk role &amp;&amp; impersonating (use impersonated user authz values)
1010
+ Impersonation: {
1011
+ internalReviewerNames: ['QPP Helpdesk'],
1012
+ },
1013
+ 'Content Manager': {
1014
+ hasAuthorizations: false,
1015
+ hasApmPaymentss: false,
1016
+ hasNonRegistryAuthorizations: false,
1017
+ },
1018
+ };
1019
+ &nbsp;
1020
+ /**
1021
+ * Return permissions by role
1022
+ * @param {string} selectedRole selected user role
1023
+ * @param {object} permissionValues default permission values from transformed parsed cookie
1024
+ * @returns {object}
1025
+ */
1026
+ const loadUserPermissionsByRole = <span class="fstat-no" title="function not covered" >(s</span>electedRole, permissionValues) =&gt; {
1027
+ <span class="cstat-no" title="statement not covered" > return {</span>
1028
+ ...permissionValues,
1029
+ ...permissionsByRole[selectedRole],
1030
+ };
1031
+ };
1032
+ &nbsp;
1033
+ /**
1034
+ * Helper fn to return user permissions/properties from cookies set on login
1035
+ * @param {string} docCookie cookie values set on login
1036
+ * @param {string} selectedRole string of selected role if user has multiple roles
1037
+ * @returns {object}
1038
+ */
1039
+ const loadUserPermissions = (docCookie, selectedRole) =&gt; {
1040
+ const parsedCookies = cookie.parse(docCookie);
1041
+ const permissionValues = transformCookieValues(parsedCookies);
1042
+ const impersonating = isImpersonating(docCookie);
1043
+ const role = impersonating ? <span class="branch-0 cbranch-no" title="branch not covered" >'Impersonation' </span>: selectedRole;
1044
+ &nbsp;
1045
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (role) {
1046
+ <span class="cstat-no" title="statement not covered" > return loadUserPermissionsByRole(role, permissionValues);</span>
1047
+ }
1048
+ &nbsp;
1049
+ return permissionValues;
1050
+ };
1051
+ &nbsp;
1052
+ /**
1053
+ * Return map of link conditionals based on user cookies for side nav
1054
+ * @param {object} userPermissions user permissions/properties derived from cookies set on login
1055
+ * @returns {object}
1056
+ */
1057
+ const getUrlConditionMap = (userPermissions) =&gt; {
1058
+ return {
1059
+ [dashboardUrl]: userPermissions.hasAuthorizations,
1060
+ [feedbackUrl]: userPermissions.hasAuthorizations,
1061
+ '/user/apm-incentive-payments': userPermissions.hasApmPayments,
1062
+ [physicianCompareUrl]: userPermissions.hasNonRegistryAuthorizations,
1063
+ [registrationUrl]: userPermissions.hasAuthorizations,
1064
+ [reportsPortalUrl]: userPermissions.hasAuthorizations,
1065
+ [facilityBasedPreviewBaseUrl]: userPermissions.hasAuthorizations,
1066
+ '/user/helpdesk-viewing-tool': userPermissions.canImpersonate,
1067
+ '/reviewer/exception': userPermissions.internalReviewerNames?.includes(
1068
+ 'QPP Targeted Review &amp; Exceptions'
1069
+ ),
1070
+ '/reviewer/targeted-review':
1071
+ userPermissions.internalReviewerNames?.includes(
1072
+ 'QPP Targeted Review &amp; Exceptions'
1073
+ ),
1074
+ '/self-nomination': userPermissions.internalReviewerNames?.includes(
1075
+ 'QPP Self-Nomination'
1076
+ ),
1077
+ &nbsp;
1078
+ '/case-management': userPermissions.internalReviewerNames?.some(<span class="fstat-no" title="function not covered" >(v</span>al) =&gt;
1079
+ <span class="cstat-no" title="statement not covered" > [</span>
1080
+ 'QPP Case Management - PIMMS Reviewer',
1081
+ 'QPP Case Management - ACO PAC Reviewer',
1082
+ 'QPP Case Management - CMS Reviewer',
1083
+ ].includes(val)
1084
+ ),
1085
+ &nbsp;
1086
+ // dev pre
1087
+ '/user/applications': userPermissions.ehrAuthorized,
1088
+ '/user/test-data': userPermissions.ehrAuthorized,
1089
+ };
1090
+ };
1091
+ &nbsp;
1092
+ const isImpersonationLink = <span class="fstat-no" title="function not covered" >(d</span>ocCookie, linkLabel) =&gt; {
1093
+ <span class="cstat-no" title="statement not covered" > if (!isImpersonating(docCookie)) <span class="cstat-no" title="statement not covered" >return;</span></span>
1094
+ const helpdeskLinks = <span class="cstat-no" title="statement not covered" >['Account Home', 'Manage Access', 'Help and Support'];</span>
1095
+ <span class="cstat-no" title="statement not covered" > return !helpdeskLinks.includes(linkLabel);</span>
1096
+ };
1097
+ &nbsp;
1098
+ module.exports = {
1099
+ submissionsUrl,
1100
+ dashboardUrl,
1101
+ feedbackUrl,
1102
+ manageUrl,
1103
+ physicianCompareUrl,
1104
+ registrationUrl,
1105
+ performanceFeedbackUrl,
1106
+ facilityBasedPreviewUrl,
1107
+ handleNavigation,
1108
+ reportsPortalUrl,
1109
+ facilityBasedPreviewBaseUrl,
1110
+ viewingToolUrl,
1111
+ loadUserPermissions,
1112
+ getUrlConditionMap,
1113
+ isMultiRoleUser,
1114
+ getIcon,
1115
+ isImpersonating,
1116
+ isImpersonationLink,
1117
+ loadSideNavContent,
1118
+ };
1119
+ &nbsp;</pre></td></tr></table></pre>
1120
+
1121
+ <div class='push'></div><!-- for sticky footer -->
1122
+ </div><!-- /wrapper -->
1123
+ <div class='footer quiet pad2 space-top1 center small'>
1124
+ Code coverage generated by
1125
+ <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
1126
+ at Tue Mar 07 2023 15:53:41 GMT-0500 (Eastern Standard Time)
1127
+ </div>
1128
+ <script src="../../../prettify.js"></script>
1129
+ <script>
1130
+ window.onload = function () {
1131
+ prettyPrint();
1132
+ };
1133
+ </script>
1134
+ <script src="../../../sorter.js"></script>
1135
+ <script src="../../../block-navigation.js"></script>
1136
+ </body>
1137
+ </html>
1138
+