ember-native-devtools 1.0.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 (468) hide show
  1. package/bin/devtools.js +95 -0
  2. package/download/chrome-devtools-frontend.appspot.com/robots.txt/index.html +4 -0
  3. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/3d-center.svg +1 -0
  4. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/3d-pan.svg +1 -0
  5. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/3d-rotate.svg +1 -0
  6. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/Images.js +259 -0
  7. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/accelerometer-back.svg +1 -0
  8. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/accelerometer-bottom.png +0 -0
  9. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/accelerometer-front.svg +1 -0
  10. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/accelerometer-left.png +0 -0
  11. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/accelerometer-right.png +0 -0
  12. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/accelerometer-top.png +0 -0
  13. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/account-box.svg +1 -0
  14. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/align-content-center.svg +1 -0
  15. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/align-content-end.svg +1 -0
  16. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/align-content-space-around.svg +1 -0
  17. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/align-content-space-between.svg +1 -0
  18. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/align-content-space-evenly.svg +1 -0
  19. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/align-content-start.svg +1 -0
  20. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/align-content-stretch.svg +1 -0
  21. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/align-items-baseline.svg +1 -0
  22. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/align-items-center.svg +1 -0
  23. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/align-items-end.svg +1 -0
  24. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/align-items-start.svg +1 -0
  25. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/align-items-stretch.svg +1 -0
  26. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/align-self-center.svg +1 -0
  27. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/align-self-end.svg +1 -0
  28. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/align-self-start.svg +1 -0
  29. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/align-self-stretch.svg +1 -0
  30. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/arrow-back.svg +1 -0
  31. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/arrow-down.svg +1 -0
  32. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/arrow-drop-down-dark.svg +1 -0
  33. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/arrow-drop-down-light.svg +1 -0
  34. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/arrow-forward.svg +1 -0
  35. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/arrow-up-down-circle.svg +1 -0
  36. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/arrow-up-down.svg +1 -0
  37. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/arrow-up.svg +1 -0
  38. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/bell.svg +1 -0
  39. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/bezier-curve-filled.svg +1 -0
  40. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/bin.svg +1 -0
  41. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/bottom-panel-close.svg +1 -0
  42. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/bottom-panel-open.svg +1 -0
  43. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/brackets.svg +1 -0
  44. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/breakpoint-circle.svg +1 -0
  45. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/breakpoint-crossed-filled.svg +1 -0
  46. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/breakpoint-crossed.svg +1 -0
  47. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/brush-filled.svg +1 -0
  48. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/brush.svg +1 -0
  49. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/bug.svg +1 -0
  50. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/bundle.svg +1 -0
  51. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/calendar-today.svg +1 -0
  52. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/check-circle.svg +1 -0
  53. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/check-double.svg +1 -0
  54. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/checker.svg +1 -0
  55. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/checkmark.svg +1 -0
  56. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/chevron-double-right.svg +1 -0
  57. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/chevron-down.svg +1 -0
  58. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/chevron-left-dot.svg +1 -0
  59. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/chevron-left.svg +1 -0
  60. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/chevron-right.svg +1 -0
  61. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/chevron-up.svg +1 -0
  62. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/chromeLeft.avif +0 -0
  63. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/chromeMiddle.avif +0 -0
  64. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/chromeRight.avif +0 -0
  65. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/class.svg +1 -0
  66. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/clear-list.svg +1 -0
  67. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/clear.svg +1 -0
  68. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/cloud.svg +1 -0
  69. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/code-circle.svg +1 -0
  70. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/code.svg +1 -0
  71. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/colon.svg +1 -0
  72. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/color-picker-filled.svg +1 -0
  73. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/color-picker.svg +1 -0
  74. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/console-conditional-breakpoint.svg +1 -0
  75. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/console-logpoint.svg +1 -0
  76. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/cookie.svg +1 -0
  77. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/copy.svg +1 -0
  78. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/corporate-fare.svg +1 -0
  79. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/credit-card.svg +1 -0
  80. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/cross-circle-filled.svg +1 -0
  81. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/cross-circle.svg +1 -0
  82. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/cross.svg +1 -0
  83. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/cssoverview_icons_2x.avif +0 -0
  84. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/custom-typography.svg +1 -0
  85. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/database.svg +1 -0
  86. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/deployed.svg +1 -0
  87. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/device-fold.svg +1 -0
  88. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/devices.svg +1 -0
  89. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/devtools.svg +1 -0
  90. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/dock-bottom.svg +1 -0
  91. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/dock-left.svg +1 -0
  92. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/dock-right.svg +1 -0
  93. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/dock-window.svg +1 -0
  94. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/document.svg +1 -0
  95. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/dog-paw.svg +1 -0
  96. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/dots-horizontal.svg +1 -0
  97. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/dots-vertical.svg +1 -0
  98. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/download.svg +1 -0
  99. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/edit.svg +1 -0
  100. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/empty.svg +1 -0
  101. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/errorWave.svg +1 -0
  102. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/exclamation.svg +1 -0
  103. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/experiment-check.svg +1 -0
  104. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/experiment.svg +1 -0
  105. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/extension.svg +1 -0
  106. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/eye.svg +1 -0
  107. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/file-document.svg +1 -0
  108. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/file-fetch-xhr.svg +1 -0
  109. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/file-font.svg +1 -0
  110. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/file-generic.svg +1 -0
  111. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/file-image.svg +1 -0
  112. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/file-json.svg +1 -0
  113. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/file-manifest.svg +1 -0
  114. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/file-media.svg +1 -0
  115. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/file-script.svg +1 -0
  116. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/file-snippet.svg +1 -0
  117. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/file-stylesheet.svg +1 -0
  118. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/file-wasm.svg +1 -0
  119. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/file-websocket.svg +1 -0
  120. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/filter-clear.svg +1 -0
  121. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/filter-filled.svg +1 -0
  122. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/filter.svg +1 -0
  123. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/flex-direction.svg +1 -0
  124. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/flex-no-wrap.svg +1 -0
  125. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/flex-wrap.svg +1 -0
  126. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/flow.svg +1 -0
  127. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/fold-more.svg +1 -0
  128. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/folder.svg +1 -0
  129. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/frame-crossed.svg +1 -0
  130. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/frame-icon.svg +1 -0
  131. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/frame.svg +1 -0
  132. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/gear-filled.svg +1 -0
  133. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/gear.svg +1 -0
  134. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/gears.svg +1 -0
  135. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/globe.svg +1 -0
  136. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/google.svg +1 -0
  137. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/goto-filled.svg +1 -0
  138. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/heap-snapshot.svg +1 -0
  139. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/heap-snapshots.svg +1 -0
  140. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/help.svg +1 -0
  141. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/hover.svg +1 -0
  142. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/iframe-crossed.svg +1 -0
  143. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/iframe.svg +1 -0
  144. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/import.svg +1 -0
  145. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/indeterminate-question-box.svg +1 -0
  146. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/info-filled.svg +1 -0
  147. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/info.svg +1 -0
  148. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/issue-cross-filled.svg +1 -0
  149. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/issue-exclamation-filled.svg +1 -0
  150. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/issue-questionmark-filled.svg +1 -0
  151. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/issue-text-filled.svg +1 -0
  152. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/justify-content-center.svg +1 -0
  153. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/justify-content-end.svg +1 -0
  154. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/justify-content-space-around.svg +1 -0
  155. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/justify-content-space-between.svg +1 -0
  156. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/justify-content-space-evenly.svg +1 -0
  157. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/justify-content-start.svg +1 -0
  158. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/justify-items-center.svg +1 -0
  159. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/justify-items-end.svg +1 -0
  160. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/justify-items-start.svg +1 -0
  161. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/justify-items-stretch.svg +1 -0
  162. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/keyboard-arrow-right.svg +1 -0
  163. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/keyboard-pen.svg +1 -0
  164. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/keyboard.svg +1 -0
  165. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/large-arrow-right-filled.svg +1 -0
  166. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/layers-filled.svg +1 -0
  167. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/layers.svg +1 -0
  168. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/left-panel-close.svg +1 -0
  169. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/left-panel-open.svg +1 -0
  170. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/lightbulb-spark.svg +1 -0
  171. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/lightbulb.svg +1 -0
  172. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/lighthouse_logo.svg +1 -0
  173. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/list.svg +1 -0
  174. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/location-on.svg +1 -0
  175. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/lock.svg +1 -0
  176. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/match-case.svg +1 -0
  177. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/match-whole-word.svg +1 -0
  178. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/memory.svg +1 -0
  179. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/minus.svg +1 -0
  180. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/mop.svg +1 -0
  181. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/mouse.svg +1 -0
  182. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/navigationControls.png +0 -0
  183. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/navigationControls_2x.png +0 -0
  184. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/network-settings.svg +1 -0
  185. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/nodeIcon.avif +0 -0
  186. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/open-externally.svg +1 -0
  187. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/pause.svg +1 -0
  188. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/pen-spark.svg +1 -0
  189. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/performance.svg +1 -0
  190. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/person.svg +1 -0
  191. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/play.svg +1 -0
  192. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/plus.svg +1 -0
  193. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/policy.svg +1 -0
  194. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/popoverArrows.png +0 -0
  195. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/popup.svg +1 -0
  196. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/preview_feature_video_thumbnail.svg +1 -0
  197. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/profile.svg +1 -0
  198. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/psychiatry.svg +1 -0
  199. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/record-start.svg +1 -0
  200. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/record-stop.svg +1 -0
  201. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/redo.svg +1 -0
  202. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/refresh.svg +1 -0
  203. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/regular-expression.svg +1 -0
  204. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/replace.svg +1 -0
  205. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/replay.svg +1 -0
  206. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/report.svg +1 -0
  207. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/resizeDiagonal.svg +1 -0
  208. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/resizeHorizontal.svg +1 -0
  209. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/resizeVertical.svg +1 -0
  210. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/resume.svg +1 -0
  211. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/review.svg +1 -0
  212. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/right-panel-close.svg +1 -0
  213. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/right-panel-open.svg +1 -0
  214. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/scissors.svg +1 -0
  215. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/screen-rotation.svg +1 -0
  216. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/search.svg +1 -0
  217. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/select-element.svg +1 -0
  218. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/send.svg +1 -0
  219. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/shadow.svg +1 -0
  220. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/small-status-dot.svg +1 -0
  221. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/snippet.svg +1 -0
  222. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/spark-info.svg +1 -0
  223. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/spark.svg +1 -0
  224. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/star.svg +1 -0
  225. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/step-into.svg +1 -0
  226. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/step-out.svg +1 -0
  227. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/step-over.svg +1 -0
  228. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/step.svg +1 -0
  229. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/stop.svg +1 -0
  230. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/symbol.svg +1 -0
  231. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/sync.svg +1 -0
  232. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/table.svg +1 -0
  233. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/thumb-down.svg +1 -0
  234. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/thumb-up.svg +1 -0
  235. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/toolbarResizerVertical.png +0 -0
  236. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/top-panel-close.svg +1 -0
  237. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/top-panel-open.svg +1 -0
  238. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/touch-app.svg +1 -0
  239. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/touchCursor.png +0 -0
  240. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/touchCursor_2x.png +0 -0
  241. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/triangle-bottom-right.svg +1 -0
  242. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/triangle-down.svg +1 -0
  243. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/triangle-left.svg +1 -0
  244. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/triangle-right.svg +1 -0
  245. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/triangle-up.svg +1 -0
  246. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/tune.svg +1 -0
  247. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/undo.svg +1 -0
  248. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/warning-filled.svg +1 -0
  249. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/warning.svg +1 -0
  250. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/watch.svg +1 -0
  251. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/whatsnew.avif +0 -0
  252. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/width.svg +1 -0
  253. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/zoom-in.svg +1 -0
  254. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/core/common/common.js +1 -0
  255. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/core/dom_extension/dom_extension.js +1 -0
  256. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/core/host/host.js +1 -0
  257. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/core/i18n/i18n.js +1 -0
  258. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/core/i18n/locales/en-US.json +1 -0
  259. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/core/platform/platform.js +1 -0
  260. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/core/protocol_client/protocol_client.js +1 -0
  261. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/core/root/root.js +1 -0
  262. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/core/sdk/sdk.js +1 -0
  263. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/devtools_app.html +18 -0
  264. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/devtools_compatibility.js +1774 -0
  265. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/ember_app.html +26 -0
  266. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/entrypoints/devtools_app/devtools_app.js +1 -0
  267. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/entrypoints/formatter_worker/formatter_worker-entrypoint.js +1 -0
  268. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/entrypoints/formatter_worker/formatter_worker.js +1 -0
  269. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/entrypoints/heap_snapshot_worker/heap_snapshot_worker-entrypoint.js +1 -0
  270. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/entrypoints/heap_snapshot_worker/heap_snapshot_worker.js +1 -0
  271. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/entrypoints/inspector/inspector.js +1 -0
  272. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/entrypoints/inspector_main/inspector_main.js +1 -0
  273. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/entrypoints/lighthouse_worker/lighthouse_worker.js +1 -0
  274. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/entrypoints/main/main.js +1 -0
  275. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/entrypoints/shell/shell.js +1 -0
  276. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/entrypoints/wasmparser_worker/wasmparser_worker-entrypoint.js +1 -0
  277. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/entrypoints/wasmparser_worker/wasmparser_worker.js +1 -0
  278. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/inspector.html +18 -0
  279. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/models/autofill_manager/autofill_manager.js +1 -0
  280. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/models/bindings/bindings.js +1 -0
  281. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/models/breakpoints/breakpoints.js +1 -0
  282. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/models/cpu_profile/cpu_profile.js +1 -0
  283. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/models/crux-manager/crux-manager.js +1 -0
  284. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/models/emulation/emulation.js +1 -0
  285. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/models/extensions/extensions.js +1 -0
  286. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/models/formatter/formatter.js +1 -0
  287. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/models/har/har.js +1 -0
  288. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/models/heap_snapshot_model/heap_snapshot_model.js +1 -0
  289. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/models/issues_manager/issues_manager.js +1 -0
  290. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/models/javascript_metadata/javascript_metadata.js +1 -0
  291. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/models/live-metrics/live-metrics.js +1 -0
  292. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/models/live-metrics/web-vitals-injected/spec/spec.js +1 -0
  293. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/models/live-metrics/web-vitals-injected/web-vitals-injected.generated.js +1 -0
  294. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/models/logs/logs.js +1 -0
  295. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/models/persistence/persistence.js +1 -0
  296. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/models/source_map_scopes/source_map_scopes.js +1 -0
  297. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/models/text_utils/text_utils.js +1 -0
  298. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/models/timeline_model/timeline_model.js +1 -0
  299. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/models/trace/extras/extras.js +1 -0
  300. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/models/trace/handlers/handlers.js +1 -0
  301. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/models/trace/helpers/helpers.js +1 -0
  302. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/models/trace/insights/insights.js +1 -0
  303. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/models/trace/lantern/core/core.js +1 -0
  304. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/models/trace/lantern/graph/graph.js +1 -0
  305. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/models/trace/lantern/lantern.js +1 -0
  306. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/models/trace/lantern/metrics/metrics.js +1 -0
  307. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/models/trace/lantern/simulation/simulation.js +1 -0
  308. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/models/trace/lantern/types/types.js +1 -0
  309. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/models/trace/root-causes/root-causes.js +1 -0
  310. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/models/trace/trace.js +1 -0
  311. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/models/trace/types/types.js +1 -0
  312. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/models/workspace/workspace.js +1 -0
  313. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/models/workspace_diff/workspace_diff.js +1 -0
  314. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/accessibility/accessibility.js +1 -0
  315. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/animation/animation.js +1 -0
  316. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/application/application.js +41 -0
  317. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/application/components/components.js +614 -0
  318. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/application/preloading/components/components.js +292 -0
  319. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/application/preloading/helper/helper.js +1 -0
  320. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/autofill/autofill.js +88 -0
  321. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/browser_debugger/browser_debugger.js +1 -0
  322. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/changes/changes.js +1 -0
  323. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/console/console.js +6 -0
  324. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/console_counters/console_counters.js +1 -0
  325. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/coverage/coverage.js +1 -0
  326. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/css_overview/components/components.js +23 -0
  327. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/css_overview/css_overview.js +147 -0
  328. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/developer_resources/developer_resources.js +1 -0
  329. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/elements/components/components.js +272 -0
  330. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/elements/elements.js +8 -0
  331. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/emulation/components/components.js +39 -0
  332. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/emulation/emulation.js +1 -0
  333. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/event_listeners/event_listeners.js +1 -0
  334. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/explain/explain.js +203 -0
  335. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/freestyler/freestyler.js +177 -0
  336. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/issues/components/components.js +14 -0
  337. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/issues/issues.js +1 -0
  338. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/layer_viewer/layer_viewer.js +1 -0
  339. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/layers/layers.js +1 -0
  340. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/lighthouse/lighthouse.js +64 -0
  341. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/linear_memory_inspector/components/components.js +177 -0
  342. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/linear_memory_inspector/linear_memory_inspector.js +1 -0
  343. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/media/media.js +25 -0
  344. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/mobile_throttling/mobile_throttling.js +1 -0
  345. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/network/components/components.js +315 -0
  346. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/network/forward/forward.js +1 -0
  347. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/network/network.js +1 -0
  348. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/performance_monitor/performance_monitor.js +1 -0
  349. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/profiler/profiler.js +8 -0
  350. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/protocol_monitor/components/components.js +180 -0
  351. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/protocol_monitor/protocol_monitor.js +1 -0
  352. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/recorder/components/components.js +714 -0
  353. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/recorder/controllers/controllers.js +1 -0
  354. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/recorder/converters/converters.js +1 -0
  355. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/recorder/extensions/extensions.js +1 -0
  356. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/recorder/injected/injected.generated.js +1 -0
  357. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/recorder/models/models.js +1 -0
  358. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/recorder/recorder.js +120 -0
  359. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/recorder/util/util.js +1 -0
  360. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/screencast/screencast.js +1 -0
  361. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/search/search.js +1 -0
  362. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/security/security.js +1 -0
  363. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/sensors/sensors.js +1 -0
  364. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/settings/components/components.js +23 -0
  365. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/settings/emulation/components/components.js +222 -0
  366. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/settings/emulation/emulation.js +1 -0
  367. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/settings/emulation/utils/utils.js +1 -0
  368. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/settings/settings.js +130 -0
  369. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/snippets/snippets.js +1 -0
  370. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/sources/components/components.js +162 -0
  371. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/sources/sources.js +14 -0
  372. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/timeline/components/components.js +623 -0
  373. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/timeline/components/insights/insights.js +85 -0
  374. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/timeline/extensions/extensions.js +1 -0
  375. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/timeline/overlays/components/components.js +52 -0
  376. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/timeline/overlays/overlays.js +1 -0
  377. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/timeline/timeline.js +4 -0
  378. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/timeline/utils/utils.js +1 -0
  379. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/utils/utils.js +1 -0
  380. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/web_audio/graph_visualizer/graph_visualizer.js +1 -0
  381. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/web_audio/web_audio.js +23 -0
  382. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/webauthn/webauthn.js +6 -0
  383. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/services/puppeteer/puppeteer.js +1 -0
  384. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/services/trace_bounds/trace_bounds.js +1 -0
  385. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/services/tracing/tracing.js +1 -0
  386. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/services/window_bounds/window_bounds.js +1 -0
  387. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/setup-ember-extension.js +160 -0
  388. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/third_party/acorn/acorn.js +1 -0
  389. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/third_party/chromium/client-variations/client-variations.js +1 -0
  390. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/third_party/codemirror.next/chunk/angular.js +2 -0
  391. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/third_party/codemirror.next/chunk/codemirror.js +2 -0
  392. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/third_party/codemirror.next/chunk/cpp.js +2 -0
  393. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/third_party/codemirror.next/chunk/java.js +2 -0
  394. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/third_party/codemirror.next/chunk/legacy.js +2 -0
  395. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/third_party/codemirror.next/chunk/less.js +2 -0
  396. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/third_party/codemirror.next/chunk/markdown.js +2 -0
  397. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/third_party/codemirror.next/chunk/php.js +2 -0
  398. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/third_party/codemirror.next/chunk/python.js +2 -0
  399. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/third_party/codemirror.next/chunk/sass.js +2 -0
  400. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/third_party/codemirror.next/chunk/svelte.js +2 -0
  401. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/third_party/codemirror.next/chunk/vue.js +2 -0
  402. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/third_party/codemirror.next/chunk/wast.js +2 -0
  403. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/third_party/codemirror.next/chunk/xml.js +2 -0
  404. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/third_party/codemirror.next/codemirror.next.js +2 -0
  405. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/third_party/csp_evaluator/csp_evaluator.js +194 -0
  406. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/third_party/diff/diff.js +1 -0
  407. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/third_party/i18n/i18n.js +1 -0
  408. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/third_party/intl-messageformat/intl-messageformat.js +15 -0
  409. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/third_party/lighthouse/lighthouse-dt-bundle.js +2137 -0
  410. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/third_party/lighthouse/report/report.js +39 -0
  411. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/third_party/lit/lit.js +110 -0
  412. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/third_party/marked/marked.js +1 -0
  413. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/third_party/puppeteer/debug/index.html +4 -0
  414. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/third_party/puppeteer/puppeteer.js +378 -0
  415. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/third_party/puppeteer-replay/lighthouse/index.html +4 -0
  416. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/third_party/puppeteer-replay/puppeteer/index.html +4 -0
  417. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/third_party/puppeteer-replay/puppeteer-replay.js +1 -0
  418. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/third_party/wasmparser/wasmparser.js +1 -0
  419. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/ui/components/adorners/adorners.js +3 -0
  420. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/ui/components/buttons/buttons.js +11 -0
  421. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/ui/components/chrome_link/chrome_link.js +5 -0
  422. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/ui/components/code_highlighter/code_highlighter.js +1 -0
  423. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/ui/components/data_grid/data_grid.js +69 -0
  424. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/ui/components/dialogs/dialogs.js +81 -0
  425. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/ui/components/diff_view/diff_view.js +8 -0
  426. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/ui/components/expandable_list/expandable_list.js +17 -0
  427. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/ui/components/helpers/helpers.js +1 -0
  428. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/ui/components/highlighting/highlighting.js +1 -0
  429. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/ui/components/icon_button/icon_button.js +12 -0
  430. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/ui/components/input/input.js +1 -0
  431. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/ui/components/issue_counter/issue_counter.js +9 -0
  432. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/ui/components/legacy_wrapper/legacy_wrapper.js +1 -0
  433. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/ui/components/linkifier/linkifier.js +1 -0
  434. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/ui/components/markdown_view/markdown_view.js +41 -0
  435. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/ui/components/menus/menus.js +73 -0
  436. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/ui/components/node_text/node_text.js +3 -0
  437. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/ui/components/panel_feedback/panel_feedback.js +37 -0
  438. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/ui/components/panel_introduction_steps/panel_introduction_steps.js +9 -0
  439. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/ui/components/render_coordinator/render_coordinator.js +1 -0
  440. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/ui/components/report_view/report_view.js +21 -0
  441. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/ui/components/request_link_icon/request_link_icon.js +8 -0
  442. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/ui/components/settings/settings.js +16 -0
  443. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/ui/components/split_view/split_view.js +9 -0
  444. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/ui/components/srgb_overlay/srgb_overlay.js +6 -0
  445. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/ui/components/suggestion_input/suggestion_input.js +29 -0
  446. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/ui/components/switch/switch.js +10 -0
  447. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/ui/components/text_editor/text_editor.js +1 -0
  448. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/ui/components/text_prompt/text_prompt.js +3 -0
  449. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/ui/components/tree_outline/tree_outline.js +30 -0
  450. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/ui/legacy/components/color_picker/color_picker.js +1 -0
  451. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/ui/legacy/components/cookie_table/cookie_table.js +1 -0
  452. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/ui/legacy/components/data_grid/data_grid.js +1 -0
  453. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/ui/legacy/components/inline_editor/inline_editor.js +46 -0
  454. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/ui/legacy/components/object_ui/object_ui.js +9 -0
  455. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/ui/legacy/components/perf_ui/perf_ui.js +59 -0
  456. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/ui/legacy/components/quick_open/quick_open.js +1 -0
  457. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/ui/legacy/components/source_frame/source_frame.js +1 -0
  458. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/ui/legacy/components/utils/utils.js +1 -0
  459. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/ui/legacy/legacy.js +3 -0
  460. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/ui/legacy/theme_support/theme_support.js +1 -0
  461. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/ui/lit-html/lit-html.js +1 -0
  462. package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/ui/visual_logging/visual_logging.js +1 -0
  463. package/download/googlechrome.github.io/lighthouse/scorecalc/calc.js +838 -0
  464. package/download/googlechrome.github.io/lighthouse/scorecalc/index.html +78 -0
  465. package/download/googlechrome.github.io/lighthouse/scorecalc/style.css +554 -0
  466. package/download/wicg.github.io/attribution-reporting-api/validate-headers/index.html +104 -0
  467. package/download/wicg.github.io/attribution-reporting-api/validate-headers.js +1 -0
  468. package/package.json +31 -0
@@ -0,0 +1,64 @@
1
+ import*as e from"../../core/common/common.js";import*as t from"../../core/host/host.js";import*as n from"../../core/i18n/i18n.js";import*as r from"../../core/sdk/sdk.js";import*as i from"../../models/emulation/emulation.js";import*as o from"../emulation/emulation.js";import*as a from"../../ui/legacy/legacy.js";import*as s from"../../ui/visual_logging/visual_logging.js";import*as l from"../../core/platform/platform.js";import*as c from"../../models/workspace/workspace.js";import*as h from"../../third_party/lighthouse/report/report.js";import*as d from"../../ui/legacy/components/utils/utils.js";import*as p from"../../ui/legacy/theme_support/theme_support.js";import"../../ui/components/buttons/buttons.js";var g,u;g=self,u=function(){var e=(()=>{var e=Object.defineProperty,t=Object.getOwnPropertyDescriptor,n=Object.getOwnPropertyNames,r=Object.prototype.hasOwnProperty,i={};((t,n)=>{for(var r in n)e(t,r,{get:n[r],enumerable:!0})})(i,{ReportGenerator:()=>s});var o,a={REPORT_TEMPLATE:'\x3c!--\n@license\nCopyright 2018 Google LLC\nSPDX-License-Identifier: Apache-2.0\n--\x3e\n<!doctype html>\n<html lang="en">\n<head>\n <meta charset="utf-8">\n <meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1">\n <link rel="icon" href=\'data:image/svg+xml;utf8,<svg fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48"><path d="m14 7 10-7 10 7v10h5v7h-5l5 24H9l5-24H9v-7h5V7Z" fill="%23F63"/><path d="M31.561 24H14l-1.689 8.105L31.561 24ZM18.983 48H9l1.022-4.907L35.723 32.27l1.663 7.98L18.983 48Z" fill="%23FFA385"/><path fill="%23FF3" d="M20.5 10h7v7h-7z"/></svg>\'>\n <title>Lighthouse Report</title>\n <style>body {margin: 0}</style>\n</head>\n<body>\n <noscript>Lighthouse report requires JavaScript. Please enable.</noscript>\n\n <div id="lh-log"></div>\n\n <script>window.__LIGHTHOUSE_JSON__ = %%LIGHTHOUSE_JSON%%;<\/script>\n <script>%%LIGHTHOUSE_JAVASCRIPT%%\n __initLighthouseReport__();\n //# sourceURL=compiled-reportrenderer.js\n <\/script>\n <script>console.log(\'window.__LIGHTHOUSE_JSON__\', __LIGHTHOUSE_JSON__);<\/script>\n</body>\n</html>\n',REPORT_JAVASCRIPT:'"use strict";(()=>{function e({median:e,p10:t},n){if(e<=0)throw new Error("median must be greater than zero");if(t<=0)throw new Error("p10 must be greater than zero");if(t>=e)throw new Error("p10 must be less than the median");if(n<=0)return 1;let r,i=Math.max(Number.MIN_VALUE,n/e),a=Math.log(i),o=Math.max(Number.MIN_VALUE,t/e),l=(1-function(e){let t=Math.sign(e),n=1/(1+.3275911*(e=Math.abs(e)));return t*(1-n*(.254829592+n*(n*(1.421413741+n*(1.061405429*n-1.453152027))-.284496736))*Math.exp(-e*e))}(.9061938024368232*a/-Math.log(o)))/2;return r=n<=t?Math.max(.9,Math.min(1,l)):n<=e?Math.max(.5,Math.min(.8999999999999999,l)):Math.max(0,Math.min(.49999999999999994,l)),r}var t="…",n={PASS:{label:"pass",minScore:.9},AVERAGE:{label:"average",minScore:.5},FAIL:{label:"fail"},ERROR:{label:"error"}},r=["com","co","gov","edu","ac","org","go","gob","or","net","in","ne","nic","gouv","web","spb","blog","jus","kiev","mil","wi","qc","ca","bel","on"],i=class i{static get RATINGS(){return n}static get PASS_THRESHOLD(){return.9}static get MS_DISPLAY_VALUE(){return"%10d ms"}static getFinalDisplayedUrl(e){if(e.finalDisplayedUrl)return e.finalDisplayedUrl;if(e.finalUrl)return e.finalUrl;throw new Error("Could not determine final displayed URL")}static getMainDocumentUrl(e){return e.mainDocumentUrl||e.finalUrl}static getFullPageScreenshot(e){return e.fullPageScreenshot?e.fullPageScreenshot:e.audits["full-page-screenshot"]?.details}static getEntityFromUrl(e,t){return t&&t.find((t=>t.origins.find((t=>e.startsWith(t)))))||i.getPseudoRootDomain(e)}static splitMarkdownCodeSpans(e){let t=[],n=e.split(/`(.*?)`/g);for(let e=0;e<n.length;e++){let r=n[e];if(!r)continue;let i=e%2!=0;t.push({isCode:i,text:r})}return t}static splitMarkdownLink(e){let t=[],n=e.split(/\\[([^\\]]+?)\\]\\((https?:\\/\\/.*?)\\)/g);for(;n.length;){let[e,r,i]=n.splice(0,3);e&&t.push({isLink:!1,text:e}),r&&i&&t.push({isLink:!0,text:r,linkHref:i})}return t}static truncate(e,t,n="…"){if(e.length<=t)return e;let r=new Intl.Segmenter(void 0,{granularity:"grapheme"}).segment(e)[Symbol.iterator](),i=0;for(let a=0;a<=t-n.length;a++){let t=r.next();if(t.done)return e;i=t.value.index}for(let t=0;t<n.length;t++)if(r.next().done)return e;return e.slice(0,i)+n}static getURLDisplayName(e,n){let r,i=void 0!==(n=n||{numPathParts:void 0,preserveQuery:void 0,preserveHost:void 0}).numPathParts?n.numPathParts:2,a=void 0===n.preserveQuery||n.preserveQuery,o=n.preserveHost||!1;if("about:"===e.protocol||"data:"===e.protocol)r=e.href;else{r=e.pathname;let n=r.split("/").filter((e=>e.length));i&&n.length>i&&(r=t+n.slice(-1*i).join("/")),o&&(r=`${e.host}/${r.replace(/^\\//,"")}`),a&&(r=`${r}${e.search}`)}if("data:"!==e.protocol&&(r=r.slice(0,200),r=r.replace(/([a-f0-9]{7})[a-f0-9]{13}[a-f0-9]*/g,`$1${t}`),r=r.replace(/([a-zA-Z0-9-_]{9})(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])[a-zA-Z0-9-_]{10,}/g,`$1${t}`),r=r.replace(/(\\d{3})\\d{6,}/g,`$1${t}`),r=r.replace(/\\u2026+/g,t),r.length>64&&r.includes("?")&&(r=r.replace(/\\?([^=]*)(=)?.*/,`?$1$2${t}`),r.length>64&&(r=r.replace(/\\?.*/,`?${t}`)))),r.length>64){let e=r.lastIndexOf(".");r=e>=0?r.slice(0,63-(r.length-e))+`${t}${r.slice(e)}`:r.slice(0,63)+t}return r}static getChromeExtensionOrigin(e){let t=new URL(e);return t.protocol+"//"+t.host}static parseURL(e){let t=new URL(e);return{file:i.getURLDisplayName(t),hostname:t.hostname,origin:"chrome-extension:"===t.protocol?i.getChromeExtensionOrigin(e):t.origin}}static createOrReturnURL(e){return e instanceof URL?e:new URL(e)}static getPseudoTld(e){let t=e.split(".").slice(-2);return r.includes(t[0])?`.${t.join(".")}`:`.${t[t.length-1]}`}static getPseudoRootDomain(e){let t=i.createOrReturnURL(e).hostname,n=i.getPseudoTld(t).split(".");return t.split(".").slice(-n.length).join(".")}static filterRelevantLines(e,t,n){if(0===t.length)return e.slice(0,2*n+1);let r=new Set;return(t=t.sort(((e,t)=>(e.lineNumber||0)-(t.lineNumber||0)))).forEach((({lineNumber:e})=>{let t=e-n,i=e+n;for(;t<1;)t++,i++;r.has(t-3-1)&&(t-=3);for(let e=t;e<=i;e++){let t=e;r.add(t)}})),e.filter((e=>r.has(e.lineNumber)))}static computeLogNormalScore(t,n){let r=e(t,n);return r>.9&&(r+=.05*(r-.9)),Math.floor(100*r)/100}};var a=class{constructor(e,t){this._document=e,this._lighthouseChannel="unknown",this._componentCache=new Map,this.rootEl=t}createElement(e,t){let n=this._document.createElement(e);if(t)for(let e of t.split(/\\s+/))e&&n.classList.add(e);return n}createElementNS(e,t,n){let r=this._document.createElementNS(e,t);if(n)for(let e of n.split(/\\s+/))e&&r.classList.add(e);return r}createSVGElement(e,t){return this._document.createElementNS("http://www.w3.org/2000/svg",e,t)}createFragment(){return this._document.createDocumentFragment()}createTextNode(e){return this._document.createTextNode(e)}createChildOf(e,t,n){let r=this.createElement(t,n);return e.append(r),r}createComponent(e){let t=this._componentCache.get(e);if(t){let e=t.cloneNode(!0);return this.findAll("style",e).forEach((e=>e.remove())),e}return t=function(e,t){switch(t){case"3pFilter":return function(e){let t=e.createFragment(),n=e.createElement("style");n.append("\\n .lh-3p-filter {\\n color: var(--color-gray-600);\\n float: right;\\n padding: 6px var(--stackpack-padding-horizontal);\\n }\\n .lh-3p-filter-label, .lh-3p-filter-input {\\n vertical-align: middle;\\n user-select: none;\\n }\\n .lh-3p-filter-input:disabled + .lh-3p-ui-string {\\n text-decoration: line-through;\\n }\\n "),t.append(n);let r=e.createElement("div","lh-3p-filter"),i=e.createElement("label","lh-3p-filter-label"),a=e.createElement("input","lh-3p-filter-input");a.setAttribute("type","checkbox"),a.setAttribute("checked","");let o=e.createElement("span","lh-3p-ui-string");o.append("Show 3rd party resources");let l=e.createElement("span","lh-3p-filter-count");return i.append(" ",a," ",o," (",l,") "),r.append(" ",i," "),t.append(r),t}(e);case"audit":return function(e){let t=e.createFragment(),n=e.createElement("div","lh-audit"),r=e.createElement("details","lh-expandable-details"),i=e.createElement("summary"),a=e.createElement("div","lh-audit__header lh-expandable-details__summary"),o=e.createElement("span","lh-audit__score-icon"),l=e.createElement("span","lh-audit__title-and-text"),s=e.createElement("span","lh-audit__title"),c=e.createElement("span","lh-audit__display-text");l.append(" ",s," ",c," ");let d=e.createElement("div","lh-chevron-container");a.append(" ",o," ",l," ",d," "),i.append(" ",a," ");let h=e.createElement("div","lh-audit__description"),p=e.createElement("div","lh-audit__stackpacks");return r.append(" ",i," ",h," ",p," "),n.append(" ",r," "),t.append(n),t}(e);case"categoryHeader":return function(e){let t=e.createFragment(),n=e.createElement("div","lh-category-header"),r=e.createElement("div","lh-score__gauge");r.setAttribute("role","heading"),r.setAttribute("aria-level","2");let i=e.createElement("div","lh-category-header__description");return n.append(" ",r," ",i," "),t.append(n),t}(e);case"chevron":return function(e){let t=e.createFragment(),n=e.createElementNS("http://www.w3.org/2000/svg","svg","lh-chevron");n.setAttribute("viewBox","0 0 100 100");let r=e.createElementNS("http://www.w3.org/2000/svg","g","lh-chevron__lines"),i=e.createElementNS("http://www.w3.org/2000/svg","path","lh-chevron__line lh-chevron__line-left");i.setAttribute("d","M10 50h40");let a=e.createElementNS("http://www.w3.org/2000/svg","path","lh-chevron__line lh-chevron__line-right");return a.setAttribute("d","M90 50H50"),r.append(" ",i," ",a," "),n.append(" ",r," "),t.append(n),t}(e);case"clump":return function(e){let t=e.createFragment(),n=e.createElement("div","lh-audit-group"),r=e.createElement("details","lh-clump"),i=e.createElement("summary"),a=e.createElement("div","lh-audit-group__summary"),o=e.createElement("div","lh-audit-group__header"),l=e.createElement("span","lh-audit-group__title"),s=e.createElement("span","lh-audit-group__itemcount");o.append(" ",l," ",s," "," "," ");let c=e.createElement("div","lh-clump-toggle"),d=e.createElement("span","lh-clump-toggletext--show"),h=e.createElement("span","lh-clump-toggletext--hide");return c.append(" ",d," ",h," "),a.append(" ",o," ",c," "),i.append(" ",a," "),r.append(" ",i," "),n.append(" "," ",r," "),t.append(n),t}(e);case"crc":return function(e){let t=e.createFragment(),n=e.createElement("div","lh-crc-container"),r=e.createElement("style");r.append(\'\\n .lh-crc .lh-tree-marker {\\n width: 12px;\\n height: 26px;\\n display: block;\\n float: left;\\n background-position: top left;\\n }\\n .lh-crc .lh-horiz-down {\\n background: url(\\\'data:image/svg+xml;utf8,<svg width="16" height="26" viewBox="0 0 16 26" xmlns="http://www.w3.org/2000/svg"><g fill="%23D8D8D8" fill-rule="evenodd"><path d="M16 12v2H-2v-2z"/><path d="M9 12v14H7V12z"/></g></svg>\\\');\\n }\\n .lh-crc .lh-right {\\n background: url(\\\'data:image/svg+xml;utf8,<svg width="16" height="26" viewBox="0 0 16 26" xmlns="http://www.w3.org/2000/svg"><path d="M16 12v2H0v-2z" fill="%23D8D8D8" fill-rule="evenodd"/></svg>\\\');\\n }\\n .lh-crc .lh-up-right {\\n background: url(\\\'data:image/svg+xml;utf8,<svg width="16" height="26" viewBox="0 0 16 26" xmlns="http://www.w3.org/2000/svg"><path d="M7 0h2v14H7zm2 12h7v2H9z" fill="%23D8D8D8" fill-rule="evenodd"/></svg>\\\');\\n }\\n .lh-crc .lh-vert-right {\\n background: url(\\\'data:image/svg+xml;utf8,<svg width="16" height="26" viewBox="0 0 16 26" xmlns="http://www.w3.org/2000/svg"><path d="M7 0h2v27H7zm2 12h7v2H9z" fill="%23D8D8D8" fill-rule="evenodd"/></svg>\\\');\\n }\\n .lh-crc .lh-vert {\\n background: url(\\\'data:image/svg+xml;utf8,<svg width="16" height="26" viewBox="0 0 16 26" xmlns="http://www.w3.org/2000/svg"><path d="M7 0h2v26H7z" fill="%23D8D8D8" fill-rule="evenodd"/></svg>\\\');\\n }\\n .lh-crc .lh-crc-tree {\\n font-size: 14px;\\n width: 100%;\\n overflow-x: auto;\\n }\\n .lh-crc .lh-crc-node {\\n height: 26px;\\n line-height: 26px;\\n white-space: nowrap;\\n }\\n .lh-crc .lh-crc-node__tree-value {\\n margin-left: 10px;\\n }\\n .lh-crc .lh-crc-node__tree-value div {\\n display: inline;\\n }\\n .lh-crc .lh-crc-node__chain-duration {\\n font-weight: 700;\\n }\\n .lh-crc .lh-crc-initial-nav {\\n color: #595959;\\n font-style: italic;\\n }\\n .lh-crc__summary-value {\\n margin-bottom: 10px;\\n }\\n \');let i=e.createElement("div"),a=e.createElement("div","lh-crc__summary-value"),o=e.createElement("span","lh-crc__longest_duration_label"),l=e.createElement("b","lh-crc__longest_duration");a.append(" ",o," ",l," "),i.append(" ",a," ");let s=e.createElement("div","lh-crc"),c=e.createElement("div","lh-crc-initial-nav");return s.append(" ",c," "," "),n.append(" ",r," ",i," ",s," "),t.append(n),t}(e);case"crcChain":return function(e){let t=e.createFragment(),n=e.createElement("div","lh-crc-node"),r=e.createElement("span","lh-crc-node__tree-marker"),i=e.createElement("span","lh-crc-node__tree-value");return n.append(" ",r," ",i," "),t.append(n),t}(e);case"elementScreenshot":return function(e){let t=e.createFragment(),n=e.createElement("div","lh-element-screenshot"),r=e.createElement("div","lh-element-screenshot__content"),i=e.createElement("div","lh-element-screenshot__image"),a=e.createElement("div","lh-element-screenshot__mask"),o=e.createElementNS("http://www.w3.org/2000/svg","svg");o.setAttribute("height","0"),o.setAttribute("width","0");let l=e.createElementNS("http://www.w3.org/2000/svg","defs"),s=e.createElementNS("http://www.w3.org/2000/svg","clipPath");s.setAttribute("clipPathUnits","objectBoundingBox"),l.append(" ",s," "," "),o.append(" ",l," "),a.append(" ",o," ");let c=e.createElement("div","lh-element-screenshot__element-marker");return i.append(" ",a," ",c," "),r.append(" ",i," "),n.append(" ",r," "),t.append(n),t}(e);case"explodeyGauge":return function(e){let t=e.createFragment(),n=e.createElement("div","lh-exp-gauge-component"),r=e.createElement("div","lh-exp-gauge__wrapper");r.setAttribute("target","_blank");let i=e.createElement("div","lh-exp-gauge__svg-wrapper"),a=e.createElementNS("http://www.w3.org/2000/svg","svg","lh-exp-gauge"),o=e.createElementNS("http://www.w3.org/2000/svg","g","lh-exp-gauge__inner"),l=e.createElementNS("http://www.w3.org/2000/svg","circle","lh-exp-gauge__bg"),s=e.createElementNS("http://www.w3.org/2000/svg","circle","lh-exp-gauge__base lh-exp-gauge--faded"),c=e.createElementNS("http://www.w3.org/2000/svg","circle","lh-exp-gauge__arc"),d=e.createElementNS("http://www.w3.org/2000/svg","text","lh-exp-gauge__percentage");o.append(" ",l," ",s," ",c," ",d," ");let h=e.createElementNS("http://www.w3.org/2000/svg","g","lh-exp-gauge__outer"),p=e.createElementNS("http://www.w3.org/2000/svg","circle","lh-cover");h.append(" ",p," ");let g=e.createElementNS("http://www.w3.org/2000/svg","text","lh-exp-gauge__label");return g.setAttribute("text-anchor","middle"),g.setAttribute("x","0"),g.setAttribute("y","60"),a.append(" ",o," ",h," ",g," "),i.append(" ",a," "),r.append(" ",i," "),n.append(" ",r," "),t.append(n),t}(e);case"footer":return function(e){let t=e.createFragment(),n=e.createElement("style");n.append("\\n .lh-footer {\\n padding: var(--footer-padding-vertical) calc(var(--default-padding) * 2);\\n max-width: var(--report-content-max-width);\\n margin: 0 auto;\\n }\\n .lh-footer .lh-generated {\\n text-align: center;\\n }\\n "),t.append(n);let r=e.createElement("footer","lh-footer"),i=e.createElement("ul","lh-meta__items");i.append(" ");let a=e.createElement("div","lh-generated"),o=e.createElement("b");o.append("Lighthouse");let l=e.createElement("span","lh-footer__version"),s=e.createElement("a","lh-footer__version_issue");return s.setAttribute("href","https://github.com/GoogleChrome/Lighthouse/issues"),s.setAttribute("target","_blank"),s.setAttribute("rel","noopener"),s.append("File an issue"),a.append(" "," Generated by ",o," ",l," | ",s," "),r.append(" ",i," ",a," "),t.append(r),t}(e);case"fraction":return function(e){let t=e.createFragment(),n=e.createElement("a","lh-fraction__wrapper"),r=e.createElement("div","lh-fraction__content-wrapper"),i=e.createElement("div","lh-fraction__content"),a=e.createElement("div","lh-fraction__background");i.append(" ",a," "),r.append(" ",i," ");let o=e.createElement("div","lh-fraction__label");return n.append(" ",r," ",o," "),t.append(n),t}(e);case"gauge":return function(e){let t=e.createFragment(),n=e.createElement("a","lh-gauge__wrapper"),r=e.createElement("div","lh-gauge__svg-wrapper"),i=e.createElementNS("http://www.w3.org/2000/svg","svg","lh-gauge");i.setAttribute("viewBox","0 0 120 120");let a=e.createElementNS("http://www.w3.org/2000/svg","circle","lh-gauge-base");a.setAttribute("r","56"),a.setAttribute("cx","60"),a.setAttribute("cy","60"),a.setAttribute("stroke-width","8");let o=e.createElementNS("http://www.w3.org/2000/svg","circle","lh-gauge-arc");o.setAttribute("r","56"),o.setAttribute("cx","60"),o.setAttribute("cy","60"),o.setAttribute("stroke-width","8"),i.append(" ",a," ",o," "),r.append(" ",i," ");let l=e.createElement("div","lh-gauge__percentage"),s=e.createElement("div","lh-gauge__label");return n.append(" "," ",r," ",l," "," ",s," "),t.append(n),t}(e);case"heading":return function(e){let t=e.createFragment(),n=e.createElement("style");n.append("\\n /* CSS Fireworks. Originally by Eddie Lin\\n https://codepen.io/paulirish/pen/yEVMbP\\n */\\n .lh-pyro {\\n display: none;\\n z-index: 1;\\n pointer-events: none;\\n }\\n .lh-score100 .lh-pyro {\\n display: block;\\n }\\n .lh-score100 .lh-lighthouse stop:first-child {\\n stop-color: hsla(200, 12%, 95%, 0);\\n }\\n .lh-score100 .lh-lighthouse stop:last-child {\\n stop-color: hsla(65, 81%, 76%, 1);\\n }\\n\\n .lh-pyro > .lh-pyro-before, .lh-pyro > .lh-pyro-after {\\n position: absolute;\\n width: 5px;\\n height: 5px;\\n border-radius: 2.5px;\\n box-shadow: 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff;\\n animation: 1s bang ease-out infinite backwards, 1s gravity ease-in infinite backwards, 5s position linear infinite backwards;\\n animation-delay: 1s, 1s, 1s;\\n }\\n\\n .lh-pyro > .lh-pyro-after {\\n animation-delay: 2.25s, 2.25s, 2.25s;\\n animation-duration: 1.25s, 1.25s, 6.25s;\\n }\\n\\n @keyframes bang {\\n to {\\n opacity: 1;\\n box-shadow: -70px -115.67px #47ebbc, -28px -99.67px #eb47a4, 58px -31.67px #7eeb47, 13px -141.67px #eb47c5, -19px 6.33px #7347eb, -2px -74.67px #ebd247, 24px -151.67px #eb47e0, 57px -138.67px #b4eb47, -51px -104.67px #479eeb, 62px 8.33px #ebcf47, -93px 0.33px #d547eb, -16px -118.67px #47bfeb, 53px -84.67px #47eb83, 66px -57.67px #eb47bf, -93px -65.67px #91eb47, 30px -13.67px #86eb47, -2px -59.67px #83eb47, -44px 1.33px #eb47eb, 61px -58.67px #47eb73, 5px -22.67px #47e8eb, -66px -28.67px #ebe247, 42px -123.67px #eb5547, -75px 26.33px #7beb47, 15px -52.67px #a147eb, 36px -51.67px #eb8347, -38px -12.67px #eb5547, -46px -59.67px #47eb81, 78px -114.67px #eb47ba, 15px -156.67px #eb47bf, -36px 1.33px #eb4783, -72px -86.67px #eba147, 31px -46.67px #ebe247, -68px 29.33px #47e2eb, -55px 19.33px #ebe047, -56px 27.33px #4776eb, -13px -91.67px #eb5547, -47px -138.67px #47ebc7, -18px -96.67px #eb47ac, 11px -88.67px #4783eb, -67px -28.67px #47baeb, 53px 10.33px #ba47eb, 11px 19.33px #5247eb, -5px -11.67px #eb4791, -68px -4.67px #47eba7, 95px -37.67px #eb478b, -67px -162.67px #eb5d47, -54px -120.67px #eb6847, 49px -12.67px #ebe047, 88px 8.33px #47ebda, 97px 33.33px #eb8147, 6px -71.67px #ebbc47;\\n }\\n }\\n @keyframes gravity {\\n from {\\n opacity: 1;\\n }\\n to {\\n transform: translateY(80px);\\n opacity: 0;\\n }\\n }\\n @keyframes position {\\n 0%, 19.9% {\\n margin-top: 4%;\\n margin-left: 47%;\\n }\\n 20%, 39.9% {\\n margin-top: 7%;\\n margin-left: 30%;\\n }\\n 40%, 59.9% {\\n margin-top: 6%;\\n margin-left: 70%;\\n }\\n 60%, 79.9% {\\n margin-top: 3%;\\n margin-left: 20%;\\n }\\n 80%, 99.9% {\\n margin-top: 3%;\\n margin-left: 80%;\\n }\\n }\\n "),t.append(n);let r=e.createElement("div","lh-header-container"),i=e.createElement("div","lh-scores-wrapper-placeholder");return r.append(" ",i," "),t.append(r),t}(e);case"metric":return function(e){let t=e.createFragment(),n=e.createElement("div","lh-metric"),r=e.createElement("div","lh-metric__innerwrap"),i=e.createElement("div","lh-metric__icon"),a=e.createElement("span","lh-metric__title"),o=e.createElement("div","lh-metric__value"),l=e.createElement("div","lh-metric__description");return r.append(" ",i," ",a," ",o," ",l," "),n.append(" ",r," "),t.append(n),t}(e);case"scorescale":return function(e){let t=e.createFragment(),n=e.createElement("div","lh-scorescale"),r=e.createElement("span","lh-scorescale-range lh-scorescale-range--fail");r.append("0–49");let i=e.createElement("span","lh-scorescale-range lh-scorescale-range--average");i.append("50–89");let a=e.createElement("span","lh-scorescale-range lh-scorescale-range--pass");return a.append("90–100"),n.append(" ",r," ",i," ",a," "),t.append(n),t}(e);case"scoresWrapper":return function(e){let t=e.createFragment(),n=e.createElement("style");n.append("\\n .lh-scores-container {\\n display: flex;\\n flex-direction: column;\\n padding: var(--default-padding) 0;\\n position: relative;\\n width: 100%;\\n }\\n\\n .lh-sticky-header {\\n --gauge-circle-size: var(--gauge-circle-size-sm);\\n --plugin-badge-size: 16px;\\n --plugin-icon-size: 75%;\\n --gauge-wrapper-width: 60px;\\n --gauge-percentage-font-size: 13px;\\n position: fixed;\\n left: 0;\\n right: 0;\\n top: var(--topbar-height);\\n font-weight: 500;\\n display: none;\\n justify-content: center;\\n background-color: var(--sticky-header-background-color);\\n border-bottom: 1px solid var(--color-gray-200);\\n padding-top: var(--score-container-padding);\\n padding-bottom: 4px;\\n z-index: 2;\\n pointer-events: none;\\n }\\n\\n .lh-devtools .lh-sticky-header {\\n /* The report within DevTools is placed in a container with overflow, which changes the placement of this header unless we change `position` to `sticky.` */\\n position: sticky;\\n }\\n\\n .lh-sticky-header--visible {\\n display: grid;\\n grid-auto-flow: column;\\n pointer-events: auto;\\n }\\n\\n /* Disable the gauge arc animation for the sticky header, so toggling display: none\\n does not play the animation. */\\n .lh-sticky-header .lh-gauge-arc {\\n animation: none;\\n }\\n\\n .lh-sticky-header .lh-gauge__label,\\n .lh-sticky-header .lh-fraction__label {\\n display: none;\\n }\\n\\n .lh-highlighter {\\n width: var(--gauge-wrapper-width);\\n height: 1px;\\n background-color: var(--highlighter-background-color);\\n /* Position at bottom of first gauge in sticky header. */\\n position: absolute;\\n grid-column: 1;\\n bottom: -1px;\\n left: 0px;\\n right: 0px;\\n }\\n "),t.append(n);let r=e.createElement("div","lh-scores-wrapper"),i=e.createElement("div","lh-scores-container"),a=e.createElement("div","lh-pyro"),o=e.createElement("div","lh-pyro-before"),l=e.createElement("div","lh-pyro-after");return a.append(" ",o," ",l," "),i.append(" ",a," "),r.append(" ",i," "),t.append(r),t}(e);case"snippet":return function(e){let t=e.createFragment(),n=e.createElement("div","lh-snippet"),r=e.createElement("style");return r.append(\'\\n :root {\\n --snippet-highlight-light: #fbf1f2;\\n --snippet-highlight-dark: #ffd6d8;\\n }\\n\\n .lh-snippet__header {\\n position: relative;\\n overflow: hidden;\\n padding: 10px;\\n border-bottom: none;\\n color: var(--snippet-color);\\n background-color: var(--snippet-background-color);\\n border: 1px solid var(--report-border-color-secondary);\\n }\\n .lh-snippet__title {\\n font-weight: bold;\\n float: left;\\n }\\n .lh-snippet__node {\\n float: left;\\n margin-left: 4px;\\n }\\n .lh-snippet__toggle-expand {\\n padding: 1px 7px;\\n margin-top: -1px;\\n margin-right: -7px;\\n float: right;\\n background: transparent;\\n border: none;\\n cursor: pointer;\\n font-size: 14px;\\n color: #0c50c7;\\n }\\n\\n .lh-snippet__snippet {\\n overflow: auto;\\n border: 1px solid var(--report-border-color-secondary);\\n }\\n /* Container needed so that all children grow to the width of the scroll container */\\n .lh-snippet__snippet-inner {\\n display: inline-block;\\n min-width: 100%;\\n }\\n\\n .lh-snippet:not(.lh-snippet--expanded) .lh-snippet__show-if-expanded {\\n display: none;\\n }\\n .lh-snippet.lh-snippet--expanded .lh-snippet__show-if-collapsed {\\n display: none;\\n }\\n\\n .lh-snippet__line {\\n background: white;\\n white-space: pre;\\n display: flex;\\n }\\n .lh-snippet__line:not(.lh-snippet__line--message):first-child {\\n padding-top: 4px;\\n }\\n .lh-snippet__line:not(.lh-snippet__line--message):last-child {\\n padding-bottom: 4px;\\n }\\n .lh-snippet__line--content-highlighted {\\n background: var(--snippet-highlight-dark);\\n }\\n .lh-snippet__line--message {\\n background: var(--snippet-highlight-light);\\n }\\n .lh-snippet__line--message .lh-snippet__line-number {\\n padding-top: 10px;\\n padding-bottom: 10px;\\n }\\n .lh-snippet__line--message code {\\n padding: 10px;\\n padding-left: 5px;\\n color: var(--color-fail);\\n font-family: var(--report-font-family);\\n }\\n .lh-snippet__line--message code {\\n white-space: normal;\\n }\\n .lh-snippet__line-icon {\\n padding-top: 10px;\\n display: none;\\n }\\n .lh-snippet__line--message .lh-snippet__line-icon {\\n display: block;\\n }\\n .lh-snippet__line-icon:before {\\n content: "";\\n display: inline-block;\\n vertical-align: middle;\\n margin-right: 4px;\\n width: var(--score-icon-size);\\n height: var(--score-icon-size);\\n background-image: var(--fail-icon-url);\\n }\\n .lh-snippet__line-number {\\n flex-shrink: 0;\\n width: 40px;\\n text-align: right;\\n font-family: monospace;\\n padding-right: 5px;\\n margin-right: 5px;\\n color: var(--color-gray-600);\\n user-select: none;\\n }\\n \'),n.append(" ",r," "),t.append(n),t}(e);case"snippetContent":return function(e){let t=e.createFragment(),n=e.createElement("div","lh-snippet__snippet"),r=e.createElement("div","lh-snippet__snippet-inner");return n.append(" ",r," "),t.append(n),t}(e);case"snippetHeader":return function(e){let t=e.createFragment(),n=e.createElement("div","lh-snippet__header"),r=e.createElement("div","lh-snippet__title"),i=e.createElement("div","lh-snippet__node"),a=e.createElement("button","lh-snippet__toggle-expand"),o=e.createElement("span","lh-snippet__btn-label-collapse lh-snippet__show-if-expanded"),l=e.createElement("span","lh-snippet__btn-label-expand lh-snippet__show-if-collapsed");return a.append(" ",o," ",l," "),n.append(" ",r," ",i," ",a," "),t.append(n),t}(e);case"snippetLine":return function(e){let t=e.createFragment(),n=e.createElement("div","lh-snippet__line"),r=e.createElement("div","lh-snippet__line-number"),i=e.createElement("div","lh-snippet__line-icon"),a=e.createElement("code");return n.append(" ",r," ",i," ",a," "),t.append(n),t}(e);case"styles":return function(e){let t=e.createFragment(),n=e.createElement("style");return n.append(\'/**\\n * @license\\n * Copyright 2017 Google LLC\\n * SPDX-License-Identifier: Apache-2.0\\n */\\n\\n/*\\n Naming convention:\\n\\n If a variable is used for a specific component: --{component}-{property name}-{modifier}\\n\\n Both {component} and {property name} should be kebab-case. If the target is the entire page,\\n use \\\'report\\\' for the component. The property name should not be abbreviated. Use the\\n property name the variable is intended for - if it\\\'s used for multiple, a common descriptor\\n is fine (ex: \\\'size\\\' for a variable applied to \\\'width\\\' and \\\'height\\\'). If a variable is shared\\n across multiple components, either create more variables or just drop the "{component}-"\\n part of the name. Append any modifiers at the end (ex: \\\'big\\\', \\\'dark\\\').\\n\\n For colors: --color-{hue}-{intensity}\\n\\n {intensity} is the Material Design tag - 700, A700, etc.\\n*/\\n.lh-vars {\\n /* Palette using Material Design Colors\\n * https://www.materialui.co/colors */\\n --color-amber-50: #FFF8E1;\\n --color-blue-200: #90CAF9;\\n --color-blue-900: #0D47A1;\\n --color-blue-A700: #2962FF;\\n --color-blue-primary: #06f;\\n --color-cyan-500: #00BCD4;\\n --color-gray-100: #F5F5F5;\\n --color-gray-300: #CFCFCF;\\n --color-gray-200: #E0E0E0;\\n --color-gray-400: #BDBDBD;\\n --color-gray-50: #FAFAFA;\\n --color-gray-500: #9E9E9E;\\n --color-gray-600: #757575;\\n --color-gray-700: #616161;\\n --color-gray-800: #424242;\\n --color-gray-900: #212121;\\n --color-gray: #000000;\\n --color-green-700: #080;\\n --color-green: #0c6;\\n --color-lime-400: #D3E156;\\n --color-orange-50: #FFF3E0;\\n --color-orange-700: #C33300;\\n --color-orange: #fa3;\\n --color-red-700: #c00;\\n --color-red: #f33;\\n --color-teal-600: #00897B;\\n --color-white: #FFFFFF;\\n\\n /* Context-specific colors */\\n --color-average-secondary: var(--color-orange-700);\\n --color-average: var(--color-orange);\\n --color-fail-secondary: var(--color-red-700);\\n --color-fail: var(--color-red);\\n --color-hover: var(--color-gray-50);\\n --color-informative: var(--color-blue-900);\\n --color-pass-secondary: var(--color-green-700);\\n --color-pass: var(--color-green);\\n --color-not-applicable: var(--color-gray-600);\\n\\n /* Component variables */\\n --audit-description-padding-left: calc(var(--score-icon-size) + var(--score-icon-margin-left) + var(--score-icon-margin-right));\\n --audit-explanation-line-height: 16px;\\n --audit-group-margin-bottom: calc(var(--default-padding) * 6);\\n --audit-group-padding-vertical: 8px;\\n --audit-margin-horizontal: 5px;\\n --audit-padding-vertical: 8px;\\n --category-padding: calc(var(--default-padding) * 6) var(--edge-gap-padding) calc(var(--default-padding) * 4);\\n --chevron-line-stroke: var(--color-gray-600);\\n --chevron-size: 12px;\\n --default-padding: 8px;\\n --edge-gap-padding: calc(var(--default-padding) * 4);\\n --env-item-background-color: var(--color-gray-100);\\n --env-item-font-size: 28px;\\n --env-item-line-height: 36px;\\n --env-item-padding: 10px 0px;\\n --env-name-min-width: 220px;\\n --footer-padding-vertical: 16px;\\n --gauge-circle-size-big: 96px;\\n --gauge-circle-size: 48px;\\n --gauge-circle-size-sm: 32px;\\n --gauge-label-font-size-big: 18px;\\n --gauge-label-font-size: var(--report-font-size-secondary);\\n --gauge-label-line-height-big: 24px;\\n --gauge-label-line-height: var(--report-line-height-secondary);\\n --gauge-percentage-font-size-big: 38px;\\n --gauge-percentage-font-size: var(--report-font-size-secondary);\\n --gauge-wrapper-width: 120px;\\n --header-line-height: 24px;\\n --highlighter-background-color: var(--report-text-color);\\n --icon-square-size: calc(var(--score-icon-size) * 0.88);\\n --image-preview-size: 48px;\\n --link-color: var(--color-blue-primary);\\n --locale-selector-background-color: var(--color-white);\\n --metric-toggle-lines-fill: #7F7F7F;\\n --metric-value-font-size: calc(var(--report-font-size) * 1.8);\\n --metrics-toggle-background-color: var(--color-gray-200);\\n --plugin-badge-background-color: var(--color-white);\\n --plugin-badge-size-big: calc(var(--gauge-circle-size-big) / 2.7);\\n --plugin-badge-size: calc(var(--gauge-circle-size) / 2.7);\\n --plugin-icon-size: 65%;\\n --report-background-color: #fff;\\n --report-border-color-secondary: #ebebeb;\\n --report-font-family-monospace: \\\'Roboto Mono\\\', \\\'Menlo\\\', \\\'dejavu sans mono\\\', \\\'Consolas\\\', \\\'Lucida Console\\\', monospace;\\n --report-font-family: Roboto, Helvetica, Arial, sans-serif;\\n --report-font-size: 14px;\\n --report-font-size-secondary: 12px;\\n --report-icon-size: var(--score-icon-background-size);\\n --report-line-height: 24px;\\n --report-line-height-secondary: 20px;\\n --report-monospace-font-size: calc(var(--report-font-size) * 0.85);\\n --report-text-color-secondary: var(--color-gray-800);\\n --report-text-color: var(--color-gray-900);\\n --report-content-max-width: calc(60 * var(--report-font-size)); /* defaults to 840px */\\n --report-content-min-width: 360px;\\n --report-content-max-width-minus-edge-gap: calc(var(--report-content-max-width) - var(--edge-gap-padding) * 2);\\n --score-container-padding: 8px;\\n --score-icon-background-size: 24px;\\n --score-icon-margin-left: 6px;\\n --score-icon-margin-right: 14px;\\n --score-icon-margin: 0 var(--score-icon-margin-right) 0 var(--score-icon-margin-left);\\n --score-icon-size: 12px;\\n --score-icon-size-big: 16px;\\n --screenshot-overlay-background: rgba(0, 0, 0, 0.3);\\n --section-padding-vertical: calc(var(--default-padding) * 6);\\n --snippet-background-color: var(--color-gray-50);\\n --snippet-color: #0938C2;\\n --stackpack-padding-horizontal: 10px;\\n --sticky-header-background-color: var(--report-background-color);\\n --sticky-header-buffer: var(--topbar-height);\\n --sticky-header-height: calc(var(--gauge-circle-size-sm) + var(--score-container-padding) * 2 + 1em);\\n --table-group-header-background-color: #EEF1F4;\\n --table-group-header-text-color: var(--color-gray-700);\\n --table-higlight-background-color: #F5F7FA;\\n --tools-icon-color: var(--color-gray-600);\\n --topbar-background-color: var(--color-white);\\n --topbar-height: 32px;\\n --topbar-logo-size: 24px;\\n --topbar-padding: 0 8px;\\n --toplevel-warning-background-color: hsla(30, 100%, 75%, 10%);\\n --toplevel-warning-message-text-color: var(--color-average-secondary);\\n --toplevel-warning-padding: 18px;\\n --toplevel-warning-text-color: var(--report-text-color);\\n\\n /* SVGs */\\n --plugin-icon-url-dark: url(\\\'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="24px" height="24px" viewBox="0 0 24 24" fill="%23FFFFFF"><path d="M0 0h24v24H0z" fill="none"/><path d="M20.5 11H19V7c0-1.1-.9-2-2-2h-4V3.5C13 2.12 11.88 1 10.5 1S8 2.12 8 3.5V5H4c-1.1 0-1.99.9-1.99 2v3.8H3.5c1.49 0 2.7 1.21 2.7 2.7s-1.21 2.7-2.7 2.7H2V20c0 1.1.9 2 2 2h3.8v-1.5c0-1.49 1.21-2.7 2.7-2.7 1.49 0 2.7 1.21 2.7 2.7V22H17c1.1 0 2-.9 2-2v-4h1.5c1.38 0 2.5-1.12 2.5-2.5S21.88 11 20.5 11z"/></svg>\\\');\\n --plugin-icon-url: url(\\\'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="24px" height="24px" viewBox="0 0 24 24" fill="%23757575"><path d="M0 0h24v24H0z" fill="none"/><path d="M20.5 11H19V7c0-1.1-.9-2-2-2h-4V3.5C13 2.12 11.88 1 10.5 1S8 2.12 8 3.5V5H4c-1.1 0-1.99.9-1.99 2v3.8H3.5c1.49 0 2.7 1.21 2.7 2.7s-1.21 2.7-2.7 2.7H2V20c0 1.1.9 2 2 2h3.8v-1.5c0-1.49 1.21-2.7 2.7-2.7 1.49 0 2.7 1.21 2.7 2.7V22H17c1.1 0 2-.9 2-2v-4h1.5c1.38 0 2.5-1.12 2.5-2.5S21.88 11 20.5 11z"/></svg>\\\');\\n\\n --pass-icon-url: url(\\\'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48"><title>check</title><path fill="%23178239" d="M24 4C12.95 4 4 12.95 4 24c0 11.04 8.95 20 20 20 11.04 0 20-8.96 20-20 0-11.05-8.96-20-20-20zm-4 30L10 24l2.83-2.83L20 28.34l15.17-15.17L38 16 20 34z"/></svg>\\\');\\n --average-icon-url: url(\\\'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48"><title>info</title><path fill="%23E67700" d="M24 4C12.95 4 4 12.95 4 24s8.95 20 20 20 20-8.95 20-20S35.05 4 24 4zm2 30h-4V22h4v12zm0-16h-4v-4h4v4z"/></svg>\\\');\\n --fail-icon-url: url(\\\'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48"><title>warn</title><path fill="%23C7221F" d="M2 42h44L24 4 2 42zm24-6h-4v-4h4v4zm0-8h-4v-8h4v8z"/></svg>\\\');\\n --error-icon-url: url(\\\'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 3 15"><title>error</title><path d="M0 15H 3V 12H 0V" fill="%23FF4E42"/><path d="M0 9H 3V 0H 0V" fill="%23FF4E42"/></svg>\\\');\\n\\n --swap-locale-icon-url: url(\\\'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 0 24 24" width="24px" fill="#000000"><path d="M0 0h24v24H0V0z" fill="none"/><path d="M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z"/></svg>\\\');\\n}\\n\\n@media not print {\\n .lh-dark {\\n /* Pallete */\\n --color-gray-200: var(--color-gray-800);\\n --color-gray-300: #616161;\\n --color-gray-400: var(--color-gray-600);\\n --color-gray-700: var(--color-gray-400);\\n --color-gray-50: #757575;\\n --color-gray-600: var(--color-gray-500);\\n --color-green-700: var(--color-green);\\n --color-orange-700: var(--color-orange);\\n --color-red-700: var(--color-red);\\n --color-teal-600: var(--color-cyan-500);\\n\\n /* Context-specific colors */\\n --color-hover: rgba(0, 0, 0, 0.2);\\n --color-informative: var(--color-blue-200);\\n\\n /* Component variables */\\n --env-item-background-color: #393535;\\n --link-color: var(--color-blue-200);\\n --locale-selector-background-color: var(--color-gray-200);\\n --plugin-badge-background-color: var(--color-gray-800);\\n --report-background-color: var(--color-gray-900);\\n --report-border-color-secondary: var(--color-gray-200);\\n --report-text-color-secondary: var(--color-gray-400);\\n --report-text-color: var(--color-gray-100);\\n --snippet-color: var(--color-cyan-500);\\n --topbar-background-color: var(--color-gray);\\n --toplevel-warning-background-color: hsl(33deg 14% 18%);\\n --toplevel-warning-message-text-color: var(--color-orange-700);\\n --toplevel-warning-text-color: var(--color-gray-100);\\n --table-group-header-background-color: rgba(186, 196, 206, 0.15);\\n --table-group-header-text-color: var(--color-gray-100);\\n --table-higlight-background-color: rgba(186, 196, 206, 0.09);\\n\\n /* SVGs */\\n --plugin-icon-url: var(--plugin-icon-url-dark);\\n }\\n}\\n\\n@media only screen and (max-width: 480px) {\\n .lh-vars {\\n --audit-group-margin-bottom: 20px;\\n --edge-gap-padding: var(--default-padding);\\n --env-name-min-width: 120px;\\n --gauge-circle-size-big: 96px;\\n --gauge-circle-size: 72px;\\n --gauge-label-font-size-big: 22px;\\n --gauge-label-font-size: 14px;\\n --gauge-label-line-height-big: 26px;\\n --gauge-label-line-height: 20px;\\n --gauge-percentage-font-size-big: 34px;\\n --gauge-percentage-font-size: 26px;\\n --gauge-wrapper-width: 112px;\\n --header-padding: 16px 0 16px 0;\\n --image-preview-size: 24px;\\n --plugin-icon-size: 75%;\\n --report-font-size: 14px;\\n --report-line-height: 20px;\\n --score-icon-margin-left: 2px;\\n --score-icon-size: 10px;\\n --topbar-height: 28px;\\n --topbar-logo-size: 20px;\\n }\\n}\\n\\n.lh-vars.lh-devtools {\\n --audit-explanation-line-height: 14px;\\n --audit-group-margin-bottom: 20px;\\n --audit-group-padding-vertical: 12px;\\n --audit-padding-vertical: 4px;\\n --category-padding: 12px;\\n --default-padding: 12px;\\n --env-name-min-width: 120px;\\n --footer-padding-vertical: 8px;\\n --gauge-circle-size-big: 72px;\\n --gauge-circle-size: 64px;\\n --gauge-label-font-size-big: 22px;\\n --gauge-label-font-size: 14px;\\n --gauge-label-line-height-big: 26px;\\n --gauge-label-line-height: 20px;\\n --gauge-percentage-font-size-big: 34px;\\n --gauge-percentage-font-size: 26px;\\n --gauge-wrapper-width: 97px;\\n --header-line-height: 20px;\\n --header-padding: 16px 0 16px 0;\\n --screenshot-overlay-background: transparent;\\n --plugin-icon-size: 75%;\\n --report-font-family-monospace: \\\'Menlo\\\', \\\'dejavu sans mono\\\', \\\'Consolas\\\', \\\'Lucida Console\\\', monospace;\\n --report-font-family: \\\'.SFNSDisplay-Regular\\\', \\\'Helvetica Neue\\\', \\\'Lucida Grande\\\', sans-serif;\\n --report-font-size: 12px;\\n --report-line-height: 20px;\\n --score-icon-margin-left: 2px;\\n --score-icon-size: 10px;\\n --section-padding-vertical: 8px;\\n}\\n\\n.lh-container:has(.lh-sticky-header) {\\n --sticky-header-buffer: calc(var(--topbar-height) + var(--sticky-header-height));\\n}\\n\\n.lh-container:not(.lh-topbar + .lh-container) {\\n --topbar-height: 0;\\n --sticky-header-height: 0;\\n --sticky-header-buffer: 0;\\n}\\n\\n.lh-max-viewport {\\n display: flex;\\n flex-direction: column;\\n min-height: 100vh;\\n width: 100%;\\n}\\n\\n.lh-devtools.lh-root {\\n height: 100%;\\n}\\n.lh-devtools.lh-root img {\\n /* Override devtools default \\\'min-width: 0\\\' so svg without size in a flexbox isn\\\'t collapsed. */\\n min-width: auto;\\n}\\n.lh-devtools .lh-container {\\n overflow-y: scroll;\\n height: calc(100% - var(--topbar-height));\\n /** The .lh-container is the scroll parent in DevTools so we exclude the topbar from the sticky header buffer. */\\n --sticky-header-buffer: 0;\\n}\\n.lh-devtools .lh-container:has(.lh-sticky-header) {\\n /** The .lh-container is the scroll parent in DevTools so we exclude the topbar from the sticky header buffer. */\\n --sticky-header-buffer: var(--sticky-header-height);\\n}\\n@media print {\\n .lh-devtools .lh-container {\\n overflow: unset;\\n }\\n}\\n.lh-devtools .lh-sticky-header {\\n /* This is normally the height of the topbar, but we want it to stick to the top of our scroll container .lh-container` */\\n top: 0;\\n}\\n.lh-devtools .lh-element-screenshot__overlay {\\n position: absolute;\\n}\\n\\n@keyframes fadeIn {\\n 0% { opacity: 0;}\\n 100% { opacity: 0.6;}\\n}\\n\\n.lh-root *, .lh-root *::before, .lh-root *::after {\\n box-sizing: border-box;\\n}\\n\\n.lh-root {\\n font-family: var(--report-font-family);\\n font-size: var(--report-font-size);\\n margin: 0;\\n line-height: var(--report-line-height);\\n background: var(--report-background-color);\\n color: var(--report-text-color);\\n}\\n\\n.lh-root :focus-visible {\\n outline: -webkit-focus-ring-color auto 3px;\\n}\\n.lh-root summary:focus {\\n outline: none;\\n box-shadow: 0 0 0 1px hsl(217, 89%, 61%);\\n}\\n\\n.lh-root [hidden] {\\n display: none !important;\\n}\\n\\n.lh-root pre {\\n margin: 0;\\n}\\n\\n.lh-root pre,\\n.lh-root code {\\n font-family: var(--report-font-family-monospace);\\n}\\n\\n.lh-root details > summary {\\n cursor: pointer;\\n}\\n\\n.lh-hidden {\\n display: none !important;\\n}\\n\\n.lh-container {\\n /*\\n Text wrapping in the report is so much FUN!\\n We have a `word-break: break-word;` globally here to prevent a few common scenarios, namely\\n long non-breakable text (usually URLs) found in:\\n 1. The footer\\n 2. .lh-node (outerHTML)\\n 3. .lh-code\\n\\n With that sorted, the next challenge is appropriate column sizing and text wrapping inside our\\n .lh-details tables. Even more fun.\\n * We don\\\'t want table headers ("Potential Savings (ms)") to wrap or their column values, but\\n we\\\'d be happy for the URL column to wrap if the URLs are particularly long.\\n * We want the narrow columns to remain narrow, providing the most column width for URL\\n * We don\\\'t want the table to extend past 100% width.\\n * Long URLs in the URL column can wrap. Util.getURLDisplayName maxes them out at 64 characters,\\n but they do not get any overflow:ellipsis treatment.\\n */\\n word-break: break-word;\\n}\\n\\n.lh-audit-group a,\\n.lh-category-header__description a,\\n.lh-audit__description a,\\n.lh-warnings a,\\n.lh-footer a,\\n.lh-table-column--link a {\\n color: var(--link-color);\\n}\\n\\n.lh-audit__description, .lh-audit__stackpack {\\n --inner-audit-padding-right: var(--stackpack-padding-horizontal);\\n padding-left: var(--audit-description-padding-left);\\n padding-right: var(--inner-audit-padding-right);\\n padding-top: 8px;\\n padding-bottom: 8px;\\n}\\n\\n.lh-details {\\n margin-top: var(--default-padding);\\n margin-bottom: var(--default-padding);\\n margin-left: var(--audit-description-padding-left);\\n /* whatever the .lh-details side margins are */\\n width: 100%;\\n}\\n\\n.lh-audit__stackpack {\\n display: flex;\\n align-items: center;\\n}\\n\\n.lh-audit__stackpack__img {\\n max-width: 30px;\\n margin-right: var(--default-padding)\\n}\\n\\n/* Report header */\\n\\n.lh-report-icon {\\n display: flex;\\n align-items: center;\\n padding: 10px 12px;\\n cursor: pointer;\\n}\\n.lh-report-icon[disabled] {\\n opacity: 0.3;\\n pointer-events: none;\\n}\\n\\n.lh-report-icon::before {\\n content: "";\\n margin: 4px;\\n background-repeat: no-repeat;\\n width: var(--report-icon-size);\\n height: var(--report-icon-size);\\n opacity: 0.7;\\n display: inline-block;\\n vertical-align: middle;\\n}\\n.lh-report-icon:hover::before {\\n opacity: 1;\\n}\\n.lh-dark .lh-report-icon::before {\\n filter: invert(1);\\n}\\n.lh-report-icon--print::before {\\n background-image: url(\\\'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M19 8H5c-1.66 0-3 1.34-3 3v6h4v4h12v-4h4v-6c0-1.66-1.34-3-3-3zm-3 11H8v-5h8v5zm3-7c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1zm-1-9H6v4h12V3z"/><path fill="none" d="M0 0h24v24H0z"/></svg>\\\');\\n}\\n.lh-report-icon--copy::before {\\n background-image: url(\\\'data:image/svg+xml;utf8,<svg height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"><path d="M0 0h24v24H0z" fill="none"/><path d="M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm0 16H8V7h11v14z"/></svg>\\\');\\n}\\n.lh-report-icon--open::before {\\n background-image: url(\\\'data:image/svg+xml;utf8,<svg height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"><path d="M0 0h24v24H0z" fill="none"/><path d="M19 4H5c-1.11 0-2 .9-2 2v12c0 1.1.89 2 2 2h4v-2H5V8h14v10h-4v2h4c1.1 0 2-.9 2-2V6c0-1.1-.89-2-2-2zm-7 6l-4 4h3v6h2v-6h3l-4-4z"/></svg>\\\');\\n}\\n.lh-report-icon--download::before {\\n background-image: url(\\\'data:image/svg+xml;utf8,<svg height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"><path d="M19 9h-4V3H9v6H5l7 7 7-7zM5 18v2h14v-2H5z"/><path d="M0 0h24v24H0z" fill="none"/></svg>\\\');\\n}\\n.lh-report-icon--dark::before {\\n background-image:url(\\\'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 0 100 125"><path d="M50 23.587c-16.27 0-22.799 12.574-22.799 21.417 0 12.917 10.117 22.451 12.436 32.471h20.726c2.32-10.02 12.436-19.554 12.436-32.471 0-8.843-6.528-21.417-22.799-21.417zM39.637 87.161c0 3.001 1.18 4.181 4.181 4.181h.426l.41 1.231C45.278 94.449 46.042 95 48.019 95h3.963c1.978 0 2.74-.551 3.365-2.427l.409-1.231h.427c3.002 0 4.18-1.18 4.18-4.181V80.91H39.637v6.251zM50 18.265c1.26 0 2.072-.814 2.072-2.073v-9.12C52.072 5.813 51.26 5 50 5c-1.259 0-2.072.813-2.072 2.073v9.12c0 1.259.813 2.072 2.072 2.072zM68.313 23.727c.994.774 2.135.634 2.91-.357l5.614-7.187c.776-.992.636-2.135-.356-2.909-.992-.776-2.135-.636-2.91.357l-5.613 7.186c-.778.993-.636 2.135.355 2.91zM91.157 36.373c-.306-1.222-1.291-1.815-2.513-1.51l-8.85 2.207c-1.222.305-1.814 1.29-1.51 2.512.305 1.223 1.291 1.814 2.513 1.51l8.849-2.206c1.223-.305 1.816-1.291 1.511-2.513zM86.757 60.48l-8.331-3.709c-1.15-.512-2.225-.099-2.736 1.052-.512 1.151-.1 2.224 1.051 2.737l8.33 3.707c1.15.514 2.225.101 2.736-1.05.513-1.149.1-2.223-1.05-2.737zM28.779 23.37c.775.992 1.917 1.131 2.909.357.992-.776 1.132-1.917.357-2.91l-5.615-7.186c-.775-.992-1.917-1.132-2.909-.357s-1.131 1.917-.356 2.909l5.614 7.187zM21.715 39.583c.305-1.223-.288-2.208-1.51-2.513l-8.849-2.207c-1.222-.303-2.208.289-2.513 1.511-.303 1.222.288 2.207 1.511 2.512l8.848 2.206c1.222.304 2.208-.287 2.513-1.509zM21.575 56.771l-8.331 3.711c-1.151.511-1.563 1.586-1.05 2.735.511 1.151 1.586 1.563 2.736 1.052l8.331-3.711c1.151-.511 1.563-1.586 1.05-2.735-.512-1.15-1.585-1.562-2.736-1.052z"/></svg>\\\');\\n}\\n.lh-report-icon--treemap::before {\\n background-image: url(\\\'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 0 24 24" width="24px" fill="black"><path d="M3 5v14h19V5H3zm2 2h15v4H5V7zm0 10v-4h4v4H5zm6 0v-4h9v4h-9z"/></svg>\\\');\\n}\\n.lh-report-icon--date::before {\\n background-image: url(\\\'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M7 11h2v2H7v-2zm14-5v14a2 2 0 01-2 2H5a2 2 0 01-2-2V6c0-1.1.9-2 2-2h1V2h2v2h8V2h2v2h1a2 2 0 012 2zM5 8h14V6H5v2zm14 12V10H5v10h14zm-4-7h2v-2h-2v2zm-4 0h2v-2h-2v2z"/></svg>\\\');\\n}\\n.lh-report-icon--devices::before {\\n background-image: url(\\\'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M4 6h18V4H4a2 2 0 00-2 2v11H0v3h14v-3H4V6zm19 2h-6a1 1 0 00-1 1v10c0 .6.5 1 1 1h6c.6 0 1-.5 1-1V9c0-.6-.5-1-1-1zm-1 9h-4v-7h4v7z"/></svg>\\\');\\n}\\n.lh-report-icon--world::before {\\n background-image: url(\\\'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 2a10 10 0 1 0 0 20 10 10 0 0 0 0-20zm7 6h-3c-.3-1.3-.8-2.5-1.4-3.6A8 8 0 0 1 18.9 8zm-7-4a14 14 0 0 1 2 4h-4a14 14 0 0 1 2-4zM4.3 14a8.2 8.2 0 0 1 0-4h3.3a16.5 16.5 0 0 0 0 4H4.3zm.8 2h3a14 14 0 0 0 1.3 3.6A8 8 0 0 1 5.1 16zm3-8H5a8 8 0 0 1 4.3-3.6L8 8zM12 20a14 14 0 0 1-2-4h4a14 14 0 0 1-2 4zm2.3-6H9.7a14.7 14.7 0 0 1 0-4h4.6a14.6 14.6 0 0 1 0 4zm.3 5.6c.6-1.2 1-2.4 1.4-3.6h3a8 8 0 0 1-4.4 3.6zm1.8-5.6a16.5 16.5 0 0 0 0-4h3.3a8.2 8.2 0 0 1 0 4h-3.3z"/></svg>\\\');\\n}\\n.lh-report-icon--stopwatch::before {\\n background-image: url(\\\'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M15 1H9v2h6V1zm-4 13h2V8h-2v6zm8.1-6.6L20.5 6l-1.4-1.4L17.7 6A9 9 0 0 0 3 13a9 9 0 1 0 16-5.6zm-7 12.6a7 7 0 1 1 0-14 7 7 0 0 1 0 14z"/></svg>\\\');\\n}\\n.lh-report-icon--networkspeed::before {\\n background-image: url(\\\'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M15.9 5c-.2 0-.3 0-.4.2v.2L10.1 17a2 2 0 0 0-.2 1 2 2 0 0 0 4 .4l2.4-12.9c0-.3-.2-.5-.5-.5zM1 9l2 2c2.9-2.9 6.8-4 10.5-3.6l1.2-2.7C10 3.8 4.7 5.3 1 9zm20 2 2-2a15.4 15.4 0 0 0-5.6-3.6L17 8.2c1.5.7 2.9 1.6 4.1 2.8zm-4 4 2-2a9.9 9.9 0 0 0-2.7-1.9l-.5 3 1.2.9zM5 13l2 2a7.1 7.1 0 0 1 4-2l1.3-2.9C9.7 10.1 7 11 5 13z"/></svg>\\\');\\n}\\n.lh-report-icon--samples-one::before {\\n background-image: url(\\\'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><circle cx="7" cy="14" r="3"/><path d="M7 18a4 4 0 1 1 0-8 4 4 0 0 1 0 8zm0-6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm4-2a4 4 0 1 1 0-8 4 4 0 0 1 0 8zm0-6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm5.6 17.6a4 4 0 1 1 0-8 4 4 0 0 1 0 8zm0-6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"/></svg>\\\');\\n}\\n.lh-report-icon--samples-many::before {\\n background-image: url(\\\'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M7 18a4 4 0 1 1 0-8 4 4 0 0 1 0 8zm0-6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm4-2a4 4 0 1 1 0-8 4 4 0 0 1 0 8zm0-6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm5.6 17.6a4 4 0 1 1 0-8 4 4 0 0 1 0 8zm0-6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"/><circle cx="7" cy="14" r="3"/><circle cx="11" cy="6" r="3"/></svg>\\\');\\n}\\n.lh-report-icon--chrome::before {\\n background-image: url(\\\'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="-50 -50 562 562"><path d="M256 25.6v25.6a204 204 0 0 1 144.8 60 204 204 0 0 1 60 144.8 204 204 0 0 1-60 144.8 204 204 0 0 1-144.8 60 204 204 0 0 1-144.8-60 204 204 0 0 1-60-144.8 204 204 0 0 1 60-144.8 204 204 0 0 1 144.8-60V0a256 256 0 1 0 0 512 256 256 0 0 0 0-512v25.6z"/><path d="M256 179.2v25.6a51.3 51.3 0 0 1 0 102.4 51.3 51.3 0 0 1 0-102.4v-51.2a102.3 102.3 0 1 0-.1 204.7 102.3 102.3 0 0 0 .1-204.7v25.6z"/><path d="M256 204.8h217.6a25.6 25.6 0 0 0 0-51.2H256a25.6 25.6 0 0 0 0 51.2m44.3 76.8L191.5 470.1a25.6 25.6 0 1 0 44.4 25.6l108.8-188.5a25.6 25.6 0 1 0-44.4-25.6m-88.6 0L102.9 93.2a25.7 25.7 0 0 0-35-9.4 25.7 25.7 0 0 0-9.4 35l108.8 188.5a25.7 25.7 0 0 0 35 9.4 25.9 25.9 0 0 0 9.4-35.1"/></svg>\\\');\\n}\\n.lh-report-icon--external::before {\\n background-image: url(\\\'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg"><path d="M3.15 11.9a1.01 1.01 0 0 1-.743-.307 1.01 1.01 0 0 1-.306-.743v-7.7c0-.292.102-.54.306-.744a1.01 1.01 0 0 1 .744-.306H7v1.05H3.15v7.7h7.7V7h1.05v3.85c0 .291-.103.54-.307.743a1.01 1.01 0 0 1-.743.307h-7.7Zm2.494-2.8-.743-.744 5.206-5.206H8.401V2.1h3.5v3.5h-1.05V3.893L5.644 9.1Z"/></svg>\\\');\\n}\\n\\n.lh-buttons {\\n display: flex;\\n flex-wrap: wrap;\\n margin: var(--default-padding) 0;\\n}\\n.lh-button {\\n height: 32px;\\n border: 1px solid var(--report-border-color-secondary);\\n border-radius: 3px;\\n color: var(--link-color);\\n background-color: var(--report-background-color);\\n margin: 5px;\\n}\\n\\n.lh-button:first-of-type {\\n margin-left: 0;\\n}\\n\\n/* Node */\\n.lh-node__snippet {\\n font-family: var(--report-font-family-monospace);\\n color: var(--snippet-color);\\n font-size: var(--report-monospace-font-size);\\n line-height: 20px;\\n}\\n\\n/* Score */\\n\\n.lh-audit__score-icon {\\n width: var(--score-icon-size);\\n height: var(--score-icon-size);\\n margin: var(--score-icon-margin);\\n}\\n\\n.lh-audit--pass .lh-audit__display-text {\\n color: var(--color-pass-secondary);\\n}\\n.lh-audit--pass .lh-audit__score-icon,\\n.lh-scorescale-range--pass::before {\\n border-radius: 100%;\\n background: var(--color-pass);\\n}\\n\\n.lh-audit--average .lh-audit__display-text {\\n color: var(--color-average-secondary);\\n}\\n.lh-audit--average .lh-audit__score-icon,\\n.lh-scorescale-range--average::before {\\n background: var(--color-average);\\n width: var(--icon-square-size);\\n height: var(--icon-square-size);\\n}\\n\\n.lh-audit--fail .lh-audit__display-text {\\n color: var(--color-fail-secondary);\\n}\\n.lh-audit--fail .lh-audit__score-icon,\\n.lh-audit--error .lh-audit__score-icon,\\n.lh-scorescale-range--fail::before {\\n border-left: calc(var(--score-icon-size) / 2) solid transparent;\\n border-right: calc(var(--score-icon-size) / 2) solid transparent;\\n border-bottom: var(--score-icon-size) solid var(--color-fail);\\n}\\n\\n.lh-audit--error .lh-audit__score-icon,\\n.lh-metric--error .lh-metric__icon {\\n background-image: var(--error-icon-url);\\n background-repeat: no-repeat;\\n background-position: center;\\n border: none;\\n}\\n\\n.lh-gauge__wrapper--fail .lh-gauge--error {\\n background-image: var(--error-icon-url);\\n background-repeat: no-repeat;\\n background-position: center;\\n transform: scale(0.5);\\n top: var(--score-container-padding);\\n}\\n\\n.lh-audit--manual .lh-audit__display-text,\\n.lh-audit--notapplicable .lh-audit__display-text {\\n color: var(--color-gray-600);\\n}\\n.lh-audit--manual .lh-audit__score-icon,\\n.lh-audit--notapplicable .lh-audit__score-icon {\\n border: calc(0.2 * var(--score-icon-size)) solid var(--color-gray-400);\\n border-radius: 100%;\\n background: none;\\n}\\n\\n.lh-audit--informative .lh-audit__display-text {\\n color: var(--color-gray-600);\\n}\\n\\n.lh-audit--informative .lh-audit__score-icon {\\n border: calc(0.2 * var(--score-icon-size)) solid var(--color-gray-400);\\n border-radius: 100%;\\n}\\n\\n.lh-audit__description,\\n.lh-audit__stackpack {\\n color: var(--report-text-color-secondary);\\n}\\n.lh-audit__adorn {\\n border: 1px solid var(--color-gray-500);\\n border-radius: 3px;\\n margin: 0 3px;\\n padding: 0 2px;\\n line-height: 1.1;\\n display: inline-block;\\n font-size: 90%;\\n color: var(--report-text-color-secondary);\\n}\\n\\n.lh-category-header__description {\\n text-align: center;\\n color: var(--color-gray-700);\\n margin: 0px auto;\\n max-width: 400px;\\n}\\n\\n\\n.lh-audit__display-text,\\n.lh-chevron-container {\\n margin: 0 var(--audit-margin-horizontal);\\n}\\n.lh-chevron-container {\\n margin-right: 0;\\n}\\n\\n.lh-audit__title-and-text {\\n flex: 1;\\n}\\n\\n.lh-audit__title-and-text code {\\n color: var(--snippet-color);\\n font-size: var(--report-monospace-font-size);\\n}\\n\\n/* Prepend display text with em dash separator. */\\n.lh-audit__display-text:not(:empty):before {\\n content: \\\'—\\\';\\n margin-right: var(--audit-margin-horizontal);\\n}\\n\\n/* Expandable Details (Audit Groups, Audits) */\\n.lh-audit__header {\\n display: flex;\\n align-items: center;\\n padding: var(--default-padding);\\n}\\n\\n\\n.lh-metricfilter {\\n display: grid;\\n justify-content: end;\\n align-items: center;\\n grid-auto-flow: column;\\n gap: 4px;\\n color: var(--color-gray-700);\\n}\\n\\n.lh-metricfilter__radio {\\n /*\\n * Instead of hiding, position offscreen so it\\\'s still accessible to screen readers\\n * https://bugs.chromium.org/p/chromium/issues/detail?id=1439785\\n */\\n position: fixed;\\n left: -9999px;\\n}\\n.lh-metricfilter input[type=\\\'radio\\\']:focus-visible + label {\\n outline: -webkit-focus-ring-color auto 1px;\\n}\\n\\n.lh-metricfilter__label {\\n display: inline-flex;\\n padding: 0 4px;\\n height: 16px;\\n text-decoration: underline;\\n align-items: center;\\n cursor: pointer;\\n font-size: 90%;\\n}\\n\\n.lh-metricfilter__label--active {\\n background: var(--color-blue-primary);\\n color: var(--color-white);\\n border-radius: 3px;\\n text-decoration: none;\\n}\\n/* Give the \\\'All\\\' choice a more muted display */\\n.lh-metricfilter__label--active[for="metric-All"] {\\n background-color: var(--color-blue-200) !important;\\n color: black !important;\\n}\\n\\n.lh-metricfilter__text {\\n margin-right: 8px;\\n}\\n\\n/* If audits are filtered, hide the itemcount for Passed Audits… */\\n.lh-category--filtered .lh-audit-group .lh-audit-group__itemcount {\\n display: none;\\n}\\n\\n\\n.lh-audit__header:hover {\\n background-color: var(--color-hover);\\n}\\n\\n/* We want to hide the browser\\\'s default arrow marker on summary elements. Admittedly, it\\\'s complicated. */\\n.lh-root details > summary {\\n /* Blink 89+ and Firefox will hide the arrow when display is changed from (new) default of `list-item` to block. https://chromestatus.com/feature/6730096436051968*/\\n display: block;\\n}\\n/* Safari and Blink <=88 require using the -webkit-details-marker selector */\\n.lh-root details > summary::-webkit-details-marker {\\n display: none;\\n}\\n\\n/* Perf Metric */\\n\\n.lh-metrics-container {\\n display: grid;\\n grid-auto-rows: 1fr;\\n grid-template-columns: 1fr 1fr;\\n grid-column-gap: var(--report-line-height);\\n margin-bottom: var(--default-padding);\\n}\\n\\n.lh-metric {\\n border-top: 1px solid var(--report-border-color-secondary);\\n}\\n\\n.lh-category:not(.lh--hoisted-meta) .lh-metric:nth-last-child(-n+2) {\\n border-bottom: 1px solid var(--report-border-color-secondary);\\n}\\n\\n.lh-metric__innerwrap {\\n display: grid;\\n /**\\n * Icon -- Metric Name\\n * -- Metric Value\\n */\\n grid-template-columns: calc(var(--score-icon-size) + var(--score-icon-margin-left) + var(--score-icon-margin-right)) 1fr;\\n align-items: center;\\n padding: var(--default-padding);\\n}\\n\\n.lh-metric__details {\\n order: -1;\\n}\\n\\n.lh-metric__title {\\n flex: 1;\\n}\\n\\n.lh-calclink {\\n padding-left: calc(1ex / 3);\\n}\\n\\n.lh-metric__description {\\n display: none;\\n grid-column-start: 2;\\n grid-column-end: 4;\\n color: var(--report-text-color-secondary);\\n}\\n\\n.lh-metric__value {\\n font-size: var(--metric-value-font-size);\\n margin: calc(var(--default-padding) / 2) 0;\\n white-space: nowrap; /* No wrapping between metric value and the icon */\\n grid-column-start: 2;\\n}\\n\\n\\n@media screen and (max-width: 535px) {\\n .lh-metrics-container {\\n display: block;\\n }\\n\\n .lh-metric {\\n border-bottom: none !important;\\n }\\n .lh-category:not(.lh--hoisted-meta) .lh-metric:nth-last-child(1) {\\n border-bottom: 1px solid var(--report-border-color-secondary) !important;\\n }\\n\\n /* Change the grid to 3 columns for narrow viewport. */\\n .lh-metric__innerwrap {\\n /**\\n * Icon -- Metric Name -- Metric Value\\n */\\n grid-template-columns: calc(var(--score-icon-size) + var(--score-icon-margin-left) + var(--score-icon-margin-right)) 2fr 1fr;\\n }\\n .lh-metric__value {\\n justify-self: end;\\n grid-column-start: unset;\\n }\\n}\\n\\n/* No-JS toggle switch */\\n/* Keep this selector sync\\\'d w/ `magicSelector` in report-ui-features-test.js */\\n .lh-metrics-toggle__input:checked ~ .lh-metrics-container .lh-metric__description {\\n display: block;\\n}\\n\\n/* TODO get rid of the SVGS and clean up these some more */\\n.lh-metrics-toggle__input {\\n opacity: 0;\\n position: absolute;\\n right: 0;\\n top: 0px;\\n}\\n\\n.lh-metrics-toggle__input + div > label > .lh-metrics-toggle__labeltext--hide,\\n.lh-metrics-toggle__input:checked + div > label > .lh-metrics-toggle__labeltext--show {\\n display: none;\\n}\\n.lh-metrics-toggle__input:checked + div > label > .lh-metrics-toggle__labeltext--hide {\\n display: inline;\\n}\\n.lh-metrics-toggle__input:focus + div > label {\\n outline: -webkit-focus-ring-color auto 3px;\\n}\\n\\n.lh-metrics-toggle__label {\\n cursor: pointer;\\n font-size: var(--report-font-size-secondary);\\n line-height: var(--report-line-height-secondary);\\n color: var(--color-gray-700);\\n}\\n\\n/* Pushes the metric description toggle button to the right. */\\n.lh-audit-group--metrics .lh-audit-group__header {\\n display: flex;\\n justify-content: space-between;\\n}\\n\\n.lh-metric__icon,\\n.lh-scorescale-range::before {\\n content: \\\'\\\';\\n width: var(--score-icon-size);\\n height: var(--score-icon-size);\\n display: inline-block;\\n margin: var(--score-icon-margin);\\n}\\n\\n.lh-metric--pass .lh-metric__value {\\n color: var(--color-pass-secondary);\\n}\\n.lh-metric--pass .lh-metric__icon {\\n border-radius: 100%;\\n background: var(--color-pass);\\n}\\n\\n.lh-metric--average .lh-metric__value {\\n color: var(--color-average-secondary);\\n}\\n.lh-metric--average .lh-metric__icon {\\n background: var(--color-average);\\n width: var(--icon-square-size);\\n height: var(--icon-square-size);\\n}\\n\\n.lh-metric--fail .lh-metric__value {\\n color: var(--color-fail-secondary);\\n}\\n.lh-metric--fail .lh-metric__icon {\\n border-left: calc(var(--score-icon-size) / 2) solid transparent;\\n border-right: calc(var(--score-icon-size) / 2) solid transparent;\\n border-bottom: var(--score-icon-size) solid var(--color-fail);\\n}\\n\\n.lh-metric--error .lh-metric__value,\\n.lh-metric--error .lh-metric__description {\\n color: var(--color-fail-secondary);\\n}\\n\\n/* Filmstrip */\\n\\n.lh-filmstrip-container {\\n /* smaller gap between metrics and filmstrip */\\n margin: -8px auto 0 auto;\\n}\\n\\n.lh-filmstrip {\\n display: flex;\\n justify-content: space-between;\\n justify-items: center;\\n margin-bottom: var(--default-padding);\\n width: 100%;\\n}\\n\\n.lh-filmstrip__frame {\\n overflow: hidden;\\n line-height: 0;\\n}\\n\\n.lh-filmstrip__thumbnail {\\n border: 1px solid var(--report-border-color-secondary);\\n max-height: 150px;\\n max-width: 120px;\\n}\\n\\n/* Audit */\\n\\n.lh-audit {\\n border-bottom: 1px solid var(--report-border-color-secondary);\\n}\\n\\n/* Apply border-top to just the first audit. */\\n.lh-audit {\\n border-top: 1px solid var(--report-border-color-secondary);\\n}\\n.lh-audit ~ .lh-audit {\\n border-top: none;\\n}\\n\\n\\n.lh-audit--error .lh-audit__display-text {\\n color: var(--color-fail-secondary);\\n}\\n\\n/* Audit Group */\\n\\n.lh-audit-group {\\n margin-bottom: var(--audit-group-margin-bottom);\\n position: relative;\\n}\\n.lh-audit-group--metrics {\\n margin-bottom: calc(var(--audit-group-margin-bottom) / 2);\\n}\\n\\n.lh-audit-group--metrics .lh-audit-group__summary {\\n margin-top: 0;\\n margin-bottom: 0;\\n}\\n\\n.lh-audit-group__summary {\\n display: flex;\\n justify-content: space-between;\\n align-items: center;\\n}\\n\\n.lh-audit-group__header .lh-chevron {\\n margin-top: calc((var(--report-line-height) - 5px) / 2);\\n}\\n\\n.lh-audit-group__header {\\n letter-spacing: 0.8px;\\n padding: var(--default-padding);\\n padding-left: 0;\\n}\\n\\n.lh-audit-group__header, .lh-audit-group__summary {\\n font-size: var(--report-font-size-secondary);\\n line-height: var(--report-line-height-secondary);\\n color: var(--color-gray-700);\\n}\\n\\n.lh-audit-group__title {\\n text-transform: uppercase;\\n font-weight: 500;\\n}\\n\\n.lh-audit-group__itemcount {\\n color: var(--color-gray-600);\\n}\\n\\n.lh-audit-group__footer {\\n color: var(--color-gray-600);\\n display: block;\\n margin-top: var(--default-padding);\\n}\\n\\n.lh-details,\\n.lh-category-header__description,\\n.lh-audit-group__footer {\\n font-size: var(--report-font-size-secondary);\\n line-height: var(--report-line-height-secondary);\\n}\\n\\n.lh-audit-explanation {\\n margin: var(--audit-padding-vertical) 0 calc(var(--audit-padding-vertical) / 2) var(--audit-margin-horizontal);\\n line-height: var(--audit-explanation-line-height);\\n display: inline-block;\\n}\\n\\n.lh-audit--fail .lh-audit-explanation {\\n color: var(--color-fail-secondary);\\n}\\n\\n/* Report */\\n.lh-list > :not(:last-child) {\\n margin-bottom: calc(var(--default-padding) * 2);\\n}\\n\\n.lh-header-container {\\n display: block;\\n margin: 0 auto;\\n position: relative;\\n word-wrap: break-word;\\n}\\n\\n.lh-header-container .lh-scores-wrapper {\\n border-bottom: 1px solid var(--color-gray-200);\\n}\\n\\n\\n.lh-report {\\n min-width: var(--report-content-min-width);\\n}\\n\\n.lh-exception {\\n font-size: large;\\n}\\n\\n.lh-code {\\n white-space: normal;\\n margin-top: 0;\\n font-size: var(--report-monospace-font-size);\\n}\\n\\n.lh-warnings {\\n --item-margin: calc(var(--report-line-height) / 6);\\n color: var(--color-average-secondary);\\n margin: var(--audit-padding-vertical) 0;\\n padding: var(--default-padding)\\n var(--default-padding)\\n var(--default-padding)\\n calc(var(--audit-description-padding-left));\\n background-color: var(--toplevel-warning-background-color);\\n}\\n.lh-warnings span {\\n font-weight: bold;\\n}\\n\\n.lh-warnings--toplevel {\\n --item-margin: calc(var(--header-line-height) / 4);\\n color: var(--toplevel-warning-text-color);\\n margin-left: auto;\\n margin-right: auto;\\n max-width: var(--report-content-max-width-minus-edge-gap);\\n padding: var(--toplevel-warning-padding);\\n border-radius: 8px;\\n}\\n\\n.lh-warnings__msg {\\n color: var(--toplevel-warning-message-text-color);\\n margin: 0;\\n}\\n\\n.lh-warnings ul {\\n margin: 0;\\n}\\n.lh-warnings li {\\n margin: var(--item-margin) 0;\\n}\\n.lh-warnings li:last-of-type {\\n margin-bottom: 0;\\n}\\n\\n.lh-scores-header {\\n display: flex;\\n flex-wrap: wrap;\\n justify-content: center;\\n}\\n.lh-scores-header__solo {\\n padding: 0;\\n border: 0;\\n}\\n\\n/* Gauge */\\n\\n.lh-gauge__wrapper--pass {\\n color: var(--color-pass-secondary);\\n fill: var(--color-pass);\\n stroke: var(--color-pass);\\n}\\n\\n.lh-gauge__wrapper--average {\\n color: var(--color-average-secondary);\\n fill: var(--color-average);\\n stroke: var(--color-average);\\n}\\n\\n.lh-gauge__wrapper--fail {\\n color: var(--color-fail-secondary);\\n fill: var(--color-fail);\\n stroke: var(--color-fail);\\n}\\n\\n.lh-gauge__wrapper--not-applicable {\\n color: var(--color-not-applicable);\\n fill: var(--color-not-applicable);\\n stroke: var(--color-not-applicable);\\n}\\n\\n.lh-fraction__wrapper .lh-fraction__content::before {\\n content: \\\'\\\';\\n height: var(--score-icon-size);\\n width: var(--score-icon-size);\\n margin: var(--score-icon-margin);\\n display: inline-block;\\n}\\n.lh-fraction__wrapper--pass .lh-fraction__content {\\n color: var(--color-pass-secondary);\\n}\\n.lh-fraction__wrapper--pass .lh-fraction__background {\\n background-color: var(--color-pass);\\n}\\n.lh-fraction__wrapper--pass .lh-fraction__content::before {\\n background-color: var(--color-pass);\\n border-radius: 50%;\\n}\\n.lh-fraction__wrapper--average .lh-fraction__content {\\n color: var(--color-average-secondary);\\n}\\n.lh-fraction__wrapper--average .lh-fraction__background,\\n.lh-fraction__wrapper--average .lh-fraction__content::before {\\n background-color: var(--color-average);\\n}\\n.lh-fraction__wrapper--fail .lh-fraction__content {\\n color: var(--color-fail);\\n}\\n.lh-fraction__wrapper--fail .lh-fraction__background {\\n background-color: var(--color-fail);\\n}\\n.lh-fraction__wrapper--fail .lh-fraction__content::before {\\n border-left: calc(var(--score-icon-size) / 2) solid transparent;\\n border-right: calc(var(--score-icon-size) / 2) solid transparent;\\n border-bottom: var(--score-icon-size) solid var(--color-fail);\\n}\\n.lh-fraction__wrapper--null .lh-fraction__content {\\n color: var(--color-gray-700);\\n}\\n.lh-fraction__wrapper--null .lh-fraction__background {\\n background-color: var(--color-gray-700);\\n}\\n.lh-fraction__wrapper--null .lh-fraction__content::before {\\n border-radius: 50%;\\n border: calc(0.2 * var(--score-icon-size)) solid var(--color-gray-700);\\n}\\n\\n.lh-fraction__background {\\n position: absolute;\\n height: 100%;\\n width: 100%;\\n border-radius: calc(var(--gauge-circle-size) / 2);\\n opacity: 0.1;\\n z-index: -1;\\n}\\n\\n.lh-fraction__content-wrapper {\\n height: var(--gauge-circle-size);\\n display: flex;\\n align-items: center;\\n}\\n\\n.lh-fraction__content {\\n display: flex;\\n position: relative;\\n align-items: center;\\n justify-content: center;\\n font-size: calc(0.3 * var(--gauge-circle-size));\\n line-height: calc(0.4 * var(--gauge-circle-size));\\n width: max-content;\\n min-width: calc(1.5 * var(--gauge-circle-size));\\n padding: calc(0.1 * var(--gauge-circle-size)) calc(0.2 * var(--gauge-circle-size));\\n --score-icon-size: calc(0.21 * var(--gauge-circle-size));\\n --score-icon-margin: 0 calc(0.15 * var(--gauge-circle-size)) 0 0;\\n}\\n\\n.lh-gauge {\\n stroke-linecap: round;\\n width: var(--gauge-circle-size);\\n height: var(--gauge-circle-size);\\n}\\n\\n.lh-category .lh-gauge {\\n --gauge-circle-size: var(--gauge-circle-size-big);\\n}\\n\\n.lh-gauge-base {\\n opacity: 0.1;\\n}\\n\\n.lh-gauge-arc {\\n fill: none;\\n transform-origin: 50% 50%;\\n animation: load-gauge var(--transition-length) ease both;\\n animation-delay: 250ms;\\n}\\n\\n.lh-gauge__svg-wrapper {\\n position: relative;\\n height: var(--gauge-circle-size);\\n}\\n.lh-category .lh-gauge__svg-wrapper,\\n.lh-category .lh-fraction__wrapper {\\n --gauge-circle-size: var(--gauge-circle-size-big);\\n}\\n\\n/* The plugin badge overlay */\\n.lh-gauge__wrapper--plugin .lh-gauge__svg-wrapper::before {\\n width: var(--plugin-badge-size);\\n height: var(--plugin-badge-size);\\n background-color: var(--plugin-badge-background-color);\\n background-image: var(--plugin-icon-url);\\n background-repeat: no-repeat;\\n background-size: var(--plugin-icon-size);\\n background-position: 58% 50%;\\n content: "";\\n position: absolute;\\n right: -6px;\\n bottom: 0px;\\n display: block;\\n z-index: 100;\\n box-shadow: 0 0 4px rgba(0,0,0,.2);\\n border-radius: 25%;\\n}\\n.lh-category .lh-gauge__wrapper--plugin .lh-gauge__svg-wrapper::before {\\n width: var(--plugin-badge-size-big);\\n height: var(--plugin-badge-size-big);\\n}\\n\\n@keyframes load-gauge {\\n from { stroke-dasharray: 0 352; }\\n}\\n\\n.lh-gauge__percentage {\\n width: 100%;\\n height: var(--gauge-circle-size);\\n line-height: var(--gauge-circle-size);\\n position: absolute;\\n font-family: var(--report-font-family-monospace);\\n font-size: calc(var(--gauge-circle-size) * 0.34 + 1.3px);\\n text-align: center;\\n top: var(--score-container-padding);\\n}\\n\\n.lh-category .lh-gauge__percentage {\\n --gauge-circle-size: var(--gauge-circle-size-big);\\n --gauge-percentage-font-size: var(--gauge-percentage-font-size-big);\\n}\\n\\n.lh-gauge__wrapper,\\n.lh-fraction__wrapper {\\n position: relative;\\n display: flex;\\n align-items: center;\\n flex-direction: column;\\n text-decoration: none;\\n padding: var(--score-container-padding);\\n\\n --transition-length: 1s;\\n\\n /* Contain the layout style paint & layers during animation*/\\n contain: content;\\n will-change: opacity; /* Only using for layer promotion */\\n}\\n\\n.lh-gauge__label,\\n.lh-fraction__label {\\n font-size: var(--gauge-label-font-size);\\n font-weight: 500;\\n line-height: var(--gauge-label-line-height);\\n margin-top: 10px;\\n text-align: center;\\n color: var(--report-text-color);\\n word-break: keep-all;\\n}\\n\\n/* TODO(#8185) use more BEM (.lh-gauge__label--big) instead of relying on descendant selector */\\n.lh-category .lh-gauge__label,\\n.lh-category .lh-fraction__label {\\n --gauge-label-font-size: var(--gauge-label-font-size-big);\\n --gauge-label-line-height: var(--gauge-label-line-height-big);\\n margin-top: 14px;\\n}\\n\\n.lh-scores-header .lh-gauge__wrapper,\\n.lh-scores-header .lh-fraction__wrapper,\\n.lh-sticky-header .lh-gauge__wrapper,\\n.lh-sticky-header .lh-fraction__wrapper {\\n width: var(--gauge-wrapper-width);\\n}\\n\\n.lh-scorescale {\\n display: inline-flex;\\n\\n gap: calc(var(--default-padding) * 4);\\n margin: 16px auto 0 auto;\\n font-size: var(--report-font-size-secondary);\\n color: var(--color-gray-700);\\n\\n}\\n\\n.lh-scorescale-range {\\n display: flex;\\n align-items: center;\\n font-family: var(--report-font-family-monospace);\\n white-space: nowrap;\\n}\\n\\n.lh-category-header__finalscreenshot .lh-scorescale {\\n border: 0;\\n display: flex;\\n justify-content: center;\\n}\\n\\n.lh-category-header__finalscreenshot .lh-scorescale-range {\\n font-family: unset;\\n font-size: 12px;\\n}\\n\\n.lh-scorescale-wrap {\\n display: contents;\\n}\\n\\n/* Hide category score gauages if it\\\'s a single category report */\\n.lh-header--solo-category .lh-scores-wrapper {\\n display: none;\\n}\\n\\n\\n.lh-categories {\\n width: 100%;\\n}\\n\\n.lh-category {\\n padding: var(--category-padding);\\n max-width: var(--report-content-max-width);\\n margin: 0 auto;\\n\\n scroll-margin-top: calc(var(--sticky-header-buffer) - 1em);\\n}\\n\\n.lh-category-wrapper {\\n border-bottom: 1px solid var(--color-gray-200);\\n}\\n.lh-category-wrapper:last-of-type {\\n border-bottom: 0;\\n}\\n\\n.lh-category-header {\\n margin-bottom: var(--section-padding-vertical);\\n}\\n\\n.lh-category-header .lh-score__gauge {\\n max-width: 400px;\\n width: auto;\\n margin: 0px auto;\\n}\\n\\n.lh-category-header__finalscreenshot {\\n display: grid;\\n grid-template: none / 1fr 1px 1fr;\\n justify-items: center;\\n align-items: center;\\n gap: var(--report-line-height);\\n min-height: 288px;\\n margin-bottom: var(--default-padding);\\n}\\n\\n.lh-final-ss-image {\\n /* constrain the size of the image to not be too large */\\n max-height: calc(var(--gauge-circle-size-big) * 2.8);\\n max-width: calc(var(--gauge-circle-size-big) * 3.5);\\n border: 1px solid var(--color-gray-200);\\n padding: 4px;\\n border-radius: 3px;\\n display: block;\\n}\\n\\n.lh-category-headercol--separator {\\n background: var(--color-gray-200);\\n width: 1px;\\n height: var(--gauge-circle-size-big);\\n}\\n\\n@media screen and (max-width: 780px) {\\n .lh-category-header__finalscreenshot {\\n grid-template: 1fr 1fr / none\\n }\\n .lh-category-headercol--separator {\\n display: none;\\n }\\n}\\n\\n\\n/* 964 fits the min-width of the filmstrip */\\n@media screen and (max-width: 964px) {\\n .lh-report {\\n margin-left: 0;\\n width: 100%;\\n }\\n}\\n\\n@media print {\\n body {\\n -webkit-print-color-adjust: exact; /* print background colors */\\n }\\n .lh-container {\\n display: block;\\n }\\n .lh-report {\\n margin-left: 0;\\n padding-top: 0;\\n }\\n .lh-categories {\\n margin-top: 0;\\n }\\n}\\n\\n.lh-table {\\n position: relative;\\n border-collapse: separate;\\n border-spacing: 0;\\n /* Can\\\'t assign padding to table, so shorten the width instead. */\\n width: calc(100% - var(--audit-description-padding-left) - var(--stackpack-padding-horizontal));\\n border: 1px solid var(--report-border-color-secondary);\\n}\\n\\n.lh-table thead th {\\n position: sticky;\\n top: var(--sticky-header-buffer);\\n z-index: 1;\\n background-color: var(--report-background-color);\\n border-bottom: 1px solid var(--report-border-color-secondary);\\n font-weight: normal;\\n color: var(--color-gray-600);\\n /* See text-wrapping comment on .lh-container. */\\n word-break: normal;\\n}\\n\\n.lh-row--group {\\n background-color: var(--table-group-header-background-color);\\n}\\n\\n.lh-row--group td {\\n font-weight: bold;\\n font-size: 1.05em;\\n color: var(--table-group-header-text-color);\\n}\\n\\n.lh-row--group td:first-child {\\n display: block;\\n min-width: max-content;\\n font-weight: normal;\\n}\\n\\n.lh-row--group .lh-text {\\n color: inherit;\\n text-decoration: none;\\n display: inline-block;\\n}\\n\\n.lh-row--group a.lh-link:hover {\\n text-decoration: underline;\\n}\\n\\n.lh-row--group .lh-audit__adorn {\\n text-transform: capitalize;\\n font-weight: normal;\\n padding: 2px 3px 1px 3px;\\n}\\n\\n.lh-row--group .lh-audit__adorn1p {\\n color: var(--link-color);\\n border-color: var(--link-color);\\n}\\n\\n.lh-row--group .lh-report-icon--external::before {\\n content: "";\\n background-repeat: no-repeat;\\n width: 14px;\\n height: 16px;\\n opacity: 0.7;\\n display: inline-block;\\n vertical-align: middle;\\n}\\n\\n.lh-row--group .lh-report-icon--external {\\n visibility: hidden;\\n}\\n\\n.lh-row--group:hover .lh-report-icon--external {\\n visibility: visible;\\n}\\n\\n.lh-dark .lh-report-icon--external::before {\\n filter: invert(1);\\n}\\n\\n/** Manages indentation of two-level and three-level nested adjacent rows */\\n\\n.lh-row--group ~ [data-entity]:not(.lh-row--group) td:first-child {\\n padding-left: 20px;\\n}\\n\\n.lh-row--group ~ [data-entity]:not(.lh-row--group) ~ .lh-sub-item-row td:first-child {\\n padding-left: 40px;\\n}\\n\\n.lh-row--even {\\n background-color: var(--table-group-header-background-color);\\n}\\n.lh-row--hidden {\\n display: none;\\n}\\n\\n.lh-table th,\\n.lh-table td {\\n padding: var(--default-padding);\\n}\\n\\n.lh-table tr {\\n vertical-align: middle;\\n}\\n\\n.lh-table tr:hover {\\n background-color: var(--table-higlight-background-color);\\n}\\n\\n/* Looks unnecessary, but mostly for keeping the <th>s left-aligned */\\n.lh-table-column--text,\\n.lh-table-column--source-location,\\n.lh-table-column--url,\\n/* .lh-table-column--thumbnail, */\\n/* .lh-table-column--empty,*/\\n.lh-table-column--code,\\n.lh-table-column--node {\\n text-align: left;\\n}\\n\\n.lh-table-column--code {\\n min-width: 100px;\\n}\\n\\n.lh-table-column--bytes,\\n.lh-table-column--timespanMs,\\n.lh-table-column--ms,\\n.lh-table-column--numeric {\\n text-align: right;\\n word-break: normal;\\n}\\n\\n\\n\\n.lh-table .lh-table-column--thumbnail {\\n width: var(--image-preview-size);\\n}\\n\\n.lh-table-column--url {\\n min-width: 250px;\\n}\\n\\n.lh-table-column--text {\\n min-width: 80px;\\n}\\n\\n/* Keep columns narrow if they follow the URL column */\\n/* 12% was determined to be a decent narrow width, but wide enough for column headings */\\n.lh-table-column--url + th.lh-table-column--bytes,\\n.lh-table-column--url + .lh-table-column--bytes + th.lh-table-column--bytes,\\n.lh-table-column--url + .lh-table-column--ms,\\n.lh-table-column--url + .lh-table-column--ms + th.lh-table-column--bytes,\\n.lh-table-column--url + .lh-table-column--bytes + th.lh-table-column--timespanMs {\\n width: 12%;\\n}\\n\\n.lh-text__url-host {\\n display: inline;\\n}\\n\\n.lh-text__url-host {\\n margin-left: calc(var(--report-font-size) / 2);\\n opacity: 0.6;\\n font-size: 90%\\n}\\n\\n.lh-thumbnail {\\n object-fit: cover;\\n width: var(--image-preview-size);\\n height: var(--image-preview-size);\\n display: block;\\n}\\n\\n.lh-unknown pre {\\n overflow: scroll;\\n border: solid 1px var(--color-gray-200);\\n}\\n\\n.lh-text__url > a {\\n color: inherit;\\n text-decoration: none;\\n}\\n\\n.lh-text__url > a:hover {\\n text-decoration: underline dotted #999;\\n}\\n\\n.lh-sub-item-row {\\n margin-left: 20px;\\n margin-bottom: 0;\\n color: var(--color-gray-700);\\n}\\n\\n.lh-sub-item-row td {\\n padding-top: 4px;\\n padding-bottom: 4px;\\n padding-left: 20px;\\n}\\n\\n.lh-sub-item-row .lh-element-screenshot {\\n zoom: 0.6;\\n}\\n\\n/* Chevron\\n https://codepen.io/paulirish/pen/LmzEmK\\n */\\n.lh-chevron {\\n --chevron-angle: 42deg;\\n /* Edge doesn\\\'t support transform: rotate(calc(...)), so we define it here */\\n --chevron-angle-right: -42deg;\\n width: var(--chevron-size);\\n height: var(--chevron-size);\\n margin-top: calc((var(--report-line-height) - 12px) / 2);\\n}\\n\\n.lh-chevron__lines {\\n transition: transform 0.4s;\\n transform: translateY(var(--report-line-height));\\n}\\n.lh-chevron__line {\\n stroke: var(--chevron-line-stroke);\\n stroke-width: var(--chevron-size);\\n stroke-linecap: square;\\n transform-origin: 50%;\\n transform: rotate(var(--chevron-angle));\\n transition: transform 300ms, stroke 300ms;\\n}\\n\\n.lh-expandable-details .lh-chevron__line-right,\\n.lh-expandable-details[open] .lh-chevron__line-left {\\n transform: rotate(var(--chevron-angle-right));\\n}\\n\\n.lh-expandable-details[open] .lh-chevron__line-right {\\n transform: rotate(var(--chevron-angle));\\n}\\n\\n\\n.lh-expandable-details[open] .lh-chevron__lines {\\n transform: translateY(calc(var(--chevron-size) * -1));\\n}\\n\\n.lh-expandable-details[open] {\\n animation: 300ms openDetails forwards;\\n padding-bottom: var(--default-padding);\\n}\\n\\n@keyframes openDetails {\\n from {\\n outline: 1px solid var(--report-background-color);\\n }\\n to {\\n outline: 1px solid;\\n box-shadow: 0 2px 4px rgba(0, 0, 0, .24);\\n }\\n}\\n\\n@media screen and (max-width: 780px) {\\n /* no black outline if we\\\'re not confident the entire table can be displayed within bounds */\\n .lh-expandable-details[open] {\\n animation: none;\\n }\\n}\\n\\n.lh-expandable-details[open] summary, details.lh-clump > summary {\\n border-bottom: 1px solid var(--report-border-color-secondary);\\n}\\ndetails.lh-clump[open] > summary {\\n border-bottom-width: 0;\\n}\\n\\n\\n\\ndetails .lh-clump-toggletext--hide,\\ndetails[open] .lh-clump-toggletext--show { display: none; }\\ndetails[open] .lh-clump-toggletext--hide { display: block;}\\n\\n\\n/* Tooltip */\\n.lh-tooltip-boundary {\\n position: relative;\\n}\\n\\n.lh-tooltip {\\n position: absolute;\\n display: none; /* Don\\\'t retain these layers when not needed */\\n opacity: 0;\\n background: #ffffff;\\n white-space: pre-line; /* Render newlines in the text */\\n min-width: 246px;\\n max-width: 275px;\\n padding: 15px;\\n border-radius: 5px;\\n text-align: initial;\\n line-height: 1.4;\\n}\\n/* shrink tooltips to not be cutoff on left edge of narrow viewports\\n 45vw is chosen to be ~= width of the left column of metrics\\n*/\\n@media screen and (max-width: 535px) {\\n .lh-tooltip {\\n min-width: 45vw;\\n padding: 3vw;\\n }\\n}\\n\\n.lh-tooltip-boundary:hover .lh-tooltip {\\n display: block;\\n animation: fadeInTooltip 250ms;\\n animation-fill-mode: forwards;\\n animation-delay: 850ms;\\n bottom: 100%;\\n z-index: 1;\\n will-change: opacity;\\n right: 0;\\n pointer-events: none;\\n}\\n\\n.lh-tooltip::before {\\n content: "";\\n border: solid transparent;\\n border-bottom-color: #fff;\\n border-width: 10px;\\n position: absolute;\\n bottom: -20px;\\n right: 6px;\\n transform: rotate(180deg);\\n pointer-events: none;\\n}\\n\\n@keyframes fadeInTooltip {\\n 0% { opacity: 0; }\\n 75% { opacity: 1; }\\n 100% { opacity: 1; filter: drop-shadow(1px 0px 1px #aaa) drop-shadow(0px 2px 4px hsla(206, 6%, 25%, 0.15)); pointer-events: auto; }\\n}\\n\\n/* Element screenshot */\\n.lh-element-screenshot {\\n float: left;\\n margin-right: 20px;\\n}\\n.lh-element-screenshot__content {\\n overflow: hidden;\\n min-width: 110px;\\n display: flex;\\n justify-content: center;\\n background-color: var(--report-background-color);\\n}\\n.lh-element-screenshot__image {\\n position: relative;\\n /* Set by ElementScreenshotRenderer.installFullPageScreenshotCssVariable */\\n background-image: var(--element-screenshot-url);\\n outline: 2px solid #777;\\n background-color: white;\\n background-repeat: no-repeat;\\n}\\n.lh-element-screenshot__mask {\\n position: absolute;\\n background: #555;\\n opacity: 0.8;\\n}\\n.lh-element-screenshot__element-marker {\\n position: absolute;\\n outline: 2px solid var(--color-lime-400);\\n}\\n.lh-element-screenshot__overlay {\\n position: fixed;\\n top: 0;\\n left: 0;\\n right: 0;\\n bottom: 0;\\n z-index: 2000; /* .lh-topbar is 1000 */\\n background: var(--screenshot-overlay-background);\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n cursor: zoom-out;\\n}\\n\\n.lh-element-screenshot__overlay .lh-element-screenshot {\\n margin-right: 0; /* clearing margin used in thumbnail case */\\n outline: 1px solid var(--color-gray-700);\\n}\\n\\n.lh-screenshot-overlay--enabled .lh-element-screenshot {\\n cursor: zoom-out;\\n}\\n.lh-screenshot-overlay--enabled .lh-node .lh-element-screenshot {\\n cursor: zoom-in;\\n}\\n\\n\\n.lh-meta__items {\\n --meta-icon-size: calc(var(--report-icon-size) * 0.667);\\n padding: var(--default-padding);\\n display: grid;\\n grid-template-columns: 1fr 1fr 1fr;\\n background-color: var(--env-item-background-color);\\n border-radius: 3px;\\n margin: 0 0 var(--default-padding) 0;\\n font-size: 12px;\\n column-gap: var(--default-padding);\\n color: var(--color-gray-700);\\n}\\n\\n.lh-meta__item {\\n display: block;\\n list-style-type: none;\\n position: relative;\\n padding: 0 0 0 calc(var(--meta-icon-size) + var(--default-padding) * 2);\\n cursor: unset; /* disable pointer cursor from report-icon */\\n}\\n\\n.lh-meta__item.lh-tooltip-boundary {\\n text-decoration: dotted underline var(--color-gray-500);\\n cursor: help;\\n}\\n\\n.lh-meta__item.lh-report-icon::before {\\n position: absolute;\\n left: var(--default-padding);\\n width: var(--meta-icon-size);\\n height: var(--meta-icon-size);\\n}\\n\\n.lh-meta__item.lh-report-icon:hover::before {\\n opacity: 0.7;\\n}\\n\\n.lh-meta__item .lh-tooltip {\\n color: var(--color-gray-800);\\n}\\n\\n.lh-meta__item .lh-tooltip::before {\\n right: auto; /* Set the tooltip arrow to the leftside */\\n left: 6px;\\n}\\n\\n/* Change the grid for narrow viewport. */\\n@media screen and (max-width: 640px) {\\n .lh-meta__items {\\n grid-template-columns: 1fr 1fr;\\n }\\n}\\n@media screen and (max-width: 535px) {\\n .lh-meta__items {\\n display: block;\\n }\\n}\\n\\n/* Explodey gauge */\\n\\n.lh-exp-gauge-component {\\n margin-bottom: 10px;\\n}\\n\\n.lh-exp-gauge-component circle {\\n stroke: currentcolor;\\n r: var(--radius);\\n}\\n\\n.lh-exp-gauge-component text {\\n font-size: calc(var(--radius) * 0.2);\\n}\\n\\n.lh-exp-gauge-component .lh-exp-gauge {\\n margin: 0 auto;\\n width: 225px;\\n stroke-width: var(--stroke-width);\\n stroke-linecap: round;\\n\\n /* for better rendering perf */\\n contain: strict;\\n height: 225px;\\n will-change: transform;\\n}\\n.lh-exp-gauge-component .lh-exp-gauge--faded {\\n opacity: 0.1;\\n}\\n.lh-exp-gauge-component .lh-exp-gauge__wrapper {\\n font-family: var(--report-font-family-monospace);\\n text-align: center;\\n text-decoration: none;\\n transition: .3s;\\n}\\n.lh-exp-gauge-component .lh-exp-gauge__wrapper--pass {\\n color: var(--color-pass);\\n}\\n.lh-exp-gauge-component .lh-exp-gauge__wrapper--average {\\n color: var(--color-average);\\n}\\n.lh-exp-gauge-component .lh-exp-gauge__wrapper--fail {\\n color: var(--color-fail);\\n}\\n.lh-exp-gauge-component .state--expanded {\\n transition: color .3s;\\n}\\n.lh-exp-gauge-component .state--highlight {\\n color: var(--color-highlight);\\n}\\n.lh-exp-gauge-component .lh-exp-gauge__svg-wrapper {\\n display: flex;\\n flex-direction: column-reverse;\\n}\\n\\n.lh-exp-gauge-component .lh-exp-gauge__label {\\n fill: var(--report-text-color);\\n font-family: var(--report-font-family);\\n font-size: 12px;\\n}\\n\\n.lh-exp-gauge-component .lh-exp-gauge__cutout {\\n opacity: .999;\\n transition: opacity .3s;\\n}\\n.lh-exp-gauge-component .state--highlight .lh-exp-gauge__cutout {\\n opacity: 0;\\n}\\n\\n.lh-exp-gauge-component .lh-exp-gauge__inner {\\n color: inherit;\\n}\\n.lh-exp-gauge-component .lh-exp-gauge__base {\\n fill: currentcolor;\\n}\\n\\n\\n.lh-exp-gauge-component .lh-exp-gauge__arc {\\n fill: none;\\n transition: opacity .3s;\\n}\\n.lh-exp-gauge-component .lh-exp-gauge__arc--metric {\\n color: var(--metric-color);\\n stroke-dashoffset: var(--metric-offset);\\n opacity: 0.3;\\n}\\n.lh-exp-gauge-component .lh-exp-gauge-hovertarget {\\n color: currentcolor;\\n opacity: 0.001;\\n stroke-linecap: butt;\\n stroke-width: 24;\\n /* hack. move the hover target out of the center. ideally i tweak the r instead but that rquires considerably more math. */\\n transform: scale(1.15);\\n}\\n.lh-exp-gauge-component .lh-exp-gauge__arc--metric.lh-exp-gauge--miniarc {\\n opacity: 0;\\n stroke-dasharray: 0 calc(var(--circle-meas) * var(--radius));\\n transition: 0s .005s;\\n}\\n.lh-exp-gauge-component .state--expanded .lh-exp-gauge__arc--metric.lh-exp-gauge--miniarc {\\n opacity: .999;\\n stroke-dasharray: var(--metric-array);\\n transition: 0.3s; /* calc(.005s + var(--i)*.05s); entrace animation */\\n}\\n.lh-exp-gauge-component .state--expanded .lh-exp-gauge__inner .lh-exp-gauge__arc {\\n opacity: 0;\\n}\\n\\n\\n.lh-exp-gauge-component .lh-exp-gauge__percentage {\\n text-anchor: middle;\\n dominant-baseline: middle;\\n opacity: .999;\\n font-size: calc(var(--radius) * 0.625);\\n transition: opacity .3s ease-in;\\n}\\n.lh-exp-gauge-component .state--highlight .lh-exp-gauge__percentage {\\n opacity: 0;\\n}\\n\\n.lh-exp-gauge-component .lh-exp-gauge__wrapper--fail .lh-exp-gauge__percentage {\\n fill: var(--color-fail);\\n}\\n.lh-exp-gauge-component .lh-exp-gauge__wrapper--average .lh-exp-gauge__percentage {\\n fill: var(--color-average);\\n}\\n.lh-exp-gauge-component .lh-exp-gauge__wrapper--pass .lh-exp-gauge__percentage {\\n fill: var(--color-pass);\\n}\\n\\n.lh-exp-gauge-component .lh-cover {\\n fill: none;\\n opacity: .001;\\n pointer-events: none;\\n}\\n.lh-exp-gauge-component .state--expanded .lh-cover {\\n pointer-events: auto;\\n}\\n\\n.lh-exp-gauge-component .metric {\\n transform: scale(var(--scale-initial));\\n opacity: 0;\\n transition: transform .1s .2s ease-out, opacity .3s ease-out;\\n pointer-events: none;\\n}\\n.lh-exp-gauge-component .metric text {\\n pointer-events: none;\\n}\\n.lh-exp-gauge-component .metric__value {\\n fill: currentcolor;\\n opacity: 0;\\n transition: opacity 0.2s;\\n}\\n.lh-exp-gauge-component .state--expanded .metric {\\n transform: scale(1);\\n opacity: .999;\\n transition: transform .3s ease-out, opacity .3s ease-in, stroke-width .1s ease-out;\\n transition-delay: calc(var(--i)*.05s);\\n pointer-events: auto;\\n}\\n.lh-exp-gauge-component .state--highlight .metric {\\n opacity: .3;\\n}\\n.lh-exp-gauge-component .state--highlight .metric--highlight {\\n opacity: .999;\\n stroke-width: calc(1.5*var(--stroke-width));\\n}\\n.lh-exp-gauge-component .state--highlight .metric--highlight .metric__value {\\n opacity: 0.999;\\n}\\n\\n\\n/*\\n the initial first load peek\\n*/\\n.lh-exp-gauge-component .lh-exp-gauge__bg { /* needed for the use zindex stacking w/ transparency */\\n fill: var(--report-background-color);\\n stroke: var(--report-background-color);\\n}\\n.lh-exp-gauge-component .state--peek .metric {\\n transition-delay: 0ms;\\n animation: peek var(--peek-dur) cubic-bezier(0.46, 0.03, 0.52, 0.96);\\n animation-fill-mode: forwards;\\n}\\n.lh-exp-gauge-component .state--peek .lh-exp-gauge__inner .lh-exp-gauge__arc {\\n opacity: 1;\\n}\\n.lh-exp-gauge-component .state--peek .lh-exp-gauge__arc.lh-exp-gauge--faded {\\n opacity: 0.3; /* just a tad stronger cuz its fighting with a big solid arg */\\n}\\n/* do i need to set expanded and override this? */\\n.lh-exp-gauge-component .state--peek .lh-exp-gauge__arc--metric.lh-exp-gauge--miniarc {\\n transition: opacity 0.3s;\\n}\\n.lh-exp-gauge-component .state--peek {\\n color: unset;\\n}\\n.lh-exp-gauge-component .state--peek .metric__label {\\n display: none;\\n}\\n\\n.lh-exp-gauge-component .metric__label {\\n fill: var(--report-text-color);\\n}\\n\\n@keyframes peek {\\n /* biggest it should go is 0.92. smallest is 0.8 */\\n 0% {\\n transform: scale(0.8);\\n opacity: 0.8;\\n }\\n\\n 50% {\\n transform: scale(0.92);\\n opacity: 1;\\n }\\n\\n 100% {\\n transform: scale(0.8);\\n opacity: 0.8;\\n }\\n}\\n\\n.lh-exp-gauge-component .wrapper {\\n width: 620px;\\n}\\n\\n/*# sourceURL=report-styles.css */\\n\'),t.append(n),t}(e);case"topbar":return function(e){let t=e.createFragment(),n=e.createElement("style");n.append("\\n .lh-topbar {\\n position: sticky;\\n top: 0;\\n left: 0;\\n right: 0;\\n z-index: 1000;\\n display: flex;\\n align-items: center;\\n height: var(--topbar-height);\\n padding: var(--topbar-padding);\\n font-size: var(--report-font-size-secondary);\\n background-color: var(--topbar-background-color);\\n border-bottom: 1px solid var(--color-gray-200);\\n }\\n\\n .lh-topbar__logo {\\n width: var(--topbar-logo-size);\\n height: var(--topbar-logo-size);\\n user-select: none;\\n flex: none;\\n }\\n\\n .lh-topbar__url {\\n margin: var(--topbar-padding);\\n text-decoration: none;\\n color: var(--report-text-color);\\n text-overflow: ellipsis;\\n overflow: hidden;\\n white-space: nowrap;\\n }\\n\\n .lh-tools {\\n display: flex;\\n align-items: center;\\n margin-left: auto;\\n will-change: transform;\\n min-width: var(--report-icon-size);\\n }\\n .lh-tools__button {\\n width: var(--report-icon-size);\\n min-width: 24px;\\n height: var(--report-icon-size);\\n cursor: pointer;\\n margin-right: 5px;\\n /* This is actually a button element, but we want to style it like a transparent div. */\\n display: flex;\\n background: none;\\n color: inherit;\\n border: none;\\n padding: 0;\\n font: inherit;\\n outline: inherit;\\n }\\n .lh-tools__button svg {\\n fill: var(--tools-icon-color);\\n }\\n .lh-dark .lh-tools__button svg {\\n filter: invert(1);\\n }\\n .lh-tools__button.lh-active + .lh-tools__dropdown {\\n opacity: 1;\\n clip: rect(-1px, 194px, 270px, -3px);\\n visibility: visible;\\n }\\n .lh-tools__dropdown {\\n position: absolute;\\n background-color: var(--report-background-color);\\n border: 1px solid var(--report-border-color);\\n border-radius: 3px;\\n padding: calc(var(--default-padding) / 2) 0;\\n cursor: pointer;\\n top: 36px;\\n right: 0;\\n box-shadow: 1px 1px 3px #ccc;\\n min-width: 125px;\\n clip: rect(0, 164px, 0, 0);\\n visibility: hidden;\\n opacity: 0;\\n transition: all 200ms cubic-bezier(0,0,0.2,1);\\n }\\n .lh-tools__dropdown a {\\n color: currentColor;\\n text-decoration: none;\\n white-space: nowrap;\\n padding: 0 6px;\\n line-height: 2;\\n }\\n .lh-tools__dropdown a:hover,\\n .lh-tools__dropdown a:focus {\\n background-color: var(--color-gray-200);\\n outline: none;\\n }\\n /* save-gist option hidden in report. */\\n .lh-tools__dropdown a[data-action=\'save-gist\'] {\\n display: none;\\n }\\n\\n .lh-locale-selector {\\n width: 100%;\\n color: var(--report-text-color);\\n background-color: var(--locale-selector-background-color);\\n padding: 2px;\\n }\\n .lh-tools-locale {\\n display: flex;\\n align-items: center;\\n flex-direction: row-reverse;\\n }\\n .lh-tools-locale__selector-wrapper {\\n transition: opacity 0.15s;\\n opacity: 0;\\n max-width: 200px;\\n }\\n .lh-button.lh-tool-locale__button {\\n height: var(--topbar-height);\\n color: var(--tools-icon-color);\\n padding: calc(var(--default-padding) / 2);\\n }\\n .lh-tool-locale__button.lh-active + .lh-tools-locale__selector-wrapper {\\n opacity: 1;\\n clip: rect(-1px, 194px, 242px, -3px);\\n visibility: visible;\\n margin: 0 4px;\\n }\\n\\n @media screen and (max-width: 964px) {\\n .lh-tools__dropdown {\\n right: 0;\\n left: initial;\\n }\\n }\\n @media print {\\n .lh-topbar {\\n position: static;\\n margin-left: 0;\\n }\\n\\n .lh-tools__dropdown {\\n display: none;\\n }\\n }\\n "),t.append(n);let r=e.createElement("div","lh-topbar"),i=e.createElementNS("http://www.w3.org/2000/svg","svg","lh-topbar__logo");i.setAttribute("role","img"),i.setAttribute("title","Lighthouse logo"),i.setAttribute("fill","none"),i.setAttribute("xmlns","http://www.w3.org/2000/svg"),i.setAttribute("viewBox","0 0 48 48");let a=e.createElementNS("http://www.w3.org/2000/svg","path");a.setAttribute("d","m14 7 10-7 10 7v10h5v7h-5l5 24H9l5-24H9v-7h5V7Z"),a.setAttribute("fill","#F63");let o=e.createElementNS("http://www.w3.org/2000/svg","path");o.setAttribute("d","M31.561 24H14l-1.689 8.105L31.561 24ZM18.983 48H9l1.022-4.907L35.723 32.27l1.663 7.98L18.983 48Z"),o.setAttribute("fill","#FFA385");let l=e.createElementNS("http://www.w3.org/2000/svg","path");l.setAttribute("fill","#FF3"),l.setAttribute("d","M20.5 10h7v7h-7z"),i.append(" ",a," ",o," ",l," ");let s=e.createElement("a","lh-topbar__url");s.setAttribute("href",""),s.setAttribute("target","_blank"),s.setAttribute("rel","noopener");let c=e.createElement("div","lh-tools"),d=e.createElement("div","lh-tools-locale lh-hidden"),h=e.createElement("button","lh-button lh-tool-locale__button");h.setAttribute("id","lh-button__swap-locales"),h.setAttribute("title","Show Language Picker"),h.setAttribute("aria-label","Toggle language picker"),h.setAttribute("aria-haspopup","menu"),h.setAttribute("aria-expanded","false"),h.setAttribute("aria-controls","lh-tools-locale__selector-wrapper");let p=e.createElementNS("http://www.w3.org/2000/svg","svg");p.setAttribute("width","20px"),p.setAttribute("height","20px"),p.setAttribute("viewBox","0 0 24 24"),p.setAttribute("fill","currentColor");let g=e.createElementNS("http://www.w3.org/2000/svg","path");g.setAttribute("d","M0 0h24v24H0V0z"),g.setAttribute("fill","none");let u=e.createElementNS("http://www.w3.org/2000/svg","path");u.setAttribute("d","M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z"),p.append(g,u),h.append(" ",p," ");let m=e.createElement("div","lh-tools-locale__selector-wrapper");m.setAttribute("id","lh-tools-locale__selector-wrapper"),m.setAttribute("role","menu"),m.setAttribute("aria-labelledby","lh-button__swap-locales"),m.setAttribute("aria-hidden","true"),m.append(" "," "),d.append(" ",h," ",m," ");let f=e.createElement("button","lh-tools__button");f.setAttribute("id","lh-tools-button"),f.setAttribute("title","Tools menu"),f.setAttribute("aria-label","Toggle report tools menu"),f.setAttribute("aria-haspopup","menu"),f.setAttribute("aria-expanded","false"),f.setAttribute("aria-controls","lh-tools-dropdown");let v=e.createElementNS("http://www.w3.org/2000/svg","svg");v.setAttribute("width","100%"),v.setAttribute("height","100%"),v.setAttribute("viewBox","0 0 24 24");let b=e.createElementNS("http://www.w3.org/2000/svg","path");b.setAttribute("d","M0 0h24v24H0z"),b.setAttribute("fill","none");let _=e.createElementNS("http://www.w3.org/2000/svg","path");_.setAttribute("d","M12 8c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"),v.append(" ",b," ",_," "),f.append(" ",v," ");let w=e.createElement("div","lh-tools__dropdown");w.setAttribute("id","lh-tools-dropdown"),w.setAttribute("role","menu"),w.setAttribute("aria-labelledby","lh-tools-button");let y=e.createElement("a","lh-report-icon lh-report-icon--print");y.setAttribute("role","menuitem"),y.setAttribute("tabindex","-1"),y.setAttribute("href","#"),y.setAttribute("data-i18n","dropdownPrintSummary"),y.setAttribute("data-action","print-summary");let x=e.createElement("a","lh-report-icon lh-report-icon--print");x.setAttribute("role","menuitem"),x.setAttribute("tabindex","-1"),x.setAttribute("href","#"),x.setAttribute("data-i18n","dropdownPrintExpanded"),x.setAttribute("data-action","print-expanded");let k=e.createElement("a","lh-report-icon lh-report-icon--copy");k.setAttribute("role","menuitem"),k.setAttribute("tabindex","-1"),k.setAttribute("href","#"),k.setAttribute("data-i18n","dropdownCopyJSON"),k.setAttribute("data-action","copy");let E=e.createElement("a","lh-report-icon lh-report-icon--download lh-hidden");E.setAttribute("role","menuitem"),E.setAttribute("tabindex","-1"),E.setAttribute("href","#"),E.setAttribute("data-i18n","dropdownSaveHTML"),E.setAttribute("data-action","save-html");let S=e.createElement("a","lh-report-icon lh-report-icon--download");S.setAttribute("role","menuitem"),S.setAttribute("tabindex","-1"),S.setAttribute("href","#"),S.setAttribute("data-i18n","dropdownSaveJSON"),S.setAttribute("data-action","save-json");let A=e.createElement("a","lh-report-icon lh-report-icon--open");A.setAttribute("role","menuitem"),A.setAttribute("tabindex","-1"),A.setAttribute("href","#"),A.setAttribute("data-i18n","dropdownViewer"),A.setAttribute("data-action","open-viewer");let z=e.createElement("a","lh-report-icon lh-report-icon--open");z.setAttribute("role","menuitem"),z.setAttribute("tabindex","-1"),z.setAttribute("href","#"),z.setAttribute("data-i18n","dropdownSaveGist"),z.setAttribute("data-action","save-gist");let L=e.createElement("a","lh-report-icon lh-report-icon--open lh-hidden");L.setAttribute("role","menuitem"),L.setAttribute("tabindex","-1"),L.setAttribute("href","#"),L.setAttribute("data-i18n","dropdownViewUnthrottledTrace"),L.setAttribute("data-action","view-unthrottled-trace");let C=e.createElement("a","lh-report-icon lh-report-icon--dark");return C.setAttribute("role","menuitem"),C.setAttribute("tabindex","-1"),C.setAttribute("href","#"),C.setAttribute("data-i18n","dropdownDarkTheme"),C.setAttribute("data-action","toggle-dark"),w.append(" ",y," ",x," ",k," "," ",E," ",S," ",A," ",z," "," ",L," ",C," "),c.append(" ",d," ",f," ",w," "),r.append(" "," ",i," ",s," ",c," "),t.append(r),t}(e);case"warningsToplevel":return function(e){let t=e.createFragment(),n=e.createElement("div","lh-warnings lh-warnings--toplevel"),r=e.createElement("p","lh-warnings__msg"),i=e.createElement("ul");return n.append(" ",r," ",i," "),t.append(n),t}(e)}throw new Error("unexpected component: "+t)}(this,e),this._componentCache.set(e,t),t.cloneNode(!0)}clearComponentCache(){this._componentCache.clear()}convertMarkdownLinkSnippets(e,t={}){let n=this.createElement("span");for(let r of i.splitMarkdownLink(e)){let e=r.text.includes("`")?this.convertMarkdownCodeSnippets(r.text):r.text;if(!r.isLink){n.append(e);continue}let i=new URL(r.linkHref);(["https://developers.google.com","https://web.dev","https://developer.chrome.com"].includes(i.origin)||t.alwaysAppendUtmSource)&&(i.searchParams.set("utm_source","lighthouse"),i.searchParams.set("utm_medium",this._lighthouseChannel));let a=this.createElement("a");a.rel="noopener",a.target="_blank",a.append(e),this.safelySetHref(a,i.href),n.append(a)}return n}safelySetHref(e,t){if((t=t||"").startsWith("#"))return void(e.href=t);let n;try{n=new URL(t)}catch{}n&&["https:","http:"].includes(n.protocol)&&(e.href=n.href)}safelySetBlobHref(e,t){if("text/html"!==t.type&&"application/json"!==t.type)throw new Error("Unsupported blob type");let n=URL.createObjectURL(t);e.href=n}convertMarkdownCodeSnippets(e){let t=this.createElement("span");for(let n of i.splitMarkdownCodeSpans(e))if(n.isCode){let e=this.createElement("code");e.textContent=n.text,t.append(e)}else t.append(this._document.createTextNode(n.text));return t}setLighthouseChannel(e){this._lighthouseChannel=e}document(){return this._document}isDevTools(){return!!this._document.querySelector(".lh-devtools")}find(e,t=this.rootEl??this._document){let n=this.maybeFind(e,t);if(null===n)throw new Error(`query ${e} not found`);return n}maybeFind(e,t){return t.querySelector(e)}findAll(e,t){return Array.from(t.querySelectorAll(e))}fireEventOn(e,t=this._document,n){let r=new CustomEvent(e,n?{detail:n}:void 0);t.dispatchEvent(r)}saveFile(e,t){let n=this.createElement("a");n.download=t,this.safelySetBlobHref(n,e),this._document.body.append(n),n.click(),this._document.body.removeChild(n),setTimeout((()=>URL.revokeObjectURL(n.href)),500)}},o=0,l=class e{static i18n=null;static strings={};static reportJson=null;static apply(t){e.strings={...h,...t.providedStrings},e.i18n=t.i18n,e.reportJson=t.reportJson}static getUniqueSuffix(){return o++}static resetUniqueSuffix(){o=0}},s="data:image/jpeg;base64,";var c=i.RATINGS,d=class e{static prepareReportResult(t){let n=JSON.parse(JSON.stringify(t));!function(e){e.configSettings.locale||(e.configSettings.locale="en"),e.configSettings.formFactor||(e.configSettings.formFactor=e.configSettings.emulatedFormFactor),e.finalDisplayedUrl=i.getFinalDisplayedUrl(e),e.mainDocumentUrl=i.getMainDocumentUrl(e);for(let t of Object.values(e.audits))if(("not_applicable"===t.scoreDisplayMode||"not-applicable"===t.scoreDisplayMode)&&(t.scoreDisplayMode="notApplicable"),"informative"===t.scoreDisplayMode&&(t.score=1),t.details){if((void 0===t.details.type||"diagnostic"===t.details.type)&&(t.details.type="debugdata"),"filmstrip"===t.details.type)for(let e of t.details.items)e.data.startsWith(s)||(e.data=s+e.data);if("table"===t.details.type)for(let e of t.details.headings){let{itemType:t,text:n}=e;void 0!==t&&(e.valueType=t,delete e.itemType),void 0!==n&&(e.label=n,delete e.text);let r=e.subItemsHeading?.itemType;e.subItemsHeading&&void 0!==r&&(e.subItemsHeading.valueType=r,delete e.subItemsHeading.itemType)}if("third-party-summary"===t.id&&("opportunity"===t.details.type||"table"===t.details.type)){let{headings:e,items:n}=t.details;if("link"===e[0].valueType){e[0].valueType="text";for(let e of n)"object"==typeof e.entity&&"link"===e.entity.type&&(e.entity=e.entity.text);t.details.isEntityGrouped=!0}}}let[t]=e.lighthouseVersion.split(".").map(Number),n=e.categories.performance;if(n)if(t<9){e.categoryGroups||(e.categoryGroups={}),e.categoryGroups.hidden={title:""};for(let e of n.auditRefs)e.group?"load-opportunities"===e.group&&(e.group="diagnostics"):e.group="hidden"}else if(t<12)for(let e of n.auditRefs)e.group||(e.group="diagnostics");if(t<12&&n){let t=new Map;for(let e of n.auditRefs){let n=e.relevantAudits;if(n&&e.acronym)for(let r of n){let n=t.get(r)||[];n.push(e.acronym),t.set(r,n)}}for(let[n,r]of t){if(!r.length)continue;let t=e.audits[n];if(t&&!t.metricSavings){t.metricSavings={};for(let e of r)t.metricSavings[e]=0}}}if(e.environment||(e.environment={benchmarkIndex:0,networkUserAgent:e.userAgent,hostUserAgent:e.userAgent}),e.configSettings.screenEmulation||(e.configSettings.screenEmulation={width:-1,height:-1,deviceScaleFactor:-1,mobile:/mobile/i.test(e.environment.hostUserAgent),disabled:!1}),e.i18n||(e.i18n={}),e.audits["full-page-screenshot"]){let t=e.audits["full-page-screenshot"].details;e.fullPageScreenshot=t?{screenshot:t.screenshot,nodes:t.nodes}:null,delete e.audits["full-page-screenshot"]}}(n);for(let t of Object.values(n.audits))t.details&&("opportunity"===t.details.type||"table"===t.details.type)&&!t.details.isEntityGrouped&&n.entities&&e.classifyEntities(n.entities,t.details);if("object"!=typeof n.categories)throw new Error("No categories provided.");let r=new Map;for(let e of Object.values(n.categories))e.auditRefs.forEach((e=>{e.acronym&&r.set(e.acronym,e)})),e.auditRefs.forEach((e=>{let t=n.audits[e.id];e.result=t;let i=Object.keys(e.result.metricSavings||{});if(i.length){e.relevantMetrics=[];for(let t of i){let n=r.get(t);n&&e.relevantMetrics.push(n)}}n.stackPacks&&n.stackPacks.forEach((t=>{t.descriptions[e.id]&&(e.stackPacks=e.stackPacks||[],e.stackPacks.push({title:t.title,iconDataURL:t.iconDataURL,description:t.descriptions[e.id]}))}))}));return n}static getUrlLocatorFn(e){let t=e.find((e=>"url"===e.valueType))?.key;if(t&&"string"==typeof t)return e=>{let n=e[t];if("string"==typeof n)return n};let n=e.find((e=>"source-location"===e.valueType))?.key;return n?e=>{let t=e[n];if("object"==typeof t&&"source-location"===t.type)return t.url}:void 0}static classifyEntities(t,n){let{items:r,headings:a}=n;if(!r.length||r.some((e=>e.entity)))return;let o=e.getUrlLocatorFn(a);if(o)for(let e of r){let n=o(e);if(!n)continue;let r="";try{r=i.parseURL(n).origin}catch{}if(!r)continue;let a=t.find((e=>e.origins.includes(r)));a&&(e.entity=a.name)}}static getTableItemSortComparator(e){return(t,n)=>{for(let r of e){let e=t[r],i=n[r];if((typeof e!=typeof i||!["number","string"].includes(typeof e))&&console.warn(`Warning: Attempting to sort unsupported value type: ${r}.`),"number"==typeof e&&"number"==typeof i&&e!==i)return i-e;if("string"==typeof e&&"string"==typeof i&&e!==i)return e.localeCompare(i)}return 0}}static getEmulationDescriptions(e){let t,n,r,i=e.throttling,a=l.i18n,o=l.strings;switch(e.throttlingMethod){case"provided":r=n=t=o.throttlingProvided;break;case"devtools":{let{cpuSlowdownMultiplier:e,requestLatencyMs:l}=i;t=`${a.formatNumber(e)}x slowdown (DevTools)`,n=`${a.formatMilliseconds(l)} HTTP RTT, ${a.formatKbps(i.downloadThroughputKbps)} down, ${a.formatKbps(i.uploadThroughputKbps)} up (DevTools)`,r=562.5===l&&i.downloadThroughputKbps===1638.4*.9&&675===i.uploadThroughputKbps?o.runtimeSlow4g:o.runtimeCustom;break}case"simulate":{let{cpuSlowdownMultiplier:e,rttMs:l,throughputKbps:s}=i;t=`${a.formatNumber(e)}x slowdown (Simulated)`,n=`${a.formatMilliseconds(l)} TCP RTT, ${a.formatKbps(s)} throughput (Simulated)`,r=150===l&&1638.4===s?o.runtimeSlow4g:o.runtimeCustom;break}default:r=t=n=o.runtimeUnknown}let s="devtools"!==e.channel&&e.screenEmulation.disabled,c="devtools"===e.channel?"mobile"===e.formFactor:e.screenEmulation.mobile,d=o.runtimeMobileEmulation;return s?d=o.runtimeNoEmulation:c||(d=o.runtimeDesktopEmulation),{deviceEmulation:d,screenEmulation:s?void 0:`${e.screenEmulation.width}x${e.screenEmulation.height}, DPR ${e.screenEmulation.deviceScaleFactor}`,cpuThrottling:t,networkThrottling:n,summary:r}}static showAsPassed(e){switch(e.scoreDisplayMode){case"manual":case"notApplicable":return!0;case"error":case"informative":return!1;default:return Number(e.score)>=c.PASS.minScore}}static calculateRating(e,t){if("manual"===t||"notApplicable"===t)return c.PASS.label;if("error"===t)return c.ERROR.label;if(null===e)return c.FAIL.label;let n=c.FAIL.label;return e>=c.PASS.minScore?n=c.PASS.label:e>=c.AVERAGE.minScore&&(n=c.AVERAGE.label),n}static calculateCategoryFraction(t){let n=0,r=0,i=0,a=0;for(let o of t.auditRefs){let t=e.showAsPassed(o.result);if("hidden"!==o.group&&"manual"!==o.result.scoreDisplayMode&&"notApplicable"!==o.result.scoreDisplayMode){if("informative"===o.result.scoreDisplayMode){t||++i;continue}++n,a+=o.weight,t&&r++}}return{numPassed:r,numPassableAudits:n,numInformative:i,totalWeight:a}}static isPluginCategory(e){return e.startsWith("lighthouse-plugin-")}static shouldDisplayAsFraction(e){return"timespan"===e||"snapshot"===e}},h={varianceDisclaimer:"Values are estimated and may vary. The [performance score is calculated](https://developer.chrome.com/docs/lighthouse/performance/performance-scoring/) directly from these metrics.",calculatorLink:"See calculator.",showRelevantAudits:"Show audits relevant to:",opportunityResourceColumnLabel:"Opportunity",opportunitySavingsColumnLabel:"Estimated Savings",errorMissingAuditInfo:"Report error: no audit information",errorLabel:"Error!",warningHeader:"Warnings: ",warningAuditsGroupTitle:"Passed audits but with warnings",passedAuditsGroupTitle:"Passed audits",notApplicableAuditsGroupTitle:"Not applicable",manualAuditsGroupTitle:"Additional items to manually check",toplevelWarningsMessage:"There were issues affecting this run of Lighthouse:",crcInitialNavigation:"Initial Navigation",crcLongestDurationLabel:"Maximum critical path latency:",snippetExpandButtonLabel:"Expand snippet",snippetCollapseButtonLabel:"Collapse snippet",lsPerformanceCategoryDescription:"[Lighthouse](https://developers.google.com/web/tools/lighthouse/) analysis of the current page on an emulated mobile network. Values are estimated and may vary.",labDataTitle:"Lab Data",thirdPartyResourcesLabel:"Show 3rd-party resources",viewTreemapLabel:"View Treemap",viewTraceLabel:"View Trace",dropdownPrintSummary:"Print Summary",dropdownPrintExpanded:"Print Expanded",dropdownCopyJSON:"Copy JSON",dropdownSaveHTML:"Save as HTML",dropdownSaveJSON:"Save as JSON",dropdownViewer:"Open in Viewer",dropdownSaveGist:"Save as Gist",dropdownDarkTheme:"Toggle Dark Theme",dropdownViewUnthrottledTrace:"View Unthrottled Trace",runtimeSettingsDevice:"Device",runtimeSettingsNetworkThrottling:"Network throttling",runtimeSettingsCPUThrottling:"CPU throttling",runtimeSettingsUANetwork:"User agent (network)",runtimeSettingsBenchmark:"Unthrottled CPU/Memory Power",runtimeSettingsAxeVersion:"Axe version",runtimeSettingsScreenEmulation:"Screen emulation",footerIssue:"File an issue",runtimeNoEmulation:"No emulation",runtimeMobileEmulation:"Emulated Moto G Power",runtimeDesktopEmulation:"Emulated Desktop",runtimeUnknown:"Unknown",runtimeSingleLoad:"Single page session",runtimeAnalysisWindow:"Initial page load",runtimeAnalysisWindowTimespan:"User interactions timespan",runtimeAnalysisWindowSnapshot:"Point-in-time snapshot",runtimeSingleLoadTooltip:"This data is taken from a single page session, as opposed to field data summarizing many sessions.",throttlingProvided:"Provided by environment",show:"Show",hide:"Hide",expandView:"Expand view",collapseView:"Collapse view",runtimeSlow4g:"Slow 4G throttling",runtimeCustom:"Custom throttling",firstPartyChipLabel:"1st party",openInANewTabTooltip:"Open in a new tab",unattributable:"Unattributable"},p=class{constructor(e,t){this.dom=e,this.detailsRenderer=t}get _clumpTitles(){return{warning:l.strings.warningAuditsGroupTitle,manual:l.strings.manualAuditsGroupTitle,passed:l.strings.passedAuditsGroupTitle,notApplicable:l.strings.notApplicableAuditsGroupTitle}}renderAudit(e){let t=l.strings,n=this.dom.createComponent("audit"),r=this.dom.find("div.lh-audit",n);r.id=e.result.id;let i=e.result.scoreDisplayMode;e.result.displayValue&&(this.dom.find(".lh-audit__display-text",r).textContent=e.result.displayValue);let a=this.dom.find(".lh-audit__title",r);a.append(this.dom.convertMarkdownCodeSnippets(e.result.title));let o=this.dom.find(".lh-audit__description",r);o.append(this.dom.convertMarkdownLinkSnippets(e.result.description));for(let t of e.relevantMetrics||[]){let e=this.dom.createChildOf(o,"span","lh-audit__adorn");e.title=`Relevant to ${t.result.title}`,e.textContent=t.acronym||t.id}e.stackPacks&&e.stackPacks.forEach((e=>{let t=this.dom.createElement("img","lh-audit__stackpack__img");t.src=e.iconDataURL,t.alt=e.title;let n=this.dom.convertMarkdownLinkSnippets(e.description,{alwaysAppendUtmSource:!0}),i=this.dom.createElement("div","lh-audit__stackpack");i.append(t,n),this.dom.find(".lh-audit__stackpacks",r).append(i)}));let s=this.dom.find("details",r);if(e.result.details){let t=this.detailsRenderer.render(e.result.details);t&&(t.classList.add("lh-details"),s.append(t))}if(this.dom.find(".lh-chevron-container",r).append(this._createChevron()),this._setRatingClass(r,e.result.score,i),"error"===e.result.scoreDisplayMode){r.classList.add("lh-audit--error");let n=this.dom.find(".lh-audit__display-text",r);n.textContent=t.errorLabel,n.classList.add("lh-tooltip-boundary"),this.dom.createChildOf(n,"div","lh-tooltip lh-tooltip--error").textContent=e.result.errorMessage||t.errorMissingAuditInfo}else if(e.result.explanation){this.dom.createChildOf(a,"div","lh-audit-explanation").textContent=e.result.explanation}let c=e.result.warnings;if(!c||0===c.length)return r;let d=this.dom.find("summary",s),h=this.dom.createChildOf(d,"div","lh-warnings");if(this.dom.createChildOf(h,"span").textContent=t.warningHeader,1===c.length)h.append(this.dom.createTextNode(c.join("")));else{let e=this.dom.createChildOf(h,"ul");for(let t of c){this.dom.createChildOf(e,"li").textContent=t}}return r}injectFinalScreenshot(e,t,n){let r=t["final-screenshot"];if(!r||"error"===r.scoreDisplayMode||!r.details||"screenshot"!==r.details.type)return null;let i=this.dom.createElement("img","lh-final-ss-image"),a=r.details.data;i.src=a,i.alt=r.title;let o=this.dom.find(".lh-category .lh-category-header",e),l=this.dom.createElement("div","lh-category-headercol"),s=this.dom.createElement("div","lh-category-headercol lh-category-headercol--separator"),c=this.dom.createElement("div","lh-category-headercol");l.append(...o.childNodes),l.append(n),c.append(i),o.append(l,s,c),o.classList.add("lh-category-header__finalscreenshot")}_createChevron(){let e=this.dom.createComponent("chevron");return this.dom.find("svg.lh-chevron",e)}_setRatingClass(e,t,n){let r=d.calculateRating(t,n);return e.classList.add(`lh-audit--${n.toLowerCase()}`),"informative"!==n&&e.classList.add(`lh-audit--${r}`),e}renderCategoryHeader(e,t,n){let r=this.dom.createComponent("categoryHeader"),i=this.dom.find(".lh-score__gauge",r),a=this.renderCategoryScore(e,t,n);if(i.append(a),e.description){let t=this.dom.convertMarkdownLinkSnippets(e.description);this.dom.find(".lh-category-header__description",r).append(t)}return r}renderAuditGroup(e){let t=this.dom.createElement("div","lh-audit-group"),n=this.dom.createElement("div","lh-audit-group__header");this.dom.createChildOf(n,"span","lh-audit-group__title").textContent=e.title,t.append(n);let r=null;return e.description&&(r=this.dom.convertMarkdownLinkSnippets(e.description),r.classList.add("lh-audit-group__description","lh-audit-group__footer"),t.append(r)),[t,r]}_renderGroupedAudits(e,t){let n=new Map,r="NotAGroup";n.set(r,[]);for(let t of e){let e=t.group||r,i=n.get(e)||[];i.push(t),n.set(e,i)}let i=[];for(let[e,a]of n){if(e===r){for(let e of a)i.push(this.renderAudit(e));continue}let n=t[e],[o,l]=this.renderAuditGroup(n);for(let e of a)o.insertBefore(this.renderAudit(e),l);o.classList.add(`lh-audit-group--${e}`),i.push(o)}return i}renderUnexpandableClump(e,t){let n=this.dom.createElement("div");return this._renderGroupedAudits(e,t).forEach((e=>n.append(e))),n}renderClump(e,{auditRefsOrEls:t,description:n,openByDefault:r}){let i=this.dom.createComponent("clump"),a=this.dom.find(".lh-clump",i);r&&a.setAttribute("open","");let o=this.dom.find(".lh-audit-group__header",a),s=this._clumpTitles[e];this.dom.find(".lh-audit-group__title",o).textContent=s,this.dom.find(".lh-audit-group__itemcount",a).textContent=`(${t.length})`;let c=t.map((e=>e instanceof HTMLElement?e:this.renderAudit(e)));a.append(...c);let d=this.dom.find(".lh-audit-group",i);if(n){let e=this.dom.convertMarkdownLinkSnippets(n);e.classList.add("lh-audit-group__description","lh-audit-group__footer"),d.append(e)}return this.dom.find(".lh-clump-toggletext--show",d).textContent=l.strings.show,this.dom.find(".lh-clump-toggletext--hide",d).textContent=l.strings.hide,a.classList.add(`lh-clump--${e.toLowerCase()}`),d}renderCategoryScore(e,t,n){let r;if(r=n&&d.shouldDisplayAsFraction(n.gatherMode)?this.renderCategoryFraction(e):this.renderScoreGauge(e,t),n?.omitLabel&&this.dom.find(".lh-gauge__label,.lh-fraction__label",r).remove(),n?.onPageAnchorRendered){let e=this.dom.find("a",r);n.onPageAnchorRendered(e)}return r}renderScoreGauge(e,t){let n=this.dom.createComponent("gauge"),r=this.dom.find("a.lh-gauge__wrapper",n);d.isPluginCategory(e.id)&&r.classList.add("lh-gauge__wrapper--plugin");let i=Number(e.score),a=this.dom.find(".lh-gauge",n),o=this.dom.find("circle.lh-gauge-arc",a);o&&this._setGaugeArc(o,i);let s=Math.round(100*i),c=this.dom.find("div.lh-gauge__percentage",n);return c.textContent=s.toString(),null===e.score&&(c.classList.add("lh-gauge--error"),c.textContent="",c.title=l.strings.errorLabel),0===e.auditRefs.length||this.hasApplicableAudits(e)?r.classList.add(`lh-gauge__wrapper--${d.calculateRating(e.score)}`):(r.classList.add("lh-gauge__wrapper--not-applicable"),c.textContent="-",c.title=l.strings.notApplicableAuditsGroupTitle),this.dom.find(".lh-gauge__label",n).textContent=e.title,n}renderCategoryFraction(e){let t=this.dom.createComponent("fraction"),n=this.dom.find("a.lh-fraction__wrapper",t),{numPassed:r,numPassableAudits:i,totalWeight:a}=d.calculateCategoryFraction(e),o=r/i,l=this.dom.find(".lh-fraction__content",t),s=this.dom.createElement("span");s.textContent=`${r}/${i}`,l.append(s);let c=d.calculateRating(o);return 0===a&&(c="null"),n.classList.add(`lh-fraction__wrapper--${c}`),this.dom.find(".lh-fraction__label",t).textContent=e.title,t}hasApplicableAudits(e){return e.auditRefs.some((e=>"notApplicable"!==e.result.scoreDisplayMode))}_setGaugeArc(e,t){let n=2*Math.PI*Number(e.getAttribute("r")),r=Number(e.getAttribute("stroke-width")),i=.25*r/n;e.style.transform=`rotate(${360*i-90}deg)`;let a=t*n-r/2;0===t&&(e.style.opacity="0"),1===t&&(a=n),e.style.strokeDasharray=`${Math.max(a,0)} ${n}`}_auditHasWarning(e){return!!e.result.warnings?.length}_getClumpIdForAuditRef(e){let t=e.result.scoreDisplayMode;return"manual"===t||"notApplicable"===t?t:d.showAsPassed(e.result)?this._auditHasWarning(e)?"warning":"passed":"failed"}render(e,t={},n){let r=this.dom.createElement("div","lh-category");r.id=e.id,r.append(this.renderCategoryHeader(e,t,n));let i=new Map;i.set("failed",[]),i.set("warning",[]),i.set("manual",[]),i.set("passed",[]),i.set("notApplicable",[]);for(let t of e.auditRefs){if("hidden"===t.group)continue;let e=this._getClumpIdForAuditRef(t),n=i.get(e);n.push(t),i.set(e,n)}for(let e of i.values())e.sort(((e,t)=>t.weight-e.weight));let a=i.get("failed")?.length;for(let[n,o]of i){if(0===o.length)continue;if("failed"===n){let e=this.renderUnexpandableClump(o,t);e.classList.add("lh-clump--failed"),r.append(e);continue}let i="manual"===n?e.manualDescription:void 0,l="warning"===n||"manual"===n&&0===a,s=this.renderClump(n,{auditRefsOrEls:o,description:i,openByDefault:l});r.append(s)}return r}},g=class{static initTree(e){let t=0,n=Object.keys(e);return n.length>0&&(t=e[n[0]].request.startTime),{tree:e,startTime:t,transferSize:0}}static createSegment(e,t,n,r,i,a){let o=e[t],l=Object.keys(e),s=l.indexOf(t)===l.length-1,c=!!o.children&&Object.keys(o.children).length>0,d=Array.isArray(i)?i.slice(0):[];return typeof a<"u"&&d.push(!a),{node:o,isLastChild:s,hasChildren:c,startTime:n,transferSize:r+o.request.transferSize,treeMarkers:d}}static createChainNode(e,t,n){let r=e.createComponent("crcChain");e.find(".lh-crc-node",r).setAttribute("title",t.node.request.url);let i=e.find(".lh-crc-node__tree-marker",r);t.treeMarkers.forEach((t=>{let n=t?"lh-tree-marker lh-vert":"lh-tree-marker";i.append(e.createElement("span",n),e.createElement("span","lh-tree-marker"))}));let a=t.isLastChild?"lh-tree-marker lh-up-right":"lh-tree-marker lh-vert-right",o=t.hasChildren?"lh-tree-marker lh-horiz-down":"lh-tree-marker lh-right";i.append(e.createElement("span",a),e.createElement("span","lh-tree-marker lh-right"),e.createElement("span",o));let s=t.node.request.url,c=n.renderTextURL(s),d=e.find(".lh-crc-node__tree-value",r);if(d.append(c),!t.hasChildren){let{startTime:n,endTime:r,transferSize:i}=t.node.request,a=e.createElement("span","lh-crc-node__chain-duration");a.textContent=" - "+l.i18n.formatMilliseconds(1e3*(r-n))+", ";let o=e.createElement("span","lh-crc-node__chain-duration");o.textContent=l.i18n.formatBytesToKiB(i,.01),d.append(a,o)}return r}static buildTree(e,t,n,r,i,a){if(r.append(u.createChainNode(e,n,a)),n.node.children)for(let o of Object.keys(n.node.children)){let l=u.createSegment(n.node.children,o,n.startTime,n.transferSize,n.treeMarkers,n.isLastChild);u.buildTree(e,t,l,r,i,a)}}static render(e,t,n){let r=e.createComponent("crc"),i=e.find(".lh-crc",r);e.find(".lh-crc-initial-nav",r).textContent=l.strings.crcInitialNavigation,e.find(".lh-crc__longest_duration_label",r).textContent=l.strings.crcLongestDurationLabel,e.find(".lh-crc__longest_duration",r).textContent=l.i18n.formatMilliseconds(t.longestChain.duration);let a=u.initTree(t.chains);for(let o of Object.keys(a.tree)){let l=u.createSegment(a.tree,o,a.startTime,a.transferSize);u.buildTree(e,r,l,i,t,n)}return e.find(".lh-crc-container",r)}},u=g;function m(e,t,n){return e<t?t:e>n?n:e}var f=class e{static getScreenshotPositions(e,t,n){let r=function(e){return{x:e.left+e.width/2,y:e.top+e.height/2}}(e),i=m(r.x-t.width/2,0,n.width-t.width),a=m(r.y-t.height/2,0,n.height-t.height);return{screenshot:{left:i,top:a},clip:{left:e.left-i,top:e.top-a}}}static renderClipPathInScreenshot(e,t,n,r,i){let a=e.find("clipPath",t),o=`clip-${l.getUniqueSuffix()}`;a.id=o,t.style.clipPath=`url(#${o})`;let s=n.top/i.height,c=s+r.height/i.height,d=n.left/i.width,h=d+r.width/i.width,p=[`0,0 1,0 1,${s} 0,${s}`,`0,${c} 1,${c} 1,1 0,1`,`0,${s} ${d},${s} ${d},${c} 0,${c}`,`${h},${s} 1,${s} 1,${c} ${h},${c}`];for(let t of p){let n=e.createElementNS("http://www.w3.org/2000/svg","polygon");n.setAttribute("points",t),a.append(n)}}static installFullPageScreenshot(e,t){e.style.setProperty("--element-screenshot-url",`url(\'${t.data}\')`)}static installOverlayFeature(t){let{dom:n,rootEl:r,overlayContainerEl:i,fullPageScreenshot:a}=t,o="lh-screenshot-overlay--enabled";r.classList.contains(o)||(r.classList.add(o),r.addEventListener("click",(t=>{let r=t.target;if(!r)return;let o=r.closest(".lh-node > .lh-element-screenshot");if(!o)return;let l=n.createElement("div","lh-element-screenshot__overlay");i.append(l);let s={width:.95*l.clientWidth,height:.8*l.clientHeight},c={width:Number(o.dataset.rectWidth),height:Number(o.dataset.rectHeight),left:Number(o.dataset.rectLeft),right:Number(o.dataset.rectLeft)+Number(o.dataset.rectWidth),top:Number(o.dataset.rectTop),bottom:Number(o.dataset.rectTop)+Number(o.dataset.rectHeight)},d=e.render(n,a.screenshot,c,s);d?(l.append(d),l.addEventListener("click",(()=>l.remove()))):l.remove()})))}static _computeZoomFactor(e,t){let n={x:t.width/e.width,y:t.height/e.height},r=.75*Math.min(n.x,n.y);return Math.min(1,r)}static render(t,n,r,i){if(!function(e,t){return t.left<=e.width&&0<=t.right&&t.top<=e.height&&0<=t.bottom}(n,r))return null;let a=t.createComponent("elementScreenshot"),o=t.find("div.lh-element-screenshot",a);o.dataset.rectWidth=r.width.toString(),o.dataset.rectHeight=r.height.toString(),o.dataset.rectLeft=r.left.toString(),o.dataset.rectTop=r.top.toString();let l=this._computeZoomFactor(r,i),s={width:i.width/l,height:i.height/l};s.width=Math.min(n.width,s.width),s.height=Math.min(n.height,s.height);let c=s.width*l,d=s.height*l,h=e.getScreenshotPositions(r,s,{width:n.width,height:n.height}),p=t.find("div.lh-element-screenshot__image",o);p.style.width=c+"px",p.style.height=d+"px",p.style.backgroundPositionY=-h.screenshot.top*l+"px",p.style.backgroundPositionX=-h.screenshot.left*l+"px",p.style.backgroundSize=`${n.width*l}px ${n.height*l}px`;let g=t.find("div.lh-element-screenshot__element-marker",o);g.style.width=r.width*l+"px",g.style.height=r.height*l+"px",g.style.left=h.clip.left*l+"px",g.style.top=h.clip.top*l+"px";let u=t.find("div.lh-element-screenshot__mask",o);return u.style.width=c+"px",u.style.height=d+"px",e.renderClipPathInScreenshot(t,u,h.clip,r,s),o}},v=["http://","https://","data:"],b=["bytes","numeric","ms","timespanMs"],_=class{constructor(e){"en-XA"===e&&(e="de"),this._locale=e,this._cachedNumberFormatters=new Map}_formatNumberWithGranularity(e,t,n={}){if(void 0!==t){let r=-Math.log10(t);Number.isInteger(r)||(console.warn(`granularity of ${t} is invalid. Using 1 instead`),t=1),t<1&&((n={...n}).minimumFractionDigits=n.maximumFractionDigits=Math.ceil(r)),e=Math.round(e/t)*t,Object.is(e,-0)&&(e=0)}else Math.abs(e)<5e-4&&(e=0);let r,i=[n.minimumFractionDigits,n.maximumFractionDigits,n.style,n.unit,n.unitDisplay,this._locale].join("");return r=this._cachedNumberFormatters.get(i),r||(r=new Intl.NumberFormat(this._locale,n),this._cachedNumberFormatters.set(i,r)),r.format(e).replace(" "," ")}formatNumber(e,t){return this._formatNumberWithGranularity(e,t)}formatInteger(e){return this._formatNumberWithGranularity(e,1)}formatPercent(e){return new Intl.NumberFormat(this._locale,{style:"percent"}).format(e)}formatBytesToKiB(e,t=void 0){return this._formatNumberWithGranularity(e/1024,t)+" KiB"}formatBytesToMiB(e,t=void 0){return this._formatNumberWithGranularity(e/1048576,t)+" MiB"}formatBytes(e,t=1){return this._formatNumberWithGranularity(e,t,{style:"unit",unit:"byte",unitDisplay:"long"})}formatBytesWithBestUnit(e,t=.1){return e>=1048576?this.formatBytesToMiB(e,t):e>=1024?this.formatBytesToKiB(e,t):this._formatNumberWithGranularity(e,t,{style:"unit",unit:"byte",unitDisplay:"narrow"})}formatKbps(e,t=void 0){return this._formatNumberWithGranularity(e,t,{style:"unit",unit:"kilobit-per-second",unitDisplay:"short"})}formatMilliseconds(e,t=void 0){return this._formatNumberWithGranularity(e,t,{style:"unit",unit:"millisecond",unitDisplay:"short"})}formatSeconds(e,t=void 0){return this._formatNumberWithGranularity(e/1e3,t,{style:"unit",unit:"second",unitDisplay:"narrow"})}formatDateTime(e){let t,n={month:"short",day:"numeric",year:"numeric",hour:"numeric",minute:"numeric",timeZoneName:"short"};try{t=new Intl.DateTimeFormat(this._locale,n)}catch{n.timeZone="UTC",t=new Intl.DateTimeFormat(this._locale,n)}return t.format(new Date(e))}formatDuration(e){let t=e/1e3;if(0===Math.round(t))return"None";let n=[],r={day:86400,hour:3600,minute:60,second:1};return Object.keys(r).forEach((e=>{let i=r[e],a=Math.floor(t/i);if(a>0){t-=a*i;let r=this._formatNumberWithGranularity(a,1,{style:"unit",unit:e,unitDisplay:"narrow"});n.push(r)}})),n.join(" ")}};function w(e,t,n){let r=e.find("div.lh-exp-gauge__wrapper",t);r.className="",r.classList.add("lh-exp-gauge__wrapper",`lh-exp-gauge__wrapper--${d.calculateRating(n.score)}`),function(e,t,n){let r=Number(n.score),{radiusInner:i,radiusOuter:a,circumferenceInner:o,circumferenceOuter:l,getArcLength:s,getMetricArcLength:c,endDiffInner:h,endDiffOuter:p,strokeWidth:g,strokeGap:u}=function(e,t,n){n=n||e/32;let r=e/n,i=.5*n,a=r+i+n,o=2*Math.PI*r,l=Math.acos(1-.5*Math.pow(.5*n/r,2))*r,s=2*Math.PI*a,c=Math.acos(1-.5*Math.pow(.5*n/a,2))*a;return{radiusInner:r,radiusOuter:a,circumferenceInner:o,circumferenceOuter:s,getArcLength:()=>Math.max(0,Number(t*o)),getMetricArcLength:(e,t=!1)=>{let n=t?0:2*c;return Math.max(0,Number(e*s-i-n))},endDiffInner:l,endDiffOuter:c,strokeWidth:n,strokeGap:i}}(128,r),m=e.find("svg.lh-exp-gauge",t);e.find(".lh-exp-gauge__label",m).textContent=n.title,m.setAttribute("viewBox",[-64,-32,128,64].join(" ")),m.style.setProperty("--stroke-width",`${g}px`),m.style.setProperty("--circle-meas",(2*Math.PI).toFixed(4));let f=e.find("g.lh-exp-gauge__outer",t),v=e.find("g.lh-exp-gauge__inner",t),b=e.find("circle.lh-cover",f),_=e.find("circle.lh-exp-gauge__arc",v),w=e.find("text.lh-exp-gauge__percentage",v);f.style.setProperty("--scale-initial",String(i/a)),f.style.setProperty("--radius",`${a}px`),b.style.setProperty("--radius",.5*(i+a)+"px"),b.setAttribute("stroke-width",String(u)),m.style.setProperty("--radius",`${i}px`),_.setAttribute("stroke-dasharray",`${s()} ${(o-s()).toFixed(4)}`),_.setAttribute("stroke-dashoffset",String(.25*o-h)),w.textContent=Math.round(100*r).toString();let y=a+g,x=a-g,k=n.auditRefs.filter((e=>"metrics"===e.group&&e.weight)),E=k.reduce(((e,t)=>e+t.weight),0),S=.25*l-p-.5*u,A=-.5*Math.PI;f.querySelectorAll(".metric").forEach((e=>{k.map((e=>`metric--${e.id}`)).find((t=>e.classList.contains(t)))||e.remove()})),k.forEach(((t,n)=>{let r=t.acronym??t.id,i=!f.querySelector(`.metric--${r}`),a=e.maybeFind(`g.metric--${r}`,f)||e.createSVGElement("g"),o=e.maybeFind(`.metric--${r} circle.lh-exp-gauge--faded`,f)||e.createSVGElement("circle"),s=e.maybeFind(`.metric--${r} circle.lh-exp-gauge--miniarc`,f)||e.createSVGElement("circle"),h=e.maybeFind(`.metric--${r} circle.lh-exp-gauge-hovertarget`,f)||e.createSVGElement("circle"),g=e.maybeFind(`.metric--${r} text.metric__label`,f)||e.createSVGElement("text"),u=e.maybeFind(`.metric--${r} text.metric__value`,f)||e.createSVGElement("text");a.classList.add("metric",`metric--${r}`),o.classList.add("lh-exp-gauge__arc","lh-exp-gauge__arc--metric","lh-exp-gauge--faded"),s.classList.add("lh-exp-gauge__arc","lh-exp-gauge__arc--metric","lh-exp-gauge--miniarc"),h.classList.add("lh-exp-gauge__arc","lh-exp-gauge__arc--metric","lh-exp-gauge-hovertarget");let m=t.weight/E,v=c(m),b=t.result.score?t.result.score*m:0,_=c(b),w=m*l,k=c(m,!0),z=d.calculateRating(t.result.score,t.result.scoreDisplayMode);a.style.setProperty("--metric-rating",z),a.style.setProperty("--metric-color",`var(--color-${z})`),a.style.setProperty("--metric-offset",`${S}`),a.style.setProperty("--i",n.toString()),o.setAttribute("stroke-dasharray",`${v} ${l-v}`),s.style.setProperty("--metric-array",`${_} ${l-_}`),h.setAttribute("stroke-dasharray",`${k} ${l-k-p}`),g.classList.add("metric__label"),u.classList.add("metric__value"),g.textContent=r,u.textContent=`+${Math.round(100*b)}`;let L=A+m*Math.PI,C=Math.cos(L),M=Math.sin(L);switch(!0){case C>0:u.setAttribute("text-anchor","end");break;case C<0:g.setAttribute("text-anchor","end");break;case 0===C:g.setAttribute("text-anchor","middle"),u.setAttribute("text-anchor","middle")}switch(!0){case M>0:g.setAttribute("dominant-baseline","hanging");break;case M<0:u.setAttribute("dominant-baseline","hanging");break;case 0===M:g.setAttribute("dominant-baseline","middle"),u.setAttribute("dominant-baseline","middle")}g.setAttribute("x",(y*C).toFixed(2)),g.setAttribute("y",(y*M).toFixed(2)),u.setAttribute("x",(x*C).toFixed(2)),u.setAttribute("y",(x*M).toFixed(2)),i&&(a.appendChild(o),a.appendChild(s),a.appendChild(h),a.appendChild(g),a.appendChild(u),f.appendChild(a)),S-=w,A+=2*m*Math.PI}));let z=f.querySelector(".lh-exp-gauge-underhovertarget")||e.createSVGElement("circle");z.classList.add("lh-exp-gauge__arc","lh-exp-gauge__arc--metric","lh-exp-gauge-hovertarget","lh-exp-gauge-underhovertarget");let L=c(1,!0);if(z.setAttribute("stroke-dasharray",`${L} ${l-L-p}`),z.isConnected||f.prepend(z),m.dataset.listenersSetup)return;async function C(t){if(await new Promise((e=>setTimeout(e,1e3))),t.classList.contains("state--expanded"))return;let n=e.find(".lh-exp-gauge__inner",t),r=`uniq-${Math.random()}`;n.setAttribute("id",r);let i=e.createSVGElement("use");i.setAttribute("href",`#${r}`),t.appendChild(i);let a=2.5;t.style.setProperty("--peek-dur",`${a}s`),t.classList.add("state--peek","state--expanded");let o=()=>{t.classList.remove("state--peek","state--expanded"),i.remove()},l=setTimeout((()=>{t.removeEventListener("mouseenter",s),o()}),1e3*a*1.5);function s(){clearTimeout(l),o()}t.addEventListener("mouseenter",s,{once:!0})}m.dataset.listenersSetup=!0,C(m),m.addEventListener("pointerover",(n=>{if(n.target===m&&m.classList.contains("state--expanded"))return m.classList.remove("state--expanded"),void(m.classList.contains("state--highlight")&&(m.classList.remove("state--highlight"),e.find(".metric--highlight",m).classList.remove("metric--highlight")));if(!(n.target instanceof Element))return;let r=n.target.parentNode;if(r instanceof SVGElement){if(r&&r===v)return void(m.classList.contains("state--expanded")?m.classList.contains("state--highlight")&&(m.classList.remove("state--highlight"),e.find(".metric--highlight",m).classList.remove("metric--highlight")):m.classList.add("state--expanded"));if(r&&r.classList&&r.classList.contains("metric")){let n=r.style.getPropertyValue("--metric-rating");if(t.style.setProperty("--color-highlight",`var(--color-${n}-secondary)`),m.classList.contains("state--highlight")){let t=e.find(".metric--highlight",m);r!==t&&(t.classList.remove("metric--highlight"),r.classList.add("metric--highlight"))}else m.classList.add("state--highlight"),r.classList.add("metric--highlight")}}})),m.addEventListener("mouseleave",(()=>{m.classList.remove("state--highlight"),m.querySelector(".metric--highlight")?.classList.remove("metric--highlight")}))}(e,r,n)}var y=class extends p{_renderMetric(e){let t=this.dom.createComponent("metric"),n=this.dom.find(".lh-metric",t);n.id=e.result.id;let r=d.calculateRating(e.result.score,e.result.scoreDisplayMode);n.classList.add(`lh-metric--${r}`),this.dom.find(".lh-metric__title",t).textContent=e.result.title;let i=this.dom.find(".lh-metric__value",t);i.textContent=e.result.displayValue||"";let a=this.dom.find(".lh-metric__description",t);if(a.append(this.dom.convertMarkdownLinkSnippets(e.result.description)),"error"===e.result.scoreDisplayMode){a.textContent="",i.textContent="Error!",this.dom.createChildOf(a,"span").textContent=e.result.errorMessage||"Report error: no metric information"}else"notApplicable"===e.result.scoreDisplayMode&&(i.textContent="--");return n}_getScoringCalculatorHref(e){let t=e.filter((e=>"metrics"===e.group)),n=e.find((e=>"interactive"===e.id)),r=e.find((e=>"first-cpu-idle"===e.id)),i=e.find((e=>"first-meaningful-paint"===e.id));n&&t.push(n),r&&t.push(r),i&&"number"==typeof i.result.score&&t.push(i);let a=[...t.map((e=>{let t;return"number"==typeof e.result.numericValue?(t="cumulative-layout-shift"===e.id?(e=>Math.round(100*e)/100)(e.result.numericValue):Math.round(e.result.numericValue),t=t.toString()):t="null",[e.acronym||e.id,t]}))];l.reportJson&&(a.push(["device",l.reportJson.configSettings.formFactor]),a.push(["version",l.reportJson.lighthouseVersion]));let o=new URLSearchParams(a),s=new URL("https://googlechrome.github.io/lighthouse/scorecalc/");return s.hash=o.toString(),s.href}overallImpact(e,t){if(!e.result.metricSavings)return{overallImpact:0,overallLinearImpact:0};let n=0,r=0;for(let[a,o]of Object.entries(e.result.metricSavings)){if(void 0===o)continue;let e=t.find((e=>e.acronym===a));if(!e||null===e.result.score)continue;let l=e.result.numericValue;if(!l)continue;r+=o/l*e.weight;let s=e.result.scoringOptions;s&&(n+=(i.computeLogNormalScore(s,l-o)-e.result.score)*e.weight)}return{overallImpact:n,overallLinearImpact:r}}render(e,t,n){let r=l.strings,i=this.dom.createElement("div","lh-category");i.id=e.id,i.append(this.renderCategoryHeader(e,t,n));let a=e.auditRefs.filter((e=>"metrics"===e.group));if(a.length){let[n,o]=this.renderAuditGroup(t.metrics),s=this.dom.createElement("input","lh-metrics-toggle__input"),c=`lh-metrics-toggle${l.getUniqueSuffix()}`;s.setAttribute("aria-label","Toggle the display of metric descriptions"),s.type="checkbox",s.id=c,n.prepend(s);let d=this.dom.find(".lh-audit-group__header",n),h=this.dom.createChildOf(d,"label","lh-metrics-toggle__label");h.htmlFor=c;let p=this.dom.createChildOf(h,"span","lh-metrics-toggle__labeltext--show"),g=this.dom.createChildOf(h,"span","lh-metrics-toggle__labeltext--hide");p.textContent=l.strings.expandView,g.textContent=l.strings.collapseView;let u=this.dom.createElement("div","lh-metrics-container");if(n.insertBefore(u,o),a.forEach((e=>{u.append(this._renderMetric(e))})),i.querySelector(".lh-gauge__wrapper")){let t=this.dom.find(".lh-category-header__description",i),n=this.dom.createChildOf(t,"div","lh-metrics__disclaimer"),a=this.dom.convertMarkdownLinkSnippets(r.varianceDisclaimer);n.append(a);let o=this.dom.createChildOf(n,"a","lh-calclink");o.target="_blank",o.textContent=r.calculatorLink,this.dom.safelySetHref(o,this._getScoringCalculatorHref(e.auditRefs))}n.classList.add("lh-audit-group--metrics"),i.append(n)}let o=this.dom.createChildOf(i,"div","lh-filmstrip-container"),s=e.auditRefs.find((e=>"screenshot-thumbnails"===e.id))?.result;if(s?.details){o.id=s.id;let e=this.detailsRenderer.render(s.details);e&&o.append(e)}let c=e.auditRefs.filter((e=>"diagnostics"===e.group)).map((e=>{let{overallImpact:t,overallLinearImpact:n}=this.overallImpact(e,a),r=e.result.guidanceLevel||1;return{auditRef:e,auditEl:this.renderAudit(e),overallImpact:t,overallLinearImpact:n,guidanceLevel:r}})),h=c.filter((e=>!d.showAsPassed(e.auditRef.result))),p=c.filter((e=>d.showAsPassed(e.auditRef.result))),[g,u]=this.renderAuditGroup(t.diagnostics);function m(e){for(let t of c)if("All"===e)t.auditEl.hidden=!1;else{let n=void 0===t.auditRef.result.metricSavings?.[e];t.auditEl.hidden=n}h.sort(((t,n)=>{let r=t.auditRef.result.score||0,i=n.auditRef.result.score||0;if(r!==i)return r-i;if("All"!==e){let r=t.auditRef.result.metricSavings?.[e]??-1,i=n.auditRef.result.metricSavings?.[e]??-1;if(r!==i)return i-r}return t.overallImpact!==n.overallImpact?n.overallImpact*n.guidanceLevel-t.overallImpact*t.guidanceLevel:0===t.overallImpact&&0===n.overallImpact&&t.overallLinearImpact!==n.overallLinearImpact?n.overallLinearImpact*n.guidanceLevel-t.overallLinearImpact*t.guidanceLevel:n.guidanceLevel-t.guidanceLevel}));for(let e of h)g.insertBefore(e.auditEl,u)}g.classList.add("lh-audit-group--diagnostics");let f=new Set;for(let e of h){let t=e.auditRef.result.metricSavings||{};for(let[e,n]of Object.entries(t))"number"==typeof n&&f.add(e)}let v=a.filter((e=>e.acronym&&f.has(e.acronym)));if(v.length&&this.renderMetricAuditFilter(v,i,m),m("All"),h.length&&i.append(g),!p.length)return i;let b={auditRefsOrEls:p.map((e=>e.auditEl)),groupDefinitions:t},_=this.renderClump("passed",b);if(i.append(_),(!n||"navigation"===n?.gatherMode)&&null!==e.score){let t=function(e){let t=e.createComponent("explodeyGauge");return e.find(".lh-exp-gauge-component",t)}(this.dom);w(this.dom,t,e),this.dom.find(".lh-score__gauge",i).replaceWith(t)}return i}renderMetricAuditFilter(e,t,n){let r=this.dom.createElement("div","lh-metricfilter");this.dom.createChildOf(r,"span","lh-metricfilter__text").textContent=l.strings.showRelevantAudits;let i=[{acronym:"All",id:"All"},...e],a=l.getUniqueSuffix();for(let e of i){let i=`metric-${e.acronym}-${a}`,o=this.dom.createChildOf(r,"input","lh-metricfilter__radio");o.type="radio",o.name=`metricsfilter-${a}`,o.id=i;let l=this.dom.createChildOf(r,"label","lh-metricfilter__label");l.htmlFor=i,l.title="result"in e?e.result.title:"",l.textContent=e.acronym||e.id,"All"===e.acronym&&(o.checked=!0,l.classList.add("lh-metricfilter__label--active")),t.append(r),o.addEventListener("input",(r=>{for(let e of t.querySelectorAll("label.lh-metricfilter__label"))e.classList.toggle("lh-metricfilter__label--active",e.htmlFor===i);t.classList.toggle("lh-category--filtered","All"!==e.acronym),n(e.acronym||"All");let a=t.querySelectorAll("div.lh-audit-group, details.lh-audit-group");for(let e of a){e.hidden=!1;let t=Array.from(e.querySelectorAll("div.lh-audit")),n=!!t.length&&t.every((e=>e.hidden));e.hidden=n}}))}}},x=class{constructor(e){this._dom=e,this._opts={}}renderReport(e,t,n){if(!this._dom.rootEl&&t){console.warn("Please adopt the new report API in renderer/api.js.");let e=t.closest(".lh-root");e?this._dom.rootEl=e:(t.classList.add("lh-root","lh-vars"),this._dom.rootEl=t)}else this._dom.rootEl&&t&&(this._dom.rootEl=t);n&&(this._opts=n),this._dom.setLighthouseChannel(e.configSettings.channel||"unknown");let r=d.prepareReportResult(e);return this._dom.rootEl.textContent="",this._dom.rootEl.append(this._renderReport(r)),this._opts.occupyEntireViewport&&this._dom.rootEl.classList.add("lh-max-viewport"),this._dom.rootEl}_renderReportTopbar(e){let t=this._dom.createComponent("topbar"),n=this._dom.find("a.lh-topbar__url",t);return n.textContent=e.finalDisplayedUrl,n.title=e.finalDisplayedUrl,this._dom.safelySetHref(n,e.finalDisplayedUrl),t}_renderReportHeader(){let e=this._dom.createComponent("heading"),t=this._dom.createComponent("scoresWrapper");return this._dom.find(".lh-scores-wrapper-placeholder",e).replaceWith(t),e}_renderReportFooter(e){let t=this._dom.createComponent("footer");return this._renderMetaBlock(e,t),this._dom.find(".lh-footer__version_issue",t).textContent=l.strings.footerIssue,this._dom.find(".lh-footer__version",t).textContent=e.lighthouseVersion,t}_renderMetaBlock(e,t){let n=d.getEmulationDescriptions(e.configSettings||{}),r=e.userAgent.match(/(\\w*Chrome\\/[\\d.]+)/),i=Array.isArray(r)?r[1].replace("/"," ").replace("Chrome","Chromium"):"Chromium",a=e.configSettings.channel,o=e.environment.benchmarkIndex.toFixed(0),s=e.environment.credits?.["axe-core"],c=[`${l.strings.runtimeSettingsBenchmark}: ${o}`,`${l.strings.runtimeSettingsCPUThrottling}: ${n.cpuThrottling}`];n.screenEmulation&&c.push(`${l.strings.runtimeSettingsScreenEmulation}: ${n.screenEmulation}`),s&&c.push(`${l.strings.runtimeSettingsAxeVersion}: ${s}`);let h=l.strings.runtimeAnalysisWindow;"timespan"===e.gatherMode?h=l.strings.runtimeAnalysisWindowTimespan:"snapshot"===e.gatherMode&&(h=l.strings.runtimeAnalysisWindowSnapshot);let p=[["date",`Captured at ${l.i18n.formatDateTime(e.fetchTime)}`],["devices",`${n.deviceEmulation} with Lighthouse ${e.lighthouseVersion}`,c.join("\\n")],["samples-one",l.strings.runtimeSingleLoad,l.strings.runtimeSingleLoadTooltip],["stopwatch",h],["networkspeed",`${n.summary}`,`${l.strings.runtimeSettingsNetworkThrottling}: ${n.networkThrottling}`],["chrome",`Using ${i}`+(a?` with ${a}`:""),`${l.strings.runtimeSettingsUANetwork}: "${e.environment.networkUserAgent}"`]],g=this._dom.find(".lh-meta__items",t);for(let[e,t,n]of p){let r=this._dom.createChildOf(g,"li","lh-meta__item");if(r.textContent=t,n){r.classList.add("lh-tooltip-boundary"),this._dom.createChildOf(r,"div","lh-tooltip").textContent=n}r.classList.add("lh-report-icon",`lh-report-icon--${e}`)}}_renderReportWarnings(e){if(!e.runWarnings||0===e.runWarnings.length)return this._dom.createElement("div");let t=this._dom.createComponent("warningsToplevel");this._dom.find(".lh-warnings__msg",t).textContent=l.strings.toplevelWarningsMessage;let n=[];for(let t of e.runWarnings){let e=this._dom.createElement("li");e.append(this._dom.convertMarkdownLinkSnippets(t)),n.push(e)}return this._dom.find("ul",t).append(...n),t}_renderScoreGauges(e,t,n){let r=[],i=[];for(let a of Object.values(e.categories)){let o=(n[a.id]||t).renderCategoryScore(a,e.categoryGroups||{},{gatherMode:e.gatherMode}),l=this._dom.find("a.lh-gauge__wrapper, a.lh-fraction__wrapper",o);l&&(this._dom.safelySetHref(l,`#${a.id}`),l.addEventListener("click",(e=>{if(!l.matches(\'[href^="#"]\'))return;let t=l.getAttribute("href"),n=this._dom.rootEl;if(!t||!n)return;let r=this._dom.find(t,n);e.preventDefault(),r.scrollIntoView()})),this._opts.onPageAnchorRendered?.(l)),d.isPluginCategory(a.id)?i.push(o):r.push(o)}return[...r,...i]}_renderReport(e){l.apply({providedStrings:e.i18n.rendererFormattedStrings,i18n:new _(e.configSettings.locale),reportJson:e});let t=new class{constructor(e,t={}){this._dom=e,this._fullPageScreenshot=t.fullPageScreenshot,this._entities=t.entities}render(e){switch(e.type){case"filmstrip":return this._renderFilmstrip(e);case"list":return this._renderList(e);case"table":case"opportunity":return this._renderTable(e);case"criticalrequestchain":return g.render(this._dom,e,this);case"screenshot":case"debugdata":case"treemap-data":return null;default:return this._renderUnknown(e.type,e)}}_renderBytes(e){let t=l.i18n.formatBytesToKiB(e.value,e.granularity||.1),n=this._renderText(t);return n.title=l.i18n.formatBytes(e.value),n}_renderMilliseconds(e){let t;return t="duration"===e.displayUnit?l.i18n.formatDuration(e.value):l.i18n.formatMilliseconds(e.value,e.granularity||10),this._renderText(t)}renderTextURL(e){let t,n,r,a=e;try{let e=i.parseURL(a);t="/"===e.file?e.origin:e.file,n="/"===e.file||""===e.hostname?"":`(${e.hostname})`,r=a}catch{t=a}let o=this._dom.createElement("div","lh-text__url");if(o.append(this._renderLink({text:t,url:a})),n){let e=this._renderText(n);e.classList.add("lh-text__url-host"),o.append(e)}return r&&(o.title=a,o.dataset.url=a),o}_renderLink(e){let t=this._dom.createElement("a");if(this._dom.safelySetHref(t,e.url),!t.href){let t=this._renderText(e.text);return t.classList.add("lh-link"),t}return t.rel="noopener",t.target="_blank",t.textContent=e.text,t.classList.add("lh-link"),t}_renderText(e){let t=this._dom.createElement("div","lh-text");return t.textContent=e,t}_renderNumeric(e){let t=l.i18n.formatNumber(e.value,e.granularity||.1),n=this._dom.createElement("div","lh-numeric");return n.textContent=t,n}_renderThumbnail(e){let t=this._dom.createElement("img","lh-thumbnail"),n=e;return t.src=n,t.title=n,t.alt="",t}_renderUnknown(e,t){console.error(`Unknown details type: ${e}`,t);let n=this._dom.createElement("details","lh-unknown");return this._dom.createChildOf(n,"summary").textContent=`We don\'t know how to render audit details of type \\`${e}\\`. The Lighthouse version that collected this data is likely newer than the Lighthouse version of the report renderer. Expand for the raw JSON.`,this._dom.createChildOf(n,"pre").textContent=JSON.stringify(t,null,2),n}_renderTableValue(e,t){if(null==e)return null;if("object"==typeof e)switch(e.type){case"code":return this._renderCode(e.value);case"link":return this._renderLink(e);case"node":return this.renderNode(e);case"numeric":return this._renderNumeric(e);case"source-location":return this.renderSourceLocation(e);case"url":return this.renderTextURL(e.value);default:return this._renderUnknown(e.type,e)}switch(t.valueType){case"bytes":{let n=Number(e);return this._renderBytes({value:n,granularity:t.granularity})}case"code":{let t=String(e);return this._renderCode(t)}case"ms":{let n={value:Number(e),granularity:t.granularity,displayUnit:t.displayUnit};return this._renderMilliseconds(n)}case"numeric":{let n=Number(e);return this._renderNumeric({value:n,granularity:t.granularity})}case"text":{let t=String(e);return this._renderText(t)}case"thumbnail":{let t=String(e);return this._renderThumbnail(t)}case"timespanMs":{let t=Number(e);return this._renderMilliseconds({value:t})}case"url":{let t=String(e);return v.some((e=>t.startsWith(e)))?this.renderTextURL(t):this._renderCode(t)}default:return this._renderUnknown(t.valueType,e)}}_getDerivedSubItemsHeading(e){return e.subItemsHeading?{key:e.subItemsHeading.key||"",valueType:e.subItemsHeading.valueType||e.valueType,granularity:e.subItemsHeading.granularity||e.granularity,displayUnit:e.subItemsHeading.displayUnit||e.displayUnit,label:""}:null}_renderTableRow(e,t){let n=this._dom.createElement("tr");for(let r of t){if(!r||!r.key){this._dom.createChildOf(n,"td","lh-table-column--empty");continue}let t,i=e[r.key];if(null!=i&&(t=this._renderTableValue(i,r)),t){let e=`lh-table-column--${r.valueType}`;this._dom.createChildOf(n,"td",e).append(t)}else this._dom.createChildOf(n,"td","lh-table-column--empty")}return n}_renderTableRowsFromItem(e,t){let n=this._dom.createFragment();if(n.append(this._renderTableRow(e,t)),!e.subItems)return n;let r=t.map(this._getDerivedSubItemsHeading);if(!r.some(Boolean))return n;for(let t of e.subItems.items){let e=this._renderTableRow(t,r);e.classList.add("lh-sub-item-row"),n.append(e)}return n}_adornEntityGroupRow(e){let t=e.dataset.entity;if(!t)return;let n=this._entities?.find((e=>e.name===t));if(!n)return;let r=this._dom.find("td",e);if(n.category){let e=this._dom.createElement("span");e.classList.add("lh-audit__adorn"),e.textContent=n.category,r.append(" ",e)}if(n.isFirstParty){let e=this._dom.createElement("span");e.classList.add("lh-audit__adorn","lh-audit__adorn1p"),e.textContent=l.strings.firstPartyChipLabel,r.append(" ",e)}if(n.homepage){let e=this._dom.createElement("a");e.href=n.homepage,e.target="_blank",e.title=l.strings.openInANewTabTooltip,e.classList.add("lh-report-icon--external"),r.append(" ",e)}}_renderEntityGroupRow(e,t){let n={...t[0]};n.valueType="text";let r=[n,...t.slice(1)],i=this._dom.createFragment();return i.append(this._renderTableRow(e,r)),this._dom.find("tr",i).classList.add("lh-row--group"),i}_getEntityGroupItems(e){let{items:t,headings:n,sortedBy:r}=e;if(!t.length||e.isEntityGrouped||!t.some((e=>e.entity)))return[];let i=new Set(e.skipSumming||[]),a=[];for(let e of n)!e.key||i.has(e.key)||b.includes(e.valueType)&&a.push(e.key);let o=n[0].key;if(!o)return[];let s=new Map;for(let e of t){let t="string"==typeof e.entity?e.entity:void 0,n=s.get(t)||{[o]:t||l.strings.unattributable,entity:t};for(let t of a)n[t]=Number(n[t]||0)+Number(e[t]||0);s.set(t,n)}let c=[...s.values()];return r&&c.sort(d.getTableItemSortComparator(r)),c}_renderTable(e){if(!e.items.length)return this._dom.createElement("span");let t=this._dom.createElement("table","lh-table"),n=this._dom.createChildOf(t,"thead"),r=this._dom.createChildOf(n,"tr");for(let t of e.headings){let e=`lh-table-column--${t.valueType||"text"}`,n=this._dom.createElement("div","lh-text");n.textContent=t.label,this._dom.createChildOf(r,"th",e).append(n)}let i=this._getEntityGroupItems(e),a=this._dom.createChildOf(t,"tbody");if(i.length)for(let t of i){let n="string"==typeof t.entity?t.entity:void 0,r=this._renderEntityGroupRow(t,e.headings);for(let t of e.items.filter((e=>e.entity===n)))r.append(this._renderTableRowsFromItem(t,e.headings));let i=this._dom.findAll("tr",r);n&&i.length&&(i.forEach((e=>e.dataset.entity=n)),this._adornEntityGroupRow(i[0])),a.append(r)}else{let t=!0;for(let n of e.items){let r=this._renderTableRowsFromItem(n,e.headings),i=this._dom.findAll("tr",r),o=i[0];if("string"==typeof n.entity&&(o.dataset.entity=n.entity),e.isEntityGrouped&&n.entity)o.classList.add("lh-row--group"),this._adornEntityGroupRow(o);else for(let e of i)e.classList.add(t?"lh-row--even":"lh-row--odd");t=!t,a.append(r)}}return t}_renderList(e){let t=this._dom.createElement("div","lh-list");return e.items.forEach((e=>{let n=this.render(e);n&&t.append(n)})),t}renderNode(e){let t=this._dom.createElement("span","lh-node");if(e.nodeLabel){let n=this._dom.createElement("div");n.textContent=e.nodeLabel,t.append(n)}if(e.snippet){let n=this._dom.createElement("div");n.classList.add("lh-node__snippet"),n.textContent=e.snippet,t.append(n)}if(e.selector&&(t.title=e.selector),e.path&&t.setAttribute("data-path",e.path),e.selector&&t.setAttribute("data-selector",e.selector),e.snippet&&t.setAttribute("data-snippet",e.snippet),!this._fullPageScreenshot)return t;let n=e.lhId&&this._fullPageScreenshot.nodes[e.lhId];if(!n||0===n.width||0===n.height)return t;let r=f.render(this._dom,this._fullPageScreenshot.screenshot,n,{width:147,height:100});return r&&t.prepend(r),t}renderSourceLocation(e){if(!e.url)return null;let t,n,r=`${e.url}:${e.line+1}:${e.column}`;if(e.original&&(t=`${e.original.file||"<unmapped>"}:${e.original.line+1}:${e.original.column}`),"network"===e.urlProvider&&t)n=this._renderLink({url:e.url,text:t}),n.title=`maps to generated location ${r}`;else if("network"!==e.urlProvider||t)if("comment"===e.urlProvider&&t)n=this._renderText(`${t} (from source map)`),n.title=`${r} (from sourceURL)`;else{if("comment"!==e.urlProvider||t)return null;n=this._renderText(`${r} (from sourceURL)`)}else n=this.renderTextURL(e.url),this._dom.find(".lh-link",n).textContent+=`:${e.line+1}:${e.column}`;return n.classList.add("lh-source-location"),n.setAttribute("data-source-url",e.url),n.setAttribute("data-source-line",String(e.line)),n.setAttribute("data-source-column",String(e.column)),n}_renderFilmstrip(e){let t=this._dom.createElement("div","lh-filmstrip");for(let n of e.items){let e=this._dom.createChildOf(t,"div","lh-filmstrip__frame"),r=this._dom.createChildOf(e,"img","lh-filmstrip__thumbnail");r.src=n.data,r.alt="Screenshot"}return t}_renderCode(e){let t=this._dom.createElement("pre","lh-code");return t.textContent=e,t}}(this._dom,{fullPageScreenshot:e.fullPageScreenshot??void 0,entities:e.entities}),n=new p(this._dom,t),r={performance:new y(this._dom,t)},a=this._dom.createElement("div");a.append(this._renderReportHeader());let o,s=this._dom.createElement("div","lh-container"),c=this._dom.createElement("div","lh-report");c.append(this._renderReportWarnings(e)),1===Object.keys(e.categories).length?a.classList.add("lh-header--solo-category"):o=this._dom.createElement("div","lh-scores-header");let h=this._dom.createElement("div");if(h.classList.add("lh-scorescale-wrap"),h.append(this._dom.createComponent("scorescale")),o){let t=this._dom.find(".lh-scores-container",a);o.append(...this._renderScoreGauges(e,n,r)),t.append(o,h);let i=this._dom.createElement("div","lh-sticky-header");i.append(...this._renderScoreGauges(e,n,r)),s.append(i)}let u=this._dom.createElement("div","lh-categories");c.append(u);let m={gatherMode:e.gatherMode};for(let t of Object.values(e.categories)){let i=r[t.id]||n;i.dom.createChildOf(u,"div","lh-category-wrapper").append(i.render(t,e.categoryGroups,m))}n.injectFinalScreenshot(u,e.audits,h);let w=this._dom.createFragment();return this._opts.omitGlobalStyles||w.append(this._dom.createComponent("styles")),this._opts.omitTopbar||w.append(this._renderReportTopbar(e)),w.append(s),c.append(this._renderReportFooter(e)),s.append(a,c),e.fullPageScreenshot&&f.installFullPageScreenshot(this._dom.rootEl,e.fullPageScreenshot.screenshot),w}};function k(e,t){let n=e.rootEl;typeof t>"u"?n.classList.toggle("lh-dark"):n.classList.toggle("lh-dark",t)}var E=typeof btoa<"u"?btoa:e=>Buffer.from(e).toString("base64"),S=typeof atob<"u"?atob:e=>Buffer.from(e,"base64").toString();var A={toBase64:async function(e,t){let n=(new TextEncoder).encode(e);if(t.gzip)if(typeof CompressionStream<"u"){let e=new CompressionStream("gzip"),t=e.writable.getWriter();t.write(n),t.close();let r=await new Response(e.readable).arrayBuffer();n=new Uint8Array(r)}else n=window.pako.gzip(e);let r="";for(let e=0;e<n.length;e+=5e3)r+=String.fromCharCode(...n.subarray(e,e+5e3));return E(r)},fromBase64:function(e,t){let n=S(e),r=Uint8Array.from(n,(e=>e.charCodeAt(0)));return t.gzip?window.pako.ungzip(r,{to:"string"}):(new TextDecoder).decode(r)}};function z(){let e=window.location.host.endsWith(".vercel.app"),t=new URLSearchParams(window.location.search).has("dev");return e?`https://${window.location.host}/gh-pages`:t?"http://localhost:7333":"https://googlechrome.github.io/lighthouse"}function L(e){let t=e.generatedTime,n=e.fetchTime||t;return`${e.lighthouseVersion}-${e.finalDisplayedUrl}-${n}`}async function C(e,t,n){let r=new URL(t),i=!!window.CompressionStream;r.hash=await A.toBase64(JSON.stringify(e),{gzip:i}),i&&r.searchParams.set("gzip","1"),window.open(r.toString(),n)}async function M(e){let t="viewer-"+L(e);!function(e,t,n){let r=new URL(t).origin;window.addEventListener("message",(function t(n){n.origin===r&&i&&n.data.opened&&(i.postMessage(e,r),window.removeEventListener("message",t))}));let i=window.open(t,n)}({lhr:e},z()+"/viewer/",t)}function T(e){return function(e,t){let n=t?new Date(t):new Date,r=n.toLocaleTimeString("en-US",{hour12:!1}),i=n.toLocaleDateString("en-US",{year:"numeric",month:"2-digit",day:"2-digit"}).split("/");return i.unshift(i.pop()),`${e}_${i.join("-")}_${r}`.replace(/[/?<>\\\\:*|"]/g,"-")}(new URL(e.finalDisplayedUrl).hostname,e.fetchTime)}var D=class{constructor(e,t={}){this.json,this._dom=e,this._opts=t,this._topbar=t.omitTopbar?null:new class{constructor(e,t){this.lhr,this._reportUIFeatures=e,this._dom=t,this._dropDownMenu=new class{constructor(e){this._dom=e,this._toggleEl,this._menuEl,this.onDocumentKeyDown=this.onDocumentKeyDown.bind(this),this.onToggleClick=this.onToggleClick.bind(this),this.onToggleKeydown=this.onToggleKeydown.bind(this),this.onMenuFocusOut=this.onMenuFocusOut.bind(this),this.onMenuKeydown=this.onMenuKeydown.bind(this),this._getNextMenuItem=this._getNextMenuItem.bind(this),this._getNextSelectableNode=this._getNextSelectableNode.bind(this),this._getPreviousMenuItem=this._getPreviousMenuItem.bind(this)}setup(e){this._toggleEl=this._dom.find(".lh-topbar button.lh-tools__button",this._dom.rootEl),this._toggleEl.addEventListener("click",this.onToggleClick),this._toggleEl.addEventListener("keydown",this.onToggleKeydown),this._menuEl=this._dom.find(".lh-topbar div.lh-tools__dropdown",this._dom.rootEl),this._menuEl.addEventListener("keydown",this.onMenuKeydown),this._menuEl.addEventListener("click",e)}close(){this._toggleEl.classList.remove("lh-active"),this._toggleEl.setAttribute("aria-expanded","false"),this._menuEl.contains(this._dom.document().activeElement)&&this._toggleEl.focus(),this._menuEl.removeEventListener("focusout",this.onMenuFocusOut),this._dom.document().removeEventListener("keydown",this.onDocumentKeyDown)}open(e){this._toggleEl.classList.contains("lh-active")?e.focus():this._menuEl.addEventListener("transitionend",(()=>{e.focus()}),{once:!0}),this._toggleEl.classList.add("lh-active"),this._toggleEl.setAttribute("aria-expanded","true"),this._menuEl.addEventListener("focusout",this.onMenuFocusOut),this._dom.document().addEventListener("keydown",this.onDocumentKeyDown)}onToggleClick(e){e.preventDefault(),e.stopImmediatePropagation(),this._toggleEl.classList.contains("lh-active")?this.close():this.open(this._getNextMenuItem())}onToggleKeydown(e){switch(e.code){case"ArrowUp":e.preventDefault(),this.open(this._getPreviousMenuItem());break;case"ArrowDown":case"Enter":case" ":e.preventDefault(),this.open(this._getNextMenuItem())}}onMenuKeydown(e){let t=e.target;switch(e.code){case"ArrowUp":e.preventDefault(),this._getPreviousMenuItem(t).focus();break;case"ArrowDown":e.preventDefault(),this._getNextMenuItem(t).focus();break;case"Home":e.preventDefault(),this._getNextMenuItem().focus();break;case"End":e.preventDefault(),this._getPreviousMenuItem().focus()}}onDocumentKeyDown(e){27===e.keyCode&&this.close()}onMenuFocusOut(e){let t=e.relatedTarget;this._menuEl.contains(t)||this.close()}_getNextSelectableNode(e,t){let n=e.filter((e=>e instanceof HTMLElement)).filter((e=>!(e.hasAttribute("disabled")||"none"===window.getComputedStyle(e).display))),r=t?n.indexOf(t)+1:0;return r>=n.length&&(r=0),n[r]}_getNextMenuItem(e){let t=Array.from(this._menuEl.childNodes);return this._getNextSelectableNode(t,e)}_getPreviousMenuItem(e){let t=Array.from(this._menuEl.childNodes).reverse();return this._getNextSelectableNode(t,e)}}(this._dom),this._copyAttempt=!1,this.topbarEl,this.categoriesEl,this.stickyHeaderEl,this.highlightEl,this.onDropDownMenuClick=this.onDropDownMenuClick.bind(this),this.onKeyUp=this.onKeyUp.bind(this),this.onCopy=this.onCopy.bind(this),this.collapseAllDetails=this.collapseAllDetails.bind(this)}enable(e){this.lhr=e,this._dom.rootEl.addEventListener("keyup",this.onKeyUp),this._dom.document().addEventListener("copy",this.onCopy),this._dropDownMenu.setup(this.onDropDownMenuClick),this._setUpCollapseDetailsAfterPrinting(),this._dom.find(".lh-topbar__logo",this._dom.rootEl).addEventListener("click",(()=>k(this._dom))),this._setupStickyHeader()}onDropDownMenuClick(e){e.preventDefault();let t=e.target;if(t&&t.hasAttribute("data-action")){switch(t.getAttribute("data-action")){case"copy":this.onCopyButtonClick();break;case"print-summary":this.collapseAllDetails(),this._print();break;case"print-expanded":this.expandAllDetails(),this._print();break;case"save-json":{let e=JSON.stringify(this.lhr,null,2);this._reportUIFeatures._saveFile(new Blob([e],{type:"application/json"}));break}case"save-html":{let e=this._reportUIFeatures.getReportHtml();try{this._reportUIFeatures._saveFile(new Blob([e],{type:"text/html"}))}catch(e){this._dom.fireEventOn("lh-log",this._dom.document(),{cmd:"error",msg:"Could not export as HTML. "+e.message})}break}case"open-viewer":this._dom.isDevTools()?async function(e){let t="viewer-"+L(e),n=z()+"/viewer/";await C({lhr:e},n,t)}(this.lhr):M(this.lhr);break;case"save-gist":this._reportUIFeatures.saveAsGist();break;case"toggle-dark":k(this._dom);break;case"view-unthrottled-trace":this._reportUIFeatures._opts.onViewTrace?.()}this._dropDownMenu.close()}}onCopy(e){this._copyAttempt&&e.clipboardData&&(e.preventDefault(),e.clipboardData.setData("text/plain",JSON.stringify(this.lhr,null,2)),this._dom.fireEventOn("lh-log",this._dom.document(),{cmd:"log",msg:"Report JSON copied to clipboard"})),this._copyAttempt=!1}onCopyButtonClick(){this._dom.fireEventOn("lh-analytics",this._dom.document(),{cmd:"send",fields:{hitType:"event",eventCategory:"report",eventAction:"copy"}});try{this._dom.document().queryCommandSupported("copy")&&(this._copyAttempt=!0,this._dom.document().execCommand("copy")||(this._copyAttempt=!1,this._dom.fireEventOn("lh-log",this._dom.document(),{cmd:"warn",msg:"Your browser does not support copy to clipboard."})))}catch(e){this._copyAttempt=!1,this._dom.fireEventOn("lh-log",this._dom.document(),{cmd:"log",msg:e.message})}}onKeyUp(e){(e.ctrlKey||e.metaKey)&&80===e.keyCode&&this._dropDownMenu.close()}expandAllDetails(){this._dom.findAll(".lh-categories details",this._dom.rootEl).map((e=>e.open=!0))}collapseAllDetails(){this._dom.findAll(".lh-categories details",this._dom.rootEl).map((e=>e.open=!1))}_print(){this._reportUIFeatures._opts.onPrintOverride?this._reportUIFeatures._opts.onPrintOverride(this._dom.rootEl):self.print()}resetUIState(){this._dropDownMenu.close()}_getScrollParent(e){let{overflowY:t}=window.getComputedStyle(e);return"visible"!==t&&"hidden"!==t?e:e.parentElement?this._getScrollParent(e.parentElement):document}_setUpCollapseDetailsAfterPrinting(){"onbeforeprint"in self?self.addEventListener("afterprint",this.collapseAllDetails):self.matchMedia("print").addListener((e=>{e.matches?this.expandAllDetails():this.collapseAllDetails()}))}_setupStickyHeader(){this.topbarEl=this._dom.find("div.lh-topbar",this._dom.rootEl),this.categoriesEl=this._dom.find("div.lh-categories",this._dom.rootEl),window.requestAnimationFrame((()=>window.requestAnimationFrame((()=>{try{this.stickyHeaderEl=this._dom.find("div.lh-sticky-header",this._dom.rootEl)}catch{return}this.highlightEl=this._dom.createChildOf(this.stickyHeaderEl,"div","lh-highlighter");let e=this._getScrollParent(this._dom.find(".lh-container",this._dom.rootEl));e.addEventListener("scroll",(()=>this._updateStickyHeader()));let t=e instanceof window.Document?document.documentElement:e;new window.ResizeObserver((()=>this._updateStickyHeader())).observe(t)}))))}_updateStickyHeader(){if(!this.stickyHeaderEl)return;let e=this.topbarEl.getBoundingClientRect().bottom>=this.categoriesEl.getBoundingClientRect().top,t=Array.from(this._dom.rootEl.querySelectorAll(".lh-category")).filter((e=>e.getBoundingClientRect().top-window.innerHeight/2<0)),n=t.length>0?t.length-1:0,r=this.stickyHeaderEl.querySelectorAll(".lh-gauge__wrapper, .lh-fraction__wrapper"),i=r[n],a=r[0].getBoundingClientRect().left,o=i.getBoundingClientRect().left-a;this.highlightEl.style.transform=`translate(${o}px)`,this.stickyHeaderEl.classList.toggle("lh-sticky-header--visible",e)}}(this,e),this.onMediaQueryChange=this.onMediaQueryChange.bind(this)}initFeatures(e){this.json=e,this._fullPageScreenshot=i.getFullPageScreenshot(e),this._topbar&&(this._topbar.enable(e),this._topbar.resetUIState()),this._setupMediaQueryListeners(),this._setupThirdPartyFilter(),this._setupElementScreenshotOverlay(this._dom.rootEl);let t=this._dom.isDevTools()||this._opts.disableDarkMode||this._opts.disableAutoDarkModeAndFireworks;!t&&window.matchMedia("(prefers-color-scheme: dark)").matches&&k(this._dom,!0);let n=["performance","accessibility","best-practices","seo"].every((t=>{let n=e.categories[t];return n&&1===n.score})),r=this._opts.disableFireworks||this._opts.disableAutoDarkModeAndFireworks;if(n&&!r&&(this._enableFireworks(),t||k(this._dom,!0)),e.categories.performance&&e.categories.performance.auditRefs.some((t=>!("metrics"!==t.group||!e.audits[t.id].errorMessage)))){this._dom.find("input.lh-metrics-toggle__input",this._dom.rootEl).checked=!0}this.json.audits["script-treemap-data"]&&this.json.audits["script-treemap-data"].details&&this.addButton({text:l.strings.viewTreemapLabel,icon:"treemap",onClick:()=>function(e){if(!e.audits["script-treemap-data"].details)throw new Error("no script treemap data found");C({lhr:{mainDocumentUrl:e.mainDocumentUrl,finalUrl:e.finalUrl,finalDisplayedUrl:e.finalDisplayedUrl,audits:{"script-treemap-data":e.audits["script-treemap-data"]},configSettings:{locale:e.configSettings.locale}}},z()+"/treemap/","treemap-"+L(e))}(this.json)}),this._opts.onViewTrace&&("simulate"===e.configSettings.throttlingMethod?this._dom.find(\'a[data-action="view-unthrottled-trace"]\',this._dom.rootEl).classList.remove("lh-hidden"):this.addButton({text:l.strings.viewTraceLabel,onClick:()=>this._opts.onViewTrace?.()})),this._opts.getStandaloneReportHTML&&this._dom.find(\'a[data-action="save-html"]\',this._dom.rootEl).classList.remove("lh-hidden");for(let e of this._dom.findAll("[data-i18n]",this._dom.rootEl)){let t=e.getAttribute("data-i18n");e.textContent=l.strings[t]}}addButton(e){let t=this._dom.rootEl.querySelector(".lh-audit-group--metrics");if(!t)return;let n=t.querySelector(".lh-buttons");n||(n=this._dom.createChildOf(t,"div","lh-buttons"));let r=["lh-button"];e.icon&&(r.push("lh-report-icon"),r.push(`lh-report-icon--${e.icon}`));let i=this._dom.createChildOf(n,"button",r.join(" "));return i.textContent=e.text,i.addEventListener("click",e.onClick),i}resetUIState(){this._topbar&&this._topbar.resetUIState()}getReportHtml(){if(!this._opts.getStandaloneReportHTML)throw new Error("`getStandaloneReportHTML` is not set");return this.resetUIState(),this._opts.getStandaloneReportHTML()}saveAsGist(){throw new Error("Cannot save as gist from base report")}_enableFireworks(){this._dom.find(".lh-scores-container",this._dom.rootEl).classList.add("lh-score100")}_setupMediaQueryListeners(){let e=self.matchMedia("(max-width: 500px)");e.addListener(this.onMediaQueryChange),this.onMediaQueryChange(e)}_resetUIState(){this._topbar&&this._topbar.resetUIState()}onMediaQueryChange(e){this._dom.rootEl.classList.toggle("lh-narrow",e.matches)}_setupThirdPartyFilter(){let e=["uses-rel-preconnect","third-party-facades"],t=["legacy-javascript"];Array.from(this._dom.rootEl.querySelectorAll("table.lh-table")).filter((e=>e.querySelector("td.lh-table-column--url, td.lh-table-column--source-location"))).filter((t=>{let n=t.closest(".lh-audit");if(!n)throw new Error(".lh-table not within audit");return!e.includes(n.id)})).forEach((e=>{let n=(d=e,Array.from(d.tBodies[0].rows)),r=n.filter((e=>!e.classList.contains("lh-sub-item-row"))),a=this._getThirdPartyRows(r,i.getFinalDisplayedUrl(this.json)),o=n.some((e=>e.classList.contains("lh-row--even"))),s=this._dom.createComponent("3pFilter"),c=this._dom.find("input",s);var d;c.addEventListener("change",(e=>{let t=e.target instanceof HTMLInputElement&&!e.target.checked,n=!0,i=r[0];for(;i;){let e=t&&a.includes(i);do{i.classList.toggle("lh-row--hidden",e),o&&(i.classList.toggle("lh-row--even",!e&&n),i.classList.toggle("lh-row--odd",!e&&!n)),i=i.nextElementSibling}while(i&&i.classList.contains("lh-sub-item-row"));e||(n=!n)}}));let h=a.filter((e=>!e.classList.contains("lh-row--group"))).length;this._dom.find(".lh-3p-filter-count",s).textContent=`${h}`,this._dom.find(".lh-3p-ui-string",s).textContent=l.strings.thirdPartyResourcesLabel;let p=a.length===r.length,g=!a.length;if((p||g)&&(this._dom.find("div.lh-3p-filter",s).hidden=!0),!e.parentNode)return;e.parentNode.insertBefore(s,e);let u=e.closest(".lh-audit");if(!u)throw new Error(".lh-table not within audit");t.includes(u.id)&&!p&&c.click()}))}_setupElementScreenshotOverlay(e){this._fullPageScreenshot&&f.installOverlayFeature({dom:this._dom,rootEl:e,overlayContainerEl:e,fullPageScreenshot:this._fullPageScreenshot})}_getThirdPartyRows(e,t){let n=i.getEntityFromUrl(t,this.json.entities),r=this.json.entities?.find((e=>!0===e.isFirstParty))?.name,a=[];for(let t of e){if(r){if(!t.dataset.entity||t.dataset.entity===r)continue}else{let e=t.querySelector("div.lh-text__url");if(!e)continue;let r=e.dataset.url;if(!r||i.getEntityFromUrl(r,this.json.entities)===n)continue}a.push(t)}return a}_saveFile(e){let t=e.type.match("json")?".json":".html",n=T({finalDisplayedUrl:i.getFinalDisplayedUrl(this.json),fetchTime:this.json.fetchTime})+t;this._opts.onSaveFileOverride?this._opts.onSaveFileOverride(e,n):this._dom.saveFile(e,n)}};window.__initLighthouseReport__=function(){let e=function(e,t={}){let n=document.createElement("article");n.classList.add("lh-root","lh-vars");let r=new a(n.ownerDocument,n);return new x(r).renderReport(e,n,t),new D(r,t).initFeatures(e),n}(window.__LIGHTHOUSE_JSON__,{occupyEntireViewport:!0,getStandaloneReportHTML:()=>document.documentElement.outerHTML});document.body.append(e),document.addEventListener("lh-analytics",(e=>{window.ga&&ga(e.detail.cmd,e.detail.fields)})),document.addEventListener("lh-log",(e=>{let t=document.querySelector("div#lh-log");if(!t)return;let n=new class{constructor(e){this.el=e;let t=document.createElement("style");if(t.textContent="\\n #lh-log {\\n position: fixed;\\n background-color: #323232;\\n color: #fff;\\n min-height: 48px;\\n min-width: 288px;\\n padding: 16px 24px;\\n box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.26);\\n border-radius: 2px;\\n margin: 12px;\\n font-size: 14px;\\n cursor: default;\\n transition: transform 0.3s, opacity 0.3s;\\n transform: translateY(100px);\\n opacity: 0;\\n bottom: 0;\\n left: 0;\\n z-index: 3;\\n display: flex;\\n flex-direction: row;\\n justify-content: center;\\n align-items: center;\\n }\\n \\n #lh-log.lh-show {\\n opacity: 1;\\n transform: translateY(0);\\n }\\n ",!this.el.parentNode)throw new Error("element needs to be in the DOM");this.el.parentNode.insertBefore(t,this.el),this._id=void 0}log(e,t=!0){this._id&&clearTimeout(this._id),this.el.textContent=e,this.el.classList.add("lh-show"),t&&(this._id=setTimeout((()=>{this.el.classList.remove("lh-show")}),7e3))}warn(e){this.log("Warning: "+e)}error(e){this.log(e),setTimeout((()=>{throw new Error(e)}),0)}hide(){this._id&&clearTimeout(this._id),this.el.classList.remove("lh-show")}}(t),r=e.detail;switch(r.cmd){case"log":n.log(r.msg);break;case"warn":n.warn(r.msg);break;case"error":n.error(r.msg);break;case"hide":n.hide()}}))}})();\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n/**\n * @license\n * Copyright 2023 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n/**\n * @license\n * Copyright 2020 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n/**\n * @license Copyright 2023 The Lighthouse Authors. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n*/\n/**\n * @license\n * Copyright 2018 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n *\n * Dummy text for ensuring report robustness: <\\/script> pre$`post %%LIGHTHOUSE_JSON%%\n * (this is handled by terser)\n */\n/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */'},s=class e{static replaceStrings(t,n){if(0===n.length)return t;const r=n[0],i=n.slice(1);return t.split(r.search).map((t=>e.replaceStrings(t,i))).join(r.replacement)}static sanitizeJson(e){return JSON.stringify(e).replace(/</g,"\\u003c").replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029")}static generateReportHtml(t){const n=e.sanitizeJson(t),r=a.REPORT_JAVASCRIPT.replace(/<\//g,"\\u003c/");return e.replaceStrings(a.REPORT_TEMPLATE,[{search:"%%LIGHTHOUSE_JSON%%",replacement:n},{search:"%%LIGHTHOUSE_JAVASCRIPT%%",replacement:r}])}static generateFlowReportHtml(t){const n=e.sanitizeJson(t),r=a.FLOW_REPORT_JAVASCRIPT.replace(/<\//g,"\\u003c/");return e.replaceStrings(a.FLOW_REPORT_TEMPLATE,[{search:"%%LIGHTHOUSE_FLOW_JSON%%",replacement:n},{search:"%%LIGHTHOUSE_FLOW_JAVASCRIPT%%",replacement:r},{search:"/*%%LIGHTHOUSE_FLOW_CSS%%*/",replacement:a.FLOW_REPORT_CSS}])}static generateReportCSV(e){const t=e=>`"${e.replace(/"/g,'""')}"`,n=e=>e.map((e=>null===e?"null":e.toString())).map(t),r=[],i=["requestedUrl","finalDisplayedUrl","fetchTime","gatherMode"];r.push(n(i)),r.push(n(i.map((t=>e[t]??null)))),r.push([]),r.push(["category","score"]);for(const t of Object.values(e.categories))r.push(n([t.id,t.score]));r.push([]),r.push(["category","audit","score","displayValue","description"]);for(const t of Object.values(e.categories))for(const i of t.auditRefs){const o=e.audits[i.id];o&&r.push(n([t.id,i.id,o.score,o.displayValue||"",o.description]))}return r.map((e=>e.join(","))).join("\r\n")}static isFlowResult(e){return"steps"in e}static generateReport(t,n){const r=Array.isArray(n);"string"==typeof n&&(n=[n]);const i=n.map((n=>{if("html"===n)return e.isFlowResult(t)?e.generateFlowReportHtml(t):e.generateReportHtml(t);if("csv"===n){if(e.isFlowResult(t))throw new Error("CSV output is not support for user flows");return e.generateReportCSV(t)}if("json"===n)return JSON.stringify(t,null,2);throw new Error("Invalid output mode: "+n)}));return r?i:i[0]}};return o=i,((i,o,a,s)=>{if(o&&"object"==typeof o||"function"==typeof o)for(let l of n(o))r.call(i,l)||l===a||e(i,l,{get:()=>o[l],enumerable:!(s=t(o,l))||s.enumerable});return i})(e({},"__esModule",{value:!0}),o)})();
2
+ /**
3
+ * @license
4
+ * Copyright 2021 Google LLC
5
+ * SPDX-License-Identifier: Apache-2.0
6
+ */
7
+ /**
8
+ * @license
9
+ * Copyright 2018 Google LLC
10
+ * SPDX-License-Identifier: Apache-2.0
11
+ */
12
+ /**
13
+ * @license
14
+ * Copyright 2017 Google LLC
15
+ * SPDX-License-Identifier: Apache-2.0
16
+ */return e.ReportGenerator??e},"function"==typeof define&&define.amd?define(u):"object"==typeof module&&module.exports?module.exports=u():(g.Lighthouse=g.Lighthouse||{},g.Lighthouse.ReportGenerator=u(),g.Lighthouse.ReportGenerator.ReportGenerator=g.Lighthouse.ReportGenerator);const m={canOnlyAuditHttphttpsPages:"Can only audit pages on HTTP or HTTPS. Navigate to a different page.",thereMayBeStoredDataAffectingSingular:"There may be stored data affecting loading performance in this location: {PH1}. Audit this page in an incognito window to prevent those resources from affecting your scores.",thereMayBeStoredDataAffectingLoadingPlural:"There may be stored data affecting loading performance in these locations: {PH1}. Audit this page in an incognito window to prevent those resources from affecting your scores.",multipleTabsAreBeingControlledBy:"Multiple tabs are being controlled by the same `service worker`. Close your other tabs on the same origin to audit this page.",atLeastOneCategoryMustBeSelected:"At least one category must be selected.",localStorage:"Local storage",indexeddb:"IndexedDB",webSql:"Web SQL",performance:"Performance",howLongDoesThisAppTakeToShow:"How long does this app take to show content and become usable",bestPractices:"Best practices",doesThisPageFollowBestPractices:"Does this page follow best practices for modern web development",accessibility:"Accessibility",isThisPageUsableByPeopleWith:"Is this page usable by people with disabilities or impairments",seo:"SEO",isThisPageOptimizedForSearch:"Is this page optimized for search engine results ranking",applyMobileEmulation:"Apply mobile emulation",applyMobileEmulationDuring:"Apply mobile emulation during auditing",lighthouseMode:"Lighthouse mode",runLighthouseInMode:"Run Lighthouse in navigation, timespan, or snapshot mode",navigation:"Navigation (Default)",navigationTooltip:"Navigation mode analyzes a page load, exactly like the original Lighthouse reports.",timespan:"Timespan",timespanTooltip:"Timespan mode analyzes an arbitrary period of time, typically containing user interactions.",snapshot:"Snapshot",snapshotTooltip:"Snapshot mode analyzes the page in a particular state, typically after user interactions.",mobile:"Mobile",desktop:"Desktop",throttlingMethod:"Throttling method",simulatedThrottling:"Simulated throttling (default)",devtoolsThrottling:"DevTools throttling (advanced)",simulateASlowerPageLoadBasedOn:"Simulated throttling simulates a slower page load based on data from an initial unthrottled load. DevTools throttling actually slows down the page.",clearStorage:"Clear storage",resetStorageLocalstorage:"Reset storage (`cache`, `service workers`, etc) before auditing. (Good for performance & `PWA` testing)",enableSampling:"Enable JS sampling",enableJavaScriptSampling:"Enable JavaScript sampling during the Lighthouse run. This will provide more execution details in the performance panel when you view the trace, but has higher CPU overhead and may impact the performance of the page.",javaScriptDisabled:"JavaScript is disabled. You need to enable JavaScript to audit this page. Open the Command Menu and run the Enable JavaScript command to enable JavaScript."},f=n.i18n.registerUIStrings("panels/lighthouse/LighthouseController.ts",m),v=n.i18n.getLocalizedString.bind(void 0,f),b=n.i18n.getLazilyComputedLocalizedString.bind(void 0,f);class w extends e.ObjectWrapper.ObjectWrapper{protocolService;manager;serviceWorkerListeners;inspectedURL;currentLighthouseRun;emulationStateBefore;constructor(t){super(),this.protocolService=t,t.registerStatusCallback((e=>this.dispatchEventToListeners(S.AuditProgressChanged,{message:e})));for(const e of _)e.setting.addChangeListener(this.recomputePageAuditability.bind(this));for(const e of x)e.setting.addChangeListener(this.recomputePageAuditability.bind(this));e.Settings.Settings.instance().moduleSetting("java-script-disabled").addChangeListener(this.recomputePageAuditability.bind(this)),r.TargetManager.TargetManager.instance().observeModels(r.ServiceWorkerManager.ServiceWorkerManager,this),r.TargetManager.TargetManager.instance().addEventListener("InspectedURLChanged",this.recomputePageAuditability,this)}modelAdded(e){e.target()===r.TargetManager.TargetManager.instance().primaryPageTarget()&&(this.manager=e,this.serviceWorkerListeners=[this.manager.addEventListener("RegistrationUpdated",this.recomputePageAuditability,this),this.manager.addEventListener("RegistrationDeleted",this.recomputePageAuditability,this)],this.recomputePageAuditability())}modelRemoved(t){this.manager===t&&(this.serviceWorkerListeners&&e.EventTarget.removeEventListeners(this.serviceWorkerListeners),this.manager=null,this.recomputePageAuditability())}hasActiveServiceWorker(){if(!this.manager)return!1;const t=this.manager.target();if(!t)return!1;const n=e.ParsedURL.ParsedURL.fromString(t.inspectedURL()),r=n&&n.securityOrigin();for(const e of this.manager.registrations().values())if(e.securityOrigin===r)for(const t of e.versions.values())if(t.controlledClients.length>1)return!0;return!1}hasAtLeastOneCategory(){return _.some((e=>e.setting.get()))}unauditablePageMessage(){if(!this.manager)return null;const e=this.manager.target(),t=e&&e.inspectedURL();if(!t?.startsWith("http"))return v(m.canOnlyAuditHttphttpsPages);try{if(new URL(t).pathname.endsWith(".pdf"))return v(m.canOnlyAuditHttphttpsPages)}catch(e){return v(m.canOnlyAuditHttphttpsPages)}return null}javaScriptDisabled(){return e.Settings.Settings.instance().moduleSetting("java-script-disabled").get()}async hasImportantResourcesNotCleared(){const e=x.find((e=>"lighthouse.clear-storage"===e.setting.name));if(e&&!e.setting.get())return"";if(!this.manager)return"";const t=this.manager.target(),n=t.inspectedURL();if(!n)return"";const r=await t.storageAgent().invoke_getUsageAndQuota({origin:n});if(r.getError())return"";const i=r.usageBreakdown.filter((e=>e.usage)).map((e=>y.get(e.storageType))).map((e=>e?e():void 0)).filter(Boolean);return 1===i.length?v(m.thereMayBeStoredDataAffectingSingular,{PH1:String(i[0])}):i.length>1?v(m.thereMayBeStoredDataAffectingLoadingPlural,{PH1:i.join(", ")}):""}async evaluateInspectedURL(){const e=r.TargetManager.TargetManager.instance().primaryPageTarget();if(!e)throw new Error("Unable to find main target required for Lighthouse");const t=e.inspectedURL(),n=e.model(r.ResourceTreeModel.ResourceTreeModel),i=n&&await n.navigationHistory();if(!n||!i)return t;const{currentIndex:o,entries:a}=i;return a[o].url}getCurrentRun(){return this.currentLighthouseRun}getFlags(){const e={};for(const t of x)t.setFlags(e,t.setting.get());return e}getCategoryIDs(){const e=[];for(const t of _)t.setting.get()&&e.push(t.configID);return e}async getInspectedURL(e){return(e&&e.force||!this.inspectedURL)&&(this.inspectedURL=await this.evaluateInspectedURL()),this.inspectedURL}recomputePageAuditability(){const e=this.hasActiveServiceWorker(),t=this.hasAtLeastOneCategory(),n=this.unauditablePageMessage(),r=this.javaScriptDisabled();let i="";e?i=v(m.multipleTabsAreBeingControlledBy):t?n?i=n:r&&(i=v(m.javaScriptDisabled)):i=v(m.atLeastOneCategoryMustBeSelected),this.dispatchEventToListeners(S.PageAuditabilityChanged,{helpText:i}),this.hasImportantResourcesNotCleared().then((e=>{"navigation"!==this.getFlags().mode&&(e=""),this.dispatchEventToListeners(S.PageWarningsChanged,{warning:e})}))}recordMetrics(e,n){t.userMetrics.actionTaken(t.UserMetrics.Action.LighthouseStarted);for(const e of _)n.includes(e.configID)&&t.userMetrics.lighthouseCategoryUsed(e.userMetric);switch(e.mode){case"navigation":t.userMetrics.lighthouseModeRun(0);break;case"timespan":t.userMetrics.lighthouseModeRun(1);break;case"snapshot":t.userMetrics.lighthouseModeRun(2)}}async startLighthouse(){try{const e=await this.getInspectedURL({force:!0}),t=this.getCategoryIDs(),n=this.getFlags();this.recordMetrics(n,t),this.currentLighthouseRun={inspectedURL:e,categoryIDs:t,flags:n},await this.setupEmulationAndProtocolConnection(),"timespan"===n.mode&&await this.protocolService.startTimespan(this.currentLighthouseRun)}catch(e){throw await this.restoreEmulationAndProtocolConnection(),e}}async collectLighthouseResults(){try{if(!this.currentLighthouseRun)throw new Error("Lighthouse is not started");const e=await this.protocolService.collectLighthouseResults(this.currentLighthouseRun);if(!e)throw new Error("Auditing failed to produce a result");if(e.fatal){const t=new Error(e.message);throw t.stack=e.stack,t}return t.userMetrics.actionTaken(t.UserMetrics.Action.LighthouseFinished),await this.restoreEmulationAndProtocolConnection(),e}catch(e){throw await this.restoreEmulationAndProtocolConnection(),e}finally{this.currentLighthouseRun=void 0}}async cancelLighthouse(){await this.restoreEmulationAndProtocolConnection(),this.currentLighthouseRun=void 0}async setupEmulationAndProtocolConnection(){const e=this.getFlags(),t=i.DeviceModeModel.DeviceModeModel.instance();if(this.emulationStateBefore={emulation:{type:t.type(),enabled:t.enabledSetting().get(),outlineEnabled:t.deviceOutlineSetting().get(),toolbarControlsEnabled:t.toolbarControlsEnabledSetting().get(),scale:t.scaleSetting().get(),device:t.device(),mode:t.mode()},network:{conditions:r.NetworkManager.MultitargetNetworkManager.instance().networkConditions()}},t.toolbarControlsEnabledSetting().set(!1),"formFactor"in e&&"desktop"===e.formFactor)t.enabledSetting().set(!1),t.emulate(i.DeviceModeModel.Type.None,null,null);else if("mobile"===e.formFactor){t.enabledSetting().set(!0),t.deviceOutlineSetting().set(!0);for(const e of i.EmulatedDevices.EmulatedDevicesList.instance().standard())"Moto G Power"===e.title&&t.emulate(i.DeviceModeModel.Type.Device,e,e.modes[0],1)}await this.protocolService.attach()}async restoreEmulationAndProtocolConnection(){if(!this.currentLighthouseRun)return;if(await this.protocolService.detach(),this.emulationStateBefore){const e=i.DeviceModeModel.DeviceModeModel.instance();e.emulate(i.DeviceModeModel.Type.None,null,null);const{type:t,enabled:n,outlineEnabled:o,toolbarControlsEnabled:a,scale:s,device:l,mode:c}=this.emulationStateBefore.emulation;e.enabledSetting().set(n),e.deviceOutlineSetting().set(o),e.toolbarControlsEnabledSetting().set(a),t===i.DeviceModeModel.Type.Responsive&&e.scaleSetting().set(s),e.emulate(t,l,c,s),r.NetworkManager.MultitargetNetworkManager.instance().setNetworkConditions(this.emulationStateBefore.network.conditions),delete this.emulationStateBefore}o.InspectedPagePlaceholder.InspectedPagePlaceholder.instance().update(!0);const e=r.TargetManager.TargetManager.instance().primaryPageTarget();if(!e)return;const t=e.model(r.ResourceTreeModel.ResourceTreeModel);if(!t)return;if("navigation"===this.currentLighthouseRun.flags.mode){const e=await this.getInspectedURL();await t.navigate(e)}}}const y=new Map([["local_storage",b(m.localStorage)],["indexeddb",b(m.indexeddb)],["websql",b(m.webSql)]]),_=[{setting:e.Settings.Settings.instance().createSetting("lighthouse.cat-perf",!0,"Synced"),configID:"performance",title:b(m.performance),description:b(m.howLongDoesThisAppTakeToShow),supportedModes:["navigation","timespan","snapshot"],userMetric:0},{setting:e.Settings.Settings.instance().createSetting("lighthouse.cat-a11y",!0,"Synced"),configID:"accessibility",title:b(m.accessibility),description:b(m.isThisPageUsableByPeopleWith),supportedModes:["navigation","snapshot"],userMetric:1},{setting:e.Settings.Settings.instance().createSetting("lighthouse.cat-best-practices",!0,"Synced"),configID:"best-practices",title:b(m.bestPractices),description:b(m.doesThisPageFollowBestPractices),supportedModes:["navigation","timespan","snapshot"],userMetric:2},{setting:e.Settings.Settings.instance().createSetting("lighthouse.cat-seo",!0,"Synced"),configID:"seo",title:b(m.seo),description:b(m.isThisPageOptimizedForSearch),supportedModes:["navigation","snapshot"],userMetric:3}],x=[{setting:e.Settings.Settings.instance().createSetting("lighthouse.device-type","mobile","Synced"),title:b(m.applyMobileEmulation),description:b(m.applyMobileEmulationDuring),setFlags:(e,t)=>{e.formFactor=t},options:[{label:b(m.mobile),value:"mobile"},{label:b(m.desktop),value:"desktop"}],learnMore:void 0},{setting:e.Settings.Settings.instance().createSetting("lighthouse.mode","navigation","Synced"),title:b(m.lighthouseMode),description:b(m.runLighthouseInMode),setFlags:(e,t)=>{e.mode=t},options:[{label:b(m.navigation),tooltip:b(m.navigationTooltip),value:"navigation"},{label:b(m.timespan),tooltip:b(m.timespanTooltip),value:"timespan"},{label:b(m.snapshot),tooltip:b(m.snapshotTooltip),value:"snapshot"}],learnMore:"https://github.com/GoogleChrome/lighthouse/blob/HEAD/docs/user-flows.md"},{setting:e.Settings.Settings.instance().createSetting("lighthouse.throttling","simulate","Synced"),title:b(m.throttlingMethod),learnMore:"https://github.com/GoogleChrome/lighthouse/blob/master/docs/throttling.md#devtools-lighthouse-panel-throttling",description:b(m.simulateASlowerPageLoadBasedOn),setFlags:(e,t)=>{e.throttlingMethod="string"==typeof t?t:t?"simulate":"devtools"},options:[{label:b(m.simulatedThrottling),value:"simulate"},{label:b(m.devtoolsThrottling),value:"devtools"}]},{setting:e.Settings.Settings.instance().createSetting("lighthouse.clear-storage",!0,"Synced"),title:b(m.clearStorage),description:b(m.resetStorageLocalstorage),setFlags:(e,t)=>{e.disableStorageReset=!t},options:void 0,learnMore:void 0},{setting:e.Settings.Settings.instance().createSetting("lighthouse.enable-sampling",!1,"Synced"),title:b(m.enableSampling),description:b(m.enableJavaScriptSampling),setFlags:(e,t)=>{e.additionalTraceCategories=t?"disabled-by-default-v8.cpu_profiler":""},options:void 0,learnMore:void 0}];var S;!function(e){e.PageAuditabilityChanged="PageAuditabilityChanged",e.PageWarningsChanged="PageWarningsChanged",e.AuditProgressChanged="AuditProgressChanged"}(S||(S={}));var k=Object.freeze({__proto__:null,LighthouseController:w,Presets:_,RuntimeSettings:x,get Events(){return S}});const E=new CSSStyleSheet;E.replaceSync(".toolbar{background-color:var(--sys-color-cdt-base-container);border-bottom:1px solid var(--sys-color-divider)}.lh-root{--report-menu-width:0;user-select:text}.lh-audit-group{position:relative}button.view-trace{margin:10px}.lighthouse-results-container{position:relative}.lh-tools--viewer{display:none!important}.lighthouse-settings-pane{flex:none}.lighthouse-settings-pane .toolbar{flex:1 1}.lighthouse-toolbar-container{display:flex;flex:none}.lighthouse-toolbar-container > :first-child{flex:1 1 auto}.lh-devtools .lh-element-screenshot__overlay{position:absolute}\n/*# sourceURL=lighthousePanel.css */\n");let L=1;class T{mainSessionId;rootTargetId;parallelConnection;lighthouseWorkerPromise;lighthouseMessageUpdateCallback;removeDialogHandler;configForTesting;async attach(){await r.TargetManager.TargetManager.instance().suspendAllTargets();const e=r.TargetManager.TargetManager.instance().primaryPageTarget();if(!e)throw new Error("Unable to find main target required for Lighthouse");const t=r.TargetManager.TargetManager.instance().rootTarget();if(!t)throw new Error("Could not find the root target");if(!e.model(r.ChildTargetManager.ChildTargetManager))throw new Error("Unable to find child target manager required for Lighthouse");const n=e.model(r.ResourceTreeModel.ResourceTreeModel);if(!n)throw new Error("Unable to find resource tree model required for Lighthouse");const i=t.model(r.ChildTargetManager.ChildTargetManager);if(!i)throw new Error("Could not find the child target manager class for the root target");const{connection:o,sessionId:a}=await i.createParallelConnection((e=>{"string"==typeof e&&(e=JSON.parse(e)),this.dispatchProtocolMessage(e)})),s=()=>{e.pageAgent().invoke_handleJavaScriptDialog({accept:!0})};n.addEventListener(r.ResourceTreeModel.Events.JavaScriptDialogOpening,s),this.removeDialogHandler=()=>n.removeEventListener(r.ResourceTreeModel.Events.JavaScriptDialogOpening,s),this.parallelConnection=o,this.rootTargetId=await i.getParentTargetId(),this.mainSessionId=a}getLocales(){return[n.DevToolsLocale.DevToolsLocale.instance().locale]}async startTimespan(e){const{inspectedURL:t,categoryIDs:n,flags:r}=e;if(!this.mainSessionId||!this.rootTargetId)throw new Error("Unable to get target info required for Lighthouse");await this.sendWithResponse("startTimespan",{url:t,categoryIDs:n,flags:r,config:this.configForTesting,locales:this.getLocales(),mainSessionId:this.mainSessionId,rootTargetId:this.rootTargetId})}async collectLighthouseResults(e){const{inspectedURL:t,categoryIDs:n,flags:r}=e;if(!this.mainSessionId||!this.rootTargetId)throw new Error("Unable to get target info required for Lighthouse");let i=r.mode;return"timespan"===i&&(i="endTimespan"),this.sendWithResponse(i,{url:t,categoryIDs:n,flags:r,config:this.configForTesting,locales:this.getLocales(),mainSessionId:this.mainSessionId,rootTargetId:this.rootTargetId})}async detach(){const e=this.lighthouseWorkerPromise,t=this.parallelConnection;this.lighthouseWorkerPromise=void 0,this.parallelConnection=void 0,e&&(await e).terminate(),t&&await t.disconnect(),await r.TargetManager.TargetManager.instance().resumeAllTargets(),this.removeDialogHandler?.()}registerStatusCallback(e){this.lighthouseMessageUpdateCallback=e}dispatchProtocolMessage(e){const t=e;(t.sessionId||t.method&&t.method.startsWith("Target"))&&this.send("dispatchProtocolMessage",{message:e})}initWorker(){return this.lighthouseWorkerPromise=new Promise((e=>{const t=new URL("../../entrypoints/lighthouse_worker/lighthouse_worker.js",import.meta.url),n=new URL(self.location.href).searchParams.get("remoteBase");n&&t.searchParams.set("remoteBase",n);const r=new Worker(t,{type:"module"});r.addEventListener("message",(t=>{"workerReady"!==t.data?this.onWorkerMessage(t):e(r)}))})),this.lighthouseWorkerPromise}async ensureWorkerExists(){let e;return e=this.lighthouseWorkerPromise?await this.lighthouseWorkerPromise:await this.initWorker(),e}onWorkerMessage(e){const t=e.data;"statusUpdate"===t.action?this.lighthouseMessageUpdateCallback&&t.args&&"message"in t.args&&this.lighthouseMessageUpdateCallback(t.args.message):"sendProtocolMessage"===t.action&&t.args&&"message"in t.args&&this.sendProtocolMessage(t.args.message)}sendProtocolMessage(e){this.parallelConnection&&this.parallelConnection.sendRawMessage(e)}async send(e,t={}){const n=await this.ensureWorkerExists(),r=L++;n.postMessage({id:r,action:e,args:{...t,id:r}})}async sendWithResponse(e,t={}){const n=await this.ensureWorkerExists(),r=L++,i=new Promise((e=>{const t=i=>{const o=i.data;o.id===r&&(n.removeEventListener("message",t),e(o.result))};n.addEventListener("message",t)}));return n.postMessage({id:r,action:e,args:{...t,id:r}}),i}}var C=Object.freeze({__proto__:null,ProtocolService:T});class A{static renderLighthouseReport(n,i,o){let a;i&&(a=async()=>{const n=i.traces.defaultPass;t.userMetrics.actionTaken(t.UserMetrics.Action.LighthouseViewTrace);const o=new r.TraceObject.TraceObject(n.traceEvents);e.Revealer.reveal(o)});const s=h.renderReport(n,{disableDarkMode:!0,onViewTrace:a,onSaveFileOverride:async function(t){const r=`${new e.ParsedURL.ParsedURL(n.finalUrl||n.finalDisplayedUrl).domain().replace(/[^a-z0-9.-]+/gi,"_")}-${l.DateUtilities.toISO8601Compact(new Date(n.fetchTime))}${t.type.match("json")?".json":".html"}`,i=await t.text();await c.FileManager.FileManager.instance().save(r,i,!0,!1),c.FileManager.FileManager.instance().close(r)},onPrintOverride:async function(e){const t=e.cloneNode(!0),n=window.open("","_blank","channelmode=1,status=1,resizable=1");n&&(n.document.body.replaceWith(t),await A.linkifyNodeDetails(t),o?.beforePrint?.(),n.focus(),n.print(),n.close(),o?.afterPrint?.())},getStandaloneReportHTML:function(){return Lighthouse.ReportGenerator.ReportGenerator.generateReportHtml(n)}});s.classList.add("lh-devtools");const d=()=>{s.classList.toggle("lh-dark","dark"===p.ThemeSupport.instance().themeName())};return p.ThemeSupport.instance().addEventListener(p.ThemeChangeEvent.eventName,d),d(),s._lighthouseResultForTesting=n,s._lighthouseArtifactsForTesting=i,A.waitForMainTargetLoad().then((()=>{A.linkifyNodeDetails(s),A.linkifySourceLocationDetails(s)})),s}static async waitForMainTargetLoad(){const e=r.TargetManager.TargetManager.instance().primaryPageTarget();if(!e)return;const t=e.model(r.ResourceTreeModel.ResourceTreeModel);t&&await t.once(r.ResourceTreeModel.Events.Load)}static async linkifyNodeDetails(t){const n=r.TargetManager.TargetManager.instance().primaryPageTarget();if(!n)return;const i=n.model(r.DOMModel.DOMModel);if(i)for(const n of t.getElementsByClassName("lh-node")){const t=n,r=t.dataset;if(!r.path)continue;const o=await i.pushNodeByPathToFrontend(r.path);if(!o)continue;const s=i.nodeForId(o);if(!s)continue;const l=await e.Linkifier.Linkifier.linkify(s,{tooltip:r.snippet,preventKeyboardFocus:void 0});a.Tooltip.Tooltip.install(t,"");const c=t.querySelector(".lh-element-screenshot");t.textContent="",c&&t.append(c),t.appendChild(l)}}static async linkifySourceLocationDetails(e){for(const t of e.getElementsByClassName("lh-source-location")){const e=t,n=e.dataset;if(!n.sourceUrl||!n.sourceLine||!n.sourceColumn)continue;const r=n.sourceUrl,i=Number(n.sourceLine),o=Number(n.sourceColumn),s=await d.Linkifier.Linkifier.linkifyURL(r,{lineNumber:i,columnNumber:o,showColumnNumber:!1,inlineFrameIndex:0,maxLength:40});a.Tooltip.Tooltip.install(e,""),e.textContent="",e.appendChild(s)}}}var M=Object.freeze({__proto__:null,LighthouseReportRenderer:A});const z={reports:"Reports",newReport:"(new report)"},R=n.i18n.registerUIStrings("panels/lighthouse/LighthouseReportSelector.ts",z),P=n.i18n.getLocalizedString.bind(void 0,R);class I{renderNewLighthouseView;newLighthouseItem;comboBoxInternal;itemByOptionElement;constructor(e){this.renderNewLighthouseView=e,this.newLighthouseItem=document.createElement("option"),this.comboBoxInternal=new a.Toolbar.ToolbarComboBox(this.handleChange.bind(this),P(z.reports),"lighthouse-report"),this.comboBoxInternal.setMaxWidth(180),this.comboBoxInternal.setMinWidth(140),this.itemByOptionElement=new Map,this.setEmptyState()}setEmptyState(){this.comboBoxInternal.selectElement().removeChildren(),this.comboBoxInternal.setEnabled(!1),this.newLighthouseItem=document.createElement("option"),this.newLighthouseItem.label=P(z.newReport),this.comboBoxInternal.selectElement().appendChild(this.newLighthouseItem),this.comboBoxInternal.select(this.newLighthouseItem)}handleChange(e){const t=this.selectedItem();t?t.select():this.renderNewLighthouseView()}selectedItem(){const e=this.comboBoxInternal.selectedOption();return this.itemByOptionElement.get(e)}hasCurrentSelection(){return Boolean(this.selectedItem())}hasItems(){return this.itemByOptionElement.size>0}comboBox(){return this.comboBoxInternal}prepend(e){const t=e.optionElement(),n=this.comboBoxInternal.selectElement();this.itemByOptionElement.set(t,e),n.insertBefore(t,n.firstElementChild),this.comboBoxInternal.setEnabled(!0),this.comboBoxInternal.select(t),e.select()}clearAll(){for(const e of this.comboBoxInternal.options())e!==this.newLighthouseItem&&(this.itemByOptionElement.get(e)?.delete(),this.itemByOptionElement.delete(e));this.setEmptyState()}selectNewReport(){this.comboBoxInternal.select(this.newLighthouseItem)}}class F{lighthouseResult;renderReport;showLandingCallback;element;constructor(t,n,r){this.lighthouseResult=t,this.renderReport=n,this.showLandingCallback=r;const i=t.finalDisplayedUrl||t.finalUrl||"",o=new e.ParsedURL.ParsedURL(i),a=t.fetchTime;this.element=document.createElement("option"),this.element.label=`${new Date(a).toLocaleTimeString()} - ${o.domain()}`}select(){this.renderReport()}optionElement(){return this.element}delete(){this.element&&this.element.remove(),this.showLandingCallback()}}var D=Object.freeze({__proto__:null,ReportSelector:I,Item:F});const U=new CSSStyleSheet;U.replaceSync('.lighthouse-start-view{font-family:Roboto,sans-serif;font-size:var(--font-size);line-height:18px;padding:24px;overflow:auto;height:100%;--legacy-accent-color:#0535c1;--legacy-accent-color-hover:#17b;--font-size:14px;--report-font-family:roboto,helvetica,arial,sans-serif}.lighthouse-start-view header{display:flex;font-size:18px;flex-direction:row;align-items:center;column-gap:16px;margin-bottom:16px}.lighthouse-logo{width:75px;height:75px;flex-shrink:0;background-repeat:no-repeat;background-size:contain;background-image:var(--image-file-lighthouse_logo)}.lighthouse-start-view .lighthouse-logo{width:45px;height:45px}.lighthouse-form-section{padding:8px;flex:1 1}.lighthouse-form-section-label{margin:7px 0;font-weight:500}.lighthouse-form-section-label i span{position:relative;top:-2px}.lighthouse-form-section-label span.largeicon-checkmark{top:-4px}.lighthouse-form-section-label .lighthouse-learn-more{margin:20px}.lighthouse-radio{display:flex;align-items:center}input[type="radio"]{accent-color:var(--sys-color-primary-bright);color:var(--sys-color-on-primary);&:focus{outline-width:2px}}.lighthouse-radio-text{margin-left:3px}.lighthouse-start-button-container{align-items:center}.lighthouse-start-view header.hbox .lighthouse-start-button-container{margin-left:auto}.lighthouse-start-view header.vbox .lighthouse-title{text-align:center}.lighthouse-start-button-container button{margin:16px auto;font-family:var(--report-font-family);font-weight:500;font-size:var(--font-size)}.lighthouse-start-button-container button:disabled{cursor:not-allowed}.lighthouse-launcher-row,\n.lighthouse-radio{&:last-of-type{margin-bottom:0}&:not(:has(span[is="dt-checkbox"])){margin-bottom:6px}}.lighthouse-launcher-row .dimmed{padding-left:22px}.lighthouse-help-text{text-align:center;color:#f00;font-weight:bold;padding-left:10px}.lighthouse-warning-text{text-align:left;color:#ff8c00;font-weight:bold;padding-left:10px;padding-top:10px}.lighthouse-warning-text::before{content:"⚠";margin-right:10px}.lighthouse-options{display:grid;grid-template-columns:1fr 1fr;grid-template-rows:auto auto}.lighthouse-options.narrow{grid-template-columns:1fr;grid-template-rows:auto auto auto}.lighthouse-options.wide{grid-template-columns:1fr 1fr 1fr;grid-template-rows:auto}\n/*# sourceURL=lighthouseStartView.css */\n');class B{setting;options;element;radioElements;ignoreChangeEvents;selectedIndex;constructor(e,t,n){this.setting=t,this.options=e,this.element=document.createElement("div"),a.ARIAUtils.setDescription(this.element,n),a.ARIAUtils.markAsRadioGroup(this.element),this.radioElements=[];for(const e of this.options){const r=a.Fragment.Fragment.build`
17
+ <label $="label" class="lighthouse-radio">
18
+ <input $="input" type="radio" value=${e.value} name=${t.name}>
19
+ <span $="span" class="lighthouse-radio-text">${e.label()}</span>
20
+ </label>
21
+ `;this.element.appendChild(r.element());const i=e.tooltip?.()||n;n&&(a.Tooltip.Tooltip.install(r.$("input"),i),a.Tooltip.Tooltip.install(r.$("span"),i));const o=r.$("input");o.addEventListener("change",this.valueChanged.bind(this)),this.radioElements.push(o)}this.ignoreChangeEvents=!1,this.selectedIndex=-1,t.addChangeListener(this.settingChanged,this),this.settingChanged()}updateUI(){this.ignoreChangeEvents=!0,this.radioElements[this.selectedIndex].checked=!0,this.ignoreChangeEvents=!1}settingChanged(){const e=this.setting.get();this.selectedIndex=this.options.findIndex((t=>t.value===e)),this.updateUI()}valueChanged(e){if(this.ignoreChangeEvents)return;const t=this.radioElements.find((e=>e.checked));t&&this.setting.set(t.value)}}var O=Object.freeze({__proto__:null,RadioSetting:B});const N={generateLighthouseReport:"Generate a Lighthouse report",mode:"Mode",categories:"Categories",analyzeNavigation:"Analyze page load",analyzeSnapshot:"Analyze page state",startTimespan:"Start timespan",learnMore:"Learn more",device:"Device"},H=n.i18n.registerUIStrings("panels/lighthouse/LighthouseStartView.ts",N),$=n.i18n.getLocalizedString.bind(void 0,H);class V extends a.Widget.Widget{controller;panel;settingsToolbarInternal;startButton;helpText;warningText;checkboxes=[];changeFormMode;constructor(e,t){super(),this.controller=e,this.panel=t,this.settingsToolbarInternal=new a.Toolbar.Toolbar(""),this.render()}populateRuntimeSettingAsRadio(e,t,n){const r=x.find((t=>t.setting.name===e));if(!r||!r.options)throw new Error(`${e} is not a setting with options`);const i=document.createElement("div");if(i.classList.add("lighthouse-form-section-label"),i.textContent=t,r.learnMore){const e=a.XLink.XLink.create(r.learnMore,$(N.learnMore),"lighthouse-learn-more",void 0,"learn-more");i.append(e)}n.appendChild(i);const o=new B(r.options,r.setting,r.description());n.appendChild(o.element),a.ARIAUtils.setLabel(o.element,t)}populateRuntimeSettingAsToolbarCheckbox(e,t){const n=x.find((t=>t.setting.name===e));if(!n||!n.title)throw new Error(`${e} is not a setting with a title`);n.setting.setTitle(n.title());const r=new a.Toolbar.ToolbarSettingCheckbox(n.setting,n.description());if(t.appendToolbarItem(r),n.learnMore){const e=a.XLink.XLink.create(n.learnMore,$(N.learnMore),"lighthouse-learn-more",void 0,"learn-more");e.style.margin="5px",r.element.appendChild(e)}}populateRuntimeSettingAsToolbarDropdown(e,t){const n=x.find((t=>t.setting.name===e));if(!n||!n.title)throw new Error(`${e} is not a setting with a title`);const r=n.options?.map((e=>({label:e.label(),value:e.value})))||[];n.setting.setTitle(n.title());const i=new a.Toolbar.ToolbarSettingComboBox(r,n.setting,n.title());if(i.setTitle(n.description()),t.appendToolbarItem(i),n.learnMore){const e=a.XLink.XLink.create(n.learnMore,$(N.learnMore),"lighthouse-learn-more",void 0,"learn-more");e.style.margin="5px",i.element.appendChild(e)}}populateFormControls(e,t){const n=e.$("device-type-form-elements");this.populateRuntimeSettingAsRadio("lighthouse.device-type",$(N.device),n);const r=e.$("categories-form-elements");this.checkboxes=[];for(const e of _){e.setting.setTitle(e.title());const n=new a.Toolbar.ToolbarSettingCheckbox(e.setting,e.description());r.createChild("div","vbox lighthouse-launcher-row").appendChild(n.element),n.element.setAttribute("data-lh-category",e.configID),this.checkboxes.push({preset:e,checkbox:n}),t&&!e.supportedModes.includes(t)&&(n.setEnabled(!1),n.setIndeterminate(!0))}a.ARIAUtils.markAsGroup(r),a.ARIAUtils.setLabel(r,$(N.categories))}render(){this.populateRuntimeSettingAsToolbarCheckbox("lighthouse.clear-storage",this.settingsToolbarInternal),this.populateRuntimeSettingAsToolbarCheckbox("lighthouse.enable-sampling",this.settingsToolbarInternal),this.populateRuntimeSettingAsToolbarDropdown("lighthouse.throttling",this.settingsToolbarInternal);const{mode:e}=this.controller.getFlags();this.populateStartButton(e);const t=a.Fragment.Fragment.build`
22
+ <form class="lighthouse-start-view">
23
+ <header class="hbox">
24
+ <div class="lighthouse-logo"></div>
25
+ <div class="lighthouse-title">${$(N.generateLighthouseReport)}</div>
26
+ <div class="lighthouse-start-button-container" $="start-button-container">${this.startButton}</div>
27
+ </header>
28
+ <div $="help-text" class="lighthouse-help-text hidden"></div>
29
+ <div class="lighthouse-options hbox">
30
+ <div class="lighthouse-form-section">
31
+ <div class="lighthouse-form-elements" $="mode-form-elements"></div>
32
+ </div>
33
+ <div class="lighthouse-form-section">
34
+ <div class="lighthouse-form-elements" $="device-type-form-elements"></div>
35
+ </div>
36
+ <div class="lighthouse-form-categories">
37
+ <div class="lighthouse-form-section">
38
+ <div class="lighthouse-form-section-label">${$(N.categories)}</div>
39
+ <div class="lighthouse-form-elements" $="categories-form-elements"></div>
40
+ </div>
41
+ </div>
42
+ </div>
43
+ <div $="warning-text" class="lighthouse-warning-text hidden"></div>
44
+ </form>
45
+ `;this.helpText=t.$("help-text"),this.warningText=t.$("warning-text");const n=t.$("mode-form-elements");this.populateRuntimeSettingAsRadio("lighthouse.mode",$(N.mode),n),this.populateFormControls(t,e),this.contentElement.textContent="",this.contentElement.append(t.element()),this.refresh()}populateStartButton(e){let t,n;"timespan"===e?(t=$(N.startTimespan),n=()=>{this.panel.handleTimespanStart()}):"snapshot"===e?(t=$(N.analyzeSnapshot),n=()=>{this.panel.handleCompleteRun()}):(t=$(N.analyzeNavigation),n=()=>{this.panel.handleCompleteRun()});const r=this.contentElement.querySelector(".lighthouse-start-button-container");r&&(r.textContent="",this.startButton=a.UIUtils.createTextButton(t,n,{variant:"primary",jslogContext:"lighthouse.start"}),r.append(this.startButton))}refresh(){const{mode:e}=this.controller.getFlags();this.populateStartButton(e);for(const{checkbox:t,preset:n}of this.checkboxes)n.supportedModes.includes(e)?(t.setEnabled(!0),t.setIndeterminate(!1)):(t.setEnabled(!1),t.setIndeterminate(!0));this.onResize()}onResize(){const e=this.contentElement.offsetWidth<500,t=this.contentElement.offsetWidth>800,n=this.contentElement.querySelector(".lighthouse-start-view header"),r=this.contentElement.querySelector(".lighthouse-options");n&&(n.classList.toggle("hbox",!e),n.classList.toggle("vbox",e)),r&&(r.classList.toggle("wide",t),r.classList.toggle("narrow",e))}focusStartButton(){this.startButton.focus()}setStartButtonEnabled(e){this.helpText&&this.helpText.classList.toggle("hidden",e),this.startButton&&(this.startButton.disabled=!e)}setUnauditableExplanation(e){this.helpText&&(this.helpText.textContent=e)}setWarningText(e){this.warningText&&(this.warningText.textContent=e,this.warningText.classList.toggle("hidden",!e))}wasShown(){super.wasShown(),this.controller.recomputePageAuditability(),this.registerCSSFiles([U])}settingsToolbar(){return this.settingsToolbarInternal}}var G=Object.freeze({__proto__:null,StartView:V});const W=new CSSStyleSheet;W.replaceSync(".lighthouse-view{--view-horizontal-margin:20px;margin:7px var(--view-horizontal-margin);flex:auto;align-items:center;width:100%;max-width:500px}.lighthouse-view h2{color:var(--sys-color-on-surface);font-weight:bold;font-size:14px;flex:none;width:100%;text-align:left}.lighthouse-view button{z-index:10;margin-left:auto;margin-right:0}.lighthouse-status{width:100%;flex:auto;align-items:center;color:var(--sys-color-on-surface)}.lighthouse-status-text{text-align:center;min-height:50px;margin-bottom:10px;display:flex;justify-content:center;flex-direction:column;max-width:100%}.lighthouse-status-text code{user-select:text;text-align:left;white-space:pre-wrap;overflow:auto}.lighthouse-progress-wrapper{width:calc(100% + 2 * var(--view-horizontal-margin));height:2px;background-color:var(--sys-color-neutral-outline);position:relative;margin:10px}.lighthouse-progress-bar{width:0%;height:100%;background:var(--sys-color-primary-bright);position:absolute;transform-origin:left;animation-fill-mode:forwards;animation-timing-function:ease-out;--progress-bar-loading-duration:45s;--progress-bar-gathering-duration:12s;--progress-bar-gathering-percent:70%;--progress-bar-auditing-duration:5s;--progress-bar-auditing-percent:95%}.lighthouse-progress-bar.errored{width:100%;background:#e50303}.lighthouse-progress-bar.loading{animation-duration:var(--progress-bar-loading-duration);animation-name:progressBarLoading}@keyframes progressBarLoading{0%{width:0%}100%{width:var(--progress-bar-gathering-percent)}}.lighthouse-progress-bar.gathering{animation-duration:var(--progress-bar-gathering-duration);animation-name:progressBarGathering}@keyframes progressBarGathering{0%{width:var(--progress-bar-gathering-percent)}100%{width:var(--progress-bar-auditing-percent)}}.lighthouse-progress-bar.auditing{animation-duration:var(--progress-bar-auditing-duration);animation-name:progressBarAuditing}@keyframes progressBarAuditing{0%{width:var(--progress-bar-auditing-percent)}100%{width:99%}}.lighthouse-report-error{display:block;margin-top:5px}.lighthouse-action-buttons{align-self:end;column-gap:var(--sys-size-6)}\n/*# sourceURL=lighthouseDialog.css */\n");const j={cancel:"Cancel",loading:"Loading…",auditingS:"Auditing {PH1}",auditingYourWebPage:"Auditing your web page",cancelling:"Cancelling…",lighthouseIsWarmingUp:"`Lighthouse` is warming up…",lighthouseIsLoadingYourPage:"`Lighthouse` is loading your page",fastFactMessageWithPlaceholder:"💡 {PH1}",ahSorryWeRanIntoAnError:"Ah, sorry! We ran into an error.",tryToNavigateToTheUrlInAFresh:"Try to navigate to the URL in a fresh `Chrome` profile without any other tabs or extensions open and try again.",ifThisIssueIsReproduciblePlease:"If this issue is reproducible, please report it at the `Lighthouse` `GitHub` repo.",lighthouseIsLoadingThePage:"Lighthouse is loading the page.",lighthouseIsGatheringInformation:"`Lighthouse` is gathering information about the page to compute your score.",almostThereLighthouseIsNow:"Almost there! `Lighthouse` is now generating your report.",lighthouseIsLoadingYourPageWith:"`Lighthouse` is loading your page with throttling to measure performance on a mobile device on 3G.",lighthouseIsLoadingYourPageWithThrottling:"`Lighthouse` is loading your page with throttling to measure performance on a slow desktop on 3G.",lighthouseIsLoadingYourPageWithMobile:"`Lighthouse` is loading your page with mobile emulation.",mbTakesAMinimumOfSecondsTo:"1MB takes a minimum of 5 seconds to download on a typical 3G connection [Source: `WebPageTest` and `DevTools` 3G definition].",rebuildingPinterestPagesFor:"Rebuilding Pinterest pages for performance increased conversion rates by 15% [Source: `WPO Stats`]",byReducingTheResponseSizeOfJson:"By reducing the response size of JSON needed for displaying comments, Instagram saw increased impressions [Source: `WPO Stats`]",walmartSawAIncreaseInRevenueFor:"Walmart saw a 1% increase in revenue for every 100ms improvement in page load [Source: `WPO Stats`]",ifASiteTakesSecondToBecome:"If a site takes >1 second to become interactive, users lose attention, and their perception of completing the page task is broken [Source: `Google Developers Blog`]",OfGlobalMobileUsersInWereOnGOrG:"75% of global mobile users in 2016 were on 2G or 3G [Source: `GSMA Mobile`]",theAverageUserDeviceCostsLess:"The average user device costs less than 200 USD. [Source: `International Data Corporation`]",SecondsIsTheAverageTimeAMobile:"19 seconds is the average time a mobile web page takes to load on a 3G connection [Source: `Google DoubleClick blog`]",OfMobilePagesTakeNearlySeconds:"70% of mobile pages take nearly 7 seconds for the visual content above the fold to display on the screen. [Source: `Think with Google`]",asPageLoadTimeIncreasesFromOne:"As page load time increases from one second to seven seconds, the probability of a mobile site visitor bouncing increases 113%. [Source: `Think with Google`]",asTheNumberOfElementsOnAPage:"As the number of elements on a page increases from 400 to 6,000, the probability of conversion drops 95%. [Source: `Think with Google`]",lighthouseOnlySimulatesMobile:"`Lighthouse` only simulates mobile performance; to measure performance on a real device, try WebPageTest.org [Source: `Lighthouse` team]"},q=n.i18n.registerUIStrings("panels/lighthouse/LighthouseStatusView.ts",j),J=n.i18n.getLocalizedString.bind(void 0,q),K=n.i18n.getLazilyComputedLocalizedString.bind(void 0,q);class Y{panel;statusView;statusHeader;progressWrapper;progressBar;statusText;cancelButton;inspectedURL;textChangedAt;fastFactsQueued;currentPhase;scheduledFastFactTimeout;dialog;constructor(e){this.panel=e,this.statusView=null,this.statusHeader=null,this.progressWrapper=null,this.progressBar=null,this.statusText=null,this.cancelButton=null,this.inspectedURL="",this.textChangedAt=0,this.fastFactsQueued=te.map((e=>e())),this.currentPhase=null,this.scheduledFastFactTimeout=null,this.dialog=new a.Dialog.Dialog,this.dialog.setDimmed(!0),this.dialog.setCloseOnEscape(!1),this.dialog.setOutsideClickCallback((e=>e.consume(!0))),this.render()}render(){const e=a.UIUtils.createShadowRootWithCoreStyles(this.dialog.contentElement,{cssFile:[W],delegatesFocus:void 0}).createChild("div","lighthouse-view vbox"),t=a.UIUtils.createTextButton(J(j.cancel),this.cancel.bind(this),{jslogContext:"lighthouse.cancel"}),n=a.Fragment.Fragment.build`
46
+ <div class="lighthouse-view vbox">
47
+ <h2 $="status-header">Auditing your web page…</h2>
48
+ <div class="lighthouse-status vbox" $="status-view">
49
+ <div class="lighthouse-progress-wrapper" $="progress-wrapper">
50
+ <div class="lighthouse-progress-bar" $="progress-bar"></div>
51
+ </div>
52
+ <div class="lighthouse-status-text" $="status-text"></div>
53
+ </div>
54
+ ${t}
55
+ </div>
56
+ `;e.appendChild(n.element()),this.statusView=n.$("status-view"),this.statusHeader=n.$("status-header"),this.progressWrapper=n.$("progress-wrapper"),this.progressBar=n.$("progress-bar"),this.statusText=n.$("status-text"),a.ARIAUtils.markAsProgressBar(this.progressBar,0,Z.length-1),this.cancelButton=t,a.ARIAUtils.markAsStatus(this.statusText),this.dialog.setDefaultFocusedElement(t),this.dialog.setSizeBehavior("SetExactWidthMaxHeight"),this.dialog.setMaxContentSize(new a.Geometry.Size(500,400))}reset(){this.resetProgressBarClasses(),clearTimeout(this.scheduledFastFactTimeout),this.textChangedAt=0,this.fastFactsQueued=te.map((e=>e())),this.currentPhase=null,this.scheduledFastFactTimeout=null}show(t){this.reset(),this.updateStatus(J(j.loading));const n=e.ParsedURL.ParsedURL.fromString(this.inspectedURL),r=n&&n.host,i=r?J(j.auditingS,{PH1:r}):J(j.auditingYourWebPage);this.renderStatusHeader(i),this.dialog.show(t)}renderStatusHeader(e){this.statusHeader&&(this.statusHeader.textContent=`${e}…`)}hide(){this.dialog.isShowing()&&this.dialog.hide()}setInspectedURL(e=""){this.inspectedURL=e}updateStatus(e){if(!e||!this.statusText)return;if(e.startsWith("Cancel"))return this.commitTextChange(J(j.cancelling)),void clearTimeout(this.scheduledFastFactTimeout);const t=this.getPhaseForMessage(e);if(t||this.currentPhase){if(t){this.currentPhase=t;const e=this.getMessageForPhase(t);if(this.commitTextChange(e),this.scheduleFastFactCheck(),this.resetProgressBarClasses(),this.progressBar){this.progressBar.classList.add(t.progressBarClass);const n=Z.indexOf(t);a.ARIAUtils.setProgressBarValue(this.progressBar,n,e)}}}else this.commitTextChange(J(j.lighthouseIsWarmingUp)),clearTimeout(this.scheduledFastFactTimeout)}cancel(){this.panel.handleRunCancel()}getMessageForPhase(e){if(e.message())return e.message();const t=x.find((e=>"lighthouse.device-type"===e.setting.name)),n=x.find((e=>"lighthouse.throttling"===e.setting.name)),r=t?t.setting.get():"",i=n?n.setting.get():"",o=ee.find((e=>e.deviceType===r&&e.throttling===i));return o?o.message():J(j.lighthouseIsLoadingYourPage)}getPhaseForMessage(e){return Z.find((t=>t.statusMessageRegex.test(e)))||null}resetProgressBarClasses(){this.progressBar&&(this.progressBar.className="lighthouse-progress-bar")}scheduleFastFactCheck(){this.currentPhase&&!this.scheduledFastFactTimeout&&(this.scheduledFastFactTimeout=window.setTimeout((()=>{this.updateFastFactIfNecessary(),this.scheduledFastFactTimeout=null,this.scheduleFastFactCheck()}),100))}updateFastFactIfNecessary(){if(performance.now()-this.textChangedAt<Q)return;if(!this.fastFactsQueued.length)return;const e=Math.floor(Math.random()*this.fastFactsQueued.length);this.commitTextChange(J(j.fastFactMessageWithPlaceholder,{PH1:this.fastFactsQueued[e]})),this.fastFactsQueued.splice(e,1)}commitTextChange(e){this.statusText&&(this.textChangedAt=performance.now(),this.statusText.textContent=e)}renderBugReport(e){if(console.error(e),this.scheduledFastFactTimeout&&window.clearTimeout(this.scheduledFastFactTimeout),this.resetProgressBarClasses(),this.progressBar&&this.progressBar.classList.add("errored"),this.statusText)if(this.commitTextChange(""),a.UIUtils.createTextChild(this.statusText.createChild("p"),J(j.ahSorryWeRanIntoAnError)),X.some((t=>t.test(e.message)))){const e=J(j.tryToNavigateToTheUrlInAFresh);a.UIUtils.createTextChild(this.statusText.createChild("p"),e)}else this.renderBugReportBody(e,this.inspectedURL)}renderText(e,t){this.renderStatusHeader(e),this.commitTextChange(t)}toggleCancelButton(e){this.cancelButton&&(this.cancelButton.style.visibility=e?"visible":"hidden")}renderBugReportBody(e,t){const n=navigator.userAgent.match(/Chrome\/(\S+)/)||["","Unknown"],r=`\n${e.friendlyMessage||e.message}\n\`\`\`\nChannel: DevTools\nInitial URL: ${t}\nChrome Version: ${n[1]}\nStack Trace: ${e.stack}\n\`\`\`\n`;this.statusText&&(a.UIUtils.createTextChild(this.statusText.createChild("p"),J(j.ifThisIssueIsReproduciblePlease)),a.UIUtils.createTextChild(this.statusText.createChild("code","monospace"),r.trim()))}}const Q=6e3,X=[/PARSING_PROBLEM/,/DOCUMENT_REQUEST/,/READ_FAILED/,/TRACING_ALREADY_STARTED/,/^You must provide a url to the runner/,/^You probably have multiple tabs open/],Z=[{id:"loading",progressBarClass:"loading",message:K(j.lighthouseIsLoadingThePage),statusMessageRegex:/^(Navigating to)/},{id:"gathering",progressBarClass:"gathering",message:K(j.lighthouseIsGatheringInformation),statusMessageRegex:/(Gather|artifact)/i},{id:"auditing",progressBarClass:"auditing",message:K(j.almostThereLighthouseIsNow),statusMessageRegex:/^Audit/}],ee=[{deviceType:"mobile",throttling:"on",message:K(j.lighthouseIsLoadingYourPageWith)},{deviceType:"desktop",throttling:"on",message:K(j.lighthouseIsLoadingYourPageWithThrottling)},{deviceType:"mobile",throttling:"off",message:K(j.lighthouseIsLoadingYourPageWithMobile)},{deviceType:"desktop",throttling:"off",message:K(j.lighthouseIsLoadingThePage)}],te=[K(j.mbTakesAMinimumOfSecondsTo),K(j.rebuildingPinterestPagesFor),K(j.byReducingTheResponseSizeOfJson),K(j.walmartSawAIncreaseInRevenueFor),K(j.ifASiteTakesSecondToBecome),K(j.OfGlobalMobileUsersInWereOnGOrG),K(j.theAverageUserDeviceCostsLess),K(j.SecondsIsTheAverageTimeAMobile),K(j.OfMobilePagesTakeNearlySeconds),K(j.asPageLoadTimeIncreasesFromOne),K(j.asTheNumberOfElementsOnAPage),K(j.OfMobilePagesTakeNearlySeconds),K(j.lighthouseOnlySimulatesMobile)];var ne=Object.freeze({__proto__:null,StatusView:Y,fastFactRotationInterval:Q,minimumTextVisibilityDuration:3e3,StatusPhases:Z});const re={timespanStarting:"Timespan starting…",timespanStarted:"Timespan started, interact with the page",endTimespan:"End timespan",cancel:"Cancel"},ie=n.i18n.registerUIStrings("panels/lighthouse/LighthouseTimespanView.ts",re),oe=n.i18n.getLocalizedString.bind(void 0,ie);class ae extends a.Dialog.Dialog{panel;statusHeader;endButton;constructor(e){super(),this.panel=e,this.statusHeader=null,this.endButton=null,this.setDimmed(!0),this.setCloseOnEscape(!1),this.setOutsideClickCallback((e=>e.consume(!0))),this.render()}show(e){this.reset(),super.show(e)}reset(){this.statusHeader&&this.endButton&&(this.statusHeader.textContent=oe(re.timespanStarting),this.endButton.disabled=!0)}ready(){this.statusHeader&&this.endButton&&(this.statusHeader.textContent=oe(re.timespanStarted),this.endButton.disabled=!1,this.endButton.focus())}render(){const e=a.UIUtils.createShadowRootWithCoreStyles(this.contentElement,{cssFile:[W],delegatesFocus:void 0});this.endButton=a.UIUtils.createTextButton(oe(re.endTimespan),this.endTimespan.bind(this),{variant:"primary",jslogContext:"lighthouse.end-time-span"});const t=a.UIUtils.createTextButton(oe(re.cancel),this.cancel.bind(this),{jslogContext:"lighthouse.cancel"}),n=a.Fragment.Fragment.build`
57
+ <div class="lighthouse-view vbox">
58
+ <h2 $="status-header"></h2>
59
+ <div class="lighthouse-action-buttons hbox">
60
+ ${t}
61
+ ${this.endButton}
62
+ </div>
63
+ </div>
64
+ `;this.statusHeader=n.$("status-header"),e.appendChild(n.element()),this.setSizeBehavior("SetExactWidthMaxHeight"),this.setMaxContentSize(new a.Geometry.Size(500,400)),this.reset()}async endTimespan(){await this.panel.handleTimespanEnd()}async cancel(){await this.panel.handleRunCancel()}}const se={dropLighthouseJsonHere:"Drop `Lighthouse` JSON here",performAnAudit:"Perform an audit…",clearAll:"Clear all",lighthouseSettings:"`Lighthouse` settings",printing:"Printing",thePrintPopupWindowIsOpenPlease:"The print popup window is open. Please close it to continue.",cancelling:"Cancelling"},le=n.i18n.registerUIStrings("panels/lighthouse/LighthousePanel.ts",se),ce=n.i18n.getLocalizedString.bind(void 0,le);let he;class de extends a.Panel.Panel{controller;startView;statusView;timespanView;warningText;unauditableExplanation;cachedRenderedReports;dropTarget;auditResultsElement;clearButton;newButton;reportSelector;settingsPane;rightToolbar;showSettingsPaneSetting;constructor(e){super("lighthouse"),this.controller=e,this.startView=new V(this.controller,this),this.timespanView=new ae(this),this.statusView=new Y(this),this.warningText=null,this.unauditableExplanation=null,this.cachedRenderedReports=new Map,this.dropTarget=new a.DropTarget.DropTarget(this.contentElement,[a.DropTarget.Type.File],ce(se.dropLighthouseJsonHere),this.handleDrop.bind(this)),this.controller.addEventListener(S.PageAuditabilityChanged,this.refreshStartAuditUI.bind(this)),this.controller.addEventListener(S.PageWarningsChanged,this.refreshWarningsUI.bind(this)),this.controller.addEventListener(S.AuditProgressChanged,this.refreshStatusUI.bind(this)),this.renderToolbar(),this.auditResultsElement=this.contentElement.createChild("div","lighthouse-results-container"),this.renderStartView(),this.controller.recomputePageAuditability()}static instance(e){if(!he||e?.forceNew){const t=e?.protocolService??new T,n=e?.controller??new w(t);he=new de(n)}return he}static getEvents(){return S}async handleTimespanStart(){try{this.timespanView.show(this.contentElement),await this.controller.startLighthouse(),this.timespanView.ready()}catch(e){this.handleError(e)}}async handleTimespanEnd(){try{this.timespanView.hide(),this.renderStatusView();const{lhr:e,artifacts:t}=await this.controller.collectLighthouseResults();this.buildReportUI(e,t)}catch(e){this.handleError(e)}}async handleCompleteRun(){try{await this.controller.startLighthouse(),this.renderStatusView();const{lhr:e,artifacts:t}=await this.controller.collectLighthouseResults();this.buildReportUI(e,t)}catch(e){this.handleError(e)}}async handleRunCancel(){this.statusView.updateStatus(ce(se.cancelling)),this.timespanView.hide(),await this.controller.cancelLighthouse(),this.renderStartView()}handleError(e){e instanceof Error&&this.statusView.renderBugReport(e)}refreshWarningsUI(e){this.controller.getCurrentRun()||(this.warningText=e.data.warning,this.startView.setWarningText(e.data.warning))}refreshStartAuditUI(e){this.controller.getCurrentRun()||(this.startView.refresh(),this.unauditableExplanation=e.data.helpText,this.startView.setUnauditableExplanation(e.data.helpText),this.startView.setStartButtonEnabled(!e.data.helpText))}refreshStatusUI(e){this.statusView.updateStatus(e.data.message)}refreshToolbarUI(){this.clearButton.setEnabled(this.reportSelector.hasItems())}clearAll(){this.reportSelector.clearAll(),this.renderStartView(),this.refreshToolbarUI()}renderToolbar(){const t=this.element.createChild("div","lighthouse-toolbar-container");t.setAttribute("jslog",`${s.toolbar()}`);const n=new a.Toolbar.Toolbar("",t);this.newButton=new a.Toolbar.ToolbarButton(ce(se.performAnAudit),"plus"),n.appendToolbarItem(this.newButton),this.newButton.addEventListener("Click",this.renderStartView.bind(this)),n.appendSeparator(),this.reportSelector=new I((()=>this.renderStartView())),n.appendToolbarItem(this.reportSelector.comboBox()),this.clearButton=new a.Toolbar.ToolbarButton(ce(se.clearAll),"clear"),n.appendToolbarItem(this.clearButton),this.clearButton.addEventListener("Click",this.clearAll.bind(this)),this.settingsPane=new a.Widget.HBox,this.settingsPane.show(this.contentElement),this.settingsPane.element.classList.add("lighthouse-settings-pane"),this.settingsPane.element.appendChild(this.startView.settingsToolbar().element),this.showSettingsPaneSetting=e.Settings.Settings.instance().createSetting("lighthouse-show-settings-toolbar",!1,"Synced"),this.rightToolbar=new a.Toolbar.Toolbar("",t),this.rightToolbar.appendSeparator(),this.rightToolbar.appendToolbarItem(new a.Toolbar.ToolbarSettingToggle(this.showSettingsPaneSetting,"gear",ce(se.lighthouseSettings),"gear-filled")),this.showSettingsPaneSetting.addChangeListener(this.updateSettingsPaneVisibility.bind(this)),this.updateSettingsPaneVisibility(),this.refreshToolbarUI()}updateSettingsPaneVisibility(){this.settingsPane.element.classList.toggle("hidden",!this.showSettingsPaneSetting.get())}toggleSettingsDisplay(e){this.rightToolbar.element.classList.toggle("hidden",!e),this.settingsPane.element.classList.toggle("hidden",!e),this.updateSettingsPaneVisibility()}renderStartView(){this.auditResultsElement.removeChildren(),this.statusView.hide(),this.reportSelector.selectNewReport(),this.contentElement.classList.toggle("in-progress",!1),this.startView.show(this.contentElement),this.toggleSettingsDisplay(!0),this.startView.setUnauditableExplanation(this.unauditableExplanation),this.startView.setStartButtonEnabled(!this.unauditableExplanation),this.unauditableExplanation||this.startView.focusStartButton(),this.startView.setWarningText(this.warningText),this.newButton.setEnabled(!1),this.refreshToolbarUI(),this.setDefaultFocusedChild(this.startView)}renderStatusView(){const e=this.controller.getCurrentRun()?.inspectedURL;this.contentElement.classList.toggle("in-progress",!0),this.statusView.setInspectedURL(e),this.statusView.show(this.contentElement)}beforePrint(){this.statusView.show(this.contentElement),this.statusView.toggleCancelButton(!1),this.statusView.renderText(ce(se.printing),ce(se.thePrintPopupWindowIsOpenPlease))}afterPrint(){this.statusView.hide(),this.statusView.toggleCancelButton(!0)}renderReport(e,t){this.toggleSettingsDisplay(!1),this.contentElement.classList.toggle("in-progress",!1),this.startView.hideWidget(),this.statusView.hide(),this.auditResultsElement.removeChildren(),this.newButton.setEnabled(!0),this.refreshToolbarUI();const n=this.cachedRenderedReports.get(e);if(n)return void this.auditResultsElement.appendChild(n);const r=A.renderLighthouseReport(e,t,{beforePrint:this.beforePrint.bind(this),afterPrint:this.afterPrint.bind(this)});this.cachedRenderedReports.set(e,r)}buildReportUI(e,t){if(null===e)return;const n=new F(e,(()=>this.renderReport(e,t)),this.renderStartView.bind(this));this.reportSelector.prepend(n),this.refreshToolbarUI(),this.renderReport(e),this.newButton.element.focus()}handleDrop(e){const t=e.items;if(!t.length)return;if("file"===t[0].kind){const e=t[0].getAsFile();if(!e)return;const n=new FileReader;n.onload=()=>this.loadedFromFile(n.result),n.readAsText(e)}}loadedFromFile(e){const t=JSON.parse(e);t.lighthouseVersion&&this.buildReportUI(t)}elementsToRestoreScrollPositionsFor(){const e=super.elementsToRestoreScrollPositionsFor(),t=this.auditResultsElement.querySelector(".lh-container");return t&&e.push(t),e}wasShown(){super.wasShown(),this.registerCSSFiles([E])}}var pe=Object.freeze({__proto__:null,LighthousePanel:de});var ge=Object.freeze({__proto__:null,LighthouseReportGenerator:class{generateReportHtml(e){return""}}});export{k as LighthouseController,pe as LighthousePanel,C as LighthouseProtocolService,M as LighthouseReportRenderer,D as LighthouseReportSelector,ge as LighthouseReporterTypes,G as LighthouseStartView,ne as LighthouseStatusView,O as RadioSetting};