{"id":43979,"date":"2026-05-15T09:57:13","date_gmt":"2026-05-14T23:57:13","guid":{"rendered":"https:\/\/digitalnomadshq.com.au\/?page_id=43979"},"modified":"2026-05-27T16:58:29","modified_gmt":"2026-05-27T06:58:29","slug":"state-of-ai-search","status":"publish","type":"page","link":"https:\/\/digitalnomadshq.com.au\/state-of-ai-search\/","title":{"rendered":"State of AI Search"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"43979\" class=\"elementor elementor-43979\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-fa0636e e-con-full e-flex e-con e-parent\" data-id=\"fa0636e\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-e18d4d8 elementor-widget elementor-widget-html\" data-id=\"e18d4d8\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!DOCTYPE html>\n<html lang=\"en-AU\"><head>\n  <meta charset=\"UTF-8\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n  <title>The State of AI Search for Australian SMEs, 2026 \u2014 DNHQ Research<\/title>\n  <link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\n  <link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin>\n  <link rel=\"stylesheet\" href=\"https:\/\/fonts.googleapis.com\/css2?family=Barlow+Condensed:wght@400;500;600;700;800&family=Inter+Tight:wght@400;500;600;700&display=swap\">\n  <style>\/* ============================================================\n * THE STATE OF AI SEARCH FOR AUSTRALIAN SMES, 2026\n * Standalone styles - drops into any host page (Elementor, vanilla HTML, etc.).\n *\n * All styles are scoped under `.dn-scope` so the host page's CSS never\n * leaks in and ours never leaks out. The host can wrap the embed in a\n * `<div class=\"dn-scope\">` to opt in.\n *\n * Fonts: self-hosted WOFF2 (.\/fonts\/), no external CDN dependency.\n * Charts: Chart.js bundled locally (.\/chart.umd.min.js).\n * ============================================================ *\/\n\n\/* \u2500\u2500\u2500 Self-hosted fonts (latin subset only - English content) \u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n\n\n\n\n\n\n\n\n\n\n\/* \u2500\u2500\u2500 Reset (minimal, only what we need inside .dn-scope) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.dn-scope, .dn-scope * {\n  box-sizing: border-box;\n}\n.dn-scope {\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n  \/* Prevent inner overflow from breaking the page horizontally on mobile.\n   * Uses `clip` not `hidden` \u2014 `hidden` establishes a scrolling context\n   * that breaks position: sticky on the TOC sidebar. `clip` clips the\n   * overflow without becoming a scroll container. Supported in all\n   * modern browsers (Chrome 90+, Safari 16+, Firefox 81+). *\/\n  overflow-x: clip;\n}\n.dn-scope p, .dn-scope li { overflow-wrap: break-word; word-wrap: break-word; }\n.dn-scope ul,\n.dn-scope ol {\n  margin: 0;\n  padding: 0;\n}\n.dn-scope li {\n  list-style: none;\n}\n\/* Table reset \u2014 prevent host-page styles (WordPress\/Elementor default\n * table CSS adds borders, backgrounds, alternating rows, column lines)\n * from leaking into the intent table widget in Finding 14. *\/\n.dn-scope table,\n.dn-scope thead,\n.dn-scope tbody,\n.dn-scope tfoot,\n.dn-scope tr,\n.dn-scope th,\n.dn-scope td {\n  background: transparent !important;\n  border: none !important;\n  box-shadow: none !important;\n  outline: none !important;\n  margin: 0;\n}\n.dn-scope table {\n  border-collapse: collapse !important;\n  border-spacing: 0 !important;\n  width: auto;\n}\n.dn-scope tr:nth-child(even),\n.dn-scope tr:nth-child(odd) {\n  background: transparent !important;\n}\n.dn-scope button {\n  font-family: inherit;\n  cursor: pointer;\n  background: none;\n  border: none;\n  padding: 0;\n  color: inherit;\n}\n.dn-scope a {\n  color: inherit;\n  text-decoration: none;\n}\n\/* Inline links inside narrative + action content get visible styling so\n * the per-industry deep-dive links are obviously clickable. *\/\n.dn-scope .dn-tile-narrative a,\n.dn-scope .dn-tile-action a,\n.dn-scope .dn-deep-dives-callout a {\n  color: var(--dn-yellow-dark);\n  text-decoration: underline;\n  text-underline-offset: 3px;\n  text-decoration-thickness: 1.5px;\n  font-weight: 600;\n  transition: opacity 0.15s;\n}\n.dn-scope .dn-tile-narrative a:hover,\n.dn-scope .dn-tile-action a:hover,\n.dn-scope .dn-deep-dives-callout a:hover { opacity: 0.75; }\n\n\/* Per-industry deep-dives callout (always visible, near top of report) *\/\n.dn-scope .dn-deep-dives-callout {\n  margin-top: 24px;\n  padding: 18px 22px;\n  background: linear-gradient(180deg, #FFFFFF 0%, var(--dn-paper) 100%);\n  border: 1px solid var(--dn-rule);\n  border-radius: 16px;\n  display: flex;\n  flex-wrap: wrap;\n  gap: 10px 14px;\n  align-items: center;\n  font-family: var(--dn-ui);\n  font-size: 14px;\n  color: var(--dn-ink);\n}\n.dn-scope .dn-deep-dives-callout strong {\n  font-weight: 700;\n  margin-right: 6px;\n}\n.dn-scope .dn-deep-dives-callout a {\n  display: inline-flex;\n  align-items: center;\n  gap: 4px;\n  padding: 4px 10px;\n  background: var(--dn-paper);\n  border: 1px solid var(--dn-rule);\n  border-radius: 999px;\n  text-decoration: none !important;\n  color: var(--dn-ink) !important;\n  font-weight: 600;\n  font-size: 13px;\n}\n.dn-scope .dn-deep-dives-callout a:hover {\n  background: #FFFFFF;\n  opacity: 1;\n}\n\n\/* \u2500\u2500\u2500 Brand tokens \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.dn-scope {\n  --dn-ink: #002A45;\n  --dn-paper: #F7F5F0;\n  --dn-paper-warm: #F2EEE5;\n  --dn-muted: #6B7785;\n  --dn-rule: rgba(0, 42, 69, 0.12);\n  --dn-rule-soft: rgba(0, 42, 69, 0.06);\n\n  --dn-green: #CDFFB6;\n  --dn-green-dark: #87D259;\n  --dn-blue: #86A4EF;\n  --dn-blue-dark: #6985BA;\n  --dn-purple: #B89DFF;\n  --dn-purple-dark: #8169D2;\n  --dn-yellow: #FDE39C;\n  --dn-yellow-dark: #F5C238;\n  --dn-red: #F78E8D;\n\n  --dn-display: \"Barlow Condensed\", \"Oswald\", \"Arial Narrow\", sans-serif;\n  --dn-ui: \"Inter Tight\", \"Inter\", system-ui, sans-serif;\n\n  font-family: var(--dn-ui);\n  color: var(--dn-ink);\n  background: var(--dn-paper);\n}\n\n\/* \u2500\u2500\u2500 Typography primitives \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.dn-scope .dn-display { font-family: var(--dn-display); }\n.dn-scope .dn-ui      { font-family: var(--dn-ui); }\n.dn-scope .tabular-nums { font-variant-numeric: tabular-nums; }\n\n\/* Eyebrow descriptor (rotated-square bullet removed per editorial request) *\/\n.dn-scope .dn-descriptor {\n  font-family: var(--dn-ui);\n  font-size: 11px;\n  font-weight: 600;\n  letter-spacing: 0.22em;\n  text-transform: uppercase;\n  color: var(--dn-ink);\n  display: inline-flex;\n  align-items: center;\n  gap: 0;\n  line-height: 1;\n}\n.dn-scope .dn-descriptor .dot {\n  display: none;\n}\n\n\/* Asymmetric flexible-shape radii *\/\n.dn-scope .dn-shape    { border-radius: 24px 0 24px 0; }\n.dn-scope .dn-shape-sm { border-radius: 16px 0 16px 0; }\n.dn-scope .dn-shape-lg { border-radius: 32px 0 32px 0; }\n\n\/* \u2500\u2500\u2500 Layout shell \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.dn-scope .container {\n  max-width: 1280px;\n  margin-left: auto;\n  margin-right: auto;\n  padding-left: 16px;\n  padding-right: 16px;\n}\n@media (min-width: 640px) {\n  .dn-scope .container { padding-left: 24px; padding-right: 24px; }\n}\n\n\/* \u2500\u2500\u2500 Header \/ sticky nav \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.dn-scope .dn-header {\n  position: sticky;\n  top: 0;\n  z-index: 40;\n  backdrop-filter: blur(12px);\n  background: rgba(247, 245, 240, 0.92);\n  border-bottom: 1px solid var(--dn-rule);\n}\n.dn-scope .dn-header-inner {\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  padding: 16px 0;\n}\n.dn-scope .dn-wordmark {\n  display: inline-flex;\n  align-items: baseline;\n  gap: 10px;\n}\n.dn-scope .dn-wordmark-main {\n  font-family: var(--dn-display);\n  font-size: 22px;\n  font-weight: 700;\n  letter-spacing: -0.01em;\n  line-height: 1;\n  color: var(--dn-ink);\n}\n.dn-scope .dn-wordmark-sub {\n  font-family: var(--dn-ui);\n  font-size: 10px;\n  font-weight: 600;\n  letter-spacing: 0.22em;\n  text-transform: uppercase;\n  color: var(--dn-muted);\n}\n@media (max-width: 639px) {\n  .dn-scope .dn-wordmark-sub { display: none; }\n}\n.dn-scope .dn-nav {\n  display: flex;\n  align-items: center;\n  gap: 20px;\n  font-family: var(--dn-ui);\n  font-size: 14px;\n}\n.dn-scope .dn-nav-link {\n  color: var(--dn-ink);\n  transition: opacity 0.15s;\n}\n.dn-scope .dn-nav-link:hover { opacity: 0.7; }\n@media (max-width: 639px) {\n  .dn-scope .dn-nav-link.dn-nav-link--secondary { display: none; }\n}\n.dn-scope .dn-btn-pill {\n  display: inline-flex;\n  align-items: center;\n  gap: 6px;\n  padding: 8px 16px;\n  font-size: 12px;\n  font-weight: 600;\n  letter-spacing: 0.02em;\n  border-radius: 9999px;\n  transition: opacity 0.15s;\n}\n.dn-scope .dn-btn-pill--primary {\n  background: var(--dn-ink);\n  color: var(--dn-paper);\n}\n.dn-scope .dn-btn-pill--ghost {\n  background: transparent;\n  color: var(--dn-ink);\n  border: 1px solid var(--dn-rule);\n}\n.dn-scope .dn-btn-pill--outline {\n  background: transparent;\n  color: var(--dn-ink);\n  border: 1px solid var(--dn-ink);\n}\n.dn-scope .dn-btn-pill:hover { opacity: 0.9; }\n\n\/* \u2500\u2500\u2500 Arrow SVG icon (inherits currentColor via CSS mask) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.dn-scope .dn-arrow-icon {\n  display: inline-block;\n  width: 1em;\n  height: 0.7em;\n  vertical-align: middle;\n  margin: 0 0.1em;\n  background-color: currentColor;\n  -webkit-mask: url('https:\/\/digitalnomadshq.com.au\/wp-content\/uploads\/2025\/07\/arrow.svg') no-repeat center \/ contain;\n  mask: url('https:\/\/digitalnomadshq.com.au\/wp-content\/uploads\/2025\/07\/arrow.svg') no-repeat center \/ contain;\n  flex-shrink: 0;\n}\n\n\/* \u2500\u2500\u2500 Hero \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.dn-scope .dn-hero {\n  padding-top: 80px;\n}\n.dn-scope .dn-hero-card {\n  position: relative;\n  overflow: hidden;\n  border-radius: 24px;\n  background: linear-gradient(180deg, var(--dn-paper) 0%, #FFFFFF 100%);\n  border: 1px solid var(--dn-rule);\n}\n.dn-scope .dn-hero-glow {\n  pointer-events: none;\n  position: absolute;\n  width: 500px;\n  height: 500px;\n  border-radius: 50%;\n  filter: blur(60px);\n}\n.dn-scope .dn-hero-glow--blue {\n  top: -192px;\n  right: -192px;\n  background: radial-gradient(circle, rgba(134,164,239,0.30), transparent 70%);\n}\n.dn-scope .dn-hero-glow--green {\n  bottom: -192px;\n  left: -192px;\n  background: radial-gradient(circle, rgba(205,255,182,0.25), transparent 70%);\n}\n.dn-scope .dn-hero-body {\n  position: relative;\n  padding: 48px 24px;\n}\n@media (min-width: 640px) { .dn-scope .dn-hero-body { padding: 64px 40px; } }\n@media (min-width: 1024px) { .dn-scope .dn-hero-body { padding: 80px 56px; } }\n.dn-scope .dn-hero-title {\n  font-family: var(--dn-display);\n  font-size: clamp(48px, 8vw, 96px);\n  font-weight: 700;\n  line-height: 0.92;\n  letter-spacing: -0.03em;\n  text-transform: uppercase;\n  color: var(--dn-ink);\n  margin: 20px 0 0;\n  max-width: 1024px;\n  text-wrap: balance;\n}\n.dn-scope .dn-hero-subtitle {\n  font-family: var(--dn-ui);\n  font-size: clamp(16px, 1.5vw, 20px);\n  line-height: 1.5;\n  color: var(--dn-muted);\n  margin: 24px 0 0;\n  max-width: 768px;\n}\n.dn-scope .dn-hero-subtitle strong { color: var(--dn-ink); }\n\n\/* 3 editorial pillars inside the hero card (replaces the old stat strip) *\/\n.dn-scope .dn-hero-pillars {\n  display: grid;\n  gap: 16px;\n  grid-template-columns: 1fr;\n  margin-top: 40px;\n}\n.dn-scope .dn-hero-pillars > * { min-width: 0; }\n@media (min-width: 768px) {\n  .dn-scope .dn-hero-pillars { grid-template-columns: repeat(3, 1fr); gap: 20px; }\n}\n.dn-scope .dn-pillar {\n  padding: 24px;\n  border-radius: 16px 0 16px 0;\n  background: rgba(255, 255, 255, 0.7);\n  border: 1px solid var(--dn-rule);\n  display: flex;\n  flex-direction: column;\n}\n@media (min-width: 1024px) { .dn-scope .dn-pillar { padding: 28px; } }\n.dn-scope .dn-pillar-header {\n  display: flex;\n  align-items: center;\n  gap: 10px;\n  margin-bottom: 0;\n}\n.dn-scope .dn-pillar-icon {\n  width: 31px;\n  height: 31px;\n  flex-shrink: 0;\n}\n.dn-scope .dn-pillar-eyebrow {\n  font-family: var(--dn-ui);\n  font-size: 10px;\n  font-weight: 700;\n  letter-spacing: 0.22em;\n  text-transform: uppercase;\n  color: var(--dn-ink);\n  line-height: 1;\n}\n.dn-scope .dn-pillar-title {\n  font-family: var(--dn-display);\n  font-size: clamp(18px, 1.8vw, 22px);\n  font-weight: 700;\n  line-height: 1.1;\n  letter-spacing: -0.01em;\n  text-transform: uppercase;\n  color: var(--dn-ink);\n  margin: 12px 0 0;\n}\n.dn-scope .dn-pillar-body {\n  font-family: var(--dn-ui);\n  font-size: 14px;\n  line-height: 1.55;\n  color: var(--dn-muted);\n  margin: 14px 0 0;\n}\n\n\/* Stat strip *\/\n.dn-scope .dn-stat-grid {\n  display: grid;\n  gap: 12px;\n  grid-template-columns: repeat(2, 1fr);\n  margin-top: 40px;\n}\n@media (min-width: 640px) { .dn-scope .dn-stat-grid { grid-template-columns: repeat(3, 1fr); gap: 16px; } }\n@media (min-width: 1024px) { .dn-scope .dn-stat-grid { grid-template-columns: repeat(5, 1fr); } }\n.dn-scope .dn-stat {\n  position: relative;\n  padding: 16px;\n  border-radius: 16px 0 16px 0;\n  background: rgba(255,255,255,0.7);\n  border: 1px solid var(--dn-rule);\n}\n@media (min-width: 640px) { .dn-scope .dn-stat { padding: 20px; } }\n.dn-scope .dn-stat--highlight {\n  background: var(--dn-ink);\n  border-color: transparent;\n  color: #fff;\n}\n.dn-scope .dn-stat-value {\n  font-family: var(--dn-display);\n  font-size: clamp(28px, 3.125vw, 40px);\n  font-weight: 700;\n  line-height: 1;\n  letter-spacing: -0.02em;\n  font-variant-numeric: tabular-nums;\n  color: var(--dn-ink);\n}\n.dn-scope .dn-stat--highlight .dn-stat-value { color: var(--dn-yellow); }\n.dn-scope .dn-stat-label {\n  font-family: var(--dn-ui);\n  font-size: 10px;\n  font-weight: 600;\n  letter-spacing: 0.18em;\n  text-transform: uppercase;\n  color: var(--dn-muted);\n  margin-top: 8px;\n}\n.dn-scope .dn-stat--highlight .dn-stat-label { color: rgba(255,255,255,0.7); }\n\n\n\/* \u2500\u2500\u2500 Reading guide \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.dn-scope .dn-reading-guide {\n  margin-top: 32px;\n  padding: 24px;\n  border-radius: 24px;\n  background: rgba(255,255,255,0.6);\n  border: 1px solid var(--dn-rule);\n}\n@media (min-width: 640px) { .dn-scope .dn-reading-guide { padding: 32px; } }\n.dn-scope .dn-reading-guide p:last-child {\n  font-family: var(--dn-ui);\n  font-size: 15px;\n  line-height: 1.6;\n  color: var(--dn-muted);\n  margin: 12px 0 0;\n}\n\n\/* \u2500\u2500\u2500 Section header \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.dn-scope .dn-section-header {\n  margin-top: 80px;\n}\n.dn-scope .dn-section-title {\n  font-family: var(--dn-display);\n  font-size: clamp(40px, 6vw, 64px);\n  font-weight: 700;\n  line-height: 0.95;\n  letter-spacing: -0.03em;\n  text-transform: uppercase;\n  color: var(--dn-ink);\n  margin: 12px 0 0;\n}\n.dn-scope .dn-section-lede {\n  font-family: var(--dn-ui);\n  font-size: 17px;\n  line-height: 1.55;\n  color: var(--dn-muted);\n  max-width: 768px;\n  margin: 16px 0 0;\n}\n\n\/* \u2500\u2500\u2500 Headline cards \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.dn-scope .dn-headlines {\n  display: grid;\n  gap: 24px;\n  grid-template-columns: 1fr;\n  margin-top: 32px;\n}\n.dn-scope .dn-headlines > * { min-width: 0; }\n@media (min-width: 1024px) { .dn-scope .dn-headlines { grid-template-columns: repeat(2, 1fr); } }\n.dn-scope .dn-headline-card {\n  padding: 24px;\n  border-radius: 24px;\n  background: linear-gradient(180deg, #FFFFFF 0%, var(--dn-paper) 100%);\n  border: 1px solid var(--dn-rule);\n}\n@media (min-width: 640px) { .dn-scope .dn-headline-card { padding: 28px; } }\n.dn-scope .dn-headline-title {\n  font-family: var(--dn-display);\n  font-size: clamp(20px, 2.2vw, 26px);\n  font-weight: 700;\n  line-height: 1.05;\n  letter-spacing: -0.02em;\n  text-transform: uppercase;\n  color: var(--dn-ink);\n  margin: 12px 0 0;\n}\n.dn-scope .dn-headline-stat {\n  font-family: var(--dn-display);\n  font-size: clamp(32px, 4.5vw, 44px);\n  font-weight: 700;\n  line-height: 1;\n  letter-spacing: -0.03em;\n  font-variant-numeric: tabular-nums;\n  color: var(--dn-yellow-dark);\n  margin: 16px 0 0;\n}\n.dn-scope .dn-headline-chart {\n  margin-top: 20px;\n}\n.dn-scope .dn-headline-chart svg {\n  display: block;\n  width: 100%;\n  height: auto;\n}\n.dn-scope .dn-headline-chart-labels {\n  font-family: var(--dn-ui);\n  font-size: 10px;\n  font-weight: 500;\n  color: var(--dn-muted);\n  display: flex;\n  justify-content: space-between;\n  margin-top: 8px;\n}\n.dn-scope .dn-headline-takeaway {\n  font-family: var(--dn-ui);\n  font-size: 14px;\n  line-height: 1.55;\n  color: var(--dn-muted);\n  margin: 20px 0 0;\n}\n\n\/* \u2500\u2500\u2500 Download CTA card \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.dn-scope .dn-cta {\n  padding: 24px;\n  border-radius: 24px;\n  background: linear-gradient(180deg, var(--dn-paper) 0%, #FFFFFF 100%);\n  border: 1px solid var(--dn-rule);\n  margin-top: 32px;\n}\n@media (min-width: 640px) { .dn-scope .dn-cta { padding: 40px; } }\n.dn-scope .dn-cta-grid {\n  display: grid;\n  gap: 24px;\n  align-items: center;\n  grid-template-columns: 1fr;\n}\n@media (min-width: 1024px) { .dn-scope .dn-cta-grid { grid-template-columns: 1fr auto; } }\n.dn-scope .dn-cta-title {\n  font-family: var(--dn-display);\n  font-size: clamp(24px, 3.4vw, 36px);\n  font-weight: 700;\n  line-height: 1.05;\n  letter-spacing: -0.02em;\n  text-transform: uppercase;\n  color: var(--dn-ink);\n  margin: 12px 0 0;\n}\n.dn-scope .dn-cta-body {\n  font-family: var(--dn-ui);\n  font-size: 15px;\n  line-height: 1.55;\n  color: var(--dn-muted);\n  max-width: 640px;\n  margin: 12px 0 0;\n}\n.dn-scope .dn-cta-buttons {\n  display: flex;\n  flex-wrap: wrap;\n  gap: 12px;\n}\n.dn-scope .dn-cta-button {\n  display: inline-flex;\n  align-items: center;\n  gap: 8px;\n  padding: 12px 20px;\n  font-family: var(--dn-ui);\n  font-size: 14px;\n  font-weight: 600;\n  border-radius: 9999px;\n  transition: opacity 0.15s;\n}\n.dn-scope .dn-cta-button--primary {\n  background: var(--dn-ink);\n  color: var(--dn-paper);\n}\n.dn-scope .dn-cta-button--outline {\n  background: transparent;\n  color: var(--dn-ink);\n  border: 1px solid var(--dn-ink);\n}\n.dn-scope .dn-cta-button:hover { opacity: 0.9; }\n\n\/* \u2500\u2500\u2500 Findings region with TOC sidebar \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.dn-scope .dn-findings-grid {\n  display: grid;\n  gap: 32px;\n  grid-template-columns: 1fr;\n  margin-top: 16px;\n}\n\/* Grid children default to min-width: auto, which can be larger than\n * the available column when content has explicit min-widths (charts,\n * intent table). Force them to be shrinkable on all viewports. *\/\n.dn-scope .dn-findings-grid > * { min-width: 0; }\n@media (min-width: 1024px) {\n  .dn-scope .dn-findings-grid {\n    grid-template-columns: 220px 1fr;\n    gap: 40px;\n  }\n}\n\n\/* TOC sidebar *\/\n.dn-scope .dn-toc {\n  display: none;\n}\n@media (min-width: 1024px) {\n  .dn-scope .dn-toc {\n    display: block;\n    position: sticky;\n    top: 24px;\n    align-self: start;\n    max-height: calc(100vh - 48px);\n    overflow-y: auto;\n    padding-right: 8px;\n    padding-top: 60px;\n  }\n}\n.dn-scope .dn-toc-label {\n  font-family: var(--dn-ui);\n  font-size: 12px;\n  font-weight: 600;\n  letter-spacing: 0.22em;\n  text-transform: uppercase;\n  color: var(--dn-muted);\n}\n.dn-scope .dn-toc-list {\n  margin-top: 12px;\n  display: flex;\n  flex-direction: column;\n  gap: 24px;\n}\n.dn-scope .dn-toc-list > li {\n  padding-top: 20px;\n}\n.dn-scope .dn-toc-part-title {\n  font-family: var(--dn-display);\n  font-size: 15px;\n  font-weight: 700;\n  letter-spacing: 0.02em;\n  text-transform: uppercase;\n  color: var(--dn-ink);\n  line-height: 1.2;\n  display: block;\n}\n.dn-scope .dn-toc-part-title:hover { opacity: 0.7; }\n.dn-scope .dn-toc-part-title.active { color: var(--dn-yellow-dark); }\n.dn-scope .dn-toc-sublist {\n  margin-top: 8px;\n  padding-left: 12px;\n  border-left: 1px solid var(--dn-rule);\n  display: flex;\n  flex-direction: column;\n  gap: 6px;\n}\n.dn-scope .dn-toc-item {\n  font-family: var(--dn-ui);\n  font-size: 14px;\n  line-height: 1.4;\n  color: var(--dn-muted);\n  font-weight: 500;\n  transition: color 0.15s, opacity 0.15s;\n  display: block;\n}\n.dn-scope .dn-toc-item:hover { opacity: 0.7; }\n.dn-scope .dn-toc-item.active {\n  color: var(--dn-yellow-dark);\n  font-weight: 600;\n}\n.dn-scope .dn-toc-item-n {\n  font-variant-numeric: tabular-nums;\n  margin-right: 6px;\n}\n\n\/* Mobile TOC button *\/\n.dn-scope .dn-toc-mobile-btn {\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  width: 100%;\n  padding: 12px 20px;\n  background: #fff;\n  border: 1px solid var(--dn-rule);\n  border-radius: 9999px;\n  font-family: var(--dn-ui);\n  font-size: 14px;\n  font-weight: 600;\n  color: var(--dn-ink);\n  margin-bottom: 16px;\n}\n@media (min-width: 1024px) { .dn-scope .dn-toc-mobile-btn { display: none; } }\n\n\/* Mobile TOC overlay *\/\n.dn-scope .dn-toc-overlay {\n  display: none;\n  position: fixed;\n  inset: 0;\n  z-index: 50;\n  background: var(--dn-paper);\n  flex-direction: column;\n}\n.dn-scope .dn-toc-overlay[data-open=\"true\"] { display: flex; }\n@media (min-width: 1024px) { .dn-scope .dn-toc-overlay { display: none !important; } }\n.dn-scope .dn-toc-overlay-header {\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  padding: 16px;\n  border-bottom: 1px solid var(--dn-rule);\n}\n.dn-scope .dn-toc-overlay-body {\n  flex: 1;\n  overflow-y: auto;\n  padding: 24px 16px;\n}\n.dn-scope .dn-toc-overlay-card {\n  display: flex;\n  align-items: center;\n  gap: 12px;\n  width: 100%;\n  text-align: left;\n  background: #fff;\n  border: 1px solid var(--dn-rule);\n  border-radius: 16px;\n  padding: 12px 16px;\n  margin-top: 8px;\n  font-family: var(--dn-ui);\n}\n.dn-scope .dn-toc-overlay-n {\n  font-family: var(--dn-display);\n  font-size: 16px;\n  font-weight: 700;\n  color: var(--dn-yellow-dark);\n  min-width: 26px;\n}\n\n\/* \u2500\u2500\u2500 Findings header (with Expand all button) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.dn-scope .dn-findings-header {\n  padding-top: 16px;\n}\n.dn-scope .dn-findings-title-row {\n  margin-top: 12px;\n  display: flex;\n  flex-wrap: wrap;\n  align-items: flex-end;\n  justify-content: space-between;\n  gap: 16px;\n}\n.dn-scope .dn-findings-title {\n  font-family: var(--dn-display);\n  font-size: clamp(32px, 5vw, 52px);\n  font-weight: 700;\n  line-height: 0.95;\n  letter-spacing: -0.03em;\n  text-transform: uppercase;\n  color: var(--dn-ink);\n}\n.dn-scope .dn-expand-all-btn {\n  display: inline-flex;\n  align-items: center;\n  gap: 8px;\n  padding: 8px 16px;\n  font-family: var(--dn-ui);\n  font-size: 12px;\n  font-weight: 600;\n  border-radius: 9999px;\n  background: transparent;\n  color: var(--dn-ink);\n  border: 1px solid var(--dn-rule);\n  transition: opacity 0.15s;\n}\n.dn-scope .dn-expand-all-btn:hover { opacity: 0.9; }\n\n\/* \u2500\u2500\u2500 Part header \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.dn-scope .dn-part-header {\n  margin-top: 64px;\n  padding-top: 40px;\n  border-top: 1px solid var(--dn-rule);\n  scroll-margin-top: 128px;\n}\n.dn-scope .dn-part-title {\n  font-family: var(--dn-display);\n  font-size: clamp(28px, 3.5vw, 38px);\n  font-weight: 700;\n  line-height: 1;\n  letter-spacing: -0.02em;\n  text-transform: uppercase;\n  color: var(--dn-ink);\n  margin: 12px 0 0;\n}\n.dn-scope .dn-part-lede {\n  font-family: var(--dn-ui);\n  font-size: 15px;\n  line-height: 1.55;\n  color: var(--dn-muted);\n  max-width: 768px;\n  margin: 12px 0 0;\n}\n\n\/* \u2500\u2500\u2500 Finding tile \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.dn-scope .dn-tile {\n  scroll-margin-top: 128px;\n  margin-top: 24px;\n  overflow: hidden;\n  border-radius: 24px;\n  background: linear-gradient(180deg, #FFFFFF 0%, var(--dn-paper) 100%);\n  border: 1px solid var(--dn-rule);\n}\n@media (min-width: 640px) { .dn-scope .dn-tile { margin-top: 32px; } }\n.dn-scope .dn-tile-body {\n  padding: 24px;\n}\n@media (min-width: 640px) { .dn-scope .dn-tile-body { padding: 32px; } }\n@media (min-width: 1024px) { .dn-scope .dn-tile-body { padding: 40px; } }\n.dn-scope .dn-tile-eyebrow {\n  transition: opacity 0.15s;\n}\n.dn-scope .dn-tile-eyebrow:hover { opacity: 0.7; }\n.dn-scope .dn-tile-title {\n  font-family: var(--dn-display);\n  font-size: clamp(22px, 3vw, 32px);\n  font-weight: 700;\n  line-height: 1.05;\n  letter-spacing: -0.02em;\n  text-transform: uppercase;\n  color: var(--dn-ink);\n  margin: 12px 0 0;\n  text-wrap: balance;\n}\n.dn-scope .dn-tile.expanded .dn-tile-title {\n  font-size: clamp(28px, 4vw, 44px);\n  line-height: 1;\n}\n.dn-scope .dn-tile-headline {\n  font-family: var(--dn-ui);\n  font-size: clamp(14px, 1.4vw, 17px);\n  line-height: 1.45;\n  font-weight: 500;\n  color: rgba(0, 42, 69, 0.8);\n  margin: 12px 0 0;\n  max-width: 1024px;\n  text-wrap: balance;\n}\n.dn-scope .dn-tile.expanded .dn-tile-headline {\n  font-size: clamp(15px, 1.5vw, 18px);\n  margin-top: 16px;\n}\n.dn-scope .dn-tile-keystat {\n  font-family: var(--dn-display);\n  font-size: clamp(24px, 3vw, 32px);\n  font-weight: 700;\n  line-height: 1;\n  letter-spacing: -0.02em;\n  font-variant-numeric: tabular-nums;\n  color: var(--dn-yellow-dark);\n  margin: 20px 0 0;\n}\n.dn-scope .dn-tile.expanded .dn-tile-keystat { display: none; }\n\/* Tile content grid - chart + narrative side-by-side when expanded,\n * narrative hidden when collapsed (chart-only preview).\n *\/\n.dn-scope .dn-tile-content-grid {\n  margin-top: 24px;\n  display: grid;\n  gap: 24px;\n  grid-template-columns: 1fr;\n}\n.dn-scope .dn-tile-content-grid > * { min-width: 0; }\n.dn-scope .dn-tile.expanded .dn-tile-content-grid {\n  margin-top: 32px;\n  gap: 32px;\n}\n@media (min-width: 1024px) {\n  .dn-scope .dn-tile.expanded .dn-tile-content-grid {\n    grid-template-columns: 3fr 2fr;\n  }\n}\n.dn-scope .dn-tile-chart-wrap {\n  padding: 12px;\n  border-radius: 16px;\n  background: #fff;\n  border: 1px solid var(--dn-rule-soft);\n  overflow: hidden;\n  position: relative;\n  max-width: 100%;\n  width: 100%;\n}\n@media (min-width: 640px) { .dn-scope .dn-tile-chart-wrap { padding: 16px; } }\n@media (min-width: 1024px) { .dn-scope .dn-tile.expanded .dn-tile-chart-wrap { padding: 24px; } }\n.dn-scope .dn-tile-chart {\n  position: relative;\n  height: 280px;\n  max-width: 100%;\n  width: 100%;\n}\n\/* Chart.js canvases must not exceed their container. Chart.js writes\n * width\/height inline based on parent dims, so we only override max-width\n * (height is computed correctly from .dn-tile-chart height). *\/\n.dn-scope .dn-tile-chart canvas {\n  display: block;\n  max-width: 100% !important;\n}\n.dn-scope .dn-tile.expanded .dn-tile-chart {\n  height: 480px;\n}\n.dn-scope .dn-tile-narrative {\n  display: none;\n  font-family: var(--dn-ui);\n  font-size: 15px;\n  line-height: 1.6;\n  color: var(--dn-ink);\n}\n.dn-scope .dn-tile.expanded .dn-tile-narrative {\n  display: block;\n}\n.dn-scope .dn-tile-narrative p {\n  margin: 0 0 16px;\n}\n.dn-scope .dn-tile-narrative p:last-of-type {\n  margin-bottom: 0;\n}\n.dn-scope .dn-tile-action {\n  display: none;\n  margin-top: 32px;\n  padding: 20px;\n  border-radius: 16px 0 16px 0;\n  background: var(--dn-yellow);\n  border: 1px solid var(--dn-yellow-dark);\n}\n.dn-scope .dn-tile.expanded .dn-tile-action {\n  display: block;\n}\n@media (min-width: 640px) { .dn-scope .dn-tile-action { padding: 24px; } }\n.dn-scope .dn-tile-action-label {\n  font-family: var(--dn-ui);\n  font-size: 10px;\n  font-weight: 700;\n  letter-spacing: 0.22em;\n  text-transform: uppercase;\n  color: var(--dn-ink);\n}\n.dn-scope .dn-tile-action-body {\n  font-family: var(--dn-ui);\n  font-size: 14px;\n  line-height: 1.55;\n  color: var(--dn-ink);\n  margin-top: 12px;\n}\n.dn-scope .dn-tile-action-body ul {\n  display: flex;\n  flex-direction: column;\n  gap: 8px;\n}\n.dn-scope .dn-tile-action-body li::before {\n  content: \"\u2192 \";\n  margin-right: 4px;\n}\n\n\/* Read \/ Collapse button *\/\n.dn-scope .dn-tile-toggle {\n  margin-top: 20px;\n  display: inline-flex;\n  align-items: center;\n  gap: 8px;\n  padding: 8px 16px;\n  font-family: var(--dn-ui);\n  font-size: 12px;\n  font-weight: 600;\n  border-radius: 9999px;\n  background: var(--dn-ink);\n  color: var(--dn-paper);\n  transition: opacity 0.15s;\n}\n.dn-scope .dn-tile.expanded .dn-tile-toggle.read-btn { display: none; }\n.dn-scope .dn-tile-toggle.collapse-btn {\n  display: none;\n  background: transparent;\n  color: var(--dn-ink);\n  border: 1px solid var(--dn-rule);\n}\n.dn-scope .dn-tile.expanded .dn-tile-toggle.collapse-btn {\n  display: inline-flex;\n  margin-top: 8px;\n}\n.dn-scope .dn-tile-toggle:hover { opacity: 0.9; }\n\n\/* \u2500\u2500\u2500 Deferred-finding callout (Finding 7) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.dn-scope .dn-deferred {\n  margin-top: 48px;\n  padding: 24px;\n  border-radius: 24px;\n  background: var(--dn-paper-warm);\n  border: 1px solid var(--dn-rule);\n}\n@media (min-width: 640px) { .dn-scope .dn-deferred { padding: 32px; } }\n.dn-scope .dn-deferred-title {\n  font-family: var(--dn-display);\n  font-size: clamp(22px, 2.6vw, 30px);\n  font-weight: 700;\n  line-height: 1.05;\n  letter-spacing: -0.02em;\n  text-transform: uppercase;\n  color: var(--dn-ink);\n  margin: 12px 0 0;\n}\n.dn-scope .dn-deferred p {\n  font-family: var(--dn-ui);\n  font-size: 15px;\n  line-height: 1.55;\n  color: var(--dn-ink);\n  max-width: 768px;\n  margin: 12px 0 0;\n}\n\n\/* \u2500\u2500\u2500 Methodology section \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.dn-scope .dn-methodology {\n  padding: 64px 0 80px;\n}\n.dn-scope .dn-methodology p {\n  font-family: var(--dn-ui);\n  font-size: 15px;\n  line-height: 1.6;\n  color: var(--dn-ink);\n  max-width: 768px;\n  margin: 20px 0 0;\n}\n.dn-scope .dn-methodology p.dn-methodology-meta {\n  font-size: 14px;\n  color: var(--dn-muted);\n  margin-top: 12px;\n}\n.dn-scope .dn-methodology a {\n  text-decoration: underline;\n  color: var(--dn-ink);\n}\n.dn-scope .dn-methodology h3 {\n  font-family: var(--dn-display);\n  font-size: clamp(17px, 1.5vw, 20px);\n  font-weight: 700;\n  letter-spacing: -0.01em;\n  text-transform: uppercase;\n  color: var(--dn-ink);\n  margin: 36px 0 0;\n  max-width: 768px;\n}\n.dn-scope .dn-methodology h3 + p { margin-top: 10px; }\n\n\/* \u2500\u2500\u2500 Footer \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.dn-scope .dn-footer {\n  margin-top: 64px;\n  padding: 40px 0;\n  border-top: 1px solid var(--dn-rule);\n  background: var(--dn-paper-warm);\n}\n.dn-scope .dn-footer p {\n  font-family: var(--dn-ui);\n  font-size: 12px;\n  line-height: 1.55;\n  color: var(--dn-muted);\n}\n.dn-scope .dn-footer a {\n  text-decoration: underline;\n  color: var(--dn-ink);\n}\n\n\/* \u2500\u2500\u2500 Back-to-top \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.dn-scope .dn-back-to-top {\n  position: fixed;\n  bottom: 24px;\n  right: 24px;\n  z-index: 40;\n  width: 44px;\n  height: 44px;\n  border-radius: 9999px;\n  background: var(--dn-ink);\n  color: var(--dn-paper);\n  box-shadow: 0 4px 16px rgba(0, 42, 69, 0.18);\n  display: inline-flex;\n  align-items: center;\n  justify-content: center;\n  font-size: 18px;\n  font-weight: 700;\n  opacity: 0;\n  pointer-events: none;\n  transition: opacity 0.2s;\n}\n.dn-scope .dn-back-to-top.visible {\n  opacity: 1;\n  pointer-events: auto;\n}\n.dn-scope .dn-back-to-top:hover { opacity: 0.9; }\n\n\/* \u2500\u2500\u2500 Finding 20: keyword intent table \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n\n\/* Wide-chart tile: custom block always visible; narrative below when expanded *\/\n.dn-scope .dn-tile-custom-block {\n  margin-top: 24px;\n}\n.dn-scope .dn-tile--wide-chart .dn-tile-narrative {\n  display: none;\n  font-family: var(--dn-ui);\n  font-size: 15px;\n  line-height: 1.6;\n  color: var(--dn-ink);\n  margin-top: 24px;\n}\n.dn-scope .dn-tile--wide-chart .dn-tile-narrative p { margin: 0 0 16px; }\n.dn-scope .dn-tile--wide-chart.expanded .dn-tile-narrative { display: block; }\n\n\/* Intent table wrapper *\/\n.dn-scope .dn-intent-table {\n  width: 100%;\n}\n.dn-scope .dn-intent-legend {\n  display: flex;\n  flex-wrap: wrap;\n  gap: 12px 20px;\n  margin-bottom: 16px;\n}\n.dn-scope .dn-intent-legend-item {\n  display: inline-flex;\n  align-items: center;\n  gap: 6px;\n  font-family: var(--dn-ui);\n  font-size: 11px;\n  font-weight: 600;\n  color: var(--dn-ink);\n}\n.dn-scope .dn-intent-swatch {\n  display: inline-block;\n  width: 10px;\n  height: 10px;\n  border-radius: 2px;\n  flex-shrink: 0;\n}\n\n\/* Scrollable wrapper for the table on small screens *\/\n.dn-scope .dn-intent-scroll {\n  overflow-x: auto;\n  -webkit-overflow-scrolling: touch;\n  max-width: 100%;\n}\n.dn-scope .dn-intent-scroll table {\n  width: 100%;\n  min-width: 440px;\n  border-collapse: collapse;\n}\n@media (min-width: 640px) {\n  .dn-scope .dn-intent-scroll table { min-width: 540px; }\n}\n\/* Tighten cell padding on small screens to fit the smaller min-width *\/\n@media (max-width: 639px) {\n  .dn-scope td.dn-intent-industry { padding: 8px 10px; font-size: 12px; }\n  .dn-scope td.dn-intent-cell { padding: 8px 8px; }\n  .dn-scope .dn-intent-pct { font-size: 11px; margin-left: 4px; }\n  .dn-scope .dn-intent-bar { max-width: 50px; }\n  .dn-scope .dn-intent-scroll thead th { padding: 4px 10px 8px; font-size: 9px; }\n}\n.dn-scope .dn-intent-scroll thead th {\n  font-family: var(--dn-ui);\n  font-size: 10px;\n  font-weight: 700;\n  letter-spacing: 0.14em;\n  text-transform: uppercase;\n  color: var(--dn-muted);\n  padding: 4px 14px 10px;\n  text-align: left;\n  white-space: nowrap;\n}\n.dn-scope td.dn-intent-industry {\n  font-family: var(--dn-ui);\n  font-size: 13px;\n  font-weight: 600;\n  color: var(--dn-ink);\n  padding: 9px 14px;\n  white-space: nowrap;\n}\n.dn-scope td.dn-intent-cell {\n  padding: 9px 14px;\n  white-space: nowrap;\n}\n.dn-scope .dn-intent-bar {\n  display: inline-block;\n  height: 7px;\n  border-radius: 2px;\n  vertical-align: middle;\n  min-width: 2px;\n  max-width: 80px;\n}\n.dn-scope .dn-intent-pct {\n  font-family: var(--dn-ui);\n  font-size: 12px;\n  font-weight: 600;\n  font-variant-numeric: tabular-nums;\n  color: var(--dn-ink);\n  margin-left: 7px;\n  vertical-align: middle;\n}\n\n\/* \u2500\u2500\u2500 Utility: hidden findings (filter-suppressed) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.dn-scope .dn-tile[hidden],\n.dn-scope .dn-toc-item[hidden],\n.dn-scope [hidden] { display: none !important; }<\/style>\n  <script>\/**\n * Skipped minification because the original files appears to be already minified.\n * Original file: \/npm\/chart.js@4.4.6\/dist\/chart.umd.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https:\/\/www.jsdelivr.com\/using-sri-with-dynamic-files\n *\/\n\/*!\n * Chart.js v4.4.6\n * https:\/\/www.chartjs.org\n * (c) 2024 Chart.js Contributors\n * Released under the MIT License\n *\/\n!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).Chart=e()}(this,(function(){\"use strict\";var t=Object.freeze({__proto__:null,get Colors(){return Go},get Decimation(){return Qo},get Filler(){return ma},get Legend(){return ya},get SubTitle(){return ka},get Title(){return Ma},get Tooltip(){return Ba}});function e(){}const i=(()=>{let t=0;return()=>t++})();function s(t){return null==t}function n(t){if(Array.isArray&&Array.isArray(t))return!0;const e=Object.prototype.toString.call(t);return\"[object\"===e.slice(0,7)&&\"Array]\"===e.slice(-6)}function o(t){return null!==t&&\"[object Object]\"===Object.prototype.toString.call(t)}function a(t){return(\"number\"==typeof t||t instanceof Number)&&isFinite(+t)}function r(t,e){return a(t)?t:e}function l(t,e){return void 0===t?e:t}const h=(t,e)=>\"string\"==typeof t&&t.endsWith(\"%\")?parseFloat(t)\/100:+t\/e,c=(t,e)=>\"string\"==typeof t&&t.endsWith(\"%\")?parseFloat(t)\/100*e:+t;function d(t,e,i){if(t&&\"function\"==typeof t.call)return t.apply(i,e)}function u(t,e,i,s){let a,r,l;if(n(t))if(r=t.length,s)for(a=r-1;a>=0;a--)e.call(i,t[a],a);else for(a=0;a<r;a++)e.call(i,t[a],a);else if(o(t))for(l=Object.keys(t),r=l.length,a=0;a<r;a++)e.call(i,t[l[a]],l[a])}function f(t,e){let i,s,n,o;if(!t||!e||t.length!==e.length)return!1;for(i=0,s=t.length;i<s;++i)if(n=t[i],o=e[i],n.datasetIndex!==o.datasetIndex||n.index!==o.index)return!1;return!0}function g(t){if(n(t))return t.map(g);if(o(t)){const e=Object.create(null),i=Object.keys(t),s=i.length;let n=0;for(;n<s;++n)e[i[n]]=g(t[i[n]]);return e}return t}function p(t){return-1===[\"__proto__\",\"prototype\",\"constructor\"].indexOf(t)}function m(t,e,i,s){if(!p(t))return;const n=e[t],a=i[t];o(n)&&o(a)?b(n,a,s):e[t]=g(a)}function b(t,e,i){const s=n(e)?e:[e],a=s.length;if(!o(t))return t;const r=(i=i||{}).merger||m;let l;for(let e=0;e<a;++e){if(l=s[e],!o(l))continue;const n=Object.keys(l);for(let e=0,s=n.length;e<s;++e)r(n[e],t,l,i)}return t}function x(t,e){return b(t,e,{merger:_})}function _(t,e,i){if(!p(t))return;const s=e[t],n=i[t];o(s)&&o(n)?x(s,n):Object.prototype.hasOwnProperty.call(e,t)||(e[t]=g(n))}const y={\"\":t=>t,x:t=>t.x,y:t=>t.y};function v(t){const e=t.split(\".\"),i=[];let s=\"\";for(const t of e)s+=t,s.endsWith(\"\\\\\")?s=s.slice(0,-1)+\".\":(i.push(s),s=\"\");return i}function M(t,e){const i=y[e]||(y[e]=function(t){const e=v(t);return t=>{for(const i of e){if(\"\"===i)break;t=t&&t[i]}return t}}(e));return i(t)}function w(t){return t.charAt(0).toUpperCase()+t.slice(1)}const k=t=>void 0!==t,S=t=>\"function\"==typeof t,P=(t,e)=>{if(t.size!==e.size)return!1;for(const i of t)if(!e.has(i))return!1;return!0};function D(t){return\"mouseup\"===t.type||\"click\"===t.type||\"contextmenu\"===t.type}const C=Math.PI,O=2*C,A=O+C,T=Number.POSITIVE_INFINITY,L=C\/180,E=C\/2,R=C\/4,I=2*C\/3,z=Math.log10,F=Math.sign;function V(t,e,i){return Math.abs(t-e)<i}function B(t){const e=Math.round(t);t=V(t,e,t\/1e3)?e:t;const i=Math.pow(10,Math.floor(z(t))),s=t\/i;return(s<=1?1:s<=2?2:s<=5?5:10)*i}function W(t){const e=[],i=Math.sqrt(t);let s;for(s=1;s<i;s++)t%s==0&&(e.push(s),e.push(t\/s));return i===(0|i)&&e.push(i),e.sort(((t,e)=>t-e)).pop(),e}function N(t){return!isNaN(parseFloat(t))&&isFinite(t)}function H(t,e){const i=Math.round(t);return i-e<=t&&i+e>=t}function j(t,e,i){let s,n,o;for(s=0,n=t.length;s<n;s++)o=t[s][i],isNaN(o)||(e.min=Math.min(e.min,o),e.max=Math.max(e.max,o))}function $(t){return t*(C\/180)}function Y(t){return t*(180\/C)}function U(t){if(!a(t))return;let e=1,i=0;for(;Math.round(t*e)\/e!==t;)e*=10,i++;return i}function X(t,e){const i=e.x-t.x,s=e.y-t.y,n=Math.sqrt(i*i+s*s);let o=Math.atan2(s,i);return o<-.5*C&&(o+=O),{angle:o,distance:n}}function q(t,e){return Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2))}function K(t,e){return(t-e+A)%O-C}function G(t){return(t%O+O)%O}function Z(t,e,i,s){const n=G(t),o=G(e),a=G(i),r=G(o-n),l=G(a-n),h=G(n-o),c=G(n-a);return n===o||n===a||s&&o===a||r>l&&h<c}function J(t,e,i){return Math.max(e,Math.min(i,t))}function Q(t){return J(t,-32768,32767)}function tt(t,e,i,s=1e-6){return t>=Math.min(e,i)-s&&t<=Math.max(e,i)+s}function et(t,e,i){i=i||(i=>t[i]<e);let s,n=t.length-1,o=0;for(;n-o>1;)s=o+n>>1,i(s)?o=s:n=s;return{lo:o,hi:n}}const it=(t,e,i,s)=>et(t,i,s?s=>{const n=t[s][e];return n<i||n===i&&t[s+1][e]===i}:s=>t[s][e]<i),st=(t,e,i)=>et(t,i,(s=>t[s][e]>=i));function nt(t,e,i){let s=0,n=t.length;for(;s<n&&t[s]<e;)s++;for(;n>s&&t[n-1]>i;)n--;return s>0||n<t.length?t.slice(s,n):t}const ot=[\"push\",\"pop\",\"shift\",\"splice\",\"unshift\"];function at(t,e){t._chartjs?t._chartjs.listeners.push(e):(Object.defineProperty(t,\"_chartjs\",{configurable:!0,enumerable:!1,value:{listeners:[e]}}),ot.forEach((e=>{const i=\"_onData\"+w(e),s=t[e];Object.defineProperty(t,e,{configurable:!0,enumerable:!1,value(...e){const n=s.apply(this,e);return t._chartjs.listeners.forEach((t=>{\"function\"==typeof t[i]&&t[i](...e)})),n}})})))}function rt(t,e){const i=t._chartjs;if(!i)return;const s=i.listeners,n=s.indexOf(e);-1!==n&&s.splice(n,1),s.length>0||(ot.forEach((e=>{delete t[e]})),delete t._chartjs)}function lt(t){const e=new Set(t);return e.size===t.length?t:Array.from(e)}const ht=\"undefined\"==typeof window?function(t){return t()}:window.requestAnimationFrame;function ct(t,e){let i=[],s=!1;return function(...n){i=n,s||(s=!0,ht.call(window,(()=>{s=!1,t.apply(e,i)})))}}function dt(t,e){let i;return function(...s){return e?(clearTimeout(i),i=setTimeout(t,e,s)):t.apply(this,s),e}}const ut=t=>\"start\"===t?\"left\":\"end\"===t?\"right\":\"center\",ft=(t,e,i)=>\"start\"===t?e:\"end\"===t?i:(e+i)\/2,gt=(t,e,i,s)=>t===(s?\"left\":\"right\")?i:\"center\"===t?(e+i)\/2:e;function pt(t,e,i){const s=e.length;let n=0,o=s;if(t._sorted){const{iScale:a,_parsed:r}=t,l=a.axis,{min:h,max:c,minDefined:d,maxDefined:u}=a.getUserBounds();d&&(n=J(Math.min(it(r,l,h).lo,i?s:it(e,l,a.getPixelForValue(h)).lo),0,s-1)),o=u?J(Math.max(it(r,a.axis,c,!0).hi+1,i?0:it(e,l,a.getPixelForValue(c),!0).hi+1),n,s)-n:s-n}return{start:n,count:o}}function mt(t){const{xScale:e,yScale:i,_scaleRanges:s}=t,n={xmin:e.min,xmax:e.max,ymin:i.min,ymax:i.max};if(!s)return t._scaleRanges=n,!0;const o=s.xmin!==e.min||s.xmax!==e.max||s.ymin!==i.min||s.ymax!==i.max;return Object.assign(s,n),o}class bt{constructor(){this._request=null,this._charts=new Map,this._running=!1,this._lastDate=void 0}_notify(t,e,i,s){const n=e.listeners[s],o=e.duration;n.forEach((s=>s({chart:t,initial:e.initial,numSteps:o,currentStep:Math.min(i-e.start,o)})))}_refresh(){this._request||(this._running=!0,this._request=ht.call(window,(()=>{this._update(),this._request=null,this._running&&this._refresh()})))}_update(t=Date.now()){let e=0;this._charts.forEach(((i,s)=>{if(!i.running||!i.items.length)return;const n=i.items;let o,a=n.length-1,r=!1;for(;a>=0;--a)o=n[a],o._active?(o._total>i.duration&&(i.duration=o._total),o.tick(t),r=!0):(n[a]=n[n.length-1],n.pop());r&&(s.draw(),this._notify(s,i,t,\"progress\")),n.length||(i.running=!1,this._notify(s,i,t,\"complete\"),i.initial=!1),e+=n.length})),this._lastDate=t,0===e&&(this._running=!1)}_getAnims(t){const e=this._charts;let i=e.get(t);return i||(i={running:!1,initial:!0,items:[],listeners:{complete:[],progress:[]}},e.set(t,i)),i}listen(t,e,i){this._getAnims(t).listeners[e].push(i)}add(t,e){e&&e.length&&this._getAnims(t).items.push(...e)}has(t){return this._getAnims(t).items.length>0}start(t){const e=this._charts.get(t);e&&(e.running=!0,e.start=Date.now(),e.duration=e.items.reduce(((t,e)=>Math.max(t,e._duration)),0),this._refresh())}running(t){if(!this._running)return!1;const e=this._charts.get(t);return!!(e&&e.running&&e.items.length)}stop(t){const e=this._charts.get(t);if(!e||!e.items.length)return;const i=e.items;let s=i.length-1;for(;s>=0;--s)i[s].cancel();e.items=[],this._notify(t,e,Date.now(),\"complete\")}remove(t){return this._charts.delete(t)}}var xt=new bt;\n\/*!\n * @kurkle\/color v0.3.2\n * https:\/\/github.com\/kurkle\/color#readme\n * (c) 2023 Jukka Kurkela\n * Released under the MIT License\n *\/function _t(t){return t+.5|0}const yt=(t,e,i)=>Math.max(Math.min(t,i),e);function vt(t){return yt(_t(2.55*t),0,255)}function Mt(t){return yt(_t(255*t),0,255)}function wt(t){return yt(_t(t\/2.55)\/100,0,1)}function kt(t){return yt(_t(100*t),0,100)}const St={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,A:10,B:11,C:12,D:13,E:14,F:15,a:10,b:11,c:12,d:13,e:14,f:15},Pt=[...\"0123456789ABCDEF\"],Dt=t=>Pt[15&t],Ct=t=>Pt[(240&t)>>4]+Pt[15&t],Ot=t=>(240&t)>>4==(15&t);function At(t){var e=(t=>Ot(t.r)&&Ot(t.g)&&Ot(t.b)&&Ot(t.a))(t)?Dt:Ct;return t?\"#\"+e(t.r)+e(t.g)+e(t.b)+((t,e)=>t<255?e(t):\"\")(t.a,e):void 0}const Tt=\/^(hsla?|hwb|hsv)\\(\\s*([-+.e\\d]+)(?:deg)?[\\s,]+([-+.e\\d]+)%[\\s,]+([-+.e\\d]+)%(?:[\\s,]+([-+.e\\d]+)(%)?)?\\s*\\)$\/;function Lt(t,e,i){const s=e*Math.min(i,1-i),n=(e,n=(e+t\/30)%12)=>i-s*Math.max(Math.min(n-3,9-n,1),-1);return[n(0),n(8),n(4)]}function Et(t,e,i){const s=(s,n=(s+t\/60)%6)=>i-i*e*Math.max(Math.min(n,4-n,1),0);return[s(5),s(3),s(1)]}function Rt(t,e,i){const s=Lt(t,1,.5);let n;for(e+i>1&&(n=1\/(e+i),e*=n,i*=n),n=0;n<3;n++)s[n]*=1-e-i,s[n]+=e;return s}function It(t){const e=t.r\/255,i=t.g\/255,s=t.b\/255,n=Math.max(e,i,s),o=Math.min(e,i,s),a=(n+o)\/2;let r,l,h;return n!==o&&(h=n-o,l=a>.5?h\/(2-n-o):h\/(n+o),r=function(t,e,i,s,n){return t===n?(e-i)\/s+(e<i?6:0):e===n?(i-t)\/s+2:(t-e)\/s+4}(e,i,s,h,n),r=60*r+.5),[0|r,l||0,a]}function zt(t,e,i,s){return(Array.isArray(e)?t(e[0],e[1],e[2]):t(e,i,s)).map(Mt)}function Ft(t,e,i){return zt(Lt,t,e,i)}function Vt(t){return(t%360+360)%360}function Bt(t){const e=Tt.exec(t);let i,s=255;if(!e)return;e[5]!==i&&(s=e[6]?vt(+e[5]):Mt(+e[5]));const n=Vt(+e[2]),o=+e[3]\/100,a=+e[4]\/100;return i=\"hwb\"===e[1]?function(t,e,i){return zt(Rt,t,e,i)}(n,o,a):\"hsv\"===e[1]?function(t,e,i){return zt(Et,t,e,i)}(n,o,a):Ft(n,o,a),{r:i[0],g:i[1],b:i[2],a:s}}const Wt={x:\"dark\",Z:\"light\",Y:\"re\",X:\"blu\",W:\"gr\",V:\"medium\",U:\"slate\",A:\"ee\",T:\"ol\",S:\"or\",B:\"ra\",C:\"lateg\",D:\"ights\",R:\"in\",Q:\"turquois\",E:\"hi\",P:\"ro\",O:\"al\",N:\"le\",M:\"de\",L:\"yello\",F:\"en\",K:\"ch\",G:\"arks\",H:\"ea\",I:\"ightg\",J:\"wh\"},Nt={OiceXe:\"f0f8ff\",antiquewEte:\"faebd7\",aqua:\"ffff\",aquamarRe:\"7fffd4\",azuY:\"f0ffff\",beige:\"f5f5dc\",bisque:\"ffe4c4\",black:\"0\",blanKedOmond:\"ffebcd\",Xe:\"ff\",XeviTet:\"8a2be2\",bPwn:\"a52a2a\",burlywood:\"deb887\",caMtXe:\"5f9ea0\",KartYuse:\"7fff00\",KocTate:\"d2691e\",cSO:\"ff7f50\",cSnflowerXe:\"6495ed\",cSnsilk:\"fff8dc\",crimson:\"dc143c\",cyan:\"ffff\",xXe:\"8b\",xcyan:\"8b8b\",xgTMnPd:\"b8860b\",xWay:\"a9a9a9\",xgYF:\"6400\",xgYy:\"a9a9a9\",xkhaki:\"bdb76b\",xmagFta:\"8b008b\",xTivegYF:\"556b2f\",xSange:\"ff8c00\",xScEd:\"9932cc\",xYd:\"8b0000\",xsOmon:\"e9967a\",xsHgYF:\"8fbc8f\",xUXe:\"483d8b\",xUWay:\"2f4f4f\",xUgYy:\"2f4f4f\",xQe:\"ced1\",xviTet:\"9400d3\",dAppRk:\"ff1493\",dApskyXe:\"bfff\",dimWay:\"696969\",dimgYy:\"696969\",dodgerXe:\"1e90ff\",fiYbrick:\"b22222\",flSOwEte:\"fffaf0\",foYstWAn:\"228b22\",fuKsia:\"ff00ff\",gaRsbSo:\"dcdcdc\",ghostwEte:\"f8f8ff\",gTd:\"ffd700\",gTMnPd:\"daa520\",Way:\"808080\",gYF:\"8000\",gYFLw:\"adff2f\",gYy:\"808080\",honeyMw:\"f0fff0\",hotpRk:\"ff69b4\",RdianYd:\"cd5c5c\",Rdigo:\"4b0082\",ivSy:\"fffff0\",khaki:\"f0e68c\",lavFMr:\"e6e6fa\",lavFMrXsh:\"fff0f5\",lawngYF:\"7cfc00\",NmoncEffon:\"fffacd\",ZXe:\"add8e6\",ZcSO:\"f08080\",Zcyan:\"e0ffff\",ZgTMnPdLw:\"fafad2\",ZWay:\"d3d3d3\",ZgYF:\"90ee90\",ZgYy:\"d3d3d3\",ZpRk:\"ffb6c1\",ZsOmon:\"ffa07a\",ZsHgYF:\"20b2aa\",ZskyXe:\"87cefa\",ZUWay:\"778899\",ZUgYy:\"778899\",ZstAlXe:\"b0c4de\",ZLw:\"ffffe0\",lime:\"ff00\",limegYF:\"32cd32\",lRF:\"faf0e6\",magFta:\"ff00ff\",maPon:\"800000\",VaquamarRe:\"66cdaa\",VXe:\"cd\",VScEd:\"ba55d3\",VpurpN:\"9370db\",VsHgYF:\"3cb371\",VUXe:\"7b68ee\",VsprRggYF:\"fa9a\",VQe:\"48d1cc\",VviTetYd:\"c71585\",midnightXe:\"191970\",mRtcYam:\"f5fffa\",mistyPse:\"ffe4e1\",moccasR:\"ffe4b5\",navajowEte:\"ffdead\",navy:\"80\",Tdlace:\"fdf5e6\",Tive:\"808000\",TivedBb:\"6b8e23\",Sange:\"ffa500\",SangeYd:\"ff4500\",ScEd:\"da70d6\",pOegTMnPd:\"eee8aa\",pOegYF:\"98fb98\",pOeQe:\"afeeee\",pOeviTetYd:\"db7093\",papayawEp:\"ffefd5\",pHKpuff:\"ffdab9\",peru:\"cd853f\",pRk:\"ffc0cb\",plum:\"dda0dd\",powMrXe:\"b0e0e6\",purpN:\"800080\",YbeccapurpN:\"663399\",Yd:\"ff0000\",Psybrown:\"bc8f8f\",PyOXe:\"4169e1\",saddNbPwn:\"8b4513\",sOmon:\"fa8072\",sandybPwn:\"f4a460\",sHgYF:\"2e8b57\",sHshell:\"fff5ee\",siFna:\"a0522d\",silver:\"c0c0c0\",skyXe:\"87ceeb\",UXe:\"6a5acd\",UWay:\"708090\",UgYy:\"708090\",snow:\"fffafa\",sprRggYF:\"ff7f\",stAlXe:\"4682b4\",tan:\"d2b48c\",teO:\"8080\",tEstN:\"d8bfd8\",tomato:\"ff6347\",Qe:\"40e0d0\",viTet:\"ee82ee\",JHt:\"f5deb3\",wEte:\"ffffff\",wEtesmoke:\"f5f5f5\",Lw:\"ffff00\",LwgYF:\"9acd32\"};let Ht;function jt(t){Ht||(Ht=function(){const t={},e=Object.keys(Nt),i=Object.keys(Wt);let s,n,o,a,r;for(s=0;s<e.length;s++){for(a=r=e[s],n=0;n<i.length;n++)o=i[n],r=r.replace(o,Wt[o]);o=parseInt(Nt[a],16),t[r]=[o>>16&255,o>>8&255,255&o]}return t}(),Ht.transparent=[0,0,0,0]);const e=Ht[t.toLowerCase()];return e&&{r:e[0],g:e[1],b:e[2],a:4===e.length?e[3]:255}}const $t=\/^rgba?\\(\\s*([-+.\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?(?:[\\s,\/]+([-+.e\\d]+)(%)?)?\\s*\\)$\/;const Yt=t=>t<=.0031308?12.92*t:1.055*Math.pow(t,1\/2.4)-.055,Ut=t=>t<=.04045?t\/12.92:Math.pow((t+.055)\/1.055,2.4);function Xt(t,e,i){if(t){let s=It(t);s[e]=Math.max(0,Math.min(s[e]+s[e]*i,0===e?360:1)),s=Ft(s),t.r=s[0],t.g=s[1],t.b=s[2]}}function qt(t,e){return t?Object.assign(e||{},t):t}function Kt(t){var e={r:0,g:0,b:0,a:255};return Array.isArray(t)?t.length>=3&&(e={r:t[0],g:t[1],b:t[2],a:255},t.length>3&&(e.a=Mt(t[3]))):(e=qt(t,{r:0,g:0,b:0,a:1})).a=Mt(e.a),e}function Gt(t){return\"r\"===t.charAt(0)?function(t){const e=$t.exec(t);let i,s,n,o=255;if(e){if(e[7]!==i){const t=+e[7];o=e[8]?vt(t):yt(255*t,0,255)}return i=+e[1],s=+e[3],n=+e[5],i=255&(e[2]?vt(i):yt(i,0,255)),s=255&(e[4]?vt(s):yt(s,0,255)),n=255&(e[6]?vt(n):yt(n,0,255)),{r:i,g:s,b:n,a:o}}}(t):Bt(t)}class Zt{constructor(t){if(t instanceof Zt)return t;const e=typeof t;let i;var s,n,o;\"object\"===e?i=Kt(t):\"string\"===e&&(o=(s=t).length,\"#\"===s[0]&&(4===o||5===o?n={r:255&17*St[s[1]],g:255&17*St[s[2]],b:255&17*St[s[3]],a:5===o?17*St[s[4]]:255}:7!==o&&9!==o||(n={r:St[s[1]]<<4|St[s[2]],g:St[s[3]]<<4|St[s[4]],b:St[s[5]]<<4|St[s[6]],a:9===o?St[s[7]]<<4|St[s[8]]:255})),i=n||jt(t)||Gt(t)),this._rgb=i,this._valid=!!i}get valid(){return this._valid}get rgb(){var t=qt(this._rgb);return t&&(t.a=wt(t.a)),t}set rgb(t){this._rgb=Kt(t)}rgbString(){return this._valid?(t=this._rgb)&&(t.a<255?`rgba(${t.r}, ${t.g}, ${t.b}, ${wt(t.a)})`:`rgb(${t.r}, ${t.g}, ${t.b})`):void 0;var t}hexString(){return this._valid?At(this._rgb):void 0}hslString(){return this._valid?function(t){if(!t)return;const e=It(t),i=e[0],s=kt(e[1]),n=kt(e[2]);return t.a<255?`hsla(${i}, ${s}%, ${n}%, ${wt(t.a)})`:`hsl(${i}, ${s}%, ${n}%)`}(this._rgb):void 0}mix(t,e){if(t){const i=this.rgb,s=t.rgb;let n;const o=e===n?.5:e,a=2*o-1,r=i.a-s.a,l=((a*r==-1?a:(a+r)\/(1+a*r))+1)\/2;n=1-l,i.r=255&l*i.r+n*s.r+.5,i.g=255&l*i.g+n*s.g+.5,i.b=255&l*i.b+n*s.b+.5,i.a=o*i.a+(1-o)*s.a,this.rgb=i}return this}interpolate(t,e){return t&&(this._rgb=function(t,e,i){const s=Ut(wt(t.r)),n=Ut(wt(t.g)),o=Ut(wt(t.b));return{r:Mt(Yt(s+i*(Ut(wt(e.r))-s))),g:Mt(Yt(n+i*(Ut(wt(e.g))-n))),b:Mt(Yt(o+i*(Ut(wt(e.b))-o))),a:t.a+i*(e.a-t.a)}}(this._rgb,t._rgb,e)),this}clone(){return new Zt(this.rgb)}alpha(t){return this._rgb.a=Mt(t),this}clearer(t){return this._rgb.a*=1-t,this}greyscale(){const t=this._rgb,e=_t(.3*t.r+.59*t.g+.11*t.b);return t.r=t.g=t.b=e,this}opaquer(t){return this._rgb.a*=1+t,this}negate(){const t=this._rgb;return t.r=255-t.r,t.g=255-t.g,t.b=255-t.b,this}lighten(t){return Xt(this._rgb,2,t),this}darken(t){return Xt(this._rgb,2,-t),this}saturate(t){return Xt(this._rgb,1,t),this}desaturate(t){return Xt(this._rgb,1,-t),this}rotate(t){return function(t,e){var i=It(t);i[0]=Vt(i[0]+e),i=Ft(i),t.r=i[0],t.g=i[1],t.b=i[2]}(this._rgb,t),this}}function Jt(t){if(t&&\"object\"==typeof t){const e=t.toString();return\"[object CanvasPattern]\"===e||\"[object CanvasGradient]\"===e}return!1}function Qt(t){return Jt(t)?t:new Zt(t)}function te(t){return Jt(t)?t:new Zt(t).saturate(.5).darken(.1).hexString()}const ee=[\"x\",\"y\",\"borderWidth\",\"radius\",\"tension\"],ie=[\"color\",\"borderColor\",\"backgroundColor\"];const se=new Map;function ne(t,e,i){return function(t,e){e=e||{};const i=t+JSON.stringify(e);let s=se.get(i);return s||(s=new Intl.NumberFormat(t,e),se.set(i,s)),s}(e,i).format(t)}const oe={values:t=>n(t)?t:\"\"+t,numeric(t,e,i){if(0===t)return\"0\";const s=this.chart.options.locale;let n,o=t;if(i.length>1){const e=Math.max(Math.abs(i[0].value),Math.abs(i[i.length-1].value));(e<1e-4||e>1e15)&&(n=\"scientific\"),o=function(t,e){let i=e.length>3?e[2].value-e[1].value:e[1].value-e[0].value;Math.abs(i)>=1&&t!==Math.floor(t)&&(i=t-Math.floor(t));return i}(t,i)}const a=z(Math.abs(o)),r=isNaN(a)?1:Math.max(Math.min(-1*Math.floor(a),20),0),l={notation:n,minimumFractionDigits:r,maximumFractionDigits:r};return Object.assign(l,this.options.ticks.format),ne(t,s,l)},logarithmic(t,e,i){if(0===t)return\"0\";const s=i[e].significand||t\/Math.pow(10,Math.floor(z(t)));return[1,2,3,5,10,15].includes(s)||e>.8*i.length?oe.numeric.call(this,t,e,i):\"\"}};var ae={formatters:oe};const re=Object.create(null),le=Object.create(null);function he(t,e){if(!e)return t;const i=e.split(\".\");for(let e=0,s=i.length;e<s;++e){const s=i[e];t=t[s]||(t[s]=Object.create(null))}return t}function ce(t,e,i){return\"string\"==typeof e?b(he(t,e),i):b(he(t,\"\"),e)}class de{constructor(t,e){this.animation=void 0,this.backgroundColor=\"rgba(0,0,0,0.1)\",this.borderColor=\"rgba(0,0,0,0.1)\",this.color=\"#666\",this.datasets={},this.devicePixelRatio=t=>t.chart.platform.getDevicePixelRatio(),this.elements={},this.events=[\"mousemove\",\"mouseout\",\"click\",\"touchstart\",\"touchmove\"],this.font={family:\"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif\",size:12,style:\"normal\",lineHeight:1.2,weight:null},this.hover={},this.hoverBackgroundColor=(t,e)=>te(e.backgroundColor),this.hoverBorderColor=(t,e)=>te(e.borderColor),this.hoverColor=(t,e)=>te(e.color),this.indexAxis=\"x\",this.interaction={mode:\"nearest\",intersect:!0,includeInvisible:!1},this.maintainAspectRatio=!0,this.onHover=null,this.onClick=null,this.parsing=!0,this.plugins={},this.responsive=!0,this.scale=void 0,this.scales={},this.showLine=!0,this.drawActiveElementsOnTop=!0,this.describe(t),this.apply(e)}set(t,e){return ce(this,t,e)}get(t){return he(this,t)}describe(t,e){return ce(le,t,e)}override(t,e){return ce(re,t,e)}route(t,e,i,s){const n=he(this,t),a=he(this,i),r=\"_\"+e;Object.defineProperties(n,{[r]:{value:n[e],writable:!0},[e]:{enumerable:!0,get(){const t=this[r],e=a[s];return o(t)?Object.assign({},e,t):l(t,e)},set(t){this[r]=t}}})}apply(t){t.forEach((t=>t(this)))}}var ue=new de({_scriptable:t=>!t.startsWith(\"on\"),_indexable:t=>\"events\"!==t,hover:{_fallback:\"interaction\"},interaction:{_scriptable:!1,_indexable:!1}},[function(t){t.set(\"animation\",{delay:void 0,duration:1e3,easing:\"easeOutQuart\",fn:void 0,from:void 0,loop:void 0,to:void 0,type:void 0}),t.describe(\"animation\",{_fallback:!1,_indexable:!1,_scriptable:t=>\"onProgress\"!==t&&\"onComplete\"!==t&&\"fn\"!==t}),t.set(\"animations\",{colors:{type:\"color\",properties:ie},numbers:{type:\"number\",properties:ee}}),t.describe(\"animations\",{_fallback:\"animation\"}),t.set(\"transitions\",{active:{animation:{duration:400}},resize:{animation:{duration:0}},show:{animations:{colors:{from:\"transparent\"},visible:{type:\"boolean\",duration:0}}},hide:{animations:{colors:{to:\"transparent\"},visible:{type:\"boolean\",easing:\"linear\",fn:t=>0|t}}}})},function(t){t.set(\"layout\",{autoPadding:!0,padding:{top:0,right:0,bottom:0,left:0}})},function(t){t.set(\"scale\",{display:!0,offset:!1,reverse:!1,beginAtZero:!1,bounds:\"ticks\",clip:!0,grace:0,grid:{display:!0,lineWidth:1,drawOnChartArea:!0,drawTicks:!0,tickLength:8,tickWidth:(t,e)=>e.lineWidth,tickColor:(t,e)=>e.color,offset:!1},border:{display:!0,dash:[],dashOffset:0,width:1},title:{display:!1,text:\"\",padding:{top:4,bottom:4}},ticks:{minRotation:0,maxRotation:50,mirror:!1,textStrokeWidth:0,textStrokeColor:\"\",padding:3,display:!0,autoSkip:!0,autoSkipPadding:3,labelOffset:0,callback:ae.formatters.values,minor:{},major:{},align:\"center\",crossAlign:\"near\",showLabelBackdrop:!1,backdropColor:\"rgba(255, 255, 255, 0.75)\",backdropPadding:2}}),t.route(\"scale.ticks\",\"color\",\"\",\"color\"),t.route(\"scale.grid\",\"color\",\"\",\"borderColor\"),t.route(\"scale.border\",\"color\",\"\",\"borderColor\"),t.route(\"scale.title\",\"color\",\"\",\"color\"),t.describe(\"scale\",{_fallback:!1,_scriptable:t=>!t.startsWith(\"before\")&&!t.startsWith(\"after\")&&\"callback\"!==t&&\"parser\"!==t,_indexable:t=>\"borderDash\"!==t&&\"tickBorderDash\"!==t&&\"dash\"!==t}),t.describe(\"scales\",{_fallback:\"scale\"}),t.describe(\"scale.ticks\",{_scriptable:t=>\"backdropPadding\"!==t&&\"callback\"!==t,_indexable:t=>\"backdropPadding\"!==t})}]);function fe(){return\"undefined\"!=typeof window&&\"undefined\"!=typeof document}function ge(t){let e=t.parentNode;return e&&\"[object ShadowRoot]\"===e.toString()&&(e=e.host),e}function pe(t,e,i){let s;return\"string\"==typeof t?(s=parseInt(t,10),-1!==t.indexOf(\"%\")&&(s=s\/100*e.parentNode[i])):s=t,s}const me=t=>t.ownerDocument.defaultView.getComputedStyle(t,null);function be(t,e){return me(t).getPropertyValue(e)}const xe=[\"top\",\"right\",\"bottom\",\"left\"];function _e(t,e,i){const s={};i=i?\"-\"+i:\"\";for(let n=0;n<4;n++){const o=xe[n];s[o]=parseFloat(t[e+\"-\"+o+i])||0}return s.width=s.left+s.right,s.height=s.top+s.bottom,s}const ye=(t,e,i)=>(t>0||e>0)&&(!i||!i.shadowRoot);function ve(t,e){if(\"native\"in t)return t;const{canvas:i,currentDevicePixelRatio:s}=e,n=me(i),o=\"border-box\"===n.boxSizing,a=_e(n,\"padding\"),r=_e(n,\"border\",\"width\"),{x:l,y:h,box:c}=function(t,e){const i=t.touches,s=i&&i.length?i[0]:t,{offsetX:n,offsetY:o}=s;let a,r,l=!1;if(ye(n,o,t.target))a=n,r=o;else{const t=e.getBoundingClientRect();a=s.clientX-t.left,r=s.clientY-t.top,l=!0}return{x:a,y:r,box:l}}(t,i),d=a.left+(c&&r.left),u=a.top+(c&&r.top);let{width:f,height:g}=e;return o&&(f-=a.width+r.width,g-=a.height+r.height),{x:Math.round((l-d)\/f*i.width\/s),y:Math.round((h-u)\/g*i.height\/s)}}const Me=t=>Math.round(10*t)\/10;function we(t,e,i,s){const n=me(t),o=_e(n,\"margin\"),a=pe(n.maxWidth,t,\"clientWidth\")||T,r=pe(n.maxHeight,t,\"clientHeight\")||T,l=function(t,e,i){let s,n;if(void 0===e||void 0===i){const o=t&&ge(t);if(o){const t=o.getBoundingClientRect(),a=me(o),r=_e(a,\"border\",\"width\"),l=_e(a,\"padding\");e=t.width-l.width-r.width,i=t.height-l.height-r.height,s=pe(a.maxWidth,o,\"clientWidth\"),n=pe(a.maxHeight,o,\"clientHeight\")}else e=t.clientWidth,i=t.clientHeight}return{width:e,height:i,maxWidth:s||T,maxHeight:n||T}}(t,e,i);let{width:h,height:c}=l;if(\"content-box\"===n.boxSizing){const t=_e(n,\"border\",\"width\"),e=_e(n,\"padding\");h-=e.width+t.width,c-=e.height+t.height}h=Math.max(0,h-o.width),c=Math.max(0,s?h\/s:c-o.height),h=Me(Math.min(h,a,l.maxWidth)),c=Me(Math.min(c,r,l.maxHeight)),h&&!c&&(c=Me(h\/2));return(void 0!==e||void 0!==i)&&s&&l.height&&c>l.height&&(c=l.height,h=Me(Math.floor(c*s))),{width:h,height:c}}function ke(t,e,i){const s=e||1,n=Math.floor(t.height*s),o=Math.floor(t.width*s);t.height=Math.floor(t.height),t.width=Math.floor(t.width);const a=t.canvas;return a.style&&(i||!a.style.height&&!a.style.width)&&(a.style.height=`${t.height}px`,a.style.width=`${t.width}px`),(t.currentDevicePixelRatio!==s||a.height!==n||a.width!==o)&&(t.currentDevicePixelRatio=s,a.height=n,a.width=o,t.ctx.setTransform(s,0,0,s,0,0),!0)}const Se=function(){let t=!1;try{const e={get passive(){return t=!0,!1}};fe()&&(window.addEventListener(\"test\",null,e),window.removeEventListener(\"test\",null,e))}catch(t){}return t}();function Pe(t,e){const i=be(t,e),s=i&&i.match(\/^(\\d+)(\\.\\d+)?px$\/);return s?+s[1]:void 0}function De(t){return!t||s(t.size)||s(t.family)?null:(t.style?t.style+\" \":\"\")+(t.weight?t.weight+\" \":\"\")+t.size+\"px \"+t.family}function Ce(t,e,i,s,n){let o=e[n];return o||(o=e[n]=t.measureText(n).width,i.push(n)),o>s&&(s=o),s}function Oe(t,e,i,s){let o=(s=s||{}).data=s.data||{},a=s.garbageCollect=s.garbageCollect||[];s.font!==e&&(o=s.data={},a=s.garbageCollect=[],s.font=e),t.save(),t.font=e;let r=0;const l=i.length;let h,c,d,u,f;for(h=0;h<l;h++)if(u=i[h],null==u||n(u)){if(n(u))for(c=0,d=u.length;c<d;c++)f=u[c],null==f||n(f)||(r=Ce(t,o,a,r,f))}else r=Ce(t,o,a,r,u);t.restore();const g=a.length\/2;if(g>i.length){for(h=0;h<g;h++)delete o[a[h]];a.splice(0,g)}return r}function Ae(t,e,i){const s=t.currentDevicePixelRatio,n=0!==i?Math.max(i\/2,.5):0;return Math.round((e-n)*s)\/s+n}function Te(t,e){(e||t)&&((e=e||t.getContext(\"2d\")).save(),e.resetTransform(),e.clearRect(0,0,t.width,t.height),e.restore())}function Le(t,e,i,s){Ee(t,e,i,s,null)}function Ee(t,e,i,s,n){let o,a,r,l,h,c,d,u;const f=e.pointStyle,g=e.rotation,p=e.radius;let m=(g||0)*L;if(f&&\"object\"==typeof f&&(o=f.toString(),\"[object HTMLImageElement]\"===o||\"[object HTMLCanvasElement]\"===o))return t.save(),t.translate(i,s),t.rotate(m),t.drawImage(f,-f.width\/2,-f.height\/2,f.width,f.height),void t.restore();if(!(isNaN(p)||p<=0)){switch(t.beginPath(),f){default:n?t.ellipse(i,s,n\/2,p,0,0,O):t.arc(i,s,p,0,O),t.closePath();break;case\"triangle\":c=n?n\/2:p,t.moveTo(i+Math.sin(m)*c,s-Math.cos(m)*p),m+=I,t.lineTo(i+Math.sin(m)*c,s-Math.cos(m)*p),m+=I,t.lineTo(i+Math.sin(m)*c,s-Math.cos(m)*p),t.closePath();break;case\"rectRounded\":h=.516*p,l=p-h,a=Math.cos(m+R)*l,d=Math.cos(m+R)*(n?n\/2-h:l),r=Math.sin(m+R)*l,u=Math.sin(m+R)*(n?n\/2-h:l),t.arc(i-d,s-r,h,m-C,m-E),t.arc(i+u,s-a,h,m-E,m),t.arc(i+d,s+r,h,m,m+E),t.arc(i-u,s+a,h,m+E,m+C),t.closePath();break;case\"rect\":if(!g){l=Math.SQRT1_2*p,c=n?n\/2:l,t.rect(i-c,s-l,2*c,2*l);break}m+=R;case\"rectRot\":d=Math.cos(m)*(n?n\/2:p),a=Math.cos(m)*p,r=Math.sin(m)*p,u=Math.sin(m)*(n?n\/2:p),t.moveTo(i-d,s-r),t.lineTo(i+u,s-a),t.lineTo(i+d,s+r),t.lineTo(i-u,s+a),t.closePath();break;case\"crossRot\":m+=R;case\"cross\":d=Math.cos(m)*(n?n\/2:p),a=Math.cos(m)*p,r=Math.sin(m)*p,u=Math.sin(m)*(n?n\/2:p),t.moveTo(i-d,s-r),t.lineTo(i+d,s+r),t.moveTo(i+u,s-a),t.lineTo(i-u,s+a);break;case\"star\":d=Math.cos(m)*(n?n\/2:p),a=Math.cos(m)*p,r=Math.sin(m)*p,u=Math.sin(m)*(n?n\/2:p),t.moveTo(i-d,s-r),t.lineTo(i+d,s+r),t.moveTo(i+u,s-a),t.lineTo(i-u,s+a),m+=R,d=Math.cos(m)*(n?n\/2:p),a=Math.cos(m)*p,r=Math.sin(m)*p,u=Math.sin(m)*(n?n\/2:p),t.moveTo(i-d,s-r),t.lineTo(i+d,s+r),t.moveTo(i+u,s-a),t.lineTo(i-u,s+a);break;case\"line\":a=n?n\/2:Math.cos(m)*p,r=Math.sin(m)*p,t.moveTo(i-a,s-r),t.lineTo(i+a,s+r);break;case\"dash\":t.moveTo(i,s),t.lineTo(i+Math.cos(m)*(n?n\/2:p),s+Math.sin(m)*p);break;case!1:t.closePath()}t.fill(),e.borderWidth>0&&t.stroke()}}function Re(t,e,i){return i=i||.5,!e||t&&t.x>e.left-i&&t.x<e.right+i&&t.y>e.top-i&&t.y<e.bottom+i}function Ie(t,e){t.save(),t.beginPath(),t.rect(e.left,e.top,e.right-e.left,e.bottom-e.top),t.clip()}function ze(t){t.restore()}function Fe(t,e,i,s,n){if(!e)return t.lineTo(i.x,i.y);if(\"middle\"===n){const s=(e.x+i.x)\/2;t.lineTo(s,e.y),t.lineTo(s,i.y)}else\"after\"===n!=!!s?t.lineTo(e.x,i.y):t.lineTo(i.x,e.y);t.lineTo(i.x,i.y)}function Ve(t,e,i,s){if(!e)return t.lineTo(i.x,i.y);t.bezierCurveTo(s?e.cp1x:e.cp2x,s?e.cp1y:e.cp2y,s?i.cp2x:i.cp1x,s?i.cp2y:i.cp1y,i.x,i.y)}function Be(t,e,i,s,n){if(n.strikethrough||n.underline){const o=t.measureText(s),a=e-o.actualBoundingBoxLeft,r=e+o.actualBoundingBoxRight,l=i-o.actualBoundingBoxAscent,h=i+o.actualBoundingBoxDescent,c=n.strikethrough?(l+h)\/2:h;t.strokeStyle=t.fillStyle,t.beginPath(),t.lineWidth=n.decorationWidth||2,t.moveTo(a,c),t.lineTo(r,c),t.stroke()}}function We(t,e){const i=t.fillStyle;t.fillStyle=e.color,t.fillRect(e.left,e.top,e.width,e.height),t.fillStyle=i}function Ne(t,e,i,o,a,r={}){const l=n(e)?e:[e],h=r.strokeWidth>0&&\"\"!==r.strokeColor;let c,d;for(t.save(),t.font=a.string,function(t,e){e.translation&&t.translate(e.translation[0],e.translation[1]),s(e.rotation)||t.rotate(e.rotation),e.color&&(t.fillStyle=e.color),e.textAlign&&(t.textAlign=e.textAlign),e.textBaseline&&(t.textBaseline=e.textBaseline)}(t,r),c=0;c<l.length;++c)d=l[c],r.backdrop&&We(t,r.backdrop),h&&(r.strokeColor&&(t.strokeStyle=r.strokeColor),s(r.strokeWidth)||(t.lineWidth=r.strokeWidth),t.strokeText(d,i,o,r.maxWidth)),t.fillText(d,i,o,r.maxWidth),Be(t,i,o,d,r),o+=Number(a.lineHeight);t.restore()}function He(t,e){const{x:i,y:s,w:n,h:o,radius:a}=e;t.arc(i+a.topLeft,s+a.topLeft,a.topLeft,1.5*C,C,!0),t.lineTo(i,s+o-a.bottomLeft),t.arc(i+a.bottomLeft,s+o-a.bottomLeft,a.bottomLeft,C,E,!0),t.lineTo(i+n-a.bottomRight,s+o),t.arc(i+n-a.bottomRight,s+o-a.bottomRight,a.bottomRight,E,0,!0),t.lineTo(i+n,s+a.topRight),t.arc(i+n-a.topRight,s+a.topRight,a.topRight,0,-E,!0),t.lineTo(i+a.topLeft,s)}function je(t,e=[\"\"],i,s,n=(()=>t[0])){const o=i||t;void 0===s&&(s=ti(\"_fallback\",t));const a={[Symbol.toStringTag]:\"Object\",_cacheable:!0,_scopes:t,_rootScopes:o,_fallback:s,_getTarget:n,override:i=>je([i,...t],e,o,s)};return new Proxy(a,{deleteProperty:(e,i)=>(delete e[i],delete e._keys,delete t[0][i],!0),get:(i,s)=>qe(i,s,(()=>function(t,e,i,s){let n;for(const o of e)if(n=ti(Ue(o,t),i),void 0!==n)return Xe(t,n)?Je(i,s,t,n):n}(s,e,t,i))),getOwnPropertyDescriptor:(t,e)=>Reflect.getOwnPropertyDescriptor(t._scopes[0],e),getPrototypeOf:()=>Reflect.getPrototypeOf(t[0]),has:(t,e)=>ei(t).includes(e),ownKeys:t=>ei(t),set(t,e,i){const s=t._storage||(t._storage=n());return t[e]=s[e]=i,delete t._keys,!0}})}function $e(t,e,i,s){const a={_cacheable:!1,_proxy:t,_context:e,_subProxy:i,_stack:new Set,_descriptors:Ye(t,s),setContext:e=>$e(t,e,i,s),override:n=>$e(t.override(n),e,i,s)};return new Proxy(a,{deleteProperty:(e,i)=>(delete e[i],delete t[i],!0),get:(t,e,i)=>qe(t,e,(()=>function(t,e,i){const{_proxy:s,_context:a,_subProxy:r,_descriptors:l}=t;let h=s[e];S(h)&&l.isScriptable(e)&&(h=function(t,e,i,s){const{_proxy:n,_context:o,_subProxy:a,_stack:r}=i;if(r.has(t))throw new Error(\"Recursion detected: \"+Array.from(r).join(\"->\")+\"->\"+t);r.add(t);let l=e(o,a||s);r.delete(t),Xe(t,l)&&(l=Je(n._scopes,n,t,l));return l}(e,h,t,i));n(h)&&h.length&&(h=function(t,e,i,s){const{_proxy:n,_context:a,_subProxy:r,_descriptors:l}=i;if(void 0!==a.index&&s(t))return e[a.index%e.length];if(o(e[0])){const i=e,s=n._scopes.filter((t=>t!==i));e=[];for(const o of i){const i=Je(s,n,t,o);e.push($e(i,a,r&&r[t],l))}}return e}(e,h,t,l.isIndexable));Xe(e,h)&&(h=$e(h,a,r&&r[e],l));return h}(t,e,i))),getOwnPropertyDescriptor:(e,i)=>e._descriptors.allKeys?Reflect.has(t,i)?{enumerable:!0,configurable:!0}:void 0:Reflect.getOwnPropertyDescriptor(t,i),getPrototypeOf:()=>Reflect.getPrototypeOf(t),has:(e,i)=>Reflect.has(t,i),ownKeys:()=>Reflect.ownKeys(t),set:(e,i,s)=>(t[i]=s,delete e[i],!0)})}function Ye(t,e={scriptable:!0,indexable:!0}){const{_scriptable:i=e.scriptable,_indexable:s=e.indexable,_allKeys:n=e.allKeys}=t;return{allKeys:n,scriptable:i,indexable:s,isScriptable:S(i)?i:()=>i,isIndexable:S(s)?s:()=>s}}const Ue=(t,e)=>t?t+w(e):e,Xe=(t,e)=>o(e)&&\"adapters\"!==t&&(null===Object.getPrototypeOf(e)||e.constructor===Object);function qe(t,e,i){if(Object.prototype.hasOwnProperty.call(t,e)||\"constructor\"===e)return t[e];const s=i();return t[e]=s,s}function Ke(t,e,i){return S(t)?t(e,i):t}const Ge=(t,e)=>!0===t?e:\"string\"==typeof t?M(e,t):void 0;function Ze(t,e,i,s,n){for(const o of e){const e=Ge(i,o);if(e){t.add(e);const o=Ke(e._fallback,i,n);if(void 0!==o&&o!==i&&o!==s)return o}else if(!1===e&&void 0!==s&&i!==s)return null}return!1}function Je(t,e,i,s){const a=e._rootScopes,r=Ke(e._fallback,i,s),l=[...t,...a],h=new Set;h.add(s);let c=Qe(h,l,i,r||i,s);return null!==c&&((void 0===r||r===i||(c=Qe(h,l,r,c,s),null!==c))&&je(Array.from(h),[\"\"],a,r,(()=>function(t,e,i){const s=t._getTarget();e in s||(s[e]={});const a=s[e];if(n(a)&&o(i))return i;return a||{}}(e,i,s))))}function Qe(t,e,i,s,n){for(;i;)i=Ze(t,e,i,s,n);return i}function ti(t,e){for(const i of e){if(!i)continue;const e=i[t];if(void 0!==e)return e}}function ei(t){let e=t._keys;return e||(e=t._keys=function(t){const e=new Set;for(const i of t)for(const t of Object.keys(i).filter((t=>!t.startsWith(\"_\"))))e.add(t);return Array.from(e)}(t._scopes)),e}function ii(t,e,i,s){const{iScale:n}=t,{key:o=\"r\"}=this._parsing,a=new Array(s);let r,l,h,c;for(r=0,l=s;r<l;++r)h=r+i,c=e[h],a[r]={r:n.parse(M(c,o),h)};return a}const si=Number.EPSILON||1e-14,ni=(t,e)=>e<t.length&&!t[e].skip&&t[e],oi=t=>\"x\"===t?\"y\":\"x\";function ai(t,e,i,s){const n=t.skip?e:t,o=e,a=i.skip?e:i,r=q(o,n),l=q(a,o);let h=r\/(r+l),c=l\/(r+l);h=isNaN(h)?0:h,c=isNaN(c)?0:c;const d=s*h,u=s*c;return{previous:{x:o.x-d*(a.x-n.x),y:o.y-d*(a.y-n.y)},next:{x:o.x+u*(a.x-n.x),y:o.y+u*(a.y-n.y)}}}function ri(t,e=\"x\"){const i=oi(e),s=t.length,n=Array(s).fill(0),o=Array(s);let a,r,l,h=ni(t,0);for(a=0;a<s;++a)if(r=l,l=h,h=ni(t,a+1),l){if(h){const t=h[e]-l[e];n[a]=0!==t?(h[i]-l[i])\/t:0}o[a]=r?h?F(n[a-1])!==F(n[a])?0:(n[a-1]+n[a])\/2:n[a-1]:n[a]}!function(t,e,i){const s=t.length;let n,o,a,r,l,h=ni(t,0);for(let c=0;c<s-1;++c)l=h,h=ni(t,c+1),l&&h&&(V(e[c],0,si)?i[c]=i[c+1]=0:(n=i[c]\/e[c],o=i[c+1]\/e[c],r=Math.pow(n,2)+Math.pow(o,2),r<=9||(a=3\/Math.sqrt(r),i[c]=n*a*e[c],i[c+1]=o*a*e[c])))}(t,n,o),function(t,e,i=\"x\"){const s=oi(i),n=t.length;let o,a,r,l=ni(t,0);for(let h=0;h<n;++h){if(a=r,r=l,l=ni(t,h+1),!r)continue;const n=r[i],c=r[s];a&&(o=(n-a[i])\/3,r[`cp1${i}`]=n-o,r[`cp1${s}`]=c-o*e[h]),l&&(o=(l[i]-n)\/3,r[`cp2${i}`]=n+o,r[`cp2${s}`]=c+o*e[h])}}(t,o,e)}function li(t,e,i){return Math.max(Math.min(t,i),e)}function hi(t,e,i,s,n){let o,a,r,l;if(e.spanGaps&&(t=t.filter((t=>!t.skip))),\"monotone\"===e.cubicInterpolationMode)ri(t,n);else{let i=s?t[t.length-1]:t[0];for(o=0,a=t.length;o<a;++o)r=t[o],l=ai(i,r,t[Math.min(o+1,a-(s?0:1))%a],e.tension),r.cp1x=l.previous.x,r.cp1y=l.previous.y,r.cp2x=l.next.x,r.cp2y=l.next.y,i=r}e.capBezierPoints&&function(t,e){let i,s,n,o,a,r=Re(t[0],e);for(i=0,s=t.length;i<s;++i)a=o,o=r,r=i<s-1&&Re(t[i+1],e),o&&(n=t[i],a&&(n.cp1x=li(n.cp1x,e.left,e.right),n.cp1y=li(n.cp1y,e.top,e.bottom)),r&&(n.cp2x=li(n.cp2x,e.left,e.right),n.cp2y=li(n.cp2y,e.top,e.bottom)))}(t,i)}const ci=t=>0===t||1===t,di=(t,e,i)=>-Math.pow(2,10*(t-=1))*Math.sin((t-e)*O\/i),ui=(t,e,i)=>Math.pow(2,-10*t)*Math.sin((t-e)*O\/i)+1,fi={linear:t=>t,easeInQuad:t=>t*t,easeOutQuad:t=>-t*(t-2),easeInOutQuad:t=>(t\/=.5)<1?.5*t*t:-.5*(--t*(t-2)-1),easeInCubic:t=>t*t*t,easeOutCubic:t=>(t-=1)*t*t+1,easeInOutCubic:t=>(t\/=.5)<1?.5*t*t*t:.5*((t-=2)*t*t+2),easeInQuart:t=>t*t*t*t,easeOutQuart:t=>-((t-=1)*t*t*t-1),easeInOutQuart:t=>(t\/=.5)<1?.5*t*t*t*t:-.5*((t-=2)*t*t*t-2),easeInQuint:t=>t*t*t*t*t,easeOutQuint:t=>(t-=1)*t*t*t*t+1,easeInOutQuint:t=>(t\/=.5)<1?.5*t*t*t*t*t:.5*((t-=2)*t*t*t*t+2),easeInSine:t=>1-Math.cos(t*E),easeOutSine:t=>Math.sin(t*E),easeInOutSine:t=>-.5*(Math.cos(C*t)-1),easeInExpo:t=>0===t?0:Math.pow(2,10*(t-1)),easeOutExpo:t=>1===t?1:1-Math.pow(2,-10*t),easeInOutExpo:t=>ci(t)?t:t<.5?.5*Math.pow(2,10*(2*t-1)):.5*(2-Math.pow(2,-10*(2*t-1))),easeInCirc:t=>t>=1?t:-(Math.sqrt(1-t*t)-1),easeOutCirc:t=>Math.sqrt(1-(t-=1)*t),easeInOutCirc:t=>(t\/=.5)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1),easeInElastic:t=>ci(t)?t:di(t,.075,.3),easeOutElastic:t=>ci(t)?t:ui(t,.075,.3),easeInOutElastic(t){const e=.1125;return ci(t)?t:t<.5?.5*di(2*t,e,.45):.5+.5*ui(2*t-1,e,.45)},easeInBack(t){const e=1.70158;return t*t*((e+1)*t-e)},easeOutBack(t){const e=1.70158;return(t-=1)*t*((e+1)*t+e)+1},easeInOutBack(t){let e=1.70158;return(t\/=.5)<1?t*t*((1+(e*=1.525))*t-e)*.5:.5*((t-=2)*t*((1+(e*=1.525))*t+e)+2)},easeInBounce:t=>1-fi.easeOutBounce(1-t),easeOutBounce(t){const e=7.5625,i=2.75;return t<1\/i?e*t*t:t<2\/i?e*(t-=1.5\/i)*t+.75:t<2.5\/i?e*(t-=2.25\/i)*t+.9375:e*(t-=2.625\/i)*t+.984375},easeInOutBounce:t=>t<.5?.5*fi.easeInBounce(2*t):.5*fi.easeOutBounce(2*t-1)+.5};function gi(t,e,i,s){return{x:t.x+i*(e.x-t.x),y:t.y+i*(e.y-t.y)}}function pi(t,e,i,s){return{x:t.x+i*(e.x-t.x),y:\"middle\"===s?i<.5?t.y:e.y:\"after\"===s?i<1?t.y:e.y:i>0?e.y:t.y}}function mi(t,e,i,s){const n={x:t.cp2x,y:t.cp2y},o={x:e.cp1x,y:e.cp1y},a=gi(t,n,i),r=gi(n,o,i),l=gi(o,e,i),h=gi(a,r,i),c=gi(r,l,i);return gi(h,c,i)}const bi=\/^(normal|(\\d+(?:\\.\\d+)?)(px|em|%)?)$\/,xi=\/^(normal|italic|initial|inherit|unset|(oblique( -?[0-9]?[0-9]deg)?))$\/;function _i(t,e){const i=(\"\"+t).match(bi);if(!i||\"normal\"===i[1])return 1.2*e;switch(t=+i[2],i[3]){case\"px\":return t;case\"%\":t\/=100}return e*t}const yi=t=>+t||0;function vi(t,e){const i={},s=o(e),n=s?Object.keys(e):e,a=o(t)?s?i=>l(t[i],t[e[i]]):e=>t[e]:()=>t;for(const t of n)i[t]=yi(a(t));return i}function Mi(t){return vi(t,{top:\"y\",right:\"x\",bottom:\"y\",left:\"x\"})}function wi(t){return vi(t,[\"topLeft\",\"topRight\",\"bottomLeft\",\"bottomRight\"])}function ki(t){const e=Mi(t);return e.width=e.left+e.right,e.height=e.top+e.bottom,e}function Si(t,e){t=t||{},e=e||ue.font;let i=l(t.size,e.size);\"string\"==typeof i&&(i=parseInt(i,10));let s=l(t.style,e.style);s&&!(\"\"+s).match(xi)&&(console.warn('Invalid font style specified: \"'+s+'\"'),s=void 0);const n={family:l(t.family,e.family),lineHeight:_i(l(t.lineHeight,e.lineHeight),i),size:i,style:s,weight:l(t.weight,e.weight),string:\"\"};return n.string=De(n),n}function Pi(t,e,i,s){let o,a,r,l=!0;for(o=0,a=t.length;o<a;++o)if(r=t[o],void 0!==r&&(void 0!==e&&\"function\"==typeof r&&(r=r(e),l=!1),void 0!==i&&n(r)&&(r=r[i%r.length],l=!1),void 0!==r))return s&&!l&&(s.cacheable=!1),r}function Di(t,e,i){const{min:s,max:n}=t,o=c(e,(n-s)\/2),a=(t,e)=>i&&0===t?0:t+e;return{min:a(s,-Math.abs(o)),max:a(n,o)}}function Ci(t,e){return Object.assign(Object.create(t),e)}function Oi(t,e,i){return t?function(t,e){return{x:i=>t+t+e-i,setWidth(t){e=t},textAlign:t=>\"center\"===t?t:\"right\"===t?\"left\":\"right\",xPlus:(t,e)=>t-e,leftForLtr:(t,e)=>t-e}}(e,i):{x:t=>t,setWidth(t){},textAlign:t=>t,xPlus:(t,e)=>t+e,leftForLtr:(t,e)=>t}}function Ai(t,e){let i,s;\"ltr\"!==e&&\"rtl\"!==e||(i=t.canvas.style,s=[i.getPropertyValue(\"direction\"),i.getPropertyPriority(\"direction\")],i.setProperty(\"direction\",e,\"important\"),t.prevTextDirection=s)}function Ti(t,e){void 0!==e&&(delete t.prevTextDirection,t.canvas.style.setProperty(\"direction\",e[0],e[1]))}function Li(t){return\"angle\"===t?{between:Z,compare:K,normalize:G}:{between:tt,compare:(t,e)=>t-e,normalize:t=>t}}function Ei({start:t,end:e,count:i,loop:s,style:n}){return{start:t%i,end:e%i,loop:s&&(e-t+1)%i==0,style:n}}function Ri(t,e,i){if(!i)return[t];const{property:s,start:n,end:o}=i,a=e.length,{compare:r,between:l,normalize:h}=Li(s),{start:c,end:d,loop:u,style:f}=function(t,e,i){const{property:s,start:n,end:o}=i,{between:a,normalize:r}=Li(s),l=e.length;let h,c,{start:d,end:u,loop:f}=t;if(f){for(d+=l,u+=l,h=0,c=l;h<c&&a(r(e[d%l][s]),n,o);++h)d--,u--;d%=l,u%=l}return u<d&&(u+=l),{start:d,end:u,loop:f,style:t.style}}(t,e,i),g=[];let p,m,b,x=!1,_=null;const y=()=>x||l(n,b,p)&&0!==r(n,b),v=()=>!x||0===r(o,p)||l(o,b,p);for(let t=c,i=c;t<=d;++t)m=e[t%a],m.skip||(p=h(m[s]),p!==b&&(x=l(p,n,o),null===_&&y()&&(_=0===r(p,n)?t:i),null!==_&&v()&&(g.push(Ei({start:_,end:t,loop:u,count:a,style:f})),_=null),i=t,b=p));return null!==_&&g.push(Ei({start:_,end:d,loop:u,count:a,style:f})),g}function Ii(t,e){const i=[],s=t.segments;for(let n=0;n<s.length;n++){const o=Ri(s[n],t.points,e);o.length&&i.push(...o)}return i}function zi(t,e){const i=t.points,s=t.options.spanGaps,n=i.length;if(!n)return[];const o=!!t._loop,{start:a,end:r}=function(t,e,i,s){let n=0,o=e-1;if(i&&!s)for(;n<e&&!t[n].skip;)n++;for(;n<e&&t[n].skip;)n++;for(n%=e,i&&(o+=n);o>n&&t[o%e].skip;)o--;return o%=e,{start:n,end:o}}(i,n,o,s);if(!0===s)return Fi(t,[{start:a,end:r,loop:o}],i,e);return Fi(t,function(t,e,i,s){const n=t.length,o=[];let a,r=e,l=t[e];for(a=e+1;a<=i;++a){const i=t[a%n];i.skip||i.stop?l.skip||(s=!1,o.push({start:e%n,end:(a-1)%n,loop:s}),e=r=i.stop?a:null):(r=a,l.skip&&(e=a)),l=i}return null!==r&&o.push({start:e%n,end:r%n,loop:s}),o}(i,a,r<a?r+n:r,!!t._fullLoop&&0===a&&r===n-1),i,e)}function Fi(t,e,i,s){return s&&s.setContext&&i?function(t,e,i,s){const n=t._chart.getContext(),o=Vi(t.options),{_datasetIndex:a,options:{spanGaps:r}}=t,l=i.length,h=[];let c=o,d=e[0].start,u=d;function f(t,e,s,n){const o=r?-1:1;if(t!==e){for(t+=l;i[t%l].skip;)t-=o;for(;i[e%l].skip;)e+=o;t%l!=e%l&&(h.push({start:t%l,end:e%l,loop:s,style:n}),c=n,d=e%l)}}for(const t of e){d=r?d:t.start;let e,o=i[d%l];for(u=d+1;u<=t.end;u++){const r=i[u%l];e=Vi(s.setContext(Ci(n,{type:\"segment\",p0:o,p1:r,p0DataIndex:(u-1)%l,p1DataIndex:u%l,datasetIndex:a}))),Bi(e,c)&&f(d,u-1,t.loop,c),o=r,c=e}d<u-1&&f(d,u-1,t.loop,c)}return h}(t,e,i,s):e}function Vi(t){return{backgroundColor:t.backgroundColor,borderCapStyle:t.borderCapStyle,borderDash:t.borderDash,borderDashOffset:t.borderDashOffset,borderJoinStyle:t.borderJoinStyle,borderWidth:t.borderWidth,borderColor:t.borderColor}}function Bi(t,e){if(!e)return!1;const i=[],s=function(t,e){return Jt(e)?(i.includes(e)||i.push(e),i.indexOf(e)):e};return JSON.stringify(t,s)!==JSON.stringify(e,s)}var Wi=Object.freeze({__proto__:null,HALF_PI:E,INFINITY:T,PI:C,PITAU:A,QUARTER_PI:R,RAD_PER_DEG:L,TAU:O,TWO_THIRDS_PI:I,_addGrace:Di,_alignPixel:Ae,_alignStartEnd:ft,_angleBetween:Z,_angleDiff:K,_arrayUnique:lt,_attachContext:$e,_bezierCurveTo:Ve,_bezierInterpolation:mi,_boundSegment:Ri,_boundSegments:Ii,_capitalize:w,_computeSegments:zi,_createResolver:je,_decimalPlaces:U,_deprecated:function(t,e,i,s){void 0!==e&&console.warn(t+': \"'+i+'\" is deprecated. Please use \"'+s+'\" instead')},_descriptors:Ye,_elementsEqual:f,_factorize:W,_filterBetween:nt,_getParentNode:ge,_getStartAndCountOfVisiblePoints:pt,_int16Range:Q,_isBetween:tt,_isClickEvent:D,_isDomSupported:fe,_isPointInArea:Re,_limitValue:J,_longestText:Oe,_lookup:et,_lookupByKey:it,_measureText:Ce,_merger:m,_mergerIf:_,_normalizeAngle:G,_parseObjectDataRadialScale:ii,_pointInLine:gi,_readValueToProps:vi,_rlookupByKey:st,_scaleRangesChanged:mt,_setMinAndMaxByKey:j,_splitKey:v,_steppedInterpolation:pi,_steppedLineTo:Fe,_textX:gt,_toLeftRightCenter:ut,_updateBezierControlPoints:hi,addRoundedRectPath:He,almostEquals:V,almostWhole:H,callback:d,clearCanvas:Te,clipArea:Ie,clone:g,color:Qt,createContext:Ci,debounce:dt,defined:k,distanceBetweenPoints:q,drawPoint:Le,drawPointLegend:Ee,each:u,easingEffects:fi,finiteOrDefault:r,fontString:function(t,e,i){return e+\" \"+t+\"px \"+i},formatNumber:ne,getAngleFromPoint:X,getHoverColor:te,getMaximumSize:we,getRelativePosition:ve,getRtlAdapter:Oi,getStyle:be,isArray:n,isFinite:a,isFunction:S,isNullOrUndef:s,isNumber:N,isObject:o,isPatternOrGradient:Jt,listenArrayEvents:at,log10:z,merge:b,mergeIf:x,niceNum:B,noop:e,overrideTextDirection:Ai,readUsedSize:Pe,renderText:Ne,requestAnimFrame:ht,resolve:Pi,resolveObjectKey:M,restoreTextDirection:Ti,retinaScale:ke,setsEqual:P,sign:F,splineCurve:ai,splineCurveMonotone:ri,supportsEventListenerOptions:Se,throttled:ct,toDegrees:Y,toDimension:c,toFont:Si,toFontString:De,toLineHeight:_i,toPadding:ki,toPercentage:h,toRadians:$,toTRBL:Mi,toTRBLCorners:wi,uid:i,unclipArea:ze,unlistenArrayEvents:rt,valueOrDefault:l});function Ni(t,e,i,s){const{controller:n,data:o,_sorted:a}=t,r=n._cachedMeta.iScale;if(r&&e===r.axis&&\"r\"!==e&&a&&o.length){const t=r._reversePixels?st:it;if(!s)return t(o,e,i);if(n._sharedOptions){const s=o[0],n=\"function\"==typeof s.getRange&&s.getRange(e);if(n){const s=t(o,e,i-n),a=t(o,e,i+n);return{lo:s.lo,hi:a.hi}}}}return{lo:0,hi:o.length-1}}function Hi(t,e,i,s,n){const o=t.getSortedVisibleDatasetMetas(),a=i[e];for(let t=0,i=o.length;t<i;++t){const{index:i,data:r}=o[t],{lo:l,hi:h}=Ni(o[t],e,a,n);for(let t=l;t<=h;++t){const e=r[t];e.skip||s(e,i,t)}}}function ji(t,e,i,s,n){const o=[];if(!n&&!t.isPointInArea(e))return o;return Hi(t,i,e,(function(i,a,r){(n||Re(i,t.chartArea,0))&&i.inRange(e.x,e.y,s)&&o.push({element:i,datasetIndex:a,index:r})}),!0),o}function $i(t,e,i,s,n,o){let a=[];const r=function(t){const e=-1!==t.indexOf(\"x\"),i=-1!==t.indexOf(\"y\");return function(t,s){const n=e?Math.abs(t.x-s.x):0,o=i?Math.abs(t.y-s.y):0;return Math.sqrt(Math.pow(n,2)+Math.pow(o,2))}}(i);let l=Number.POSITIVE_INFINITY;return Hi(t,i,e,(function(i,h,c){const d=i.inRange(e.x,e.y,n);if(s&&!d)return;const u=i.getCenterPoint(n);if(!(!!o||t.isPointInArea(u))&&!d)return;const f=r(e,u);f<l?(a=[{element:i,datasetIndex:h,index:c}],l=f):f===l&&a.push({element:i,datasetIndex:h,index:c})})),a}function Yi(t,e,i,s,n,o){return o||t.isPointInArea(e)?\"r\"!==i||s?$i(t,e,i,s,n,o):function(t,e,i,s){let n=[];return Hi(t,i,e,(function(t,i,o){const{startAngle:a,endAngle:r}=t.getProps([\"startAngle\",\"endAngle\"],s),{angle:l}=X(t,{x:e.x,y:e.y});Z(l,a,r)&&n.push({element:t,datasetIndex:i,index:o})})),n}(t,e,i,n):[]}function Ui(t,e,i,s,n){const o=[],a=\"x\"===i?\"inXRange\":\"inYRange\";let r=!1;return Hi(t,i,e,((t,s,l)=>{t[a]&&t[a](e[i],n)&&(o.push({element:t,datasetIndex:s,index:l}),r=r||t.inRange(e.x,e.y,n))})),s&&!r?[]:o}var Xi={evaluateInteractionItems:Hi,modes:{index(t,e,i,s){const n=ve(e,t),o=i.axis||\"x\",a=i.includeInvisible||!1,r=i.intersect?ji(t,n,o,s,a):Yi(t,n,o,!1,s,a),l=[];return r.length?(t.getSortedVisibleDatasetMetas().forEach((t=>{const e=r[0].index,i=t.data[e];i&&!i.skip&&l.push({element:i,datasetIndex:t.index,index:e})})),l):[]},dataset(t,e,i,s){const n=ve(e,t),o=i.axis||\"xy\",a=i.includeInvisible||!1;let r=i.intersect?ji(t,n,o,s,a):Yi(t,n,o,!1,s,a);if(r.length>0){const e=r[0].datasetIndex,i=t.getDatasetMeta(e).data;r=[];for(let t=0;t<i.length;++t)r.push({element:i[t],datasetIndex:e,index:t})}return r},point:(t,e,i,s)=>ji(t,ve(e,t),i.axis||\"xy\",s,i.includeInvisible||!1),nearest(t,e,i,s){const n=ve(e,t),o=i.axis||\"xy\",a=i.includeInvisible||!1;return Yi(t,n,o,i.intersect,s,a)},x:(t,e,i,s)=>Ui(t,ve(e,t),\"x\",i.intersect,s),y:(t,e,i,s)=>Ui(t,ve(e,t),\"y\",i.intersect,s)}};const qi=[\"left\",\"top\",\"right\",\"bottom\"];function Ki(t,e){return t.filter((t=>t.pos===e))}function Gi(t,e){return t.filter((t=>-1===qi.indexOf(t.pos)&&t.box.axis===e))}function Zi(t,e){return t.sort(((t,i)=>{const s=e?i:t,n=e?t:i;return s.weight===n.weight?s.index-n.index:s.weight-n.weight}))}function Ji(t,e){const i=function(t){const e={};for(const i of t){const{stack:t,pos:s,stackWeight:n}=i;if(!t||!qi.includes(s))continue;const o=e[t]||(e[t]={count:0,placed:0,weight:0,size:0});o.count++,o.weight+=n}return e}(t),{vBoxMaxWidth:s,hBoxMaxHeight:n}=e;let o,a,r;for(o=0,a=t.length;o<a;++o){r=t[o];const{fullSize:a}=r.box,l=i[r.stack],h=l&&r.stackWeight\/l.weight;r.horizontal?(r.width=h?h*s:a&&e.availableWidth,r.height=n):(r.width=s,r.height=h?h*n:a&&e.availableHeight)}return i}function Qi(t,e,i,s){return Math.max(t[i],e[i])+Math.max(t[s],e[s])}function ts(t,e){t.top=Math.max(t.top,e.top),t.left=Math.max(t.left,e.left),t.bottom=Math.max(t.bottom,e.bottom),t.right=Math.max(t.right,e.right)}function es(t,e,i,s){const{pos:n,box:a}=i,r=t.maxPadding;if(!o(n)){i.size&&(t[n]-=i.size);const e=s[i.stack]||{size:0,count:1};e.size=Math.max(e.size,i.horizontal?a.height:a.width),i.size=e.size\/e.count,t[n]+=i.size}a.getPadding&&ts(r,a.getPadding());const l=Math.max(0,e.outerWidth-Qi(r,t,\"left\",\"right\")),h=Math.max(0,e.outerHeight-Qi(r,t,\"top\",\"bottom\")),c=l!==t.w,d=h!==t.h;return t.w=l,t.h=h,i.horizontal?{same:c,other:d}:{same:d,other:c}}function is(t,e){const i=e.maxPadding;function s(t){const s={left:0,top:0,right:0,bottom:0};return t.forEach((t=>{s[t]=Math.max(e[t],i[t])})),s}return s(t?[\"left\",\"right\"]:[\"top\",\"bottom\"])}function ss(t,e,i,s){const n=[];let o,a,r,l,h,c;for(o=0,a=t.length,h=0;o<a;++o){r=t[o],l=r.box,l.update(r.width||e.w,r.height||e.h,is(r.horizontal,e));const{same:a,other:d}=es(e,i,r,s);h|=a&&n.length,c=c||d,l.fullSize||n.push(r)}return h&&ss(n,e,i,s)||c}function ns(t,e,i,s,n){t.top=i,t.left=e,t.right=e+s,t.bottom=i+n,t.width=s,t.height=n}function os(t,e,i,s){const n=i.padding;let{x:o,y:a}=e;for(const r of t){const t=r.box,l=s[r.stack]||{count:1,placed:0,weight:1},h=r.stackWeight\/l.weight||1;if(r.horizontal){const s=e.w*h,o=l.size||t.height;k(l.start)&&(a=l.start),t.fullSize?ns(t,n.left,a,i.outerWidth-n.right-n.left,o):ns(t,e.left+l.placed,a,s,o),l.start=a,l.placed+=s,a=t.bottom}else{const s=e.h*h,a=l.size||t.width;k(l.start)&&(o=l.start),t.fullSize?ns(t,o,n.top,a,i.outerHeight-n.bottom-n.top):ns(t,o,e.top+l.placed,a,s),l.start=o,l.placed+=s,o=t.right}}e.x=o,e.y=a}var as={addBox(t,e){t.boxes||(t.boxes=[]),e.fullSize=e.fullSize||!1,e.position=e.position||\"top\",e.weight=e.weight||0,e._layers=e._layers||function(){return[{z:0,draw(t){e.draw(t)}}]},t.boxes.push(e)},removeBox(t,e){const i=t.boxes?t.boxes.indexOf(e):-1;-1!==i&&t.boxes.splice(i,1)},configure(t,e,i){e.fullSize=i.fullSize,e.position=i.position,e.weight=i.weight},update(t,e,i,s){if(!t)return;const n=ki(t.options.layout.padding),o=Math.max(e-n.width,0),a=Math.max(i-n.height,0),r=function(t){const e=function(t){const e=[];let i,s,n,o,a,r;for(i=0,s=(t||[]).length;i<s;++i)n=t[i],({position:o,options:{stack:a,stackWeight:r=1}}=n),e.push({index:i,box:n,pos:o,horizontal:n.isHorizontal(),weight:n.weight,stack:a&&o+a,stackWeight:r});return e}(t),i=Zi(e.filter((t=>t.box.fullSize)),!0),s=Zi(Ki(e,\"left\"),!0),n=Zi(Ki(e,\"right\")),o=Zi(Ki(e,\"top\"),!0),a=Zi(Ki(e,\"bottom\")),r=Gi(e,\"x\"),l=Gi(e,\"y\");return{fullSize:i,leftAndTop:s.concat(o),rightAndBottom:n.concat(l).concat(a).concat(r),chartArea:Ki(e,\"chartArea\"),vertical:s.concat(n).concat(l),horizontal:o.concat(a).concat(r)}}(t.boxes),l=r.vertical,h=r.horizontal;u(t.boxes,(t=>{\"function\"==typeof t.beforeLayout&&t.beforeLayout()}));const c=l.reduce(((t,e)=>e.box.options&&!1===e.box.options.display?t:t+1),0)||1,d=Object.freeze({outerWidth:e,outerHeight:i,padding:n,availableWidth:o,availableHeight:a,vBoxMaxWidth:o\/2\/c,hBoxMaxHeight:a\/2}),f=Object.assign({},n);ts(f,ki(s));const g=Object.assign({maxPadding:f,w:o,h:a,x:n.left,y:n.top},n),p=Ji(l.concat(h),d);ss(r.fullSize,g,d,p),ss(l,g,d,p),ss(h,g,d,p)&&ss(l,g,d,p),function(t){const e=t.maxPadding;function i(i){const s=Math.max(e[i]-t[i],0);return t[i]+=s,s}t.y+=i(\"top\"),t.x+=i(\"left\"),i(\"right\"),i(\"bottom\")}(g),os(r.leftAndTop,g,d,p),g.x+=g.w,g.y+=g.h,os(r.rightAndBottom,g,d,p),t.chartArea={left:g.left,top:g.top,right:g.left+g.w,bottom:g.top+g.h,height:g.h,width:g.w},u(r.chartArea,(e=>{const i=e.box;Object.assign(i,t.chartArea),i.update(g.w,g.h,{left:0,top:0,right:0,bottom:0})}))}};class rs{acquireContext(t,e){}releaseContext(t){return!1}addEventListener(t,e,i){}removeEventListener(t,e,i){}getDevicePixelRatio(){return 1}getMaximumSize(t,e,i,s){return e=Math.max(0,e||t.width),i=i||t.height,{width:e,height:Math.max(0,s?Math.floor(e\/s):i)}}isAttached(t){return!0}updateConfig(t){}}class ls extends rs{acquireContext(t){return t&&t.getContext&&t.getContext(\"2d\")||null}updateConfig(t){t.options.animation=!1}}const hs=\"$chartjs\",cs={touchstart:\"mousedown\",touchmove:\"mousemove\",touchend:\"mouseup\",pointerenter:\"mouseenter\",pointerdown:\"mousedown\",pointermove:\"mousemove\",pointerup:\"mouseup\",pointerleave:\"mouseout\",pointerout:\"mouseout\"},ds=t=>null===t||\"\"===t;const us=!!Se&&{passive:!0};function fs(t,e,i){t&&t.canvas&&t.canvas.removeEventListener(e,i,us)}function gs(t,e){for(const i of t)if(i===e||i.contains(e))return!0}function ps(t,e,i){const s=t.canvas,n=new MutationObserver((t=>{let e=!1;for(const i of t)e=e||gs(i.addedNodes,s),e=e&&!gs(i.removedNodes,s);e&&i()}));return n.observe(document,{childList:!0,subtree:!0}),n}function ms(t,e,i){const s=t.canvas,n=new MutationObserver((t=>{let e=!1;for(const i of t)e=e||gs(i.removedNodes,s),e=e&&!gs(i.addedNodes,s);e&&i()}));return n.observe(document,{childList:!0,subtree:!0}),n}const bs=new Map;let xs=0;function _s(){const t=window.devicePixelRatio;t!==xs&&(xs=t,bs.forEach(((e,i)=>{i.currentDevicePixelRatio!==t&&e()})))}function ys(t,e,i){const s=t.canvas,n=s&&ge(s);if(!n)return;const o=ct(((t,e)=>{const s=n.clientWidth;i(t,e),s<n.clientWidth&&i()}),window),a=new ResizeObserver((t=>{const e=t[0],i=e.contentRect.width,s=e.contentRect.height;0===i&&0===s||o(i,s)}));return a.observe(n),function(t,e){bs.size||window.addEventListener(\"resize\",_s),bs.set(t,e)}(t,o),a}function vs(t,e,i){i&&i.disconnect(),\"resize\"===e&&function(t){bs.delete(t),bs.size||window.removeEventListener(\"resize\",_s)}(t)}function Ms(t,e,i){const s=t.canvas,n=ct((e=>{null!==t.ctx&&i(function(t,e){const i=cs[t.type]||t.type,{x:s,y:n}=ve(t,e);return{type:i,chart:e,native:t,x:void 0!==s?s:null,y:void 0!==n?n:null}}(e,t))}),t);return function(t,e,i){t&&t.addEventListener(e,i,us)}(s,e,n),n}class ws extends rs{acquireContext(t,e){const i=t&&t.getContext&&t.getContext(\"2d\");return i&&i.canvas===t?(function(t,e){const i=t.style,s=t.getAttribute(\"height\"),n=t.getAttribute(\"width\");if(t[hs]={initial:{height:s,width:n,style:{display:i.display,height:i.height,width:i.width}}},i.display=i.display||\"block\",i.boxSizing=i.boxSizing||\"border-box\",ds(n)){const e=Pe(t,\"width\");void 0!==e&&(t.width=e)}if(ds(s))if(\"\"===t.style.height)t.height=t.width\/(e||2);else{const e=Pe(t,\"height\");void 0!==e&&(t.height=e)}}(t,e),i):null}releaseContext(t){const e=t.canvas;if(!e[hs])return!1;const i=e[hs].initial;[\"height\",\"width\"].forEach((t=>{const n=i[t];s(n)?e.removeAttribute(t):e.setAttribute(t,n)}));const n=i.style||{};return Object.keys(n).forEach((t=>{e.style[t]=n[t]})),e.width=e.width,delete e[hs],!0}addEventListener(t,e,i){this.removeEventListener(t,e);const s=t.$proxies||(t.$proxies={}),n={attach:ps,detach:ms,resize:ys}[e]||Ms;s[e]=n(t,e,i)}removeEventListener(t,e){const i=t.$proxies||(t.$proxies={}),s=i[e];if(!s)return;({attach:vs,detach:vs,resize:vs}[e]||fs)(t,e,s),i[e]=void 0}getDevicePixelRatio(){return window.devicePixelRatio}getMaximumSize(t,e,i,s){return we(t,e,i,s)}isAttached(t){const e=t&&ge(t);return!(!e||!e.isConnected)}}function ks(t){return!fe()||\"undefined\"!=typeof OffscreenCanvas&&t instanceof OffscreenCanvas?ls:ws}var Ss=Object.freeze({__proto__:null,BasePlatform:rs,BasicPlatform:ls,DomPlatform:ws,_detectPlatform:ks});const Ps=\"transparent\",Ds={boolean:(t,e,i)=>i>.5?e:t,color(t,e,i){const s=Qt(t||Ps),n=s.valid&&Qt(e||Ps);return n&&n.valid?n.mix(s,i).hexString():e},number:(t,e,i)=>t+(e-t)*i};class Cs{constructor(t,e,i,s){const n=e[i];s=Pi([t.to,s,n,t.from]);const o=Pi([t.from,n,s]);this._active=!0,this._fn=t.fn||Ds[t.type||typeof o],this._easing=fi[t.easing]||fi.linear,this._start=Math.floor(Date.now()+(t.delay||0)),this._duration=this._total=Math.floor(t.duration),this._loop=!!t.loop,this._target=e,this._prop=i,this._from=o,this._to=s,this._promises=void 0}active(){return this._active}update(t,e,i){if(this._active){this._notify(!1);const s=this._target[this._prop],n=i-this._start,o=this._duration-n;this._start=i,this._duration=Math.floor(Math.max(o,t.duration)),this._total+=n,this._loop=!!t.loop,this._to=Pi([t.to,e,s,t.from]),this._from=Pi([t.from,s,e])}}cancel(){this._active&&(this.tick(Date.now()),this._active=!1,this._notify(!1))}tick(t){const e=t-this._start,i=this._duration,s=this._prop,n=this._from,o=this._loop,a=this._to;let r;if(this._active=n!==a&&(o||e<i),!this._active)return this._target[s]=a,void this._notify(!0);e<0?this._target[s]=n:(r=e\/i%2,r=o&&r>1?2-r:r,r=this._easing(Math.min(1,Math.max(0,r))),this._target[s]=this._fn(n,a,r))}wait(){const t=this._promises||(this._promises=[]);return new Promise(((e,i)=>{t.push({res:e,rej:i})}))}_notify(t){const e=t?\"res\":\"rej\",i=this._promises||[];for(let t=0;t<i.length;t++)i[t][e]()}}class Os{constructor(t,e){this._chart=t,this._properties=new Map,this.configure(e)}configure(t){if(!o(t))return;const e=Object.keys(ue.animation),i=this._properties;Object.getOwnPropertyNames(t).forEach((s=>{const a=t[s];if(!o(a))return;const r={};for(const t of e)r[t]=a[t];(n(a.properties)&&a.properties||[s]).forEach((t=>{t!==s&&i.has(t)||i.set(t,r)}))}))}_animateOptions(t,e){const i=e.options,s=function(t,e){if(!e)return;let i=t.options;if(!i)return void(t.options=e);i.$shared&&(t.options=i=Object.assign({},i,{$shared:!1,$animations:{}}));return i}(t,i);if(!s)return[];const n=this._createAnimations(s,i);return i.$shared&&function(t,e){const i=[],s=Object.keys(e);for(let e=0;e<s.length;e++){const n=t[s[e]];n&&n.active()&&i.push(n.wait())}return Promise.all(i)}(t.options.$animations,i).then((()=>{t.options=i}),(()=>{})),n}_createAnimations(t,e){const i=this._properties,s=[],n=t.$animations||(t.$animations={}),o=Object.keys(e),a=Date.now();let r;for(r=o.length-1;r>=0;--r){const l=o[r];if(\"$\"===l.charAt(0))continue;if(\"options\"===l){s.push(...this._animateOptions(t,e));continue}const h=e[l];let c=n[l];const d=i.get(l);if(c){if(d&&c.active()){c.update(d,h,a);continue}c.cancel()}d&&d.duration?(n[l]=c=new Cs(d,t,l,h),s.push(c)):t[l]=h}return s}update(t,e){if(0===this._properties.size)return void Object.assign(t,e);const i=this._createAnimations(t,e);return i.length?(xt.add(this._chart,i),!0):void 0}}function As(t,e){const i=t&&t.options||{},s=i.reverse,n=void 0===i.min?e:0,o=void 0===i.max?e:0;return{start:s?o:n,end:s?n:o}}function Ts(t,e){const i=[],s=t._getSortedDatasetMetas(e);let n,o;for(n=0,o=s.length;n<o;++n)i.push(s[n].index);return i}function Ls(t,e,i,s={}){const n=t.keys,o=\"single\"===s.mode;let r,l,h,c;if(null===e)return;let d=!1;for(r=0,l=n.length;r<l;++r){if(h=+n[r],h===i){if(d=!0,s.all)continue;break}c=t.values[h],a(c)&&(o||0===e||F(e)===F(c))&&(e+=c)}return d||s.all?e:0}function Es(t,e){const i=t&&t.options.stacked;return i||void 0===i&&void 0!==e.stack}function Rs(t,e,i){const s=t[e]||(t[e]={});return s[i]||(s[i]={})}function Is(t,e,i,s){for(const n of e.getMatchingVisibleMetas(s).reverse()){const e=t[n.index];if(i&&e>0||!i&&e<0)return n.index}return null}function zs(t,e){const{chart:i,_cachedMeta:s}=t,n=i._stacks||(i._stacks={}),{iScale:o,vScale:a,index:r}=s,l=o.axis,h=a.axis,c=function(t,e,i){return`${t.id}.${e.id}.${i.stack||i.type}`}(o,a,s),d=e.length;let u;for(let t=0;t<d;++t){const i=e[t],{[l]:o,[h]:d}=i;u=(i._stacks||(i._stacks={}))[h]=Rs(n,c,o),u[r]=d,u._top=Is(u,a,!0,s.type),u._bottom=Is(u,a,!1,s.type);(u._visualValues||(u._visualValues={}))[r]=d}}function Fs(t,e){const i=t.scales;return Object.keys(i).filter((t=>i[t].axis===e)).shift()}function Vs(t,e){const i=t.controller.index,s=t.vScale&&t.vScale.axis;if(s){e=e||t._parsed;for(const t of e){const e=t._stacks;if(!e||void 0===e[s]||void 0===e[s][i])return;delete e[s][i],void 0!==e[s]._visualValues&&void 0!==e[s]._visualValues[i]&&delete e[s]._visualValues[i]}}}const Bs=t=>\"reset\"===t||\"none\"===t,Ws=(t,e)=>e?t:Object.assign({},t);class Ns{static defaults={};static datasetElementType=null;static dataElementType=null;constructor(t,e){this.chart=t,this._ctx=t.ctx,this.index=e,this._cachedDataOpts={},this._cachedMeta=this.getMeta(),this._type=this._cachedMeta.type,this.options=void 0,this._parsing=!1,this._data=void 0,this._objectData=void 0,this._sharedOptions=void 0,this._drawStart=void 0,this._drawCount=void 0,this.enableOptionSharing=!1,this.supportsDecimation=!1,this.$context=void 0,this._syncList=[],this.datasetElementType=new.target.datasetElementType,this.dataElementType=new.target.dataElementType,this.initialize()}initialize(){const t=this._cachedMeta;this.configure(),this.linkScales(),t._stacked=Es(t.vScale,t),this.addElements(),this.options.fill&&!this.chart.isPluginEnabled(\"filler\")&&console.warn(\"Tried to use the 'fill' option without the 'Filler' plugin enabled. Please import and register the 'Filler' plugin and make sure it is not disabled in the options\")}updateIndex(t){this.index!==t&&Vs(this._cachedMeta),this.index=t}linkScales(){const t=this.chart,e=this._cachedMeta,i=this.getDataset(),s=(t,e,i,s)=>\"x\"===t?e:\"r\"===t?s:i,n=e.xAxisID=l(i.xAxisID,Fs(t,\"x\")),o=e.yAxisID=l(i.yAxisID,Fs(t,\"y\")),a=e.rAxisID=l(i.rAxisID,Fs(t,\"r\")),r=e.indexAxis,h=e.iAxisID=s(r,n,o,a),c=e.vAxisID=s(r,o,n,a);e.xScale=this.getScaleForId(n),e.yScale=this.getScaleForId(o),e.rScale=this.getScaleForId(a),e.iScale=this.getScaleForId(h),e.vScale=this.getScaleForId(c)}getDataset(){return this.chart.data.datasets[this.index]}getMeta(){return this.chart.getDatasetMeta(this.index)}getScaleForId(t){return this.chart.scales[t]}_getOtherScale(t){const e=this._cachedMeta;return t===e.iScale?e.vScale:e.iScale}reset(){this._update(\"reset\")}_destroy(){const t=this._cachedMeta;this._data&&rt(this._data,this),t._stacked&&Vs(t)}_dataCheck(){const t=this.getDataset(),e=t.data||(t.data=[]),i=this._data;if(o(e)){const t=this._cachedMeta;this._data=function(t,e){const{iScale:i,vScale:s}=e,n=\"x\"===i.axis?\"x\":\"y\",o=\"x\"===s.axis?\"x\":\"y\",a=Object.keys(t),r=new Array(a.length);let l,h,c;for(l=0,h=a.length;l<h;++l)c=a[l],r[l]={[n]:c,[o]:t[c]};return r}(e,t)}else if(i!==e){if(i){rt(i,this);const t=this._cachedMeta;Vs(t),t._parsed=[]}e&&Object.isExtensible(e)&&at(e,this),this._syncList=[],this._data=e}}addElements(){const t=this._cachedMeta;this._dataCheck(),this.datasetElementType&&(t.dataset=new this.datasetElementType)}buildOrUpdateElements(t){const e=this._cachedMeta,i=this.getDataset();let s=!1;this._dataCheck();const n=e._stacked;e._stacked=Es(e.vScale,e),e.stack!==i.stack&&(s=!0,Vs(e),e.stack=i.stack),this._resyncElements(t),(s||n!==e._stacked)&&(zs(this,e._parsed),e._stacked=Es(e.vScale,e))}configure(){const t=this.chart.config,e=t.datasetScopeKeys(this._type),i=t.getOptionScopes(this.getDataset(),e,!0);this.options=t.createResolver(i,this.getContext()),this._parsing=this.options.parsing,this._cachedDataOpts={}}parse(t,e){const{_cachedMeta:i,_data:s}=this,{iScale:a,_stacked:r}=i,l=a.axis;let h,c,d,u=0===t&&e===s.length||i._sorted,f=t>0&&i._parsed[t-1];if(!1===this._parsing)i._parsed=s,i._sorted=!0,d=s;else{d=n(s[t])?this.parseArrayData(i,s,t,e):o(s[t])?this.parseObjectData(i,s,t,e):this.parsePrimitiveData(i,s,t,e);const a=()=>null===c[l]||f&&c[l]<f[l];for(h=0;h<e;++h)i._parsed[h+t]=c=d[h],u&&(a()&&(u=!1),f=c);i._sorted=u}r&&zs(this,d)}parsePrimitiveData(t,e,i,s){const{iScale:n,vScale:o}=t,a=n.axis,r=o.axis,l=n.getLabels(),h=n===o,c=new Array(s);let d,u,f;for(d=0,u=s;d<u;++d)f=d+i,c[d]={[a]:h||n.parse(l[f],f),[r]:o.parse(e[f],f)};return c}parseArrayData(t,e,i,s){const{xScale:n,yScale:o}=t,a=new Array(s);let r,l,h,c;for(r=0,l=s;r<l;++r)h=r+i,c=e[h],a[r]={x:n.parse(c[0],h),y:o.parse(c[1],h)};return a}parseObjectData(t,e,i,s){const{xScale:n,yScale:o}=t,{xAxisKey:a=\"x\",yAxisKey:r=\"y\"}=this._parsing,l=new Array(s);let h,c,d,u;for(h=0,c=s;h<c;++h)d=h+i,u=e[d],l[h]={x:n.parse(M(u,a),d),y:o.parse(M(u,r),d)};return l}getParsed(t){return this._cachedMeta._parsed[t]}getDataElement(t){return this._cachedMeta.data[t]}applyStack(t,e,i){const s=this.chart,n=this._cachedMeta,o=e[t.axis];return Ls({keys:Ts(s,!0),values:e._stacks[t.axis]._visualValues},o,n.index,{mode:i})}updateRangeFromParsed(t,e,i,s){const n=i[e.axis];let o=null===n?NaN:n;const a=s&&i._stacks[e.axis];s&&a&&(s.values=a,o=Ls(s,n,this._cachedMeta.index)),t.min=Math.min(t.min,o),t.max=Math.max(t.max,o)}getMinMax(t,e){const i=this._cachedMeta,s=i._parsed,n=i._sorted&&t===i.iScale,o=s.length,r=this._getOtherScale(t),l=((t,e,i)=>t&&!e.hidden&&e._stacked&&{keys:Ts(i,!0),values:null})(e,i,this.chart),h={min:Number.POSITIVE_INFINITY,max:Number.NEGATIVE_INFINITY},{min:c,max:d}=function(t){const{min:e,max:i,minDefined:s,maxDefined:n}=t.getUserBounds();return{min:s?e:Number.NEGATIVE_INFINITY,max:n?i:Number.POSITIVE_INFINITY}}(r);let u,f;function g(){f=s[u];const e=f[r.axis];return!a(f[t.axis])||c>e||d<e}for(u=0;u<o&&(g()||(this.updateRangeFromParsed(h,t,f,l),!n));++u);if(n)for(u=o-1;u>=0;--u)if(!g()){this.updateRangeFromParsed(h,t,f,l);break}return h}getAllParsedValues(t){const e=this._cachedMeta._parsed,i=[];let s,n,o;for(s=0,n=e.length;s<n;++s)o=e[s][t.axis],a(o)&&i.push(o);return i}getMaxOverflow(){return!1}getLabelAndValue(t){const e=this._cachedMeta,i=e.iScale,s=e.vScale,n=this.getParsed(t);return{label:i?\"\"+i.getLabelForValue(n[i.axis]):\"\",value:s?\"\"+s.getLabelForValue(n[s.axis]):\"\"}}_update(t){const e=this._cachedMeta;this.update(t||\"default\"),e._clip=function(t){let e,i,s,n;return o(t)?(e=t.top,i=t.right,s=t.bottom,n=t.left):e=i=s=n=t,{top:e,right:i,bottom:s,left:n,disabled:!1===t}}(l(this.options.clip,function(t,e,i){if(!1===i)return!1;const s=As(t,i),n=As(e,i);return{top:n.end,right:s.end,bottom:n.start,left:s.start}}(e.xScale,e.yScale,this.getMaxOverflow())))}update(t){}draw(){const t=this._ctx,e=this.chart,i=this._cachedMeta,s=i.data||[],n=e.chartArea,o=[],a=this._drawStart||0,r=this._drawCount||s.length-a,l=this.options.drawActiveElementsOnTop;let h;for(i.dataset&&i.dataset.draw(t,n,a,r),h=a;h<a+r;++h){const e=s[h];e.hidden||(e.active&&l?o.push(e):e.draw(t,n))}for(h=0;h<o.length;++h)o[h].draw(t,n)}getStyle(t,e){const i=e?\"active\":\"default\";return void 0===t&&this._cachedMeta.dataset?this.resolveDatasetElementOptions(i):this.resolveDataElementOptions(t||0,i)}getContext(t,e,i){const s=this.getDataset();let n;if(t>=0&&t<this._cachedMeta.data.length){const e=this._cachedMeta.data[t];n=e.$context||(e.$context=function(t,e,i){return Ci(t,{active:!1,dataIndex:e,parsed:void 0,raw:void 0,element:i,index:e,mode:\"default\",type:\"data\"})}(this.getContext(),t,e)),n.parsed=this.getParsed(t),n.raw=s.data[t],n.index=n.dataIndex=t}else n=this.$context||(this.$context=function(t,e){return Ci(t,{active:!1,dataset:void 0,datasetIndex:e,index:e,mode:\"default\",type:\"dataset\"})}(this.chart.getContext(),this.index)),n.dataset=s,n.index=n.datasetIndex=this.index;return n.active=!!e,n.mode=i,n}resolveDatasetElementOptions(t){return this._resolveElementOptions(this.datasetElementType.id,t)}resolveDataElementOptions(t,e){return this._resolveElementOptions(this.dataElementType.id,e,t)}_resolveElementOptions(t,e=\"default\",i){const s=\"active\"===e,n=this._cachedDataOpts,o=t+\"-\"+e,a=n[o],r=this.enableOptionSharing&&k(i);if(a)return Ws(a,r);const l=this.chart.config,h=l.datasetElementScopeKeys(this._type,t),c=s?[`${t}Hover`,\"hover\",t,\"\"]:[t,\"\"],d=l.getOptionScopes(this.getDataset(),h),u=Object.keys(ue.elements[t]),f=l.resolveNamedOptions(d,u,(()=>this.getContext(i,s,e)),c);return f.$shared&&(f.$shared=r,n[o]=Object.freeze(Ws(f,r))),f}_resolveAnimations(t,e,i){const s=this.chart,n=this._cachedDataOpts,o=`animation-${e}`,a=n[o];if(a)return a;let r;if(!1!==s.options.animation){const s=this.chart.config,n=s.datasetAnimationScopeKeys(this._type,e),o=s.getOptionScopes(this.getDataset(),n);r=s.createResolver(o,this.getContext(t,i,e))}const l=new Os(s,r&&r.animations);return r&&r._cacheable&&(n[o]=Object.freeze(l)),l}getSharedOptions(t){if(t.$shared)return this._sharedOptions||(this._sharedOptions=Object.assign({},t))}includeOptions(t,e){return!e||Bs(t)||this.chart._animationsDisabled}_getSharedOptions(t,e){const i=this.resolveDataElementOptions(t,e),s=this._sharedOptions,n=this.getSharedOptions(i),o=this.includeOptions(e,n)||n!==s;return this.updateSharedOptions(n,e,i),{sharedOptions:n,includeOptions:o}}updateElement(t,e,i,s){Bs(s)?Object.assign(t,i):this._resolveAnimations(e,s).update(t,i)}updateSharedOptions(t,e,i){t&&!Bs(e)&&this._resolveAnimations(void 0,e).update(t,i)}_setStyle(t,e,i,s){t.active=s;const n=this.getStyle(e,s);this._resolveAnimations(e,i,s).update(t,{options:!s&&this.getSharedOptions(n)||n})}removeHoverStyle(t,e,i){this._setStyle(t,i,\"active\",!1)}setHoverStyle(t,e,i){this._setStyle(t,i,\"active\",!0)}_removeDatasetHoverStyle(){const t=this._cachedMeta.dataset;t&&this._setStyle(t,void 0,\"active\",!1)}_setDatasetHoverStyle(){const t=this._cachedMeta.dataset;t&&this._setStyle(t,void 0,\"active\",!0)}_resyncElements(t){const e=this._data,i=this._cachedMeta.data;for(const[t,e,i]of this._syncList)this[t](e,i);this._syncList=[];const s=i.length,n=e.length,o=Math.min(n,s);o&&this.parse(0,o),n>s?this._insertElements(s,n-s,t):n<s&&this._removeElements(n,s-n)}_insertElements(t,e,i=!0){const s=this._cachedMeta,n=s.data,o=t+e;let a;const r=t=>{for(t.length+=e,a=t.length-1;a>=o;a--)t[a]=t[a-e]};for(r(n),a=t;a<o;++a)n[a]=new this.dataElementType;this._parsing&&r(s._parsed),this.parse(t,e),i&&this.updateElements(n,t,e,\"reset\")}updateElements(t,e,i,s){}_removeElements(t,e){const i=this._cachedMeta;if(this._parsing){const s=i._parsed.splice(t,e);i._stacked&&Vs(i,s)}i.data.splice(t,e)}_sync(t){if(this._parsing)this._syncList.push(t);else{const[e,i,s]=t;this[e](i,s)}this.chart._dataChanges.push([this.index,...t])}_onDataPush(){const t=arguments.length;this._sync([\"_insertElements\",this.getDataset().data.length-t,t])}_onDataPop(){this._sync([\"_removeElements\",this._cachedMeta.data.length-1,1])}_onDataShift(){this._sync([\"_removeElements\",0,1])}_onDataSplice(t,e){e&&this._sync([\"_removeElements\",t,e]);const i=arguments.length-2;i&&this._sync([\"_insertElements\",t,i])}_onDataUnshift(){this._sync([\"_insertElements\",0,arguments.length])}}class Hs{static defaults={};static defaultRoutes=void 0;x;y;active=!1;options;$animations;tooltipPosition(t){const{x:e,y:i}=this.getProps([\"x\",\"y\"],t);return{x:e,y:i}}hasValue(){return N(this.x)&&N(this.y)}getProps(t,e){const i=this.$animations;if(!e||!i)return this;const s={};return t.forEach((t=>{s[t]=i[t]&&i[t].active()?i[t]._to:this[t]})),s}}function js(t,e){const i=t.options.ticks,n=function(t){const e=t.options.offset,i=t._tickSize(),s=t._length\/i+(e?0:1),n=t._maxLength\/i;return Math.floor(Math.min(s,n))}(t),o=Math.min(i.maxTicksLimit||n,n),a=i.major.enabled?function(t){const e=[];let i,s;for(i=0,s=t.length;i<s;i++)t[i].major&&e.push(i);return e}(e):[],r=a.length,l=a[0],h=a[r-1],c=[];if(r>o)return function(t,e,i,s){let n,o=0,a=i[0];for(s=Math.ceil(s),n=0;n<t.length;n++)n===a&&(e.push(t[n]),o++,a=i[o*s])}(e,c,a,r\/o),c;const d=function(t,e,i){const s=function(t){const e=t.length;let i,s;if(e<2)return!1;for(s=t[0],i=1;i<e;++i)if(t[i]-t[i-1]!==s)return!1;return s}(t),n=e.length\/i;if(!s)return Math.max(n,1);const o=W(s);for(let t=0,e=o.length-1;t<e;t++){const e=o[t];if(e>n)return e}return Math.max(n,1)}(a,e,o);if(r>0){let t,i;const n=r>1?Math.round((h-l)\/(r-1)):null;for($s(e,c,d,s(n)?0:l-n,l),t=0,i=r-1;t<i;t++)$s(e,c,d,a[t],a[t+1]);return $s(e,c,d,h,s(n)?e.length:h+n),c}return $s(e,c,d),c}function $s(t,e,i,s,n){const o=l(s,0),a=Math.min(l(n,t.length),t.length);let r,h,c,d=0;for(i=Math.ceil(i),n&&(r=n-s,i=r\/Math.floor(r\/i)),c=o;c<0;)d++,c=Math.round(o+d*i);for(h=Math.max(o,0);h<a;h++)h===c&&(e.push(t[h]),d++,c=Math.round(o+d*i))}const Ys=(t,e,i)=>\"top\"===e||\"left\"===e?t[e]+i:t[e]-i,Us=(t,e)=>Math.min(e||t,t);function Xs(t,e){const i=[],s=t.length\/e,n=t.length;let o=0;for(;o<n;o+=s)i.push(t[Math.floor(o)]);return i}function qs(t,e,i){const s=t.ticks.length,n=Math.min(e,s-1),o=t._startPixel,a=t._endPixel,r=1e-6;let l,h=t.getPixelForTick(n);if(!(i&&(l=1===s?Math.max(h-o,a-h):0===e?(t.getPixelForTick(1)-h)\/2:(h-t.getPixelForTick(n-1))\/2,h+=n<e?l:-l,h<o-r||h>a+r)))return h}function Ks(t){return t.drawTicks?t.tickLength:0}function Gs(t,e){if(!t.display)return 0;const i=Si(t.font,e),s=ki(t.padding);return(n(t.text)?t.text.length:1)*i.lineHeight+s.height}function Zs(t,e,i){let s=ut(t);return(i&&\"right\"!==e||!i&&\"right\"===e)&&(s=(t=>\"left\"===t?\"right\":\"right\"===t?\"left\":t)(s)),s}class Js extends Hs{constructor(t){super(),this.id=t.id,this.type=t.type,this.options=void 0,this.ctx=t.ctx,this.chart=t.chart,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.width=void 0,this.height=void 0,this._margins={left:0,right:0,top:0,bottom:0},this.maxWidth=void 0,this.maxHeight=void 0,this.paddingTop=void 0,this.paddingBottom=void 0,this.paddingLeft=void 0,this.paddingRight=void 0,this.axis=void 0,this.labelRotation=void 0,this.min=void 0,this.max=void 0,this._range=void 0,this.ticks=[],this._gridLineItems=null,this._labelItems=null,this._labelSizes=null,this._length=0,this._maxLength=0,this._longestTextCache={},this._startPixel=void 0,this._endPixel=void 0,this._reversePixels=!1,this._userMax=void 0,this._userMin=void 0,this._suggestedMax=void 0,this._suggestedMin=void 0,this._ticksLength=0,this._borderValue=0,this._cache={},this._dataLimitsCached=!1,this.$context=void 0}init(t){this.options=t.setContext(this.getContext()),this.axis=t.axis,this._userMin=this.parse(t.min),this._userMax=this.parse(t.max),this._suggestedMin=this.parse(t.suggestedMin),this._suggestedMax=this.parse(t.suggestedMax)}parse(t,e){return t}getUserBounds(){let{_userMin:t,_userMax:e,_suggestedMin:i,_suggestedMax:s}=this;return t=r(t,Number.POSITIVE_INFINITY),e=r(e,Number.NEGATIVE_INFINITY),i=r(i,Number.POSITIVE_INFINITY),s=r(s,Number.NEGATIVE_INFINITY),{min:r(t,i),max:r(e,s),minDefined:a(t),maxDefined:a(e)}}getMinMax(t){let e,{min:i,max:s,minDefined:n,maxDefined:o}=this.getUserBounds();if(n&&o)return{min:i,max:s};const a=this.getMatchingVisibleMetas();for(let r=0,l=a.length;r<l;++r)e=a[r].controller.getMinMax(this,t),n||(i=Math.min(i,e.min)),o||(s=Math.max(s,e.max));return i=o&&i>s?s:i,s=n&&i>s?i:s,{min:r(i,r(s,i)),max:r(s,r(i,s))}}getPadding(){return{left:this.paddingLeft||0,top:this.paddingTop||0,right:this.paddingRight||0,bottom:this.paddingBottom||0}}getTicks(){return this.ticks}getLabels(){const t=this.chart.data;return this.options.labels||(this.isHorizontal()?t.xLabels:t.yLabels)||t.labels||[]}getLabelItems(t=this.chart.chartArea){return this._labelItems||(this._labelItems=this._computeLabelItems(t))}beforeLayout(){this._cache={},this._dataLimitsCached=!1}beforeUpdate(){d(this.options.beforeUpdate,[this])}update(t,e,i){const{beginAtZero:s,grace:n,ticks:o}=this.options,a=o.sampleSize;this.beforeUpdate(),this.maxWidth=t,this.maxHeight=e,this._margins=i=Object.assign({left:0,right:0,top:0,bottom:0},i),this.ticks=null,this._labelSizes=null,this._gridLineItems=null,this._labelItems=null,this.beforeSetDimensions(),this.setDimensions(),this.afterSetDimensions(),this._maxLength=this.isHorizontal()?this.width+i.left+i.right:this.height+i.top+i.bottom,this._dataLimitsCached||(this.beforeDataLimits(),this.determineDataLimits(),this.afterDataLimits(),this._range=Di(this,n,s),this._dataLimitsCached=!0),this.beforeBuildTicks(),this.ticks=this.buildTicks()||[],this.afterBuildTicks();const r=a<this.ticks.length;this._convertTicksToLabels(r?Xs(this.ticks,a):this.ticks),this.configure(),this.beforeCalculateLabelRotation(),this.calculateLabelRotation(),this.afterCalculateLabelRotation(),o.display&&(o.autoSkip||\"auto\"===o.source)&&(this.ticks=js(this,this.ticks),this._labelSizes=null,this.afterAutoSkip()),r&&this._convertTicksToLabels(this.ticks),this.beforeFit(),this.fit(),this.afterFit(),this.afterUpdate()}configure(){let t,e,i=this.options.reverse;this.isHorizontal()?(t=this.left,e=this.right):(t=this.top,e=this.bottom,i=!i),this._startPixel=t,this._endPixel=e,this._reversePixels=i,this._length=e-t,this._alignToPixels=this.options.alignToPixels}afterUpdate(){d(this.options.afterUpdate,[this])}beforeSetDimensions(){d(this.options.beforeSetDimensions,[this])}setDimensions(){this.isHorizontal()?(this.width=this.maxWidth,this.left=0,this.right=this.width):(this.height=this.maxHeight,this.top=0,this.bottom=this.height),this.paddingLeft=0,this.paddingTop=0,this.paddingRight=0,this.paddingBottom=0}afterSetDimensions(){d(this.options.afterSetDimensions,[this])}_callHooks(t){this.chart.notifyPlugins(t,this.getContext()),d(this.options[t],[this])}beforeDataLimits(){this._callHooks(\"beforeDataLimits\")}determineDataLimits(){}afterDataLimits(){this._callHooks(\"afterDataLimits\")}beforeBuildTicks(){this._callHooks(\"beforeBuildTicks\")}buildTicks(){return[]}afterBuildTicks(){this._callHooks(\"afterBuildTicks\")}beforeTickToLabelConversion(){d(this.options.beforeTickToLabelConversion,[this])}generateTickLabels(t){const e=this.options.ticks;let i,s,n;for(i=0,s=t.length;i<s;i++)n=t[i],n.label=d(e.callback,[n.value,i,t],this)}afterTickToLabelConversion(){d(this.options.afterTickToLabelConversion,[this])}beforeCalculateLabelRotation(){d(this.options.beforeCalculateLabelRotation,[this])}calculateLabelRotation(){const t=this.options,e=t.ticks,i=Us(this.ticks.length,t.ticks.maxTicksLimit),s=e.minRotation||0,n=e.maxRotation;let o,a,r,l=s;if(!this._isVisible()||!e.display||s>=n||i<=1||!this.isHorizontal())return void(this.labelRotation=s);const h=this._getLabelSizes(),c=h.widest.width,d=h.highest.height,u=J(this.chart.width-c,0,this.maxWidth);o=t.offset?this.maxWidth\/i:u\/(i-1),c+6>o&&(o=u\/(i-(t.offset?.5:1)),a=this.maxHeight-Ks(t.grid)-e.padding-Gs(t.title,this.chart.options.font),r=Math.sqrt(c*c+d*d),l=Y(Math.min(Math.asin(J((h.highest.height+6)\/o,-1,1)),Math.asin(J(a\/r,-1,1))-Math.asin(J(d\/r,-1,1)))),l=Math.max(s,Math.min(n,l))),this.labelRotation=l}afterCalculateLabelRotation(){d(this.options.afterCalculateLabelRotation,[this])}afterAutoSkip(){}beforeFit(){d(this.options.beforeFit,[this])}fit(){const t={width:0,height:0},{chart:e,options:{ticks:i,title:s,grid:n}}=this,o=this._isVisible(),a=this.isHorizontal();if(o){const o=Gs(s,e.options.font);if(a?(t.width=this.maxWidth,t.height=Ks(n)+o):(t.height=this.maxHeight,t.width=Ks(n)+o),i.display&&this.ticks.length){const{first:e,last:s,widest:n,highest:o}=this._getLabelSizes(),r=2*i.padding,l=$(this.labelRotation),h=Math.cos(l),c=Math.sin(l);if(a){const e=i.mirror?0:c*n.width+h*o.height;t.height=Math.min(this.maxHeight,t.height+e+r)}else{const e=i.mirror?0:h*n.width+c*o.height;t.width=Math.min(this.maxWidth,t.width+e+r)}this._calculatePadding(e,s,c,h)}}this._handleMargins(),a?(this.width=this._length=e.width-this._margins.left-this._margins.right,this.height=t.height):(this.width=t.width,this.height=this._length=e.height-this._margins.top-this._margins.bottom)}_calculatePadding(t,e,i,s){const{ticks:{align:n,padding:o},position:a}=this.options,r=0!==this.labelRotation,l=\"top\"!==a&&\"x\"===this.axis;if(this.isHorizontal()){const a=this.getPixelForTick(0)-this.left,h=this.right-this.getPixelForTick(this.ticks.length-1);let c=0,d=0;r?l?(c=s*t.width,d=i*e.height):(c=i*t.height,d=s*e.width):\"start\"===n?d=e.width:\"end\"===n?c=t.width:\"inner\"!==n&&(c=t.width\/2,d=e.width\/2),this.paddingLeft=Math.max((c-a+o)*this.width\/(this.width-a),0),this.paddingRight=Math.max((d-h+o)*this.width\/(this.width-h),0)}else{let i=e.height\/2,s=t.height\/2;\"start\"===n?(i=0,s=t.height):\"end\"===n&&(i=e.height,s=0),this.paddingTop=i+o,this.paddingBottom=s+o}}_handleMargins(){this._margins&&(this._margins.left=Math.max(this.paddingLeft,this._margins.left),this._margins.top=Math.max(this.paddingTop,this._margins.top),this._margins.right=Math.max(this.paddingRight,this._margins.right),this._margins.bottom=Math.max(this.paddingBottom,this._margins.bottom))}afterFit(){d(this.options.afterFit,[this])}isHorizontal(){const{axis:t,position:e}=this.options;return\"top\"===e||\"bottom\"===e||\"x\"===t}isFullSize(){return this.options.fullSize}_convertTicksToLabels(t){let e,i;for(this.beforeTickToLabelConversion(),this.generateTickLabels(t),e=0,i=t.length;e<i;e++)s(t[e].label)&&(t.splice(e,1),i--,e--);this.afterTickToLabelConversion()}_getLabelSizes(){let t=this._labelSizes;if(!t){const e=this.options.ticks.sampleSize;let i=this.ticks;e<i.length&&(i=Xs(i,e)),this._labelSizes=t=this._computeLabelSizes(i,i.length,this.options.ticks.maxTicksLimit)}return t}_computeLabelSizes(t,e,i){const{ctx:o,_longestTextCache:a}=this,r=[],l=[],h=Math.floor(e\/Us(e,i));let c,d,f,g,p,m,b,x,_,y,v,M=0,w=0;for(c=0;c<e;c+=h){if(g=t[c].label,p=this._resolveTickFontOptions(c),o.font=m=p.string,b=a[m]=a[m]||{data:{},gc:[]},x=p.lineHeight,_=y=0,s(g)||n(g)){if(n(g))for(d=0,f=g.length;d<f;++d)v=g[d],s(v)||n(v)||(_=Ce(o,b.data,b.gc,_,v),y+=x)}else _=Ce(o,b.data,b.gc,_,g),y=x;r.push(_),l.push(y),M=Math.max(_,M),w=Math.max(y,w)}!function(t,e){u(t,(t=>{const i=t.gc,s=i.length\/2;let n;if(s>e){for(n=0;n<s;++n)delete t.data[i[n]];i.splice(0,s)}}))}(a,e);const k=r.indexOf(M),S=l.indexOf(w),P=t=>({width:r[t]||0,height:l[t]||0});return{first:P(0),last:P(e-1),widest:P(k),highest:P(S),widths:r,heights:l}}getLabelForValue(t){return t}getPixelForValue(t,e){return NaN}getValueForPixel(t){}getPixelForTick(t){const e=this.ticks;return t<0||t>e.length-1?null:this.getPixelForValue(e[t].value)}getPixelForDecimal(t){this._reversePixels&&(t=1-t);const e=this._startPixel+t*this._length;return Q(this._alignToPixels?Ae(this.chart,e,0):e)}getDecimalForPixel(t){const e=(t-this._startPixel)\/this._length;return this._reversePixels?1-e:e}getBasePixel(){return this.getPixelForValue(this.getBaseValue())}getBaseValue(){const{min:t,max:e}=this;return t<0&&e<0?e:t>0&&e>0?t:0}getContext(t){const e=this.ticks||[];if(t>=0&&t<e.length){const i=e[t];return i.$context||(i.$context=function(t,e,i){return Ci(t,{tick:i,index:e,type:\"tick\"})}(this.getContext(),t,i))}return this.$context||(this.$context=Ci(this.chart.getContext(),{scale:this,type:\"scale\"}))}_tickSize(){const t=this.options.ticks,e=$(this.labelRotation),i=Math.abs(Math.cos(e)),s=Math.abs(Math.sin(e)),n=this._getLabelSizes(),o=t.autoSkipPadding||0,a=n?n.widest.width+o:0,r=n?n.highest.height+o:0;return this.isHorizontal()?r*i>a*s?a\/i:r\/s:r*s<a*i?r\/i:a\/s}_isVisible(){const t=this.options.display;return\"auto\"!==t?!!t:this.getMatchingVisibleMetas().length>0}_computeGridLineItems(t){const e=this.axis,i=this.chart,s=this.options,{grid:n,position:a,border:r}=s,h=n.offset,c=this.isHorizontal(),d=this.ticks.length+(h?1:0),u=Ks(n),f=[],g=r.setContext(this.getContext()),p=g.display?g.width:0,m=p\/2,b=function(t){return Ae(i,t,p)};let x,_,y,v,M,w,k,S,P,D,C,O;if(\"top\"===a)x=b(this.bottom),w=this.bottom-u,S=x-m,D=b(t.top)+m,O=t.bottom;else if(\"bottom\"===a)x=b(this.top),D=t.top,O=b(t.bottom)-m,w=x+m,S=this.top+u;else if(\"left\"===a)x=b(this.right),M=this.right-u,k=x-m,P=b(t.left)+m,C=t.right;else if(\"right\"===a)x=b(this.left),P=t.left,C=b(t.right)-m,M=x+m,k=this.left+u;else if(\"x\"===e){if(\"center\"===a)x=b((t.top+t.bottom)\/2+.5);else if(o(a)){const t=Object.keys(a)[0],e=a[t];x=b(this.chart.scales[t].getPixelForValue(e))}D=t.top,O=t.bottom,w=x+m,S=w+u}else if(\"y\"===e){if(\"center\"===a)x=b((t.left+t.right)\/2);else if(o(a)){const t=Object.keys(a)[0],e=a[t];x=b(this.chart.scales[t].getPixelForValue(e))}M=x-m,k=M-u,P=t.left,C=t.right}const A=l(s.ticks.maxTicksLimit,d),T=Math.max(1,Math.ceil(d\/A));for(_=0;_<d;_+=T){const t=this.getContext(_),e=n.setContext(t),s=r.setContext(t),o=e.lineWidth,a=e.color,l=s.dash||[],d=s.dashOffset,u=e.tickWidth,g=e.tickColor,p=e.tickBorderDash||[],m=e.tickBorderDashOffset;y=qs(this,_,h),void 0!==y&&(v=Ae(i,y,o),c?M=k=P=C=v:w=S=D=O=v,f.push({tx1:M,ty1:w,tx2:k,ty2:S,x1:P,y1:D,x2:C,y2:O,width:o,color:a,borderDash:l,borderDashOffset:d,tickWidth:u,tickColor:g,tickBorderDash:p,tickBorderDashOffset:m}))}return this._ticksLength=d,this._borderValue=x,f}_computeLabelItems(t){const e=this.axis,i=this.options,{position:s,ticks:a}=i,r=this.isHorizontal(),l=this.ticks,{align:h,crossAlign:c,padding:d,mirror:u}=a,f=Ks(i.grid),g=f+d,p=u?-d:g,m=-$(this.labelRotation),b=[];let x,_,y,v,M,w,k,S,P,D,C,O,A=\"middle\";if(\"top\"===s)w=this.bottom-p,k=this._getXAxisLabelAlignment();else if(\"bottom\"===s)w=this.top+p,k=this._getXAxisLabelAlignment();else if(\"left\"===s){const t=this._getYAxisLabelAlignment(f);k=t.textAlign,M=t.x}else if(\"right\"===s){const t=this._getYAxisLabelAlignment(f);k=t.textAlign,M=t.x}else if(\"x\"===e){if(\"center\"===s)w=(t.top+t.bottom)\/2+g;else if(o(s)){const t=Object.keys(s)[0],e=s[t];w=this.chart.scales[t].getPixelForValue(e)+g}k=this._getXAxisLabelAlignment()}else if(\"y\"===e){if(\"center\"===s)M=(t.left+t.right)\/2-g;else if(o(s)){const t=Object.keys(s)[0],e=s[t];M=this.chart.scales[t].getPixelForValue(e)}k=this._getYAxisLabelAlignment(f).textAlign}\"y\"===e&&(\"start\"===h?A=\"top\":\"end\"===h&&(A=\"bottom\"));const T=this._getLabelSizes();for(x=0,_=l.length;x<_;++x){y=l[x],v=y.label;const t=a.setContext(this.getContext(x));S=this.getPixelForTick(x)+a.labelOffset,P=this._resolveTickFontOptions(x),D=P.lineHeight,C=n(v)?v.length:1;const e=C\/2,i=t.color,o=t.textStrokeColor,h=t.textStrokeWidth;let d,f=k;if(r?(M=S,\"inner\"===k&&(f=x===_-1?this.options.reverse?\"left\":\"right\":0===x?this.options.reverse?\"right\":\"left\":\"center\"),O=\"top\"===s?\"near\"===c||0!==m?-C*D+D\/2:\"center\"===c?-T.highest.height\/2-e*D+D:-T.highest.height+D\/2:\"near\"===c||0!==m?D\/2:\"center\"===c?T.highest.height\/2-e*D:T.highest.height-C*D,u&&(O*=-1),0===m||t.showLabelBackdrop||(M+=D\/2*Math.sin(m))):(w=S,O=(1-C)*D\/2),t.showLabelBackdrop){const e=ki(t.backdropPadding),i=T.heights[x],s=T.widths[x];let n=O-e.top,o=0-e.left;switch(A){case\"middle\":n-=i\/2;break;case\"bottom\":n-=i}switch(k){case\"center\":o-=s\/2;break;case\"right\":o-=s;break;case\"inner\":x===_-1?o-=s:x>0&&(o-=s\/2)}d={left:o,top:n,width:s+e.width,height:i+e.height,color:t.backdropColor}}b.push({label:v,font:P,textOffset:O,options:{rotation:m,color:i,strokeColor:o,strokeWidth:h,textAlign:f,textBaseline:A,translation:[M,w],backdrop:d}})}return b}_getXAxisLabelAlignment(){const{position:t,ticks:e}=this.options;if(-$(this.labelRotation))return\"top\"===t?\"left\":\"right\";let i=\"center\";return\"start\"===e.align?i=\"left\":\"end\"===e.align?i=\"right\":\"inner\"===e.align&&(i=\"inner\"),i}_getYAxisLabelAlignment(t){const{position:e,ticks:{crossAlign:i,mirror:s,padding:n}}=this.options,o=t+n,a=this._getLabelSizes().widest.width;let r,l;return\"left\"===e?s?(l=this.right+n,\"near\"===i?r=\"left\":\"center\"===i?(r=\"center\",l+=a\/2):(r=\"right\",l+=a)):(l=this.right-o,\"near\"===i?r=\"right\":\"center\"===i?(r=\"center\",l-=a\/2):(r=\"left\",l=this.left)):\"right\"===e?s?(l=this.left+n,\"near\"===i?r=\"right\":\"center\"===i?(r=\"center\",l-=a\/2):(r=\"left\",l-=a)):(l=this.left+o,\"near\"===i?r=\"left\":\"center\"===i?(r=\"center\",l+=a\/2):(r=\"right\",l=this.right)):r=\"right\",{textAlign:r,x:l}}_computeLabelArea(){if(this.options.ticks.mirror)return;const t=this.chart,e=this.options.position;return\"left\"===e||\"right\"===e?{top:0,left:this.left,bottom:t.height,right:this.right}:\"top\"===e||\"bottom\"===e?{top:this.top,left:0,bottom:this.bottom,right:t.width}:void 0}drawBackground(){const{ctx:t,options:{backgroundColor:e},left:i,top:s,width:n,height:o}=this;e&&(t.save(),t.fillStyle=e,t.fillRect(i,s,n,o),t.restore())}getLineWidthForValue(t){const e=this.options.grid;if(!this._isVisible()||!e.display)return 0;const i=this.ticks.findIndex((e=>e.value===t));if(i>=0){return e.setContext(this.getContext(i)).lineWidth}return 0}drawGrid(t){const e=this.options.grid,i=this.ctx,s=this._gridLineItems||(this._gridLineItems=this._computeGridLineItems(t));let n,o;const a=(t,e,s)=>{s.width&&s.color&&(i.save(),i.lineWidth=s.width,i.strokeStyle=s.color,i.setLineDash(s.borderDash||[]),i.lineDashOffset=s.borderDashOffset,i.beginPath(),i.moveTo(t.x,t.y),i.lineTo(e.x,e.y),i.stroke(),i.restore())};if(e.display)for(n=0,o=s.length;n<o;++n){const t=s[n];e.drawOnChartArea&&a({x:t.x1,y:t.y1},{x:t.x2,y:t.y2},t),e.drawTicks&&a({x:t.tx1,y:t.ty1},{x:t.tx2,y:t.ty2},{color:t.tickColor,width:t.tickWidth,borderDash:t.tickBorderDash,borderDashOffset:t.tickBorderDashOffset})}}drawBorder(){const{chart:t,ctx:e,options:{border:i,grid:s}}=this,n=i.setContext(this.getContext()),o=i.display?n.width:0;if(!o)return;const a=s.setContext(this.getContext(0)).lineWidth,r=this._borderValue;let l,h,c,d;this.isHorizontal()?(l=Ae(t,this.left,o)-o\/2,h=Ae(t,this.right,a)+a\/2,c=d=r):(c=Ae(t,this.top,o)-o\/2,d=Ae(t,this.bottom,a)+a\/2,l=h=r),e.save(),e.lineWidth=n.width,e.strokeStyle=n.color,e.beginPath(),e.moveTo(l,c),e.lineTo(h,d),e.stroke(),e.restore()}drawLabels(t){if(!this.options.ticks.display)return;const e=this.ctx,i=this._computeLabelArea();i&&Ie(e,i);const s=this.getLabelItems(t);for(const t of s){const i=t.options,s=t.font;Ne(e,t.label,0,t.textOffset,s,i)}i&&ze(e)}drawTitle(){const{ctx:t,options:{position:e,title:i,reverse:s}}=this;if(!i.display)return;const a=Si(i.font),r=ki(i.padding),l=i.align;let h=a.lineHeight\/2;\"bottom\"===e||\"center\"===e||o(e)?(h+=r.bottom,n(i.text)&&(h+=a.lineHeight*(i.text.length-1))):h+=r.top;const{titleX:c,titleY:d,maxWidth:u,rotation:f}=function(t,e,i,s){const{top:n,left:a,bottom:r,right:l,chart:h}=t,{chartArea:c,scales:d}=h;let u,f,g,p=0;const m=r-n,b=l-a;if(t.isHorizontal()){if(f=ft(s,a,l),o(i)){const t=Object.keys(i)[0],s=i[t];g=d[t].getPixelForValue(s)+m-e}else g=\"center\"===i?(c.bottom+c.top)\/2+m-e:Ys(t,i,e);u=l-a}else{if(o(i)){const t=Object.keys(i)[0],s=i[t];f=d[t].getPixelForValue(s)-b+e}else f=\"center\"===i?(c.left+c.right)\/2-b+e:Ys(t,i,e);g=ft(s,r,n),p=\"left\"===i?-E:E}return{titleX:f,titleY:g,maxWidth:u,rotation:p}}(this,h,e,l);Ne(t,i.text,0,0,a,{color:i.color,maxWidth:u,rotation:f,textAlign:Zs(l,e,s),textBaseline:\"middle\",translation:[c,d]})}draw(t){this._isVisible()&&(this.drawBackground(),this.drawGrid(t),this.drawBorder(),this.drawTitle(),this.drawLabels(t))}_layers(){const t=this.options,e=t.ticks&&t.ticks.z||0,i=l(t.grid&&t.grid.z,-1),s=l(t.border&&t.border.z,0);return this._isVisible()&&this.draw===Js.prototype.draw?[{z:i,draw:t=>{this.drawBackground(),this.drawGrid(t),this.drawTitle()}},{z:s,draw:()=>{this.drawBorder()}},{z:e,draw:t=>{this.drawLabels(t)}}]:[{z:e,draw:t=>{this.draw(t)}}]}getMatchingVisibleMetas(t){const e=this.chart.getSortedVisibleDatasetMetas(),i=this.axis+\"AxisID\",s=[];let n,o;for(n=0,o=e.length;n<o;++n){const o=e[n];o[i]!==this.id||t&&o.type!==t||s.push(o)}return s}_resolveTickFontOptions(t){return Si(this.options.ticks.setContext(this.getContext(t)).font)}_maxDigits(){const t=this._resolveTickFontOptions(0).lineHeight;return(this.isHorizontal()?this.width:this.height)\/t}}class Qs{constructor(t,e,i){this.type=t,this.scope=e,this.override=i,this.items=Object.create(null)}isForType(t){return Object.prototype.isPrototypeOf.call(this.type.prototype,t.prototype)}register(t){const e=Object.getPrototypeOf(t);let i;(function(t){return\"id\"in t&&\"defaults\"in t})(e)&&(i=this.register(e));const s=this.items,n=t.id,o=this.scope+\".\"+n;if(!n)throw new Error(\"class does not have id: \"+t);return n in s||(s[n]=t,function(t,e,i){const s=b(Object.create(null),[i?ue.get(i):{},ue.get(e),t.defaults]);ue.set(e,s),t.defaultRoutes&&function(t,e){Object.keys(e).forEach((i=>{const s=i.split(\".\"),n=s.pop(),o=[t].concat(s).join(\".\"),a=e[i].split(\".\"),r=a.pop(),l=a.join(\".\");ue.route(o,n,l,r)}))}(e,t.defaultRoutes);t.descriptors&&ue.describe(e,t.descriptors)}(t,o,i),this.override&&ue.override(t.id,t.overrides)),o}get(t){return this.items[t]}unregister(t){const e=this.items,i=t.id,s=this.scope;i in e&&delete e[i],s&&i in ue[s]&&(delete ue[s][i],this.override&&delete re[i])}}class tn{constructor(){this.controllers=new Qs(Ns,\"datasets\",!0),this.elements=new Qs(Hs,\"elements\"),this.plugins=new Qs(Object,\"plugins\"),this.scales=new Qs(Js,\"scales\"),this._typedRegistries=[this.controllers,this.scales,this.elements]}add(...t){this._each(\"register\",t)}remove(...t){this._each(\"unregister\",t)}addControllers(...t){this._each(\"register\",t,this.controllers)}addElements(...t){this._each(\"register\",t,this.elements)}addPlugins(...t){this._each(\"register\",t,this.plugins)}addScales(...t){this._each(\"register\",t,this.scales)}getController(t){return this._get(t,this.controllers,\"controller\")}getElement(t){return this._get(t,this.elements,\"element\")}getPlugin(t){return this._get(t,this.plugins,\"plugin\")}getScale(t){return this._get(t,this.scales,\"scale\")}removeControllers(...t){this._each(\"unregister\",t,this.controllers)}removeElements(...t){this._each(\"unregister\",t,this.elements)}removePlugins(...t){this._each(\"unregister\",t,this.plugins)}removeScales(...t){this._each(\"unregister\",t,this.scales)}_each(t,e,i){[...e].forEach((e=>{const s=i||this._getRegistryForType(e);i||s.isForType(e)||s===this.plugins&&e.id?this._exec(t,s,e):u(e,(e=>{const s=i||this._getRegistryForType(e);this._exec(t,s,e)}))}))}_exec(t,e,i){const s=w(t);d(i[\"before\"+s],[],i),e[t](i),d(i[\"after\"+s],[],i)}_getRegistryForType(t){for(let e=0;e<this._typedRegistries.length;e++){const i=this._typedRegistries[e];if(i.isForType(t))return i}return this.plugins}_get(t,e,i){const s=e.get(t);if(void 0===s)throw new Error('\"'+t+'\" is not a registered '+i+\".\");return s}}var en=new tn;class sn{constructor(){this._init=[]}notify(t,e,i,s){\"beforeInit\"===e&&(this._init=this._createDescriptors(t,!0),this._notify(this._init,t,\"install\"));const n=s?this._descriptors(t).filter(s):this._descriptors(t),o=this._notify(n,t,e,i);return\"afterDestroy\"===e&&(this._notify(n,t,\"stop\"),this._notify(this._init,t,\"uninstall\")),o}_notify(t,e,i,s){s=s||{};for(const n of t){const t=n.plugin;if(!1===d(t[i],[e,s,n.options],t)&&s.cancelable)return!1}return!0}invalidate(){s(this._cache)||(this._oldCache=this._cache,this._cache=void 0)}_descriptors(t){if(this._cache)return this._cache;const e=this._cache=this._createDescriptors(t);return this._notifyStateChanges(t),e}_createDescriptors(t,e){const i=t&&t.config,s=l(i.options&&i.options.plugins,{}),n=function(t){const e={},i=[],s=Object.keys(en.plugins.items);for(let t=0;t<s.length;t++)i.push(en.getPlugin(s[t]));const n=t.plugins||[];for(let t=0;t<n.length;t++){const s=n[t];-1===i.indexOf(s)&&(i.push(s),e[s.id]=!0)}return{plugins:i,localIds:e}}(i);return!1!==s||e?function(t,{plugins:e,localIds:i},s,n){const o=[],a=t.getContext();for(const r of e){const e=r.id,l=nn(s[e],n);null!==l&&o.push({plugin:r,options:on(t.config,{plugin:r,local:i[e]},l,a)})}return o}(t,n,s,e):[]}_notifyStateChanges(t){const e=this._oldCache||[],i=this._cache,s=(t,e)=>t.filter((t=>!e.some((e=>t.plugin.id===e.plugin.id))));this._notify(s(e,i),t,\"stop\"),this._notify(s(i,e),t,\"start\")}}function nn(t,e){return e||!1!==t?!0===t?{}:t:null}function on(t,{plugin:e,local:i},s,n){const o=t.pluginScopeKeys(e),a=t.getOptionScopes(s,o);return i&&e.defaults&&a.push(e.defaults),t.createResolver(a,n,[\"\"],{scriptable:!1,indexable:!1,allKeys:!0})}function an(t,e){const i=ue.datasets[t]||{};return((e.datasets||{})[t]||{}).indexAxis||e.indexAxis||i.indexAxis||\"x\"}function rn(t){if(\"x\"===t||\"y\"===t||\"r\"===t)return t}function ln(t,...e){if(rn(t))return t;for(const s of e){const e=s.axis||(\"top\"===(i=s.position)||\"bottom\"===i?\"x\":\"left\"===i||\"right\"===i?\"y\":void 0)||t.length>1&&rn(t[0].toLowerCase());if(e)return e}var i;throw new Error(`Cannot determine type of '${t}' axis. Please provide 'axis' or 'position' option.`)}function hn(t,e,i){if(i[e+\"AxisID\"]===t)return{axis:e}}function cn(t,e){const i=re[t.type]||{scales:{}},s=e.scales||{},n=an(t.type,e),a=Object.create(null);return Object.keys(s).forEach((e=>{const r=s[e];if(!o(r))return console.error(`Invalid scale configuration for scale: ${e}`);if(r._proxy)return console.warn(`Ignoring resolver passed as options for scale: ${e}`);const l=ln(e,r,function(t,e){if(e.data&&e.data.datasets){const i=e.data.datasets.filter((e=>e.xAxisID===t||e.yAxisID===t));if(i.length)return hn(t,\"x\",i[0])||hn(t,\"y\",i[0])}return{}}(e,t),ue.scales[r.type]),h=function(t,e){return t===e?\"_index_\":\"_value_\"}(l,n),c=i.scales||{};a[e]=x(Object.create(null),[{axis:l},r,c[l],c[h]])})),t.data.datasets.forEach((i=>{const n=i.type||t.type,o=i.indexAxis||an(n,e),r=(re[n]||{}).scales||{};Object.keys(r).forEach((t=>{const e=function(t,e){let i=t;return\"_index_\"===t?i=e:\"_value_\"===t&&(i=\"x\"===e?\"y\":\"x\"),i}(t,o),n=i[e+\"AxisID\"]||e;a[n]=a[n]||Object.create(null),x(a[n],[{axis:e},s[n],r[t]])}))})),Object.keys(a).forEach((t=>{const e=a[t];x(e,[ue.scales[e.type],ue.scale])})),a}function dn(t){const e=t.options||(t.options={});e.plugins=l(e.plugins,{}),e.scales=cn(t,e)}function un(t){return(t=t||{}).datasets=t.datasets||[],t.labels=t.labels||[],t}const fn=new Map,gn=new Set;function pn(t,e){let i=fn.get(t);return i||(i=e(),fn.set(t,i),gn.add(i)),i}const mn=(t,e,i)=>{const s=M(e,i);void 0!==s&&t.add(s)};class bn{constructor(t){this._config=function(t){return(t=t||{}).data=un(t.data),dn(t),t}(t),this._scopeCache=new Map,this._resolverCache=new Map}get platform(){return this._config.platform}get type(){return this._config.type}set type(t){this._config.type=t}get data(){return this._config.data}set data(t){this._config.data=un(t)}get options(){return this._config.options}set options(t){this._config.options=t}get plugins(){return this._config.plugins}update(){const t=this._config;this.clearCache(),dn(t)}clearCache(){this._scopeCache.clear(),this._resolverCache.clear()}datasetScopeKeys(t){return pn(t,(()=>[[`datasets.${t}`,\"\"]]))}datasetAnimationScopeKeys(t,e){return pn(`${t}.transition.${e}`,(()=>[[`datasets.${t}.transitions.${e}`,`transitions.${e}`],[`datasets.${t}`,\"\"]]))}datasetElementScopeKeys(t,e){return pn(`${t}-${e}`,(()=>[[`datasets.${t}.elements.${e}`,`datasets.${t}`,`elements.${e}`,\"\"]]))}pluginScopeKeys(t){const e=t.id;return pn(`${this.type}-plugin-${e}`,(()=>[[`plugins.${e}`,...t.additionalOptionScopes||[]]]))}_cachedScopes(t,e){const i=this._scopeCache;let s=i.get(t);return s&&!e||(s=new Map,i.set(t,s)),s}getOptionScopes(t,e,i){const{options:s,type:n}=this,o=this._cachedScopes(t,i),a=o.get(e);if(a)return a;const r=new Set;e.forEach((e=>{t&&(r.add(t),e.forEach((e=>mn(r,t,e)))),e.forEach((t=>mn(r,s,t))),e.forEach((t=>mn(r,re[n]||{},t))),e.forEach((t=>mn(r,ue,t))),e.forEach((t=>mn(r,le,t)))}));const l=Array.from(r);return 0===l.length&&l.push(Object.create(null)),gn.has(e)&&o.set(e,l),l}chartOptionScopes(){const{options:t,type:e}=this;return[t,re[e]||{},ue.datasets[e]||{},{type:e},ue,le]}resolveNamedOptions(t,e,i,s=[\"\"]){const o={$shared:!0},{resolver:a,subPrefixes:r}=xn(this._resolverCache,t,s);let l=a;if(function(t,e){const{isScriptable:i,isIndexable:s}=Ye(t);for(const o of e){const e=i(o),a=s(o),r=(a||e)&&t[o];if(e&&(S(r)||_n(r))||a&&n(r))return!0}return!1}(a,e)){o.$shared=!1;l=$e(a,i=S(i)?i():i,this.createResolver(t,i,r))}for(const t of e)o[t]=l[t];return o}createResolver(t,e,i=[\"\"],s){const{resolver:n}=xn(this._resolverCache,t,i);return o(e)?$e(n,e,void 0,s):n}}function xn(t,e,i){let s=t.get(e);s||(s=new Map,t.set(e,s));const n=i.join();let o=s.get(n);if(!o){o={resolver:je(e,i),subPrefixes:i.filter((t=>!t.toLowerCase().includes(\"hover\")))},s.set(n,o)}return o}const _n=t=>o(t)&&Object.getOwnPropertyNames(t).some((e=>S(t[e])));const yn=[\"top\",\"bottom\",\"left\",\"right\",\"chartArea\"];function vn(t,e){return\"top\"===t||\"bottom\"===t||-1===yn.indexOf(t)&&\"x\"===e}function Mn(t,e){return function(i,s){return i[t]===s[t]?i[e]-s[e]:i[t]-s[t]}}function wn(t){const e=t.chart,i=e.options.animation;e.notifyPlugins(\"afterRender\"),d(i&&i.onComplete,[t],e)}function kn(t){const e=t.chart,i=e.options.animation;d(i&&i.onProgress,[t],e)}function Sn(t){return fe()&&\"string\"==typeof t?t=document.getElementById(t):t&&t.length&&(t=t[0]),t&&t.canvas&&(t=t.canvas),t}const Pn={},Dn=t=>{const e=Sn(t);return Object.values(Pn).filter((t=>t.canvas===e)).pop()};function Cn(t,e,i){const s=Object.keys(t);for(const n of s){const s=+n;if(s>=e){const o=t[n];delete t[n],(i>0||s>e)&&(t[s+i]=o)}}}function On(t,e,i){return t.options.clip?t[i]:e[i]}class An{static defaults=ue;static instances=Pn;static overrides=re;static registry=en;static version=\"4.4.6\";static getChart=Dn;static register(...t){en.add(...t),Tn()}static unregister(...t){en.remove(...t),Tn()}constructor(t,e){const s=this.config=new bn(e),n=Sn(t),o=Dn(n);if(o)throw new Error(\"Canvas is already in use. Chart with ID '\"+o.id+\"' must be destroyed before the canvas with ID '\"+o.canvas.id+\"' can be reused.\");const a=s.createResolver(s.chartOptionScopes(),this.getContext());this.platform=new(s.platform||ks(n)),this.platform.updateConfig(s);const r=this.platform.acquireContext(n,a.aspectRatio),l=r&&r.canvas,h=l&&l.height,c=l&&l.width;this.id=i(),this.ctx=r,this.canvas=l,this.width=c,this.height=h,this._options=a,this._aspectRatio=this.aspectRatio,this._layers=[],this._metasets=[],this._stacks=void 0,this.boxes=[],this.currentDevicePixelRatio=void 0,this.chartArea=void 0,this._active=[],this._lastEvent=void 0,this._listeners={},this._responsiveListeners=void 0,this._sortedMetasets=[],this.scales={},this._plugins=new sn,this.$proxies={},this._hiddenIndices={},this.attached=!1,this._animationsDisabled=void 0,this.$context=void 0,this._doResize=dt((t=>this.update(t)),a.resizeDelay||0),this._dataChanges=[],Pn[this.id]=this,r&&l?(xt.listen(this,\"complete\",wn),xt.listen(this,\"progress\",kn),this._initialize(),this.attached&&this.update()):console.error(\"Failed to create chart: can't acquire context from the given item\")}get aspectRatio(){const{options:{aspectRatio:t,maintainAspectRatio:e},width:i,height:n,_aspectRatio:o}=this;return s(t)?e&&o?o:n?i\/n:null:t}get data(){return this.config.data}set data(t){this.config.data=t}get options(){return this._options}set options(t){this.config.options=t}get registry(){return en}_initialize(){return this.notifyPlugins(\"beforeInit\"),this.options.responsive?this.resize():ke(this,this.options.devicePixelRatio),this.bindEvents(),this.notifyPlugins(\"afterInit\"),this}clear(){return Te(this.canvas,this.ctx),this}stop(){return xt.stop(this),this}resize(t,e){xt.running(this)?this._resizeBeforeDraw={width:t,height:e}:this._resize(t,e)}_resize(t,e){const i=this.options,s=this.canvas,n=i.maintainAspectRatio&&this.aspectRatio,o=this.platform.getMaximumSize(s,t,e,n),a=i.devicePixelRatio||this.platform.getDevicePixelRatio(),r=this.width?\"resize\":\"attach\";this.width=o.width,this.height=o.height,this._aspectRatio=this.aspectRatio,ke(this,a,!0)&&(this.notifyPlugins(\"resize\",{size:o}),d(i.onResize,[this,o],this),this.attached&&this._doResize(r)&&this.render())}ensureScalesHaveIDs(){u(this.options.scales||{},((t,e)=>{t.id=e}))}buildOrUpdateScales(){const t=this.options,e=t.scales,i=this.scales,s=Object.keys(i).reduce(((t,e)=>(t[e]=!1,t)),{});let n=[];e&&(n=n.concat(Object.keys(e).map((t=>{const i=e[t],s=ln(t,i),n=\"r\"===s,o=\"x\"===s;return{options:i,dposition:n?\"chartArea\":o?\"bottom\":\"left\",dtype:n?\"radialLinear\":o?\"category\":\"linear\"}})))),u(n,(e=>{const n=e.options,o=n.id,a=ln(o,n),r=l(n.type,e.dtype);void 0!==n.position&&vn(n.position,a)===vn(e.dposition)||(n.position=e.dposition),s[o]=!0;let h=null;if(o in i&&i[o].type===r)h=i[o];else{h=new(en.getScale(r))({id:o,type:r,ctx:this.ctx,chart:this}),i[h.id]=h}h.init(n,t)})),u(s,((t,e)=>{t||delete i[e]})),u(i,(t=>{as.configure(this,t,t.options),as.addBox(this,t)}))}_updateMetasets(){const t=this._metasets,e=this.data.datasets.length,i=t.length;if(t.sort(((t,e)=>t.index-e.index)),i>e){for(let t=e;t<i;++t)this._destroyDatasetMeta(t);t.splice(e,i-e)}this._sortedMetasets=t.slice(0).sort(Mn(\"order\",\"index\"))}_removeUnreferencedMetasets(){const{_metasets:t,data:{datasets:e}}=this;t.length>e.length&&delete this._stacks,t.forEach(((t,i)=>{0===e.filter((e=>e===t._dataset)).length&&this._destroyDatasetMeta(i)}))}buildOrUpdateControllers(){const t=[],e=this.data.datasets;let i,s;for(this._removeUnreferencedMetasets(),i=0,s=e.length;i<s;i++){const s=e[i];let n=this.getDatasetMeta(i);const o=s.type||this.config.type;if(n.type&&n.type!==o&&(this._destroyDatasetMeta(i),n=this.getDatasetMeta(i)),n.type=o,n.indexAxis=s.indexAxis||an(o,this.options),n.order=s.order||0,n.index=i,n.label=\"\"+s.label,n.visible=this.isDatasetVisible(i),n.controller)n.controller.updateIndex(i),n.controller.linkScales();else{const e=en.getController(o),{datasetElementType:s,dataElementType:a}=ue.datasets[o];Object.assign(e,{dataElementType:en.getElement(a),datasetElementType:s&&en.getElement(s)}),n.controller=new e(this,i),t.push(n.controller)}}return this._updateMetasets(),t}_resetElements(){u(this.data.datasets,((t,e)=>{this.getDatasetMeta(e).controller.reset()}),this)}reset(){this._resetElements(),this.notifyPlugins(\"reset\")}update(t){const e=this.config;e.update();const i=this._options=e.createResolver(e.chartOptionScopes(),this.getContext()),s=this._animationsDisabled=!i.animation;if(this._updateScales(),this._checkEventBindings(),this._updateHiddenIndices(),this._plugins.invalidate(),!1===this.notifyPlugins(\"beforeUpdate\",{mode:t,cancelable:!0}))return;const n=this.buildOrUpdateControllers();this.notifyPlugins(\"beforeElementsUpdate\");let o=0;for(let t=0,e=this.data.datasets.length;t<e;t++){const{controller:e}=this.getDatasetMeta(t),i=!s&&-1===n.indexOf(e);e.buildOrUpdateElements(i),o=Math.max(+e.getMaxOverflow(),o)}o=this._minPadding=i.layout.autoPadding?o:0,this._updateLayout(o),s||u(n,(t=>{t.reset()})),this._updateDatasets(t),this.notifyPlugins(\"afterUpdate\",{mode:t}),this._layers.sort(Mn(\"z\",\"_idx\"));const{_active:a,_lastEvent:r}=this;r?this._eventHandler(r,!0):a.length&&this._updateHoverStyles(a,a,!0),this.render()}_updateScales(){u(this.scales,(t=>{as.removeBox(this,t)})),this.ensureScalesHaveIDs(),this.buildOrUpdateScales()}_checkEventBindings(){const t=this.options,e=new Set(Object.keys(this._listeners)),i=new Set(t.events);P(e,i)&&!!this._responsiveListeners===t.responsive||(this.unbindEvents(),this.bindEvents())}_updateHiddenIndices(){const{_hiddenIndices:t}=this,e=this._getUniformDataChanges()||[];for(const{method:i,start:s,count:n}of e){Cn(t,s,\"_removeElements\"===i?-n:n)}}_getUniformDataChanges(){const t=this._dataChanges;if(!t||!t.length)return;this._dataChanges=[];const e=this.data.datasets.length,i=e=>new Set(t.filter((t=>t[0]===e)).map(((t,e)=>e+\",\"+t.splice(1).join(\",\")))),s=i(0);for(let t=1;t<e;t++)if(!P(s,i(t)))return;return Array.from(s).map((t=>t.split(\",\"))).map((t=>({method:t[1],start:+t[2],count:+t[3]})))}_updateLayout(t){if(!1===this.notifyPlugins(\"beforeLayout\",{cancelable:!0}))return;as.update(this,this.width,this.height,t);const e=this.chartArea,i=e.width<=0||e.height<=0;this._layers=[],u(this.boxes,(t=>{i&&\"chartArea\"===t.position||(t.configure&&t.configure(),this._layers.push(...t._layers()))}),this),this._layers.forEach(((t,e)=>{t._idx=e})),this.notifyPlugins(\"afterLayout\")}_updateDatasets(t){if(!1!==this.notifyPlugins(\"beforeDatasetsUpdate\",{mode:t,cancelable:!0})){for(let t=0,e=this.data.datasets.length;t<e;++t)this.getDatasetMeta(t).controller.configure();for(let e=0,i=this.data.datasets.length;e<i;++e)this._updateDataset(e,S(t)?t({datasetIndex:e}):t);this.notifyPlugins(\"afterDatasetsUpdate\",{mode:t})}}_updateDataset(t,e){const i=this.getDatasetMeta(t),s={meta:i,index:t,mode:e,cancelable:!0};!1!==this.notifyPlugins(\"beforeDatasetUpdate\",s)&&(i.controller._update(e),s.cancelable=!1,this.notifyPlugins(\"afterDatasetUpdate\",s))}render(){!1!==this.notifyPlugins(\"beforeRender\",{cancelable:!0})&&(xt.has(this)?this.attached&&!xt.running(this)&&xt.start(this):(this.draw(),wn({chart:this})))}draw(){let t;if(this._resizeBeforeDraw){const{width:t,height:e}=this._resizeBeforeDraw;this._resizeBeforeDraw=null,this._resize(t,e)}if(this.clear(),this.width<=0||this.height<=0)return;if(!1===this.notifyPlugins(\"beforeDraw\",{cancelable:!0}))return;const e=this._layers;for(t=0;t<e.length&&e[t].z<=0;++t)e[t].draw(this.chartArea);for(this._drawDatasets();t<e.length;++t)e[t].draw(this.chartArea);this.notifyPlugins(\"afterDraw\")}_getSortedDatasetMetas(t){const e=this._sortedMetasets,i=[];let s,n;for(s=0,n=e.length;s<n;++s){const n=e[s];t&&!n.visible||i.push(n)}return i}getSortedVisibleDatasetMetas(){return this._getSortedDatasetMetas(!0)}_drawDatasets(){if(!1===this.notifyPlugins(\"beforeDatasetsDraw\",{cancelable:!0}))return;const t=this.getSortedVisibleDatasetMetas();for(let e=t.length-1;e>=0;--e)this._drawDataset(t[e]);this.notifyPlugins(\"afterDatasetsDraw\")}_drawDataset(t){const e=this.ctx,i=t._clip,s=!i.disabled,n=function(t,e){const{xScale:i,yScale:s}=t;return i&&s?{left:On(i,e,\"left\"),right:On(i,e,\"right\"),top:On(s,e,\"top\"),bottom:On(s,e,\"bottom\")}:e}(t,this.chartArea),o={meta:t,index:t.index,cancelable:!0};!1!==this.notifyPlugins(\"beforeDatasetDraw\",o)&&(s&&Ie(e,{left:!1===i.left?0:n.left-i.left,right:!1===i.right?this.width:n.right+i.right,top:!1===i.top?0:n.top-i.top,bottom:!1===i.bottom?this.height:n.bottom+i.bottom}),t.controller.draw(),s&&ze(e),o.cancelable=!1,this.notifyPlugins(\"afterDatasetDraw\",o))}isPointInArea(t){return Re(t,this.chartArea,this._minPadding)}getElementsAtEventForMode(t,e,i,s){const n=Xi.modes[e];return\"function\"==typeof n?n(this,t,i,s):[]}getDatasetMeta(t){const e=this.data.datasets[t],i=this._metasets;let s=i.filter((t=>t&&t._dataset===e)).pop();return s||(s={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null,order:e&&e.order||0,index:t,_dataset:e,_parsed:[],_sorted:!1},i.push(s)),s}getContext(){return this.$context||(this.$context=Ci(null,{chart:this,type:\"chart\"}))}getVisibleDatasetCount(){return this.getSortedVisibleDatasetMetas().length}isDatasetVisible(t){const e=this.data.datasets[t];if(!e)return!1;const i=this.getDatasetMeta(t);return\"boolean\"==typeof i.hidden?!i.hidden:!e.hidden}setDatasetVisibility(t,e){this.getDatasetMeta(t).hidden=!e}toggleDataVisibility(t){this._hiddenIndices[t]=!this._hiddenIndices[t]}getDataVisibility(t){return!this._hiddenIndices[t]}_updateVisibility(t,e,i){const s=i?\"show\":\"hide\",n=this.getDatasetMeta(t),o=n.controller._resolveAnimations(void 0,s);k(e)?(n.data[e].hidden=!i,this.update()):(this.setDatasetVisibility(t,i),o.update(n,{visible:i}),this.update((e=>e.datasetIndex===t?s:void 0)))}hide(t,e){this._updateVisibility(t,e,!1)}show(t,e){this._updateVisibility(t,e,!0)}_destroyDatasetMeta(t){const e=this._metasets[t];e&&e.controller&&e.controller._destroy(),delete this._metasets[t]}_stop(){let t,e;for(this.stop(),xt.remove(this),t=0,e=this.data.datasets.length;t<e;++t)this._destroyDatasetMeta(t)}destroy(){this.notifyPlugins(\"beforeDestroy\");const{canvas:t,ctx:e}=this;this._stop(),this.config.clearCache(),t&&(this.unbindEvents(),Te(t,e),this.platform.releaseContext(e),this.canvas=null,this.ctx=null),delete Pn[this.id],this.notifyPlugins(\"afterDestroy\")}toBase64Image(...t){return this.canvas.toDataURL(...t)}bindEvents(){this.bindUserEvents(),this.options.responsive?this.bindResponsiveEvents():this.attached=!0}bindUserEvents(){const t=this._listeners,e=this.platform,i=(i,s)=>{e.addEventListener(this,i,s),t[i]=s},s=(t,e,i)=>{t.offsetX=e,t.offsetY=i,this._eventHandler(t)};u(this.options.events,(t=>i(t,s)))}bindResponsiveEvents(){this._responsiveListeners||(this._responsiveListeners={});const t=this._responsiveListeners,e=this.platform,i=(i,s)=>{e.addEventListener(this,i,s),t[i]=s},s=(i,s)=>{t[i]&&(e.removeEventListener(this,i,s),delete t[i])},n=(t,e)=>{this.canvas&&this.resize(t,e)};let o;const a=()=>{s(\"attach\",a),this.attached=!0,this.resize(),i(\"resize\",n),i(\"detach\",o)};o=()=>{this.attached=!1,s(\"resize\",n),this._stop(),this._resize(0,0),i(\"attach\",a)},e.isAttached(this.canvas)?a():o()}unbindEvents(){u(this._listeners,((t,e)=>{this.platform.removeEventListener(this,e,t)})),this._listeners={},u(this._responsiveListeners,((t,e)=>{this.platform.removeEventListener(this,e,t)})),this._responsiveListeners=void 0}updateHoverStyle(t,e,i){const s=i?\"set\":\"remove\";let n,o,a,r;for(\"dataset\"===e&&(n=this.getDatasetMeta(t[0].datasetIndex),n.controller[\"_\"+s+\"DatasetHoverStyle\"]()),a=0,r=t.length;a<r;++a){o=t[a];const e=o&&this.getDatasetMeta(o.datasetIndex).controller;e&&e[s+\"HoverStyle\"](o.element,o.datasetIndex,o.index)}}getActiveElements(){return this._active||[]}setActiveElements(t){const e=this._active||[],i=t.map((({datasetIndex:t,index:e})=>{const i=this.getDatasetMeta(t);if(!i)throw new Error(\"No dataset found at index \"+t);return{datasetIndex:t,element:i.data[e],index:e}}));!f(i,e)&&(this._active=i,this._lastEvent=null,this._updateHoverStyles(i,e))}notifyPlugins(t,e,i){return this._plugins.notify(this,t,e,i)}isPluginEnabled(t){return 1===this._plugins._cache.filter((e=>e.plugin.id===t)).length}_updateHoverStyles(t,e,i){const s=this.options.hover,n=(t,e)=>t.filter((t=>!e.some((e=>t.datasetIndex===e.datasetIndex&&t.index===e.index)))),o=n(e,t),a=i?t:n(t,e);o.length&&this.updateHoverStyle(o,s.mode,!1),a.length&&s.mode&&this.updateHoverStyle(a,s.mode,!0)}_eventHandler(t,e){const i={event:t,replay:e,cancelable:!0,inChartArea:this.isPointInArea(t)},s=e=>(e.options.events||this.options.events).includes(t.native.type);if(!1===this.notifyPlugins(\"beforeEvent\",i,s))return;const n=this._handleEvent(t,e,i.inChartArea);return i.cancelable=!1,this.notifyPlugins(\"afterEvent\",i,s),(n||i.changed)&&this.render(),this}_handleEvent(t,e,i){const{_active:s=[],options:n}=this,o=e,a=this._getActiveElements(t,s,i,o),r=D(t),l=function(t,e,i,s){return i&&\"mouseout\"!==t.type?s?e:t:null}(t,this._lastEvent,i,r);i&&(this._lastEvent=null,d(n.onHover,[t,a,this],this),r&&d(n.onClick,[t,a,this],this));const h=!f(a,s);return(h||e)&&(this._active=a,this._updateHoverStyles(a,s,e)),this._lastEvent=l,h}_getActiveElements(t,e,i,s){if(\"mouseout\"===t.type)return[];if(!i)return e;const n=this.options.hover;return this.getElementsAtEventForMode(t,n.mode,n,s)}}function Tn(){return u(An.instances,(t=>t._plugins.invalidate()))}function Ln(){throw new Error(\"This method is not implemented: Check that a complete date adapter is provided.\")}class En{static override(t){Object.assign(En.prototype,t)}options;constructor(t){this.options=t||{}}init(){}formats(){return Ln()}parse(){return Ln()}format(){return Ln()}add(){return Ln()}diff(){return Ln()}startOf(){return Ln()}endOf(){return Ln()}}var Rn={_date:En};function In(t){const e=t.iScale,i=function(t,e){if(!t._cache.$bar){const i=t.getMatchingVisibleMetas(e);let s=[];for(let e=0,n=i.length;e<n;e++)s=s.concat(i[e].controller.getAllParsedValues(t));t._cache.$bar=lt(s.sort(((t,e)=>t-e)))}return t._cache.$bar}(e,t.type);let s,n,o,a,r=e._length;const l=()=>{32767!==o&&-32768!==o&&(k(a)&&(r=Math.min(r,Math.abs(o-a)||r)),a=o)};for(s=0,n=i.length;s<n;++s)o=e.getPixelForValue(i[s]),l();for(a=void 0,s=0,n=e.ticks.length;s<n;++s)o=e.getPixelForTick(s),l();return r}function zn(t,e,i,s){return n(t)?function(t,e,i,s){const n=i.parse(t[0],s),o=i.parse(t[1],s),a=Math.min(n,o),r=Math.max(n,o);let l=a,h=r;Math.abs(a)>Math.abs(r)&&(l=r,h=a),e[i.axis]=h,e._custom={barStart:l,barEnd:h,start:n,end:o,min:a,max:r}}(t,e,i,s):e[i.axis]=i.parse(t,s),e}function Fn(t,e,i,s){const n=t.iScale,o=t.vScale,a=n.getLabels(),r=n===o,l=[];let h,c,d,u;for(h=i,c=i+s;h<c;++h)u=e[h],d={},d[n.axis]=r||n.parse(a[h],h),l.push(zn(u,d,o,h));return l}function Vn(t){return t&&void 0!==t.barStart&&void 0!==t.barEnd}function Bn(t,e,i,s){let n=e.borderSkipped;const o={};if(!n)return void(t.borderSkipped=o);if(!0===n)return void(t.borderSkipped={top:!0,right:!0,bottom:!0,left:!0});const{start:a,end:r,reverse:l,top:h,bottom:c}=function(t){let e,i,s,n,o;return t.horizontal?(e=t.base>t.x,i=\"left\",s=\"right\"):(e=t.base<t.y,i=\"bottom\",s=\"top\"),e?(n=\"end\",o=\"start\"):(n=\"start\",o=\"end\"),{start:i,end:s,reverse:e,top:n,bottom:o}}(t);\"middle\"===n&&i&&(t.enableBorderRadius=!0,(i._top||0)===s?n=h:(i._bottom||0)===s?n=c:(o[Wn(c,a,r,l)]=!0,n=h)),o[Wn(n,a,r,l)]=!0,t.borderSkipped=o}function Wn(t,e,i,s){var n,o,a;return s?(a=i,t=Nn(t=(n=t)===(o=e)?a:n===a?o:n,i,e)):t=Nn(t,e,i),t}function Nn(t,e,i){return\"start\"===t?e:\"end\"===t?i:t}function Hn(t,{inflateAmount:e},i){t.inflateAmount=\"auto\"===e?1===i?.33:0:e}class jn extends Ns{static id=\"doughnut\";static defaults={datasetElementType:!1,dataElementType:\"arc\",animation:{animateRotate:!0,animateScale:!1},animations:{numbers:{type:\"number\",properties:[\"circumference\",\"endAngle\",\"innerRadius\",\"outerRadius\",\"startAngle\",\"x\",\"y\",\"offset\",\"borderWidth\",\"spacing\"]}},cutout:\"50%\",rotation:0,circumference:360,radius:\"100%\",spacing:0,indexAxis:\"r\"};static descriptors={_scriptable:t=>\"spacing\"!==t,_indexable:t=>\"spacing\"!==t&&!t.startsWith(\"borderDash\")&&!t.startsWith(\"hoverBorderDash\")};static overrides={aspectRatio:1,plugins:{legend:{labels:{generateLabels(t){const e=t.data;if(e.labels.length&&e.datasets.length){const{labels:{pointStyle:i,color:s}}=t.legend.options;return e.labels.map(((e,n)=>{const o=t.getDatasetMeta(0).controller.getStyle(n);return{text:e,fillStyle:o.backgroundColor,strokeStyle:o.borderColor,fontColor:s,lineWidth:o.borderWidth,pointStyle:i,hidden:!t.getDataVisibility(n),index:n}}))}return[]}},onClick(t,e,i){i.chart.toggleDataVisibility(e.index),i.chart.update()}}}};constructor(t,e){super(t,e),this.enableOptionSharing=!0,this.innerRadius=void 0,this.outerRadius=void 0,this.offsetX=void 0,this.offsetY=void 0}linkScales(){}parse(t,e){const i=this.getDataset().data,s=this._cachedMeta;if(!1===this._parsing)s._parsed=i;else{let n,a,r=t=>+i[t];if(o(i[t])){const{key:t=\"value\"}=this._parsing;r=e=>+M(i[e],t)}for(n=t,a=t+e;n<a;++n)s._parsed[n]=r(n)}}_getRotation(){return $(this.options.rotation-90)}_getCircumference(){return $(this.options.circumference)}_getRotationExtents(){let t=O,e=-O;for(let i=0;i<this.chart.data.datasets.length;++i)if(this.chart.isDatasetVisible(i)&&this.chart.getDatasetMeta(i).type===this._type){const s=this.chart.getDatasetMeta(i).controller,n=s._getRotation(),o=s._getCircumference();t=Math.min(t,n),e=Math.max(e,n+o)}return{rotation:t,circumference:e-t}}update(t){const e=this.chart,{chartArea:i}=e,s=this._cachedMeta,n=s.data,o=this.getMaxBorderWidth()+this.getMaxOffset(n)+this.options.spacing,a=Math.max((Math.min(i.width,i.height)-o)\/2,0),r=Math.min(h(this.options.cutout,a),1),l=this._getRingWeight(this.index),{circumference:d,rotation:u}=this._getRotationExtents(),{ratioX:f,ratioY:g,offsetX:p,offsetY:m}=function(t,e,i){let s=1,n=1,o=0,a=0;if(e<O){const r=t,l=r+e,h=Math.cos(r),c=Math.sin(r),d=Math.cos(l),u=Math.sin(l),f=(t,e,s)=>Z(t,r,l,!0)?1:Math.max(e,e*i,s,s*i),g=(t,e,s)=>Z(t,r,l,!0)?-1:Math.min(e,e*i,s,s*i),p=f(0,h,d),m=f(E,c,u),b=g(C,h,d),x=g(C+E,c,u);s=(p-b)\/2,n=(m-x)\/2,o=-(p+b)\/2,a=-(m+x)\/2}return{ratioX:s,ratioY:n,offsetX:o,offsetY:a}}(u,d,r),b=(i.width-o)\/f,x=(i.height-o)\/g,_=Math.max(Math.min(b,x)\/2,0),y=c(this.options.radius,_),v=(y-Math.max(y*r,0))\/this._getVisibleDatasetWeightTotal();this.offsetX=p*y,this.offsetY=m*y,s.total=this.calculateTotal(),this.outerRadius=y-v*this._getRingWeightOffset(this.index),this.innerRadius=Math.max(this.outerRadius-v*l,0),this.updateElements(n,0,n.length,t)}_circumference(t,e){const i=this.options,s=this._cachedMeta,n=this._getCircumference();return e&&i.animation.animateRotate||!this.chart.getDataVisibility(t)||null===s._parsed[t]||s.data[t].hidden?0:this.calculateCircumference(s._parsed[t]*n\/O)}updateElements(t,e,i,s){const n=\"reset\"===s,o=this.chart,a=o.chartArea,r=o.options.animation,l=(a.left+a.right)\/2,h=(a.top+a.bottom)\/2,c=n&&r.animateScale,d=c?0:this.innerRadius,u=c?0:this.outerRadius,{sharedOptions:f,includeOptions:g}=this._getSharedOptions(e,s);let p,m=this._getRotation();for(p=0;p<e;++p)m+=this._circumference(p,n);for(p=e;p<e+i;++p){const e=this._circumference(p,n),i=t[p],o={x:l+this.offsetX,y:h+this.offsetY,startAngle:m,endAngle:m+e,circumference:e,outerRadius:u,innerRadius:d};g&&(o.options=f||this.resolveDataElementOptions(p,i.active?\"active\":s)),m+=e,this.updateElement(i,p,o,s)}}calculateTotal(){const t=this._cachedMeta,e=t.data;let i,s=0;for(i=0;i<e.length;i++){const n=t._parsed[i];null===n||isNaN(n)||!this.chart.getDataVisibility(i)||e[i].hidden||(s+=Math.abs(n))}return s}calculateCircumference(t){const e=this._cachedMeta.total;return e>0&&!isNaN(t)?O*(Math.abs(t)\/e):0}getLabelAndValue(t){const e=this._cachedMeta,i=this.chart,s=i.data.labels||[],n=ne(e._parsed[t],i.options.locale);return{label:s[t]||\"\",value:n}}getMaxBorderWidth(t){let e=0;const i=this.chart;let s,n,o,a,r;if(!t)for(s=0,n=i.data.datasets.length;s<n;++s)if(i.isDatasetVisible(s)){o=i.getDatasetMeta(s),t=o.data,a=o.controller;break}if(!t)return 0;for(s=0,n=t.length;s<n;++s)r=a.resolveDataElementOptions(s),\"inner\"!==r.borderAlign&&(e=Math.max(e,r.borderWidth||0,r.hoverBorderWidth||0));return e}getMaxOffset(t){let e=0;for(let i=0,s=t.length;i<s;++i){const t=this.resolveDataElementOptions(i);e=Math.max(e,t.offset||0,t.hoverOffset||0)}return e}_getRingWeightOffset(t){let e=0;for(let i=0;i<t;++i)this.chart.isDatasetVisible(i)&&(e+=this._getRingWeight(i));return e}_getRingWeight(t){return Math.max(l(this.chart.data.datasets[t].weight,1),0)}_getVisibleDatasetWeightTotal(){return this._getRingWeightOffset(this.chart.data.datasets.length)||1}}class $n extends Ns{static id=\"polarArea\";static defaults={dataElementType:\"arc\",animation:{animateRotate:!0,animateScale:!0},animations:{numbers:{type:\"number\",properties:[\"x\",\"y\",\"startAngle\",\"endAngle\",\"innerRadius\",\"outerRadius\"]}},indexAxis:\"r\",startAngle:0};static overrides={aspectRatio:1,plugins:{legend:{labels:{generateLabels(t){const e=t.data;if(e.labels.length&&e.datasets.length){const{labels:{pointStyle:i,color:s}}=t.legend.options;return e.labels.map(((e,n)=>{const o=t.getDatasetMeta(0).controller.getStyle(n);return{text:e,fillStyle:o.backgroundColor,strokeStyle:o.borderColor,fontColor:s,lineWidth:o.borderWidth,pointStyle:i,hidden:!t.getDataVisibility(n),index:n}}))}return[]}},onClick(t,e,i){i.chart.toggleDataVisibility(e.index),i.chart.update()}}},scales:{r:{type:\"radialLinear\",angleLines:{display:!1},beginAtZero:!0,grid:{circular:!0},pointLabels:{display:!1},startAngle:0}}};constructor(t,e){super(t,e),this.innerRadius=void 0,this.outerRadius=void 0}getLabelAndValue(t){const e=this._cachedMeta,i=this.chart,s=i.data.labels||[],n=ne(e._parsed[t].r,i.options.locale);return{label:s[t]||\"\",value:n}}parseObjectData(t,e,i,s){return ii.bind(this)(t,e,i,s)}update(t){const e=this._cachedMeta.data;this._updateRadius(),this.updateElements(e,0,e.length,t)}getMinMax(){const t=this._cachedMeta,e={min:Number.POSITIVE_INFINITY,max:Number.NEGATIVE_INFINITY};return t.data.forEach(((t,i)=>{const s=this.getParsed(i).r;!isNaN(s)&&this.chart.getDataVisibility(i)&&(s<e.min&&(e.min=s),s>e.max&&(e.max=s))})),e}_updateRadius(){const t=this.chart,e=t.chartArea,i=t.options,s=Math.min(e.right-e.left,e.bottom-e.top),n=Math.max(s\/2,0),o=(n-Math.max(i.cutoutPercentage?n\/100*i.cutoutPercentage:1,0))\/t.getVisibleDatasetCount();this.outerRadius=n-o*this.index,this.innerRadius=this.outerRadius-o}updateElements(t,e,i,s){const n=\"reset\"===s,o=this.chart,a=o.options.animation,r=this._cachedMeta.rScale,l=r.xCenter,h=r.yCenter,c=r.getIndexAngle(0)-.5*C;let d,u=c;const f=360\/this.countVisibleElements();for(d=0;d<e;++d)u+=this._computeAngle(d,s,f);for(d=e;d<e+i;d++){const e=t[d];let i=u,g=u+this._computeAngle(d,s,f),p=o.getDataVisibility(d)?r.getDistanceFromCenterForValue(this.getParsed(d).r):0;u=g,n&&(a.animateScale&&(p=0),a.animateRotate&&(i=g=c));const m={x:l,y:h,innerRadius:0,outerRadius:p,startAngle:i,endAngle:g,options:this.resolveDataElementOptions(d,e.active?\"active\":s)};this.updateElement(e,d,m,s)}}countVisibleElements(){const t=this._cachedMeta;let e=0;return t.data.forEach(((t,i)=>{!isNaN(this.getParsed(i).r)&&this.chart.getDataVisibility(i)&&e++})),e}_computeAngle(t,e,i){return this.chart.getDataVisibility(t)?$(this.resolveDataElementOptions(t,e).angle||i):0}}var Yn=Object.freeze({__proto__:null,BarController:class extends Ns{static id=\"bar\";static defaults={datasetElementType:!1,dataElementType:\"bar\",categoryPercentage:.8,barPercentage:.9,grouped:!0,animations:{numbers:{type:\"number\",properties:[\"x\",\"y\",\"base\",\"width\",\"height\"]}}};static overrides={scales:{_index_:{type:\"category\",offset:!0,grid:{offset:!0}},_value_:{type:\"linear\",beginAtZero:!0}}};parsePrimitiveData(t,e,i,s){return Fn(t,e,i,s)}parseArrayData(t,e,i,s){return Fn(t,e,i,s)}parseObjectData(t,e,i,s){const{iScale:n,vScale:o}=t,{xAxisKey:a=\"x\",yAxisKey:r=\"y\"}=this._parsing,l=\"x\"===n.axis?a:r,h=\"x\"===o.axis?a:r,c=[];let d,u,f,g;for(d=i,u=i+s;d<u;++d)g=e[d],f={},f[n.axis]=n.parse(M(g,l),d),c.push(zn(M(g,h),f,o,d));return c}updateRangeFromParsed(t,e,i,s){super.updateRangeFromParsed(t,e,i,s);const n=i._custom;n&&e===this._cachedMeta.vScale&&(t.min=Math.min(t.min,n.min),t.max=Math.max(t.max,n.max))}getMaxOverflow(){return 0}getLabelAndValue(t){const e=this._cachedMeta,{iScale:i,vScale:s}=e,n=this.getParsed(t),o=n._custom,a=Vn(o)?\"[\"+o.start+\", \"+o.end+\"]\":\"\"+s.getLabelForValue(n[s.axis]);return{label:\"\"+i.getLabelForValue(n[i.axis]),value:a}}initialize(){this.enableOptionSharing=!0,super.initialize();this._cachedMeta.stack=this.getDataset().stack}update(t){const e=this._cachedMeta;this.updateElements(e.data,0,e.data.length,t)}updateElements(t,e,i,n){const o=\"reset\"===n,{index:a,_cachedMeta:{vScale:r}}=this,l=r.getBasePixel(),h=r.isHorizontal(),c=this._getRuler(),{sharedOptions:d,includeOptions:u}=this._getSharedOptions(e,n);for(let f=e;f<e+i;f++){const e=this.getParsed(f),i=o||s(e[r.axis])?{base:l,head:l}:this._calculateBarValuePixels(f),g=this._calculateBarIndexPixels(f,c),p=(e._stacks||{})[r.axis],m={horizontal:h,base:i.base,enableBorderRadius:!p||Vn(e._custom)||a===p._top||a===p._bottom,x:h?i.head:g.center,y:h?g.center:i.head,height:h?g.size:Math.abs(i.size),width:h?Math.abs(i.size):g.size};u&&(m.options=d||this.resolveDataElementOptions(f,t[f].active?\"active\":n));const b=m.options||t[f].options;Bn(m,b,p,a),Hn(m,b,c.ratio),this.updateElement(t[f],f,m,n)}}_getStacks(t,e){const{iScale:i}=this._cachedMeta,n=i.getMatchingVisibleMetas(this._type).filter((t=>t.controller.options.grouped)),o=i.options.stacked,a=[],r=this._cachedMeta.controller.getParsed(e),l=r&&r[i.axis],h=t=>{const e=t._parsed.find((t=>t[i.axis]===l)),n=e&&e[t.vScale.axis];if(s(n)||isNaN(n))return!0};for(const i of n)if((void 0===e||!h(i))&&((!1===o||-1===a.indexOf(i.stack)||void 0===o&&void 0===i.stack)&&a.push(i.stack),i.index===t))break;return a.length||a.push(void 0),a}_getStackCount(t){return this._getStacks(void 0,t).length}_getStackIndex(t,e,i){const s=this._getStacks(t,i),n=void 0!==e?s.indexOf(e):-1;return-1===n?s.length-1:n}_getRuler(){const t=this.options,e=this._cachedMeta,i=e.iScale,s=[];let n,o;for(n=0,o=e.data.length;n<o;++n)s.push(i.getPixelForValue(this.getParsed(n)[i.axis],n));const a=t.barThickness;return{min:a||In(e),pixels:s,start:i._startPixel,end:i._endPixel,stackCount:this._getStackCount(),scale:i,grouped:t.grouped,ratio:a?1:t.categoryPercentage*t.barPercentage}}_calculateBarValuePixels(t){const{_cachedMeta:{vScale:e,_stacked:i,index:n},options:{base:o,minBarLength:a}}=this,r=o||0,l=this.getParsed(t),h=l._custom,c=Vn(h);let d,u,f=l[e.axis],g=0,p=i?this.applyStack(e,l,i):f;p!==f&&(g=p-f,p=f),c&&(f=h.barStart,p=h.barEnd-h.barStart,0!==f&&F(f)!==F(h.barEnd)&&(g=0),g+=f);const m=s(o)||c?g:o;let b=e.getPixelForValue(m);if(d=this.chart.getDataVisibility(t)?e.getPixelForValue(g+p):b,u=d-b,Math.abs(u)<a){u=function(t,e,i){return 0!==t?F(t):(e.isHorizontal()?1:-1)*(e.min>=i?1:-1)}(u,e,r)*a,f===r&&(b-=u\/2);const t=e.getPixelForDecimal(0),s=e.getPixelForDecimal(1),o=Math.min(t,s),h=Math.max(t,s);b=Math.max(Math.min(b,h),o),d=b+u,i&&!c&&(l._stacks[e.axis]._visualValues[n]=e.getValueForPixel(d)-e.getValueForPixel(b))}if(b===e.getPixelForValue(r)){const t=F(u)*e.getLineWidthForValue(r)\/2;b+=t,u-=t}return{size:u,base:b,head:d,center:d+u\/2}}_calculateBarIndexPixels(t,e){const i=e.scale,n=this.options,o=n.skipNull,a=l(n.maxBarThickness,1\/0);let r,h;if(e.grouped){const i=o?this._getStackCount(t):e.stackCount,l=\"flex\"===n.barThickness?function(t,e,i,s){const n=e.pixels,o=n[t];let a=t>0?n[t-1]:null,r=t<n.length-1?n[t+1]:null;const l=i.categoryPercentage;null===a&&(a=o-(null===r?e.end-e.start:r-o)),null===r&&(r=o+o-a);const h=o-(o-Math.min(a,r))\/2*l;return{chunk:Math.abs(r-a)\/2*l\/s,ratio:i.barPercentage,start:h}}(t,e,n,i):function(t,e,i,n){const o=i.barThickness;let a,r;return s(o)?(a=e.min*i.categoryPercentage,r=i.barPercentage):(a=o*n,r=1),{chunk:a\/n,ratio:r,start:e.pixels[t]-a\/2}}(t,e,n,i),c=this._getStackIndex(this.index,this._cachedMeta.stack,o?t:void 0);r=l.start+l.chunk*c+l.chunk\/2,h=Math.min(a,l.chunk*l.ratio)}else r=i.getPixelForValue(this.getParsed(t)[i.axis],t),h=Math.min(a,e.min*e.ratio);return{base:r-h\/2,head:r+h\/2,center:r,size:h}}draw(){const t=this._cachedMeta,e=t.vScale,i=t.data,s=i.length;let n=0;for(;n<s;++n)null===this.getParsed(n)[e.axis]||i[n].hidden||i[n].draw(this._ctx)}},BubbleController:class extends Ns{static id=\"bubble\";static defaults={datasetElementType:!1,dataElementType:\"point\",animations:{numbers:{type:\"number\",properties:[\"x\",\"y\",\"borderWidth\",\"radius\"]}}};static overrides={scales:{x:{type:\"linear\"},y:{type:\"linear\"}}};initialize(){this.enableOptionSharing=!0,super.initialize()}parsePrimitiveData(t,e,i,s){const n=super.parsePrimitiveData(t,e,i,s);for(let t=0;t<n.length;t++)n[t]._custom=this.resolveDataElementOptions(t+i).radius;return n}parseArrayData(t,e,i,s){const n=super.parseArrayData(t,e,i,s);for(let t=0;t<n.length;t++){const s=e[i+t];n[t]._custom=l(s[2],this.resolveDataElementOptions(t+i).radius)}return n}parseObjectData(t,e,i,s){const n=super.parseObjectData(t,e,i,s);for(let t=0;t<n.length;t++){const s=e[i+t];n[t]._custom=l(s&&s.r&&+s.r,this.resolveDataElementOptions(t+i).radius)}return n}getMaxOverflow(){const t=this._cachedMeta.data;let e=0;for(let i=t.length-1;i>=0;--i)e=Math.max(e,t[i].size(this.resolveDataElementOptions(i))\/2);return e>0&&e}getLabelAndValue(t){const e=this._cachedMeta,i=this.chart.data.labels||[],{xScale:s,yScale:n}=e,o=this.getParsed(t),a=s.getLabelForValue(o.x),r=n.getLabelForValue(o.y),l=o._custom;return{label:i[t]||\"\",value:\"(\"+a+\", \"+r+(l?\", \"+l:\"\")+\")\"}}update(t){const e=this._cachedMeta.data;this.updateElements(e,0,e.length,t)}updateElements(t,e,i,s){const n=\"reset\"===s,{iScale:o,vScale:a}=this._cachedMeta,{sharedOptions:r,includeOptions:l}=this._getSharedOptions(e,s),h=o.axis,c=a.axis;for(let d=e;d<e+i;d++){const e=t[d],i=!n&&this.getParsed(d),u={},f=u[h]=n?o.getPixelForDecimal(.5):o.getPixelForValue(i[h]),g=u[c]=n?a.getBasePixel():a.getPixelForValue(i[c]);u.skip=isNaN(f)||isNaN(g),l&&(u.options=r||this.resolveDataElementOptions(d,e.active?\"active\":s),n&&(u.options.radius=0)),this.updateElement(e,d,u,s)}}resolveDataElementOptions(t,e){const i=this.getParsed(t);let s=super.resolveDataElementOptions(t,e);s.$shared&&(s=Object.assign({},s,{$shared:!1}));const n=s.radius;return\"active\"!==e&&(s.radius=0),s.radius+=l(i&&i._custom,n),s}},DoughnutController:jn,LineController:class extends Ns{static id=\"line\";static defaults={datasetElementType:\"line\",dataElementType:\"point\",showLine:!0,spanGaps:!1};static overrides={scales:{_index_:{type:\"category\"},_value_:{type:\"linear\"}}};initialize(){this.enableOptionSharing=!0,this.supportsDecimation=!0,super.initialize()}update(t){const e=this._cachedMeta,{dataset:i,data:s=[],_dataset:n}=e,o=this.chart._animationsDisabled;let{start:a,count:r}=pt(e,s,o);this._drawStart=a,this._drawCount=r,mt(e)&&(a=0,r=s.length),i._chart=this.chart,i._datasetIndex=this.index,i._decimated=!!n._decimated,i.points=s;const l=this.resolveDatasetElementOptions(t);this.options.showLine||(l.borderWidth=0),l.segment=this.options.segment,this.updateElement(i,void 0,{animated:!o,options:l},t),this.updateElements(s,a,r,t)}updateElements(t,e,i,n){const o=\"reset\"===n,{iScale:a,vScale:r,_stacked:l,_dataset:h}=this._cachedMeta,{sharedOptions:c,includeOptions:d}=this._getSharedOptions(e,n),u=a.axis,f=r.axis,{spanGaps:g,segment:p}=this.options,m=N(g)?g:Number.POSITIVE_INFINITY,b=this.chart._animationsDisabled||o||\"none\"===n,x=e+i,_=t.length;let y=e>0&&this.getParsed(e-1);for(let i=0;i<_;++i){const g=t[i],_=b?g:{};if(i<e||i>=x){_.skip=!0;continue}const v=this.getParsed(i),M=s(v[f]),w=_[u]=a.getPixelForValue(v[u],i),k=_[f]=o||M?r.getBasePixel():r.getPixelForValue(l?this.applyStack(r,v,l):v[f],i);_.skip=isNaN(w)||isNaN(k)||M,_.stop=i>0&&Math.abs(v[u]-y[u])>m,p&&(_.parsed=v,_.raw=h.data[i]),d&&(_.options=c||this.resolveDataElementOptions(i,g.active?\"active\":n)),b||this.updateElement(g,i,_,n),y=v}}getMaxOverflow(){const t=this._cachedMeta,e=t.dataset,i=e.options&&e.options.borderWidth||0,s=t.data||[];if(!s.length)return i;const n=s[0].size(this.resolveDataElementOptions(0)),o=s[s.length-1].size(this.resolveDataElementOptions(s.length-1));return Math.max(i,n,o)\/2}draw(){const t=this._cachedMeta;t.dataset.updateControlPoints(this.chart.chartArea,t.iScale.axis),super.draw()}},PieController:class extends jn{static id=\"pie\";static defaults={cutout:0,rotation:0,circumference:360,radius:\"100%\"}},PolarAreaController:$n,RadarController:class extends Ns{static id=\"radar\";static defaults={datasetElementType:\"line\",dataElementType:\"point\",indexAxis:\"r\",showLine:!0,elements:{line:{fill:\"start\"}}};static overrides={aspectRatio:1,scales:{r:{type:\"radialLinear\"}}};getLabelAndValue(t){const e=this._cachedMeta.vScale,i=this.getParsed(t);return{label:e.getLabels()[t],value:\"\"+e.getLabelForValue(i[e.axis])}}parseObjectData(t,e,i,s){return ii.bind(this)(t,e,i,s)}update(t){const e=this._cachedMeta,i=e.dataset,s=e.data||[],n=e.iScale.getLabels();if(i.points=s,\"resize\"!==t){const e=this.resolveDatasetElementOptions(t);this.options.showLine||(e.borderWidth=0);const o={_loop:!0,_fullLoop:n.length===s.length,options:e};this.updateElement(i,void 0,o,t)}this.updateElements(s,0,s.length,t)}updateElements(t,e,i,s){const n=this._cachedMeta.rScale,o=\"reset\"===s;for(let a=e;a<e+i;a++){const e=t[a],i=this.resolveDataElementOptions(a,e.active?\"active\":s),r=n.getPointPositionForValue(a,this.getParsed(a).r),l=o?n.xCenter:r.x,h=o?n.yCenter:r.y,c={x:l,y:h,angle:r.angle,skip:isNaN(l)||isNaN(h),options:i};this.updateElement(e,a,c,s)}}},ScatterController:class extends Ns{static id=\"scatter\";static defaults={datasetElementType:!1,dataElementType:\"point\",showLine:!1,fill:!1};static overrides={interaction:{mode:\"point\"},scales:{x:{type:\"linear\"},y:{type:\"linear\"}}};getLabelAndValue(t){const e=this._cachedMeta,i=this.chart.data.labels||[],{xScale:s,yScale:n}=e,o=this.getParsed(t),a=s.getLabelForValue(o.x),r=n.getLabelForValue(o.y);return{label:i[t]||\"\",value:\"(\"+a+\", \"+r+\")\"}}update(t){const e=this._cachedMeta,{data:i=[]}=e,s=this.chart._animationsDisabled;let{start:n,count:o}=pt(e,i,s);if(this._drawStart=n,this._drawCount=o,mt(e)&&(n=0,o=i.length),this.options.showLine){this.datasetElementType||this.addElements();const{dataset:n,_dataset:o}=e;n._chart=this.chart,n._datasetIndex=this.index,n._decimated=!!o._decimated,n.points=i;const a=this.resolveDatasetElementOptions(t);a.segment=this.options.segment,this.updateElement(n,void 0,{animated:!s,options:a},t)}else this.datasetElementType&&(delete e.dataset,this.datasetElementType=!1);this.updateElements(i,n,o,t)}addElements(){const{showLine:t}=this.options;!this.datasetElementType&&t&&(this.datasetElementType=this.chart.registry.getElement(\"line\")),super.addElements()}updateElements(t,e,i,n){const o=\"reset\"===n,{iScale:a,vScale:r,_stacked:l,_dataset:h}=this._cachedMeta,c=this.resolveDataElementOptions(e,n),d=this.getSharedOptions(c),u=this.includeOptions(n,d),f=a.axis,g=r.axis,{spanGaps:p,segment:m}=this.options,b=N(p)?p:Number.POSITIVE_INFINITY,x=this.chart._animationsDisabled||o||\"none\"===n;let _=e>0&&this.getParsed(e-1);for(let c=e;c<e+i;++c){const e=t[c],i=this.getParsed(c),p=x?e:{},y=s(i[g]),v=p[f]=a.getPixelForValue(i[f],c),M=p[g]=o||y?r.getBasePixel():r.getPixelForValue(l?this.applyStack(r,i,l):i[g],c);p.skip=isNaN(v)||isNaN(M)||y,p.stop=c>0&&Math.abs(i[f]-_[f])>b,m&&(p.parsed=i,p.raw=h.data[c]),u&&(p.options=d||this.resolveDataElementOptions(c,e.active?\"active\":n)),x||this.updateElement(e,c,p,n),_=i}this.updateSharedOptions(d,n,c)}getMaxOverflow(){const t=this._cachedMeta,e=t.data||[];if(!this.options.showLine){let t=0;for(let i=e.length-1;i>=0;--i)t=Math.max(t,e[i].size(this.resolveDataElementOptions(i))\/2);return t>0&&t}const i=t.dataset,s=i.options&&i.options.borderWidth||0;if(!e.length)return s;const n=e[0].size(this.resolveDataElementOptions(0)),o=e[e.length-1].size(this.resolveDataElementOptions(e.length-1));return Math.max(s,n,o)\/2}}});function Un(t,e,i,s){const n=vi(t.options.borderRadius,[\"outerStart\",\"outerEnd\",\"innerStart\",\"innerEnd\"]);const o=(i-e)\/2,a=Math.min(o,s*e\/2),r=t=>{const e=(i-Math.min(o,t))*s\/2;return J(t,0,Math.min(o,e))};return{outerStart:r(n.outerStart),outerEnd:r(n.outerEnd),innerStart:J(n.innerStart,0,a),innerEnd:J(n.innerEnd,0,a)}}function Xn(t,e,i,s){return{x:i+t*Math.cos(e),y:s+t*Math.sin(e)}}function qn(t,e,i,s,n,o){const{x:a,y:r,startAngle:l,pixelMargin:h,innerRadius:c}=e,d=Math.max(e.outerRadius+s+i-h,0),u=c>0?c+s+i+h:0;let f=0;const g=n-l;if(s){const t=((c>0?c-s:0)+(d>0?d-s:0))\/2;f=(g-(0!==t?g*t\/(t+s):g))\/2}const p=(g-Math.max(.001,g*d-i\/C)\/d)\/2,m=l+p+f,b=n-p-f,{outerStart:x,outerEnd:_,innerStart:y,innerEnd:v}=Un(e,u,d,b-m),M=d-x,w=d-_,k=m+x\/M,S=b-_\/w,P=u+y,D=u+v,O=m+y\/P,A=b-v\/D;if(t.beginPath(),o){const e=(k+S)\/2;if(t.arc(a,r,d,k,e),t.arc(a,r,d,e,S),_>0){const e=Xn(w,S,a,r);t.arc(e.x,e.y,_,S,b+E)}const i=Xn(D,b,a,r);if(t.lineTo(i.x,i.y),v>0){const e=Xn(D,A,a,r);t.arc(e.x,e.y,v,b+E,A+Math.PI)}const s=(b-v\/u+(m+y\/u))\/2;if(t.arc(a,r,u,b-v\/u,s,!0),t.arc(a,r,u,s,m+y\/u,!0),y>0){const e=Xn(P,O,a,r);t.arc(e.x,e.y,y,O+Math.PI,m-E)}const n=Xn(M,m,a,r);if(t.lineTo(n.x,n.y),x>0){const e=Xn(M,k,a,r);t.arc(e.x,e.y,x,m-E,k)}}else{t.moveTo(a,r);const e=Math.cos(k)*d+a,i=Math.sin(k)*d+r;t.lineTo(e,i);const s=Math.cos(S)*d+a,n=Math.sin(S)*d+r;t.lineTo(s,n)}t.closePath()}function Kn(t,e,i,s,n){const{fullCircles:o,startAngle:a,circumference:r,options:l}=e,{borderWidth:h,borderJoinStyle:c,borderDash:d,borderDashOffset:u}=l,f=\"inner\"===l.borderAlign;if(!h)return;t.setLineDash(d||[]),t.lineDashOffset=u,f?(t.lineWidth=2*h,t.lineJoin=c||\"round\"):(t.lineWidth=h,t.lineJoin=c||\"bevel\");let g=e.endAngle;if(o){qn(t,e,i,s,g,n);for(let e=0;e<o;++e)t.stroke();isNaN(r)||(g=a+(r%O||O))}f&&function(t,e,i){const{startAngle:s,pixelMargin:n,x:o,y:a,outerRadius:r,innerRadius:l}=e;let h=n\/r;t.beginPath(),t.arc(o,a,r,s-h,i+h),l>n?(h=n\/l,t.arc(o,a,l,i+h,s-h,!0)):t.arc(o,a,n,i+E,s-E),t.closePath(),t.clip()}(t,e,g),o||(qn(t,e,i,s,g,n),t.stroke())}function Gn(t,e,i=e){t.lineCap=l(i.borderCapStyle,e.borderCapStyle),t.setLineDash(l(i.borderDash,e.borderDash)),t.lineDashOffset=l(i.borderDashOffset,e.borderDashOffset),t.lineJoin=l(i.borderJoinStyle,e.borderJoinStyle),t.lineWidth=l(i.borderWidth,e.borderWidth),t.strokeStyle=l(i.borderColor,e.borderColor)}function Zn(t,e,i){t.lineTo(i.x,i.y)}function Jn(t,e,i={}){const s=t.length,{start:n=0,end:o=s-1}=i,{start:a,end:r}=e,l=Math.max(n,a),h=Math.min(o,r),c=n<a&&o<a||n>r&&o>r;return{count:s,start:l,loop:e.loop,ilen:h<l&&!c?s+h-l:h-l}}function Qn(t,e,i,s){const{points:n,options:o}=e,{count:a,start:r,loop:l,ilen:h}=Jn(n,i,s),c=function(t){return t.stepped?Fe:t.tension||\"monotone\"===t.cubicInterpolationMode?Ve:Zn}(o);let d,u,f,{move:g=!0,reverse:p}=s||{};for(d=0;d<=h;++d)u=n[(r+(p?h-d:d))%a],u.skip||(g?(t.moveTo(u.x,u.y),g=!1):c(t,f,u,p,o.stepped),f=u);return l&&(u=n[(r+(p?h:0))%a],c(t,f,u,p,o.stepped)),!!l}function to(t,e,i,s){const n=e.points,{count:o,start:a,ilen:r}=Jn(n,i,s),{move:l=!0,reverse:h}=s||{};let c,d,u,f,g,p,m=0,b=0;const x=t=>(a+(h?r-t:t))%o,_=()=>{f!==g&&(t.lineTo(m,g),t.lineTo(m,f),t.lineTo(m,p))};for(l&&(d=n[x(0)],t.moveTo(d.x,d.y)),c=0;c<=r;++c){if(d=n[x(c)],d.skip)continue;const e=d.x,i=d.y,s=0|e;s===u?(i<f?f=i:i>g&&(g=i),m=(b*m+e)\/++b):(_(),t.lineTo(e,i),u=s,b=0,f=g=i),p=i}_()}function eo(t){const e=t.options,i=e.borderDash&&e.borderDash.length;return!(t._decimated||t._loop||e.tension||\"monotone\"===e.cubicInterpolationMode||e.stepped||i)?to:Qn}const io=\"function\"==typeof Path2D;function so(t,e,i,s){io&&!e.options.segment?function(t,e,i,s){let n=e._path;n||(n=e._path=new Path2D,e.path(n,i,s)&&n.closePath()),Gn(t,e.options),t.stroke(n)}(t,e,i,s):function(t,e,i,s){const{segments:n,options:o}=e,a=eo(e);for(const r of n)Gn(t,o,r.style),t.beginPath(),a(t,e,r,{start:i,end:i+s-1})&&t.closePath(),t.stroke()}(t,e,i,s)}class no extends Hs{static id=\"line\";static defaults={borderCapStyle:\"butt\",borderDash:[],borderDashOffset:0,borderJoinStyle:\"miter\",borderWidth:3,capBezierPoints:!0,cubicInterpolationMode:\"default\",fill:!1,spanGaps:!1,stepped:!1,tension:0};static defaultRoutes={backgroundColor:\"backgroundColor\",borderColor:\"borderColor\"};static descriptors={_scriptable:!0,_indexable:t=>\"borderDash\"!==t&&\"fill\"!==t};constructor(t){super(),this.animated=!0,this.options=void 0,this._chart=void 0,this._loop=void 0,this._fullLoop=void 0,this._path=void 0,this._points=void 0,this._segments=void 0,this._decimated=!1,this._pointsUpdated=!1,this._datasetIndex=void 0,t&&Object.assign(this,t)}updateControlPoints(t,e){const i=this.options;if((i.tension||\"monotone\"===i.cubicInterpolationMode)&&!i.stepped&&!this._pointsUpdated){const s=i.spanGaps?this._loop:this._fullLoop;hi(this._points,i,t,s,e),this._pointsUpdated=!0}}set points(t){this._points=t,delete this._segments,delete this._path,this._pointsUpdated=!1}get points(){return this._points}get segments(){return this._segments||(this._segments=zi(this,this.options.segment))}first(){const t=this.segments,e=this.points;return t.length&&e[t[0].start]}last(){const t=this.segments,e=this.points,i=t.length;return i&&e[t[i-1].end]}interpolate(t,e){const i=this.options,s=t[e],n=this.points,o=Ii(this,{property:e,start:s,end:s});if(!o.length)return;const a=[],r=function(t){return t.stepped?pi:t.tension||\"monotone\"===t.cubicInterpolationMode?mi:gi}(i);let l,h;for(l=0,h=o.length;l<h;++l){const{start:h,end:c}=o[l],d=n[h],u=n[c];if(d===u){a.push(d);continue}const f=r(d,u,Math.abs((s-d[e])\/(u[e]-d[e])),i.stepped);f[e]=t[e],a.push(f)}return 1===a.length?a[0]:a}pathSegment(t,e,i){return eo(this)(t,this,e,i)}path(t,e,i){const s=this.segments,n=eo(this);let o=this._loop;e=e||0,i=i||this.points.length-e;for(const a of s)o&=n(t,this,a,{start:e,end:e+i-1});return!!o}draw(t,e,i,s){const n=this.options||{};(this.points||[]).length&&n.borderWidth&&(t.save(),so(t,this,i,s),t.restore()),this.animated&&(this._pointsUpdated=!1,this._path=void 0)}}function oo(t,e,i,s){const n=t.options,{[i]:o}=t.getProps([i],s);return Math.abs(e-o)<n.radius+n.hitRadius}function ao(t,e){const{x:i,y:s,base:n,width:o,height:a}=t.getProps([\"x\",\"y\",\"base\",\"width\",\"height\"],e);let r,l,h,c,d;return t.horizontal?(d=a\/2,r=Math.min(i,n),l=Math.max(i,n),h=s-d,c=s+d):(d=o\/2,r=i-d,l=i+d,h=Math.min(s,n),c=Math.max(s,n)),{left:r,top:h,right:l,bottom:c}}function ro(t,e,i,s){return t?0:J(e,i,s)}function lo(t){const e=ao(t),i=e.right-e.left,s=e.bottom-e.top,n=function(t,e,i){const s=t.options.borderWidth,n=t.borderSkipped,o=Mi(s);return{t:ro(n.top,o.top,0,i),r:ro(n.right,o.right,0,e),b:ro(n.bottom,o.bottom,0,i),l:ro(n.left,o.left,0,e)}}(t,i\/2,s\/2),a=function(t,e,i){const{enableBorderRadius:s}=t.getProps([\"enableBorderRadius\"]),n=t.options.borderRadius,a=wi(n),r=Math.min(e,i),l=t.borderSkipped,h=s||o(n);return{topLeft:ro(!h||l.top||l.left,a.topLeft,0,r),topRight:ro(!h||l.top||l.right,a.topRight,0,r),bottomLeft:ro(!h||l.bottom||l.left,a.bottomLeft,0,r),bottomRight:ro(!h||l.bottom||l.right,a.bottomRight,0,r)}}(t,i\/2,s\/2);return{outer:{x:e.left,y:e.top,w:i,h:s,radius:a},inner:{x:e.left+n.l,y:e.top+n.t,w:i-n.l-n.r,h:s-n.t-n.b,radius:{topLeft:Math.max(0,a.topLeft-Math.max(n.t,n.l)),topRight:Math.max(0,a.topRight-Math.max(n.t,n.r)),bottomLeft:Math.max(0,a.bottomLeft-Math.max(n.b,n.l)),bottomRight:Math.max(0,a.bottomRight-Math.max(n.b,n.r))}}}}function ho(t,e,i,s){const n=null===e,o=null===i,a=t&&!(n&&o)&&ao(t,s);return a&&(n||tt(e,a.left,a.right))&&(o||tt(i,a.top,a.bottom))}function co(t,e){t.rect(e.x,e.y,e.w,e.h)}function uo(t,e,i={}){const s=t.x!==i.x?-e:0,n=t.y!==i.y?-e:0,o=(t.x+t.w!==i.x+i.w?e:0)-s,a=(t.y+t.h!==i.y+i.h?e:0)-n;return{x:t.x+s,y:t.y+n,w:t.w+o,h:t.h+a,radius:t.radius}}var fo=Object.freeze({__proto__:null,ArcElement:class extends Hs{static id=\"arc\";static defaults={borderAlign:\"center\",borderColor:\"#fff\",borderDash:[],borderDashOffset:0,borderJoinStyle:void 0,borderRadius:0,borderWidth:2,offset:0,spacing:0,angle:void 0,circular:!0};static defaultRoutes={backgroundColor:\"backgroundColor\"};static descriptors={_scriptable:!0,_indexable:t=>\"borderDash\"!==t};circumference;endAngle;fullCircles;innerRadius;outerRadius;pixelMargin;startAngle;constructor(t){super(),this.options=void 0,this.circumference=void 0,this.startAngle=void 0,this.endAngle=void 0,this.innerRadius=void 0,this.outerRadius=void 0,this.pixelMargin=0,this.fullCircles=0,t&&Object.assign(this,t)}inRange(t,e,i){const s=this.getProps([\"x\",\"y\"],i),{angle:n,distance:o}=X(s,{x:t,y:e}),{startAngle:a,endAngle:r,innerRadius:h,outerRadius:c,circumference:d}=this.getProps([\"startAngle\",\"endAngle\",\"innerRadius\",\"outerRadius\",\"circumference\"],i),u=(this.options.spacing+this.options.borderWidth)\/2,f=l(d,r-a),g=Z(n,a,r)&&a!==r,p=f>=O||g,m=tt(o,h+u,c+u);return p&&m}getCenterPoint(t){const{x:e,y:i,startAngle:s,endAngle:n,innerRadius:o,outerRadius:a}=this.getProps([\"x\",\"y\",\"startAngle\",\"endAngle\",\"innerRadius\",\"outerRadius\"],t),{offset:r,spacing:l}=this.options,h=(s+n)\/2,c=(o+a+l+r)\/2;return{x:e+Math.cos(h)*c,y:i+Math.sin(h)*c}}tooltipPosition(t){return this.getCenterPoint(t)}draw(t){const{options:e,circumference:i}=this,s=(e.offset||0)\/4,n=(e.spacing||0)\/2,o=e.circular;if(this.pixelMargin=\"inner\"===e.borderAlign?.33:0,this.fullCircles=i>O?Math.floor(i\/O):0,0===i||this.innerRadius<0||this.outerRadius<0)return;t.save();const a=(this.startAngle+this.endAngle)\/2;t.translate(Math.cos(a)*s,Math.sin(a)*s);const r=s*(1-Math.sin(Math.min(C,i||0)));t.fillStyle=e.backgroundColor,t.strokeStyle=e.borderColor,function(t,e,i,s,n){const{fullCircles:o,startAngle:a,circumference:r}=e;let l=e.endAngle;if(o){qn(t,e,i,s,l,n);for(let e=0;e<o;++e)t.fill();isNaN(r)||(l=a+(r%O||O))}qn(t,e,i,s,l,n),t.fill()}(t,this,r,n,o),Kn(t,this,r,n,o),t.restore()}},BarElement:class extends Hs{static id=\"bar\";static defaults={borderSkipped:\"start\",borderWidth:0,borderRadius:0,inflateAmount:\"auto\",pointStyle:void 0};static defaultRoutes={backgroundColor:\"backgroundColor\",borderColor:\"borderColor\"};constructor(t){super(),this.options=void 0,this.horizontal=void 0,this.base=void 0,this.width=void 0,this.height=void 0,this.inflateAmount=void 0,t&&Object.assign(this,t)}draw(t){const{inflateAmount:e,options:{borderColor:i,backgroundColor:s}}=this,{inner:n,outer:o}=lo(this),a=(r=o.radius).topLeft||r.topRight||r.bottomLeft||r.bottomRight?He:co;var r;t.save(),o.w===n.w&&o.h===n.h||(t.beginPath(),a(t,uo(o,e,n)),t.clip(),a(t,uo(n,-e,o)),t.fillStyle=i,t.fill(\"evenodd\")),t.beginPath(),a(t,uo(n,e)),t.fillStyle=s,t.fill(),t.restore()}inRange(t,e,i){return ho(this,t,e,i)}inXRange(t,e){return ho(this,t,null,e)}inYRange(t,e){return ho(this,null,t,e)}getCenterPoint(t){const{x:e,y:i,base:s,horizontal:n}=this.getProps([\"x\",\"y\",\"base\",\"horizontal\"],t);return{x:n?(e+s)\/2:e,y:n?i:(i+s)\/2}}getRange(t){return\"x\"===t?this.width\/2:this.height\/2}},LineElement:no,PointElement:class extends Hs{static id=\"point\";parsed;skip;stop;static defaults={borderWidth:1,hitRadius:1,hoverBorderWidth:1,hoverRadius:4,pointStyle:\"circle\",radius:3,rotation:0};static defaultRoutes={backgroundColor:\"backgroundColor\",borderColor:\"borderColor\"};constructor(t){super(),this.options=void 0,this.parsed=void 0,this.skip=void 0,this.stop=void 0,t&&Object.assign(this,t)}inRange(t,e,i){const s=this.options,{x:n,y:o}=this.getProps([\"x\",\"y\"],i);return Math.pow(t-n,2)+Math.pow(e-o,2)<Math.pow(s.hitRadius+s.radius,2)}inXRange(t,e){return oo(this,t,\"x\",e)}inYRange(t,e){return oo(this,t,\"y\",e)}getCenterPoint(t){const{x:e,y:i}=this.getProps([\"x\",\"y\"],t);return{x:e,y:i}}size(t){let e=(t=t||this.options||{}).radius||0;e=Math.max(e,e&&t.hoverRadius||0);return 2*(e+(e&&t.borderWidth||0))}draw(t,e){const i=this.options;this.skip||i.radius<.1||!Re(this,e,this.size(i)\/2)||(t.strokeStyle=i.borderColor,t.lineWidth=i.borderWidth,t.fillStyle=i.backgroundColor,Le(t,i,this.x,this.y))}getRange(){const t=this.options||{};return t.radius+t.hitRadius}}});function go(t,e,i,s){const n=t.indexOf(e);if(-1===n)return((t,e,i,s)=>(\"string\"==typeof e?(i=t.push(e)-1,s.unshift({index:i,label:e})):isNaN(e)&&(i=null),i))(t,e,i,s);return n!==t.lastIndexOf(e)?i:n}function po(t){const e=this.getLabels();return t>=0&&t<e.length?e[t]:t}function mo(t,e,{horizontal:i,minRotation:s}){const n=$(s),o=(i?Math.sin(n):Math.cos(n))||.001,a=.75*e*(\"\"+t).length;return Math.min(e\/o,a)}class bo extends Js{constructor(t){super(t),this.start=void 0,this.end=void 0,this._startValue=void 0,this._endValue=void 0,this._valueRange=0}parse(t,e){return s(t)||(\"number\"==typeof t||t instanceof Number)&&!isFinite(+t)?null:+t}handleTickRangeOptions(){const{beginAtZero:t}=this.options,{minDefined:e,maxDefined:i}=this.getUserBounds();let{min:s,max:n}=this;const o=t=>s=e?s:t,a=t=>n=i?n:t;if(t){const t=F(s),e=F(n);t<0&&e<0?a(0):t>0&&e>0&&o(0)}if(s===n){let e=0===n?1:Math.abs(.05*n);a(n+e),t||o(s-e)}this.min=s,this.max=n}getTickLimit(){const t=this.options.ticks;let e,{maxTicksLimit:i,stepSize:s}=t;return s?(e=Math.ceil(this.max\/s)-Math.floor(this.min\/s)+1,e>1e3&&(console.warn(`scales.${this.id}.ticks.stepSize: ${s} would result generating up to ${e} ticks. Limiting to 1000.`),e=1e3)):(e=this.computeTickLimit(),i=i||11),i&&(e=Math.min(i,e)),e}computeTickLimit(){return Number.POSITIVE_INFINITY}buildTicks(){const t=this.options,e=t.ticks;let i=this.getTickLimit();i=Math.max(2,i);const n=function(t,e){const i=[],{bounds:n,step:o,min:a,max:r,precision:l,count:h,maxTicks:c,maxDigits:d,includeBounds:u}=t,f=o||1,g=c-1,{min:p,max:m}=e,b=!s(a),x=!s(r),_=!s(h),y=(m-p)\/(d+1);let v,M,w,k,S=B((m-p)\/g\/f)*f;if(S<1e-14&&!b&&!x)return[{value:p},{value:m}];k=Math.ceil(m\/S)-Math.floor(p\/S),k>g&&(S=B(k*S\/g\/f)*f),s(l)||(v=Math.pow(10,l),S=Math.ceil(S*v)\/v),\"ticks\"===n?(M=Math.floor(p\/S)*S,w=Math.ceil(m\/S)*S):(M=p,w=m),b&&x&&o&&H((r-a)\/o,S\/1e3)?(k=Math.round(Math.min((r-a)\/S,c)),S=(r-a)\/k,M=a,w=r):_?(M=b?a:M,w=x?r:w,k=h-1,S=(w-M)\/k):(k=(w-M)\/S,k=V(k,Math.round(k),S\/1e3)?Math.round(k):Math.ceil(k));const P=Math.max(U(S),U(M));v=Math.pow(10,s(l)?P:l),M=Math.round(M*v)\/v,w=Math.round(w*v)\/v;let D=0;for(b&&(u&&M!==a?(i.push({value:a}),M<a&&D++,V(Math.round((M+D*S)*v)\/v,a,mo(a,y,t))&&D++):M<a&&D++);D<k;++D){const t=Math.round((M+D*S)*v)\/v;if(x&&t>r)break;i.push({value:t})}return x&&u&&w!==r?i.length&&V(i[i.length-1].value,r,mo(r,y,t))?i[i.length-1].value=r:i.push({value:r}):x&&w!==r||i.push({value:w}),i}({maxTicks:i,bounds:t.bounds,min:t.min,max:t.max,precision:e.precision,step:e.stepSize,count:e.count,maxDigits:this._maxDigits(),horizontal:this.isHorizontal(),minRotation:e.minRotation||0,includeBounds:!1!==e.includeBounds},this._range||this);return\"ticks\"===t.bounds&&j(n,this,\"value\"),t.reverse?(n.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),n}configure(){const t=this.ticks;let e=this.min,i=this.max;if(super.configure(),this.options.offset&&t.length){const s=(i-e)\/Math.max(t.length-1,1)\/2;e-=s,i+=s}this._startValue=e,this._endValue=i,this._valueRange=i-e}getLabelForValue(t){return ne(t,this.chart.options.locale,this.options.ticks.format)}}class xo extends bo{static id=\"linear\";static defaults={ticks:{callback:ae.formatters.numeric}};determineDataLimits(){const{min:t,max:e}=this.getMinMax(!0);this.min=a(t)?t:0,this.max=a(e)?e:1,this.handleTickRangeOptions()}computeTickLimit(){const t=this.isHorizontal(),e=t?this.width:this.height,i=$(this.options.ticks.minRotation),s=(t?Math.sin(i):Math.cos(i))||.001,n=this._resolveTickFontOptions(0);return Math.ceil(e\/Math.min(40,n.lineHeight\/s))}getPixelForValue(t){return null===t?NaN:this.getPixelForDecimal((t-this._startValue)\/this._valueRange)}getValueForPixel(t){return this._startValue+this.getDecimalForPixel(t)*this._valueRange}}const _o=t=>Math.floor(z(t)),yo=(t,e)=>Math.pow(10,_o(t)+e);function vo(t){return 1===t\/Math.pow(10,_o(t))}function Mo(t,e,i){const s=Math.pow(10,i),n=Math.floor(t\/s);return Math.ceil(e\/s)-n}function wo(t,{min:e,max:i}){e=r(t.min,e);const s=[],n=_o(e);let o=function(t,e){let i=_o(e-t);for(;Mo(t,e,i)>10;)i++;for(;Mo(t,e,i)<10;)i--;return Math.min(i,_o(t))}(e,i),a=o<0?Math.pow(10,Math.abs(o)):1;const l=Math.pow(10,o),h=n>o?Math.pow(10,n):0,c=Math.round((e-h)*a)\/a,d=Math.floor((e-h)\/l\/10)*l*10;let u=Math.floor((c-d)\/Math.pow(10,o)),f=r(t.min,Math.round((h+d+u*Math.pow(10,o))*a)\/a);for(;f<i;)s.push({value:f,major:vo(f),significand:u}),u>=10?u=u<15?15:20:u++,u>=20&&(o++,u=2,a=o>=0?1:a),f=Math.round((h+d+u*Math.pow(10,o))*a)\/a;const g=r(t.max,f);return s.push({value:g,major:vo(g),significand:u}),s}class ko extends Js{static id=\"logarithmic\";static defaults={ticks:{callback:ae.formatters.logarithmic,major:{enabled:!0}}};constructor(t){super(t),this.start=void 0,this.end=void 0,this._startValue=void 0,this._valueRange=0}parse(t,e){const i=bo.prototype.parse.apply(this,[t,e]);if(0!==i)return a(i)&&i>0?i:null;this._zero=!0}determineDataLimits(){const{min:t,max:e}=this.getMinMax(!0);this.min=a(t)?Math.max(0,t):null,this.max=a(e)?Math.max(0,e):null,this.options.beginAtZero&&(this._zero=!0),this._zero&&this.min!==this._suggestedMin&&!a(this._userMin)&&(this.min=t===yo(this.min,0)?yo(this.min,-1):yo(this.min,0)),this.handleTickRangeOptions()}handleTickRangeOptions(){const{minDefined:t,maxDefined:e}=this.getUserBounds();let i=this.min,s=this.max;const n=e=>i=t?i:e,o=t=>s=e?s:t;i===s&&(i<=0?(n(1),o(10)):(n(yo(i,-1)),o(yo(s,1)))),i<=0&&n(yo(s,-1)),s<=0&&o(yo(i,1)),this.min=i,this.max=s}buildTicks(){const t=this.options,e=wo({min:this._userMin,max:this._userMax},this);return\"ticks\"===t.bounds&&j(e,this,\"value\"),t.reverse?(e.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),e}getLabelForValue(t){return void 0===t?\"0\":ne(t,this.chart.options.locale,this.options.ticks.format)}configure(){const t=this.min;super.configure(),this._startValue=z(t),this._valueRange=z(this.max)-z(t)}getPixelForValue(t){return void 0!==t&&0!==t||(t=this.min),null===t||isNaN(t)?NaN:this.getPixelForDecimal(t===this.min?0:(z(t)-this._startValue)\/this._valueRange)}getValueForPixel(t){const e=this.getDecimalForPixel(t);return Math.pow(10,this._startValue+e*this._valueRange)}}function So(t){const e=t.ticks;if(e.display&&t.display){const t=ki(e.backdropPadding);return l(e.font&&e.font.size,ue.font.size)+t.height}return 0}function Po(t,e,i,s,n){return t===s||t===n?{start:e-i\/2,end:e+i\/2}:t<s||t>n?{start:e-i,end:e}:{start:e,end:e+i}}function Do(t){const e={l:t.left+t._padding.left,r:t.right-t._padding.right,t:t.top+t._padding.top,b:t.bottom-t._padding.bottom},i=Object.assign({},e),s=[],o=[],a=t._pointLabels.length,r=t.options.pointLabels,l=r.centerPointLabels?C\/a:0;for(let u=0;u<a;u++){const a=r.setContext(t.getPointLabelContext(u));o[u]=a.padding;const f=t.getPointPosition(u,t.drawingArea+o[u],l),g=Si(a.font),p=(h=t.ctx,c=g,d=n(d=t._pointLabels[u])?d:[d],{w:Oe(h,c.string,d),h:d.length*c.lineHeight});s[u]=p;const m=G(t.getIndexAngle(u)+l),b=Math.round(Y(m));Co(i,e,m,Po(b,f.x,p.w,0,180),Po(b,f.y,p.h,90,270))}var h,c,d;t.setCenterPoint(e.l-i.l,i.r-e.r,e.t-i.t,i.b-e.b),t._pointLabelItems=function(t,e,i){const s=[],n=t._pointLabels.length,o=t.options,{centerPointLabels:a,display:r}=o.pointLabels,l={extra:So(o)\/2,additionalAngle:a?C\/n:0};let h;for(let o=0;o<n;o++){l.padding=i[o],l.size=e[o];const n=Oo(t,o,l);s.push(n),\"auto\"===r&&(n.visible=Ao(n,h),n.visible&&(h=n))}return s}(t,s,o)}function Co(t,e,i,s,n){const o=Math.abs(Math.sin(i)),a=Math.abs(Math.cos(i));let r=0,l=0;s.start<e.l?(r=(e.l-s.start)\/o,t.l=Math.min(t.l,e.l-r)):s.end>e.r&&(r=(s.end-e.r)\/o,t.r=Math.max(t.r,e.r+r)),n.start<e.t?(l=(e.t-n.start)\/a,t.t=Math.min(t.t,e.t-l)):n.end>e.b&&(l=(n.end-e.b)\/a,t.b=Math.max(t.b,e.b+l))}function Oo(t,e,i){const s=t.drawingArea,{extra:n,additionalAngle:o,padding:a,size:r}=i,l=t.getPointPosition(e,s+n+a,o),h=Math.round(Y(G(l.angle+E))),c=function(t,e,i){90===i||270===i?t-=e\/2:(i>270||i<90)&&(t-=e);return t}(l.y,r.h,h),d=function(t){if(0===t||180===t)return\"center\";if(t<180)return\"left\";return\"right\"}(h),u=function(t,e,i){\"right\"===i?t-=e:\"center\"===i&&(t-=e\/2);return t}(l.x,r.w,d);return{visible:!0,x:l.x,y:c,textAlign:d,left:u,top:c,right:u+r.w,bottom:c+r.h}}function Ao(t,e){if(!e)return!0;const{left:i,top:s,right:n,bottom:o}=t;return!(Re({x:i,y:s},e)||Re({x:i,y:o},e)||Re({x:n,y:s},e)||Re({x:n,y:o},e))}function To(t,e,i){const{left:n,top:o,right:a,bottom:r}=i,{backdropColor:l}=e;if(!s(l)){const i=wi(e.borderRadius),s=ki(e.backdropPadding);t.fillStyle=l;const h=n-s.left,c=o-s.top,d=a-n+s.width,u=r-o+s.height;Object.values(i).some((t=>0!==t))?(t.beginPath(),He(t,{x:h,y:c,w:d,h:u,radius:i}),t.fill()):t.fillRect(h,c,d,u)}}function Lo(t,e,i,s){const{ctx:n}=t;if(i)n.arc(t.xCenter,t.yCenter,e,0,O);else{let i=t.getPointPosition(0,e);n.moveTo(i.x,i.y);for(let o=1;o<s;o++)i=t.getPointPosition(o,e),n.lineTo(i.x,i.y)}}class Eo extends bo{static id=\"radialLinear\";static defaults={display:!0,animate:!0,position:\"chartArea\",angleLines:{display:!0,lineWidth:1,borderDash:[],borderDashOffset:0},grid:{circular:!1},startAngle:0,ticks:{showLabelBackdrop:!0,callback:ae.formatters.numeric},pointLabels:{backdropColor:void 0,backdropPadding:2,display:!0,font:{size:10},callback:t=>t,padding:5,centerPointLabels:!1}};static defaultRoutes={\"angleLines.color\":\"borderColor\",\"pointLabels.color\":\"color\",\"ticks.color\":\"color\"};static descriptors={angleLines:{_fallback:\"grid\"}};constructor(t){super(t),this.xCenter=void 0,this.yCenter=void 0,this.drawingArea=void 0,this._pointLabels=[],this._pointLabelItems=[]}setDimensions(){const t=this._padding=ki(So(this.options)\/2),e=this.width=this.maxWidth-t.width,i=this.height=this.maxHeight-t.height;this.xCenter=Math.floor(this.left+e\/2+t.left),this.yCenter=Math.floor(this.top+i\/2+t.top),this.drawingArea=Math.floor(Math.min(e,i)\/2)}determineDataLimits(){const{min:t,max:e}=this.getMinMax(!1);this.min=a(t)&&!isNaN(t)?t:0,this.max=a(e)&&!isNaN(e)?e:0,this.handleTickRangeOptions()}computeTickLimit(){return Math.ceil(this.drawingArea\/So(this.options))}generateTickLabels(t){bo.prototype.generateTickLabels.call(this,t),this._pointLabels=this.getLabels().map(((t,e)=>{const i=d(this.options.pointLabels.callback,[t,e],this);return i||0===i?i:\"\"})).filter(((t,e)=>this.chart.getDataVisibility(e)))}fit(){const t=this.options;t.display&&t.pointLabels.display?Do(this):this.setCenterPoint(0,0,0,0)}setCenterPoint(t,e,i,s){this.xCenter+=Math.floor((t-e)\/2),this.yCenter+=Math.floor((i-s)\/2),this.drawingArea-=Math.min(this.drawingArea\/2,Math.max(t,e,i,s))}getIndexAngle(t){return G(t*(O\/(this._pointLabels.length||1))+$(this.options.startAngle||0))}getDistanceFromCenterForValue(t){if(s(t))return NaN;const e=this.drawingArea\/(this.max-this.min);return this.options.reverse?(this.max-t)*e:(t-this.min)*e}getValueForDistanceFromCenter(t){if(s(t))return NaN;const e=t\/(this.drawingArea\/(this.max-this.min));return this.options.reverse?this.max-e:this.min+e}getPointLabelContext(t){const e=this._pointLabels||[];if(t>=0&&t<e.length){const i=e[t];return function(t,e,i){return Ci(t,{label:i,index:e,type:\"pointLabel\"})}(this.getContext(),t,i)}}getPointPosition(t,e,i=0){const s=this.getIndexAngle(t)-E+i;return{x:Math.cos(s)*e+this.xCenter,y:Math.sin(s)*e+this.yCenter,angle:s}}getPointPositionForValue(t,e){return this.getPointPosition(t,this.getDistanceFromCenterForValue(e))}getBasePosition(t){return this.getPointPositionForValue(t||0,this.getBaseValue())}getPointLabelPosition(t){const{left:e,top:i,right:s,bottom:n}=this._pointLabelItems[t];return{left:e,top:i,right:s,bottom:n}}drawBackground(){const{backgroundColor:t,grid:{circular:e}}=this.options;if(t){const i=this.ctx;i.save(),i.beginPath(),Lo(this,this.getDistanceFromCenterForValue(this._endValue),e,this._pointLabels.length),i.closePath(),i.fillStyle=t,i.fill(),i.restore()}}drawGrid(){const t=this.ctx,e=this.options,{angleLines:i,grid:s,border:n}=e,o=this._pointLabels.length;let a,r,l;if(e.pointLabels.display&&function(t,e){const{ctx:i,options:{pointLabels:s}}=t;for(let n=e-1;n>=0;n--){const e=t._pointLabelItems[n];if(!e.visible)continue;const o=s.setContext(t.getPointLabelContext(n));To(i,o,e);const a=Si(o.font),{x:r,y:l,textAlign:h}=e;Ne(i,t._pointLabels[n],r,l+a.lineHeight\/2,a,{color:o.color,textAlign:h,textBaseline:\"middle\"})}}(this,o),s.display&&this.ticks.forEach(((t,e)=>{if(0!==e||0===e&&this.min<0){r=this.getDistanceFromCenterForValue(t.value);const i=this.getContext(e),a=s.setContext(i),l=n.setContext(i);!function(t,e,i,s,n){const o=t.ctx,a=e.circular,{color:r,lineWidth:l}=e;!a&&!s||!r||!l||i<0||(o.save(),o.strokeStyle=r,o.lineWidth=l,o.setLineDash(n.dash||[]),o.lineDashOffset=n.dashOffset,o.beginPath(),Lo(t,i,a,s),o.closePath(),o.stroke(),o.restore())}(this,a,r,o,l)}})),i.display){for(t.save(),a=o-1;a>=0;a--){const s=i.setContext(this.getPointLabelContext(a)),{color:n,lineWidth:o}=s;o&&n&&(t.lineWidth=o,t.strokeStyle=n,t.setLineDash(s.borderDash),t.lineDashOffset=s.borderDashOffset,r=this.getDistanceFromCenterForValue(e.reverse?this.min:this.max),l=this.getPointPosition(a,r),t.beginPath(),t.moveTo(this.xCenter,this.yCenter),t.lineTo(l.x,l.y),t.stroke())}t.restore()}}drawBorder(){}drawLabels(){const t=this.ctx,e=this.options,i=e.ticks;if(!i.display)return;const s=this.getIndexAngle(0);let n,o;t.save(),t.translate(this.xCenter,this.yCenter),t.rotate(s),t.textAlign=\"center\",t.textBaseline=\"middle\",this.ticks.forEach(((s,a)=>{if(0===a&&this.min>=0&&!e.reverse)return;const r=i.setContext(this.getContext(a)),l=Si(r.font);if(n=this.getDistanceFromCenterForValue(this.ticks[a].value),r.showLabelBackdrop){t.font=l.string,o=t.measureText(s.label).width,t.fillStyle=r.backdropColor;const e=ki(r.backdropPadding);t.fillRect(-o\/2-e.left,-n-l.size\/2-e.top,o+e.width,l.size+e.height)}Ne(t,s.label,0,-n,l,{color:r.color,strokeColor:r.textStrokeColor,strokeWidth:r.textStrokeWidth})})),t.restore()}drawTitle(){}}const Ro={millisecond:{common:!0,size:1,steps:1e3},second:{common:!0,size:1e3,steps:60},minute:{common:!0,size:6e4,steps:60},hour:{common:!0,size:36e5,steps:24},day:{common:!0,size:864e5,steps:30},week:{common:!1,size:6048e5,steps:4},month:{common:!0,size:2628e6,steps:12},quarter:{common:!1,size:7884e6,steps:4},year:{common:!0,size:3154e7}},Io=Object.keys(Ro);function zo(t,e){return t-e}function Fo(t,e){if(s(e))return null;const i=t._adapter,{parser:n,round:o,isoWeekday:r}=t._parseOpts;let l=e;return\"function\"==typeof n&&(l=n(l)),a(l)||(l=\"string\"==typeof n?i.parse(l,n):i.parse(l)),null===l?null:(o&&(l=\"week\"!==o||!N(r)&&!0!==r?i.startOf(l,o):i.startOf(l,\"isoWeek\",r)),+l)}function Vo(t,e,i,s){const n=Io.length;for(let o=Io.indexOf(t);o<n-1;++o){const t=Ro[Io[o]],n=t.steps?t.steps:Number.MAX_SAFE_INTEGER;if(t.common&&Math.ceil((i-e)\/(n*t.size))<=s)return Io[o]}return Io[n-1]}function Bo(t,e,i){if(i){if(i.length){const{lo:s,hi:n}=et(i,e);t[i[s]>=e?i[s]:i[n]]=!0}}else t[e]=!0}function Wo(t,e,i){const s=[],n={},o=e.length;let a,r;for(a=0;a<o;++a)r=e[a],n[r]=a,s.push({value:r,major:!1});return 0!==o&&i?function(t,e,i,s){const n=t._adapter,o=+n.startOf(e[0].value,s),a=e[e.length-1].value;let r,l;for(r=o;r<=a;r=+n.add(r,1,s))l=i[r],l>=0&&(e[l].major=!0);return e}(t,s,n,i):s}class No extends Js{static id=\"time\";static defaults={bounds:\"data\",adapters:{},time:{parser:!1,unit:!1,round:!1,isoWeekday:!1,minUnit:\"millisecond\",displayFormats:{}},ticks:{source:\"auto\",callback:!1,major:{enabled:!1}}};constructor(t){super(t),this._cache={data:[],labels:[],all:[]},this._unit=\"day\",this._majorUnit=void 0,this._offsets={},this._normalized=!1,this._parseOpts=void 0}init(t,e={}){const i=t.time||(t.time={}),s=this._adapter=new Rn._date(t.adapters.date);s.init(e),x(i.displayFormats,s.formats()),this._parseOpts={parser:i.parser,round:i.round,isoWeekday:i.isoWeekday},super.init(t),this._normalized=e.normalized}parse(t,e){return void 0===t?null:Fo(this,t)}beforeLayout(){super.beforeLayout(),this._cache={data:[],labels:[],all:[]}}determineDataLimits(){const t=this.options,e=this._adapter,i=t.time.unit||\"day\";let{min:s,max:n,minDefined:o,maxDefined:r}=this.getUserBounds();function l(t){o||isNaN(t.min)||(s=Math.min(s,t.min)),r||isNaN(t.max)||(n=Math.max(n,t.max))}o&&r||(l(this._getLabelBounds()),\"ticks\"===t.bounds&&\"labels\"===t.ticks.source||l(this.getMinMax(!1))),s=a(s)&&!isNaN(s)?s:+e.startOf(Date.now(),i),n=a(n)&&!isNaN(n)?n:+e.endOf(Date.now(),i)+1,this.min=Math.min(s,n-1),this.max=Math.max(s+1,n)}_getLabelBounds(){const t=this.getLabelTimestamps();let e=Number.POSITIVE_INFINITY,i=Number.NEGATIVE_INFINITY;return t.length&&(e=t[0],i=t[t.length-1]),{min:e,max:i}}buildTicks(){const t=this.options,e=t.time,i=t.ticks,s=\"labels\"===i.source?this.getLabelTimestamps():this._generate();\"ticks\"===t.bounds&&s.length&&(this.min=this._userMin||s[0],this.max=this._userMax||s[s.length-1]);const n=this.min,o=nt(s,n,this.max);return this._unit=e.unit||(i.autoSkip?Vo(e.minUnit,this.min,this.max,this._getLabelCapacity(n)):function(t,e,i,s,n){for(let o=Io.length-1;o>=Io.indexOf(i);o--){const i=Io[o];if(Ro[i].common&&t._adapter.diff(n,s,i)>=e-1)return i}return Io[i?Io.indexOf(i):0]}(this,o.length,e.minUnit,this.min,this.max)),this._majorUnit=i.major.enabled&&\"year\"!==this._unit?function(t){for(let e=Io.indexOf(t)+1,i=Io.length;e<i;++e)if(Ro[Io[e]].common)return Io[e]}(this._unit):void 0,this.initOffsets(s),t.reverse&&o.reverse(),Wo(this,o,this._majorUnit)}afterAutoSkip(){this.options.offsetAfterAutoskip&&this.initOffsets(this.ticks.map((t=>+t.value)))}initOffsets(t=[]){let e,i,s=0,n=0;this.options.offset&&t.length&&(e=this.getDecimalForValue(t[0]),s=1===t.length?1-e:(this.getDecimalForValue(t[1])-e)\/2,i=this.getDecimalForValue(t[t.length-1]),n=1===t.length?i:(i-this.getDecimalForValue(t[t.length-2]))\/2);const o=t.length<3?.5:.25;s=J(s,0,o),n=J(n,0,o),this._offsets={start:s,end:n,factor:1\/(s+1+n)}}_generate(){const t=this._adapter,e=this.min,i=this.max,s=this.options,n=s.time,o=n.unit||Vo(n.minUnit,e,i,this._getLabelCapacity(e)),a=l(s.ticks.stepSize,1),r=\"week\"===o&&n.isoWeekday,h=N(r)||!0===r,c={};let d,u,f=e;if(h&&(f=+t.startOf(f,\"isoWeek\",r)),f=+t.startOf(f,h?\"day\":o),t.diff(i,e,o)>1e5*a)throw new Error(e+\" and \"+i+\" are too far apart with stepSize of \"+a+\" \"+o);const g=\"data\"===s.ticks.source&&this.getDataTimestamps();for(d=f,u=0;d<i;d=+t.add(d,a,o),u++)Bo(c,d,g);return d!==i&&\"ticks\"!==s.bounds&&1!==u||Bo(c,d,g),Object.keys(c).sort(zo).map((t=>+t))}getLabelForValue(t){const e=this._adapter,i=this.options.time;return i.tooltipFormat?e.format(t,i.tooltipFormat):e.format(t,i.displayFormats.datetime)}format(t,e){const i=this.options.time.displayFormats,s=this._unit,n=e||i[s];return this._adapter.format(t,n)}_tickFormatFunction(t,e,i,s){const n=this.options,o=n.ticks.callback;if(o)return d(o,[t,e,i],this);const a=n.time.displayFormats,r=this._unit,l=this._majorUnit,h=r&&a[r],c=l&&a[l],u=i[e],f=l&&c&&u&&u.major;return this._adapter.format(t,s||(f?c:h))}generateTickLabels(t){let e,i,s;for(e=0,i=t.length;e<i;++e)s=t[e],s.label=this._tickFormatFunction(s.value,e,t)}getDecimalForValue(t){return null===t?NaN:(t-this.min)\/(this.max-this.min)}getPixelForValue(t){const e=this._offsets,i=this.getDecimalForValue(t);return this.getPixelForDecimal((e.start+i)*e.factor)}getValueForPixel(t){const e=this._offsets,i=this.getDecimalForPixel(t)\/e.factor-e.end;return this.min+i*(this.max-this.min)}_getLabelSize(t){const e=this.options.ticks,i=this.ctx.measureText(t).width,s=$(this.isHorizontal()?e.maxRotation:e.minRotation),n=Math.cos(s),o=Math.sin(s),a=this._resolveTickFontOptions(0).size;return{w:i*n+a*o,h:i*o+a*n}}_getLabelCapacity(t){const e=this.options.time,i=e.displayFormats,s=i[e.unit]||i.millisecond,n=this._tickFormatFunction(t,0,Wo(this,[t],this._majorUnit),s),o=this._getLabelSize(n),a=Math.floor(this.isHorizontal()?this.width\/o.w:this.height\/o.h)-1;return a>0?a:1}getDataTimestamps(){let t,e,i=this._cache.data||[];if(i.length)return i;const s=this.getMatchingVisibleMetas();if(this._normalized&&s.length)return this._cache.data=s[0].controller.getAllParsedValues(this);for(t=0,e=s.length;t<e;++t)i=i.concat(s[t].controller.getAllParsedValues(this));return this._cache.data=this.normalize(i)}getLabelTimestamps(){const t=this._cache.labels||[];let e,i;if(t.length)return t;const s=this.getLabels();for(e=0,i=s.length;e<i;++e)t.push(Fo(this,s[e]));return this._cache.labels=this._normalized?t:this.normalize(t)}normalize(t){return lt(t.sort(zo))}}function Ho(t,e,i){let s,n,o,a,r=0,l=t.length-1;i?(e>=t[r].pos&&e<=t[l].pos&&({lo:r,hi:l}=it(t,\"pos\",e)),({pos:s,time:o}=t[r]),({pos:n,time:a}=t[l])):(e>=t[r].time&&e<=t[l].time&&({lo:r,hi:l}=it(t,\"time\",e)),({time:s,pos:o}=t[r]),({time:n,pos:a}=t[l]));const h=n-s;return h?o+(a-o)*(e-s)\/h:o}var jo=Object.freeze({__proto__:null,CategoryScale:class extends Js{static id=\"category\";static defaults={ticks:{callback:po}};constructor(t){super(t),this._startValue=void 0,this._valueRange=0,this._addedLabels=[]}init(t){const e=this._addedLabels;if(e.length){const t=this.getLabels();for(const{index:i,label:s}of e)t[i]===s&&t.splice(i,1);this._addedLabels=[]}super.init(t)}parse(t,e){if(s(t))return null;const i=this.getLabels();return((t,e)=>null===t?null:J(Math.round(t),0,e))(e=isFinite(e)&&i[e]===t?e:go(i,t,l(e,t),this._addedLabels),i.length-1)}determineDataLimits(){const{minDefined:t,maxDefined:e}=this.getUserBounds();let{min:i,max:s}=this.getMinMax(!0);\"ticks\"===this.options.bounds&&(t||(i=0),e||(s=this.getLabels().length-1)),this.min=i,this.max=s}buildTicks(){const t=this.min,e=this.max,i=this.options.offset,s=[];let n=this.getLabels();n=0===t&&e===n.length-1?n:n.slice(t,e+1),this._valueRange=Math.max(n.length-(i?0:1),1),this._startValue=this.min-(i?.5:0);for(let i=t;i<=e;i++)s.push({value:i});return s}getLabelForValue(t){return po.call(this,t)}configure(){super.configure(),this.isHorizontal()||(this._reversePixels=!this._reversePixels)}getPixelForValue(t){return\"number\"!=typeof t&&(t=this.parse(t)),null===t?NaN:this.getPixelForDecimal((t-this._startValue)\/this._valueRange)}getPixelForTick(t){const e=this.ticks;return t<0||t>e.length-1?null:this.getPixelForValue(e[t].value)}getValueForPixel(t){return Math.round(this._startValue+this.getDecimalForPixel(t)*this._valueRange)}getBasePixel(){return this.bottom}},LinearScale:xo,LogarithmicScale:ko,RadialLinearScale:Eo,TimeScale:No,TimeSeriesScale:class extends No{static id=\"timeseries\";static defaults=No.defaults;constructor(t){super(t),this._table=[],this._minPos=void 0,this._tableRange=void 0}initOffsets(){const t=this._getTimestampsForTable(),e=this._table=this.buildLookupTable(t);this._minPos=Ho(e,this.min),this._tableRange=Ho(e,this.max)-this._minPos,super.initOffsets(t)}buildLookupTable(t){const{min:e,max:i}=this,s=[],n=[];let o,a,r,l,h;for(o=0,a=t.length;o<a;++o)l=t[o],l>=e&&l<=i&&s.push(l);if(s.length<2)return[{time:e,pos:0},{time:i,pos:1}];for(o=0,a=s.length;o<a;++o)h=s[o+1],r=s[o-1],l=s[o],Math.round((h+r)\/2)!==l&&n.push({time:l,pos:o\/(a-1)});return n}_generate(){const t=this.min,e=this.max;let i=super.getDataTimestamps();return i.includes(t)&&i.length||i.splice(0,0,t),i.includes(e)&&1!==i.length||i.push(e),i.sort(((t,e)=>t-e))}_getTimestampsForTable(){let t=this._cache.all||[];if(t.length)return t;const e=this.getDataTimestamps(),i=this.getLabelTimestamps();return t=e.length&&i.length?this.normalize(e.concat(i)):e.length?e:i,t=this._cache.all=t,t}getDecimalForValue(t){return(Ho(this._table,t)-this._minPos)\/this._tableRange}getValueForPixel(t){const e=this._offsets,i=this.getDecimalForPixel(t)\/e.factor-e.end;return Ho(this._table,i*this._tableRange+this._minPos,!0)}}});const $o=[\"rgb(54, 162, 235)\",\"rgb(255, 99, 132)\",\"rgb(255, 159, 64)\",\"rgb(255, 205, 86)\",\"rgb(75, 192, 192)\",\"rgb(153, 102, 255)\",\"rgb(201, 203, 207)\"],Yo=$o.map((t=>t.replace(\"rgb(\",\"rgba(\").replace(\")\",\", 0.5)\")));function Uo(t){return $o[t%$o.length]}function Xo(t){return Yo[t%Yo.length]}function qo(t){let e=0;return(i,s)=>{const n=t.getDatasetMeta(s).controller;n instanceof jn?e=function(t,e){return t.backgroundColor=t.data.map((()=>Uo(e++))),e}(i,e):n instanceof $n?e=function(t,e){return t.backgroundColor=t.data.map((()=>Xo(e++))),e}(i,e):n&&(e=function(t,e){return t.borderColor=Uo(e),t.backgroundColor=Xo(e),++e}(i,e))}}function Ko(t){let e;for(e in t)if(t[e].borderColor||t[e].backgroundColor)return!0;return!1}var Go={id:\"colors\",defaults:{enabled:!0,forceOverride:!1},beforeLayout(t,e,i){if(!i.enabled)return;const{data:{datasets:s},options:n}=t.config,{elements:o}=n,a=Ko(s)||(r=n)&&(r.borderColor||r.backgroundColor)||o&&Ko(o)||\"rgba(0,0,0,0.1)\"!==ue.borderColor||\"rgba(0,0,0,0.1)\"!==ue.backgroundColor;var r;if(!i.forceOverride&&a)return;const l=qo(t);s.forEach(l)}};function Zo(t){if(t._decimated){const e=t._data;delete t._decimated,delete t._data,Object.defineProperty(t,\"data\",{configurable:!0,enumerable:!0,writable:!0,value:e})}}function Jo(t){t.data.datasets.forEach((t=>{Zo(t)}))}var Qo={id:\"decimation\",defaults:{algorithm:\"min-max\",enabled:!1},beforeElementsUpdate:(t,e,i)=>{if(!i.enabled)return void Jo(t);const n=t.width;t.data.datasets.forEach(((e,o)=>{const{_data:a,indexAxis:r}=e,l=t.getDatasetMeta(o),h=a||e.data;if(\"y\"===Pi([r,t.options.indexAxis]))return;if(!l.controller.supportsDecimation)return;const c=t.scales[l.xAxisID];if(\"linear\"!==c.type&&\"time\"!==c.type)return;if(t.options.parsing)return;let{start:d,count:u}=function(t,e){const i=e.length;let s,n=0;const{iScale:o}=t,{min:a,max:r,minDefined:l,maxDefined:h}=o.getUserBounds();return l&&(n=J(it(e,o.axis,a).lo,0,i-1)),s=h?J(it(e,o.axis,r).hi+1,n,i)-n:i-n,{start:n,count:s}}(l,h);if(u<=(i.threshold||4*n))return void Zo(e);let f;switch(s(a)&&(e._data=h,delete e.data,Object.defineProperty(e,\"data\",{configurable:!0,enumerable:!0,get:function(){return this._decimated},set:function(t){this._data=t}})),i.algorithm){case\"lttb\":f=function(t,e,i,s,n){const o=n.samples||s;if(o>=i)return t.slice(e,e+i);const a=[],r=(i-2)\/(o-2);let l=0;const h=e+i-1;let c,d,u,f,g,p=e;for(a[l++]=t[p],c=0;c<o-2;c++){let s,n=0,o=0;const h=Math.floor((c+1)*r)+1+e,m=Math.min(Math.floor((c+2)*r)+1,i)+e,b=m-h;for(s=h;s<m;s++)n+=t[s].x,o+=t[s].y;n\/=b,o\/=b;const x=Math.floor(c*r)+1+e,_=Math.min(Math.floor((c+1)*r)+1,i)+e,{x:y,y:v}=t[p];for(u=f=-1,s=x;s<_;s++)f=.5*Math.abs((y-n)*(t[s].y-v)-(y-t[s].x)*(o-v)),f>u&&(u=f,d=t[s],g=s);a[l++]=d,p=g}return a[l++]=t[h],a}(h,d,u,n,i);break;case\"min-max\":f=function(t,e,i,n){let o,a,r,l,h,c,d,u,f,g,p=0,m=0;const b=[],x=e+i-1,_=t[e].x,y=t[x].x-_;for(o=e;o<e+i;++o){a=t[o],r=(a.x-_)\/y*n,l=a.y;const e=0|r;if(e===h)l<f?(f=l,c=o):l>g&&(g=l,d=o),p=(m*p+a.x)\/++m;else{const i=o-1;if(!s(c)&&!s(d)){const e=Math.min(c,d),s=Math.max(c,d);e!==u&&e!==i&&b.push({...t[e],x:p}),s!==u&&s!==i&&b.push({...t[s],x:p})}o>0&&i!==u&&b.push(t[i]),b.push(a),h=e,m=0,f=g=l,c=d=u=o}}return b}(h,d,u,n);break;default:throw new Error(`Unsupported decimation algorithm '${i.algorithm}'`)}e._decimated=f}))},destroy(t){Jo(t)}};function ta(t,e,i,s){if(s)return;let n=e[t],o=i[t];return\"angle\"===t&&(n=G(n),o=G(o)),{property:t,start:n,end:o}}function ea(t,e,i){for(;e>t;e--){const t=i[e];if(!isNaN(t.x)&&!isNaN(t.y))break}return e}function ia(t,e,i,s){return t&&e?s(t[i],e[i]):t?t[i]:e?e[i]:0}function sa(t,e){let i=[],s=!1;return n(t)?(s=!0,i=t):i=function(t,e){const{x:i=null,y:s=null}=t||{},n=e.points,o=[];return e.segments.forEach((({start:t,end:e})=>{e=ea(t,e,n);const a=n[t],r=n[e];null!==s?(o.push({x:a.x,y:s}),o.push({x:r.x,y:s})):null!==i&&(o.push({x:i,y:a.y}),o.push({x:i,y:r.y}))})),o}(t,e),i.length?new no({points:i,options:{tension:0},_loop:s,_fullLoop:s}):null}function na(t){return t&&!1!==t.fill}function oa(t,e,i){let s=t[e].fill;const n=[e];let o;if(!i)return s;for(;!1!==s&&-1===n.indexOf(s);){if(!a(s))return s;if(o=t[s],!o)return!1;if(o.visible)return s;n.push(s),s=o.fill}return!1}function aa(t,e,i){const s=function(t){const e=t.options,i=e.fill;let s=l(i&&i.target,i);void 0===s&&(s=!!e.backgroundColor);if(!1===s||null===s)return!1;if(!0===s)return\"origin\";return s}(t);if(o(s))return!isNaN(s.value)&&s;let n=parseFloat(s);return a(n)&&Math.floor(n)===n?function(t,e,i,s){\"-\"!==t&&\"+\"!==t||(i=e+i);if(i===e||i<0||i>=s)return!1;return i}(s[0],e,n,i):[\"origin\",\"start\",\"end\",\"stack\",\"shape\"].indexOf(s)>=0&&s}function ra(t,e,i){const s=[];for(let n=0;n<i.length;n++){const o=i[n],{first:a,last:r,point:l}=la(o,e,\"x\");if(!(!l||a&&r))if(a)s.unshift(l);else if(t.push(l),!r)break}t.push(...s)}function la(t,e,i){const s=t.interpolate(e,i);if(!s)return{};const n=s[i],o=t.segments,a=t.points;let r=!1,l=!1;for(let t=0;t<o.length;t++){const e=o[t],s=a[e.start][i],h=a[e.end][i];if(tt(n,s,h)){r=n===s,l=n===h;break}}return{first:r,last:l,point:s}}class ha{constructor(t){this.x=t.x,this.y=t.y,this.radius=t.radius}pathSegment(t,e,i){const{x:s,y:n,radius:o}=this;return e=e||{start:0,end:O},t.arc(s,n,o,e.end,e.start,!0),!i.bounds}interpolate(t){const{x:e,y:i,radius:s}=this,n=t.angle;return{x:e+Math.cos(n)*s,y:i+Math.sin(n)*s,angle:n}}}function ca(t){const{chart:e,fill:i,line:s}=t;if(a(i))return function(t,e){const i=t.getDatasetMeta(e),s=i&&t.isDatasetVisible(e);return s?i.dataset:null}(e,i);if(\"stack\"===i)return function(t){const{scale:e,index:i,line:s}=t,n=[],o=s.segments,a=s.points,r=function(t,e){const i=[],s=t.getMatchingVisibleMetas(\"line\");for(let t=0;t<s.length;t++){const n=s[t];if(n.index===e)break;n.hidden||i.unshift(n.dataset)}return i}(e,i);r.push(sa({x:null,y:e.bottom},s));for(let t=0;t<o.length;t++){const e=o[t];for(let t=e.start;t<=e.end;t++)ra(n,a[t],r)}return new no({points:n,options:{}})}(t);if(\"shape\"===i)return!0;const n=function(t){const e=t.scale||{};if(e.getPointPositionForValue)return function(t){const{scale:e,fill:i}=t,s=e.options,n=e.getLabels().length,a=s.reverse?e.max:e.min,r=function(t,e,i){let s;return s=\"start\"===t?i:\"end\"===t?e.options.reverse?e.min:e.max:o(t)?t.value:e.getBaseValue(),s}(i,e,a),l=[];if(s.grid.circular){const t=e.getPointPositionForValue(0,a);return new ha({x:t.x,y:t.y,radius:e.getDistanceFromCenterForValue(r)})}for(let t=0;t<n;++t)l.push(e.getPointPositionForValue(t,r));return l}(t);return function(t){const{scale:e={},fill:i}=t,s=function(t,e){let i=null;return\"start\"===t?i=e.bottom:\"end\"===t?i=e.top:o(t)?i=e.getPixelForValue(t.value):e.getBasePixel&&(i=e.getBasePixel()),i}(i,e);if(a(s)){const t=e.isHorizontal();return{x:t?s:null,y:t?null:s}}return null}(t)}(t);return n instanceof ha?n:sa(n,s)}function da(t,e,i){const s=ca(e),{line:n,scale:o,axis:a}=e,r=n.options,l=r.fill,h=r.backgroundColor,{above:c=h,below:d=h}=l||{};s&&n.points.length&&(Ie(t,i),function(t,e){const{line:i,target:s,above:n,below:o,area:a,scale:r}=e,l=i._loop?\"angle\":e.axis;t.save(),\"x\"===l&&o!==n&&(ua(t,s,a.top),fa(t,{line:i,target:s,color:n,scale:r,property:l}),t.restore(),t.save(),ua(t,s,a.bottom));fa(t,{line:i,target:s,color:o,scale:r,property:l}),t.restore()}(t,{line:n,target:s,above:c,below:d,area:i,scale:o,axis:a}),ze(t))}function ua(t,e,i){const{segments:s,points:n}=e;let o=!0,a=!1;t.beginPath();for(const r of s){const{start:s,end:l}=r,h=n[s],c=n[ea(s,l,n)];o?(t.moveTo(h.x,h.y),o=!1):(t.lineTo(h.x,i),t.lineTo(h.x,h.y)),a=!!e.pathSegment(t,r,{move:a}),a?t.closePath():t.lineTo(c.x,i)}t.lineTo(e.first().x,i),t.closePath(),t.clip()}function fa(t,e){const{line:i,target:s,property:n,color:o,scale:a}=e,r=function(t,e,i){const s=t.segments,n=t.points,o=e.points,a=[];for(const t of s){let{start:s,end:r}=t;r=ea(s,r,n);const l=ta(i,n[s],n[r],t.loop);if(!e.segments){a.push({source:t,target:l,start:n[s],end:n[r]});continue}const h=Ii(e,l);for(const e of h){const s=ta(i,o[e.start],o[e.end],e.loop),r=Ri(t,n,s);for(const t of r)a.push({source:t,target:e,start:{[i]:ia(l,s,\"start\",Math.max)},end:{[i]:ia(l,s,\"end\",Math.min)}})}}return a}(i,s,n);for(const{source:e,target:l,start:h,end:c}of r){const{style:{backgroundColor:r=o}={}}=e,d=!0!==s;t.save(),t.fillStyle=r,ga(t,a,d&&ta(n,h,c)),t.beginPath();const u=!!i.pathSegment(t,e);let f;if(d){u?t.closePath():pa(t,s,c,n);const e=!!s.pathSegment(t,l,{move:u,reverse:!0});f=u&&e,f||pa(t,s,h,n)}t.closePath(),t.fill(f?\"evenodd\":\"nonzero\"),t.restore()}}function ga(t,e,i){const{top:s,bottom:n}=e.chart.chartArea,{property:o,start:a,end:r}=i||{};\"x\"===o&&(t.beginPath(),t.rect(a,s,r-a,n-s),t.clip())}function pa(t,e,i,s){const n=e.interpolate(i,s);n&&t.lineTo(n.x,n.y)}var ma={id:\"filler\",afterDatasetsUpdate(t,e,i){const s=(t.data.datasets||[]).length,n=[];let o,a,r,l;for(a=0;a<s;++a)o=t.getDatasetMeta(a),r=o.dataset,l=null,r&&r.options&&r instanceof no&&(l={visible:t.isDatasetVisible(a),index:a,fill:aa(r,a,s),chart:t,axis:o.controller.options.indexAxis,scale:o.vScale,line:r}),o.$filler=l,n.push(l);for(a=0;a<s;++a)l=n[a],l&&!1!==l.fill&&(l.fill=oa(n,a,i.propagate))},beforeDraw(t,e,i){const s=\"beforeDraw\"===i.drawTime,n=t.getSortedVisibleDatasetMetas(),o=t.chartArea;for(let e=n.length-1;e>=0;--e){const i=n[e].$filler;i&&(i.line.updateControlPoints(o,i.axis),s&&i.fill&&da(t.ctx,i,o))}},beforeDatasetsDraw(t,e,i){if(\"beforeDatasetsDraw\"!==i.drawTime)return;const s=t.getSortedVisibleDatasetMetas();for(let e=s.length-1;e>=0;--e){const i=s[e].$filler;na(i)&&da(t.ctx,i,t.chartArea)}},beforeDatasetDraw(t,e,i){const s=e.meta.$filler;na(s)&&\"beforeDatasetDraw\"===i.drawTime&&da(t.ctx,s,t.chartArea)},defaults:{propagate:!0,drawTime:\"beforeDatasetDraw\"}};const ba=(t,e)=>{let{boxHeight:i=e,boxWidth:s=e}=t;return t.usePointStyle&&(i=Math.min(i,e),s=t.pointStyleWidth||Math.min(s,e)),{boxWidth:s,boxHeight:i,itemHeight:Math.max(e,i)}};class xa extends Hs{constructor(t){super(),this._added=!1,this.legendHitBoxes=[],this._hoveredItem=null,this.doughnutMode=!1,this.chart=t.chart,this.options=t.options,this.ctx=t.ctx,this.legendItems=void 0,this.columnSizes=void 0,this.lineWidths=void 0,this.maxHeight=void 0,this.maxWidth=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.height=void 0,this.width=void 0,this._margins=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(t,e,i){this.maxWidth=t,this.maxHeight=e,this._margins=i,this.setDimensions(),this.buildLabels(),this.fit()}setDimensions(){this.isHorizontal()?(this.width=this.maxWidth,this.left=this._margins.left,this.right=this.width):(this.height=this.maxHeight,this.top=this._margins.top,this.bottom=this.height)}buildLabels(){const t=this.options.labels||{};let e=d(t.generateLabels,[this.chart],this)||[];t.filter&&(e=e.filter((e=>t.filter(e,this.chart.data)))),t.sort&&(e=e.sort(((e,i)=>t.sort(e,i,this.chart.data)))),this.options.reverse&&e.reverse(),this.legendItems=e}fit(){const{options:t,ctx:e}=this;if(!t.display)return void(this.width=this.height=0);const i=t.labels,s=Si(i.font),n=s.size,o=this._computeTitleHeight(),{boxWidth:a,itemHeight:r}=ba(i,n);let l,h;e.font=s.string,this.isHorizontal()?(l=this.maxWidth,h=this._fitRows(o,n,a,r)+10):(h=this.maxHeight,l=this._fitCols(o,s,a,r)+10),this.width=Math.min(l,t.maxWidth||this.maxWidth),this.height=Math.min(h,t.maxHeight||this.maxHeight)}_fitRows(t,e,i,s){const{ctx:n,maxWidth:o,options:{labels:{padding:a}}}=this,r=this.legendHitBoxes=[],l=this.lineWidths=[0],h=s+a;let c=t;n.textAlign=\"left\",n.textBaseline=\"middle\";let d=-1,u=-h;return this.legendItems.forEach(((t,f)=>{const g=i+e\/2+n.measureText(t.text).width;(0===f||l[l.length-1]+g+2*a>o)&&(c+=h,l[l.length-(f>0?0:1)]=0,u+=h,d++),r[f]={left:0,top:u,row:d,width:g,height:s},l[l.length-1]+=g+a})),c}_fitCols(t,e,i,s){const{ctx:n,maxHeight:o,options:{labels:{padding:a}}}=this,r=this.legendHitBoxes=[],l=this.columnSizes=[],h=o-t;let c=a,d=0,u=0,f=0,g=0;return this.legendItems.forEach(((t,o)=>{const{itemWidth:p,itemHeight:m}=function(t,e,i,s,n){const o=function(t,e,i,s){let n=t.text;n&&\"string\"!=typeof n&&(n=n.reduce(((t,e)=>t.length>e.length?t:e)));return e+i.size\/2+s.measureText(n).width}(s,t,e,i),a=function(t,e,i){let s=t;\"string\"!=typeof e.text&&(s=_a(e,i));return s}(n,s,e.lineHeight);return{itemWidth:o,itemHeight:a}}(i,e,n,t,s);o>0&&u+m+2*a>h&&(c+=d+a,l.push({width:d,height:u}),f+=d+a,g++,d=u=0),r[o]={left:f,top:u,col:g,width:p,height:m},d=Math.max(d,p),u+=m+a})),c+=d,l.push({width:d,height:u}),c}adjustHitBoxes(){if(!this.options.display)return;const t=this._computeTitleHeight(),{legendHitBoxes:e,options:{align:i,labels:{padding:s},rtl:n}}=this,o=Oi(n,this.left,this.width);if(this.isHorizontal()){let n=0,a=ft(i,this.left+s,this.right-this.lineWidths[n]);for(const r of e)n!==r.row&&(n=r.row,a=ft(i,this.left+s,this.right-this.lineWidths[n])),r.top+=this.top+t+s,r.left=o.leftForLtr(o.x(a),r.width),a+=r.width+s}else{let n=0,a=ft(i,this.top+t+s,this.bottom-this.columnSizes[n].height);for(const r of e)r.col!==n&&(n=r.col,a=ft(i,this.top+t+s,this.bottom-this.columnSizes[n].height)),r.top=a,r.left+=this.left+s,r.left=o.leftForLtr(o.x(r.left),r.width),a+=r.height+s}}isHorizontal(){return\"top\"===this.options.position||\"bottom\"===this.options.position}draw(){if(this.options.display){const t=this.ctx;Ie(t,this),this._draw(),ze(t)}}_draw(){const{options:t,columnSizes:e,lineWidths:i,ctx:s}=this,{align:n,labels:o}=t,a=ue.color,r=Oi(t.rtl,this.left,this.width),h=Si(o.font),{padding:c}=o,d=h.size,u=d\/2;let f;this.drawTitle(),s.textAlign=r.textAlign(\"left\"),s.textBaseline=\"middle\",s.lineWidth=.5,s.font=h.string;const{boxWidth:g,boxHeight:p,itemHeight:m}=ba(o,d),b=this.isHorizontal(),x=this._computeTitleHeight();f=b?{x:ft(n,this.left+c,this.right-i[0]),y:this.top+c+x,line:0}:{x:this.left+c,y:ft(n,this.top+x+c,this.bottom-e[0].height),line:0},Ai(this.ctx,t.textDirection);const _=m+c;this.legendItems.forEach(((y,v)=>{s.strokeStyle=y.fontColor,s.fillStyle=y.fontColor;const M=s.measureText(y.text).width,w=r.textAlign(y.textAlign||(y.textAlign=o.textAlign)),k=g+u+M;let S=f.x,P=f.y;r.setWidth(this.width),b?v>0&&S+k+c>this.right&&(P=f.y+=_,f.line++,S=f.x=ft(n,this.left+c,this.right-i[f.line])):v>0&&P+_>this.bottom&&(S=f.x=S+e[f.line].width+c,f.line++,P=f.y=ft(n,this.top+x+c,this.bottom-e[f.line].height));if(function(t,e,i){if(isNaN(g)||g<=0||isNaN(p)||p<0)return;s.save();const n=l(i.lineWidth,1);if(s.fillStyle=l(i.fillStyle,a),s.lineCap=l(i.lineCap,\"butt\"),s.lineDashOffset=l(i.lineDashOffset,0),s.lineJoin=l(i.lineJoin,\"miter\"),s.lineWidth=n,s.strokeStyle=l(i.strokeStyle,a),s.setLineDash(l(i.lineDash,[])),o.usePointStyle){const a={radius:p*Math.SQRT2\/2,pointStyle:i.pointStyle,rotation:i.rotation,borderWidth:n},l=r.xPlus(t,g\/2);Ee(s,a,l,e+u,o.pointStyleWidth&&g)}else{const o=e+Math.max((d-p)\/2,0),a=r.leftForLtr(t,g),l=wi(i.borderRadius);s.beginPath(),Object.values(l).some((t=>0!==t))?He(s,{x:a,y:o,w:g,h:p,radius:l}):s.rect(a,o,g,p),s.fill(),0!==n&&s.stroke()}s.restore()}(r.x(S),P,y),S=gt(w,S+g+u,b?S+k:this.right,t.rtl),function(t,e,i){Ne(s,i.text,t,e+m\/2,h,{strikethrough:i.hidden,textAlign:r.textAlign(i.textAlign)})}(r.x(S),P,y),b)f.x+=k+c;else if(\"string\"!=typeof y.text){const t=h.lineHeight;f.y+=_a(y,t)+c}else f.y+=_})),Ti(this.ctx,t.textDirection)}drawTitle(){const t=this.options,e=t.title,i=Si(e.font),s=ki(e.padding);if(!e.display)return;const n=Oi(t.rtl,this.left,this.width),o=this.ctx,a=e.position,r=i.size\/2,l=s.top+r;let h,c=this.left,d=this.width;if(this.isHorizontal())d=Math.max(...this.lineWidths),h=this.top+l,c=ft(t.align,c,this.right-d);else{const e=this.columnSizes.reduce(((t,e)=>Math.max(t,e.height)),0);h=l+ft(t.align,this.top,this.bottom-e-t.labels.padding-this._computeTitleHeight())}const u=ft(a,c,c+d);o.textAlign=n.textAlign(ut(a)),o.textBaseline=\"middle\",o.strokeStyle=e.color,o.fillStyle=e.color,o.font=i.string,Ne(o,e.text,u,h,i)}_computeTitleHeight(){const t=this.options.title,e=Si(t.font),i=ki(t.padding);return t.display?e.lineHeight+i.height:0}_getLegendItemAt(t,e){let i,s,n;if(tt(t,this.left,this.right)&&tt(e,this.top,this.bottom))for(n=this.legendHitBoxes,i=0;i<n.length;++i)if(s=n[i],tt(t,s.left,s.left+s.width)&&tt(e,s.top,s.top+s.height))return this.legendItems[i];return null}handleEvent(t){const e=this.options;if(!function(t,e){if((\"mousemove\"===t||\"mouseout\"===t)&&(e.onHover||e.onLeave))return!0;if(e.onClick&&(\"click\"===t||\"mouseup\"===t))return!0;return!1}(t.type,e))return;const i=this._getLegendItemAt(t.x,t.y);if(\"mousemove\"===t.type||\"mouseout\"===t.type){const o=this._hoveredItem,a=(n=i,null!==(s=o)&&null!==n&&s.datasetIndex===n.datasetIndex&&s.index===n.index);o&&!a&&d(e.onLeave,[t,o,this],this),this._hoveredItem=i,i&&!a&&d(e.onHover,[t,i,this],this)}else i&&d(e.onClick,[t,i,this],this);var s,n}}function _a(t,e){return e*(t.text?t.text.length:0)}var ya={id:\"legend\",_element:xa,start(t,e,i){const s=t.legend=new xa({ctx:t.ctx,options:i,chart:t});as.configure(t,s,i),as.addBox(t,s)},stop(t){as.removeBox(t,t.legend),delete t.legend},beforeUpdate(t,e,i){const s=t.legend;as.configure(t,s,i),s.options=i},afterUpdate(t){const e=t.legend;e.buildLabels(),e.adjustHitBoxes()},afterEvent(t,e){e.replay||t.legend.handleEvent(e.event)},defaults:{display:!0,position:\"top\",align:\"center\",fullSize:!0,reverse:!1,weight:1e3,onClick(t,e,i){const s=e.datasetIndex,n=i.chart;n.isDatasetVisible(s)?(n.hide(s),e.hidden=!0):(n.show(s),e.hidden=!1)},onHover:null,onLeave:null,labels:{color:t=>t.chart.options.color,boxWidth:40,padding:10,generateLabels(t){const e=t.data.datasets,{labels:{usePointStyle:i,pointStyle:s,textAlign:n,color:o,useBorderRadius:a,borderRadius:r}}=t.legend.options;return t._getSortedDatasetMetas().map((t=>{const l=t.controller.getStyle(i?0:void 0),h=ki(l.borderWidth);return{text:e[t.index].label,fillStyle:l.backgroundColor,fontColor:o,hidden:!t.visible,lineCap:l.borderCapStyle,lineDash:l.borderDash,lineDashOffset:l.borderDashOffset,lineJoin:l.borderJoinStyle,lineWidth:(h.width+h.height)\/4,strokeStyle:l.borderColor,pointStyle:s||l.pointStyle,rotation:l.rotation,textAlign:n||l.textAlign,borderRadius:a&&(r||l.borderRadius),datasetIndex:t.index}}),this)}},title:{color:t=>t.chart.options.color,display:!1,position:\"center\",text:\"\"}},descriptors:{_scriptable:t=>!t.startsWith(\"on\"),labels:{_scriptable:t=>![\"generateLabels\",\"filter\",\"sort\"].includes(t)}}};class va extends Hs{constructor(t){super(),this.chart=t.chart,this.options=t.options,this.ctx=t.ctx,this._padding=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.width=void 0,this.height=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(t,e){const i=this.options;if(this.left=0,this.top=0,!i.display)return void(this.width=this.height=this.right=this.bottom=0);this.width=this.right=t,this.height=this.bottom=e;const s=n(i.text)?i.text.length:1;this._padding=ki(i.padding);const o=s*Si(i.font).lineHeight+this._padding.height;this.isHorizontal()?this.height=o:this.width=o}isHorizontal(){const t=this.options.position;return\"top\"===t||\"bottom\"===t}_drawArgs(t){const{top:e,left:i,bottom:s,right:n,options:o}=this,a=o.align;let r,l,h,c=0;return this.isHorizontal()?(l=ft(a,i,n),h=e+t,r=n-i):(\"left\"===o.position?(l=i+t,h=ft(a,s,e),c=-.5*C):(l=n-t,h=ft(a,e,s),c=.5*C),r=s-e),{titleX:l,titleY:h,maxWidth:r,rotation:c}}draw(){const t=this.ctx,e=this.options;if(!e.display)return;const i=Si(e.font),s=i.lineHeight\/2+this._padding.top,{titleX:n,titleY:o,maxWidth:a,rotation:r}=this._drawArgs(s);Ne(t,e.text,0,0,i,{color:e.color,maxWidth:a,rotation:r,textAlign:ut(e.align),textBaseline:\"middle\",translation:[n,o]})}}var Ma={id:\"title\",_element:va,start(t,e,i){!function(t,e){const i=new va({ctx:t.ctx,options:e,chart:t});as.configure(t,i,e),as.addBox(t,i),t.titleBlock=i}(t,i)},stop(t){const e=t.titleBlock;as.removeBox(t,e),delete t.titleBlock},beforeUpdate(t,e,i){const s=t.titleBlock;as.configure(t,s,i),s.options=i},defaults:{align:\"center\",display:!1,font:{weight:\"bold\"},fullSize:!0,padding:10,position:\"top\",text:\"\",weight:2e3},defaultRoutes:{color:\"color\"},descriptors:{_scriptable:!0,_indexable:!1}};const wa=new WeakMap;var ka={id:\"subtitle\",start(t,e,i){const s=new va({ctx:t.ctx,options:i,chart:t});as.configure(t,s,i),as.addBox(t,s),wa.set(t,s)},stop(t){as.removeBox(t,wa.get(t)),wa.delete(t)},beforeUpdate(t,e,i){const s=wa.get(t);as.configure(t,s,i),s.options=i},defaults:{align:\"center\",display:!1,font:{weight:\"normal\"},fullSize:!0,padding:0,position:\"top\",text:\"\",weight:1500},defaultRoutes:{color:\"color\"},descriptors:{_scriptable:!0,_indexable:!1}};const Sa={average(t){if(!t.length)return!1;let e,i,s=new Set,n=0,o=0;for(e=0,i=t.length;e<i;++e){const i=t[e].element;if(i&&i.hasValue()){const t=i.tooltipPosition();s.add(t.x),n+=t.y,++o}}if(0===o||0===s.size)return!1;return{x:[...s].reduce(((t,e)=>t+e))\/s.size,y:n\/o}},nearest(t,e){if(!t.length)return!1;let i,s,n,o=e.x,a=e.y,r=Number.POSITIVE_INFINITY;for(i=0,s=t.length;i<s;++i){const s=t[i].element;if(s&&s.hasValue()){const t=q(e,s.getCenterPoint());t<r&&(r=t,n=s)}}if(n){const t=n.tooltipPosition();o=t.x,a=t.y}return{x:o,y:a}}};function Pa(t,e){return e&&(n(e)?Array.prototype.push.apply(t,e):t.push(e)),t}function Da(t){return(\"string\"==typeof t||t instanceof String)&&t.indexOf(\"\\n\")>-1?t.split(\"\\n\"):t}function Ca(t,e){const{element:i,datasetIndex:s,index:n}=e,o=t.getDatasetMeta(s).controller,{label:a,value:r}=o.getLabelAndValue(n);return{chart:t,label:a,parsed:o.getParsed(n),raw:t.data.datasets[s].data[n],formattedValue:r,dataset:o.getDataset(),dataIndex:n,datasetIndex:s,element:i}}function Oa(t,e){const i=t.chart.ctx,{body:s,footer:n,title:o}=t,{boxWidth:a,boxHeight:r}=e,l=Si(e.bodyFont),h=Si(e.titleFont),c=Si(e.footerFont),d=o.length,f=n.length,g=s.length,p=ki(e.padding);let m=p.height,b=0,x=s.reduce(((t,e)=>t+e.before.length+e.lines.length+e.after.length),0);if(x+=t.beforeBody.length+t.afterBody.length,d&&(m+=d*h.lineHeight+(d-1)*e.titleSpacing+e.titleMarginBottom),x){m+=g*(e.displayColors?Math.max(r,l.lineHeight):l.lineHeight)+(x-g)*l.lineHeight+(x-1)*e.bodySpacing}f&&(m+=e.footerMarginTop+f*c.lineHeight+(f-1)*e.footerSpacing);let _=0;const y=function(t){b=Math.max(b,i.measureText(t).width+_)};return i.save(),i.font=h.string,u(t.title,y),i.font=l.string,u(t.beforeBody.concat(t.afterBody),y),_=e.displayColors?a+2+e.boxPadding:0,u(s,(t=>{u(t.before,y),u(t.lines,y),u(t.after,y)})),_=0,i.font=c.string,u(t.footer,y),i.restore(),b+=p.width,{width:b,height:m}}function Aa(t,e,i,s){const{x:n,width:o}=i,{width:a,chartArea:{left:r,right:l}}=t;let h=\"center\";return\"center\"===s?h=n<=(r+l)\/2?\"left\":\"right\":n<=o\/2?h=\"left\":n>=a-o\/2&&(h=\"right\"),function(t,e,i,s){const{x:n,width:o}=s,a=i.caretSize+i.caretPadding;return\"left\"===t&&n+o+a>e.width||\"right\"===t&&n-o-a<0||void 0}(h,t,e,i)&&(h=\"center\"),h}function Ta(t,e,i){const s=i.yAlign||e.yAlign||function(t,e){const{y:i,height:s}=e;return i<s\/2?\"top\":i>t.height-s\/2?\"bottom\":\"center\"}(t,i);return{xAlign:i.xAlign||e.xAlign||Aa(t,e,i,s),yAlign:s}}function La(t,e,i,s){const{caretSize:n,caretPadding:o,cornerRadius:a}=t,{xAlign:r,yAlign:l}=i,h=n+o,{topLeft:c,topRight:d,bottomLeft:u,bottomRight:f}=wi(a);let g=function(t,e){let{x:i,width:s}=t;return\"right\"===e?i-=s:\"center\"===e&&(i-=s\/2),i}(e,r);const p=function(t,e,i){let{y:s,height:n}=t;return\"top\"===e?s+=i:s-=\"bottom\"===e?n+i:n\/2,s}(e,l,h);return\"center\"===l?\"left\"===r?g+=h:\"right\"===r&&(g-=h):\"left\"===r?g-=Math.max(c,u)+n:\"right\"===r&&(g+=Math.max(d,f)+n),{x:J(g,0,s.width-e.width),y:J(p,0,s.height-e.height)}}function Ea(t,e,i){const s=ki(i.padding);return\"center\"===e?t.x+t.width\/2:\"right\"===e?t.x+t.width-s.right:t.x+s.left}function Ra(t){return Pa([],Da(t))}function Ia(t,e){const i=e&&e.dataset&&e.dataset.tooltip&&e.dataset.tooltip.callbacks;return i?t.override(i):t}const za={beforeTitle:e,title(t){if(t.length>0){const e=t[0],i=e.chart.data.labels,s=i?i.length:0;if(this&&this.options&&\"dataset\"===this.options.mode)return e.dataset.label||\"\";if(e.label)return e.label;if(s>0&&e.dataIndex<s)return i[e.dataIndex]}return\"\"},afterTitle:e,beforeBody:e,beforeLabel:e,label(t){if(this&&this.options&&\"dataset\"===this.options.mode)return t.label+\": \"+t.formattedValue||t.formattedValue;let e=t.dataset.label||\"\";e&&(e+=\": \");const i=t.formattedValue;return s(i)||(e+=i),e},labelColor(t){const e=t.chart.getDatasetMeta(t.datasetIndex).controller.getStyle(t.dataIndex);return{borderColor:e.borderColor,backgroundColor:e.backgroundColor,borderWidth:e.borderWidth,borderDash:e.borderDash,borderDashOffset:e.borderDashOffset,borderRadius:0}},labelTextColor(){return this.options.bodyColor},labelPointStyle(t){const e=t.chart.getDatasetMeta(t.datasetIndex).controller.getStyle(t.dataIndex);return{pointStyle:e.pointStyle,rotation:e.rotation}},afterLabel:e,afterBody:e,beforeFooter:e,footer:e,afterFooter:e};function Fa(t,e,i,s){const n=t[e].call(i,s);return void 0===n?za[e].call(i,s):n}class Va extends Hs{static positioners=Sa;constructor(t){super(),this.opacity=0,this._active=[],this._eventPosition=void 0,this._size=void 0,this._cachedAnimations=void 0,this._tooltipItems=[],this.$animations=void 0,this.$context=void 0,this.chart=t.chart,this.options=t.options,this.dataPoints=void 0,this.title=void 0,this.beforeBody=void 0,this.body=void 0,this.afterBody=void 0,this.footer=void 0,this.xAlign=void 0,this.yAlign=void 0,this.x=void 0,this.y=void 0,this.height=void 0,this.width=void 0,this.caretX=void 0,this.caretY=void 0,this.labelColors=void 0,this.labelPointStyles=void 0,this.labelTextColors=void 0}initialize(t){this.options=t,this._cachedAnimations=void 0,this.$context=void 0}_resolveAnimations(){const t=this._cachedAnimations;if(t)return t;const e=this.chart,i=this.options.setContext(this.getContext()),s=i.enabled&&e.options.animation&&i.animations,n=new Os(this.chart,s);return s._cacheable&&(this._cachedAnimations=Object.freeze(n)),n}getContext(){return this.$context||(this.$context=(t=this.chart.getContext(),e=this,i=this._tooltipItems,Ci(t,{tooltip:e,tooltipItems:i,type:\"tooltip\"})));var t,e,i}getTitle(t,e){const{callbacks:i}=e,s=Fa(i,\"beforeTitle\",this,t),n=Fa(i,\"title\",this,t),o=Fa(i,\"afterTitle\",this,t);let a=[];return a=Pa(a,Da(s)),a=Pa(a,Da(n)),a=Pa(a,Da(o)),a}getBeforeBody(t,e){return Ra(Fa(e.callbacks,\"beforeBody\",this,t))}getBody(t,e){const{callbacks:i}=e,s=[];return u(t,(t=>{const e={before:[],lines:[],after:[]},n=Ia(i,t);Pa(e.before,Da(Fa(n,\"beforeLabel\",this,t))),Pa(e.lines,Fa(n,\"label\",this,t)),Pa(e.after,Da(Fa(n,\"afterLabel\",this,t))),s.push(e)})),s}getAfterBody(t,e){return Ra(Fa(e.callbacks,\"afterBody\",this,t))}getFooter(t,e){const{callbacks:i}=e,s=Fa(i,\"beforeFooter\",this,t),n=Fa(i,\"footer\",this,t),o=Fa(i,\"afterFooter\",this,t);let a=[];return a=Pa(a,Da(s)),a=Pa(a,Da(n)),a=Pa(a,Da(o)),a}_createItems(t){const e=this._active,i=this.chart.data,s=[],n=[],o=[];let a,r,l=[];for(a=0,r=e.length;a<r;++a)l.push(Ca(this.chart,e[a]));return t.filter&&(l=l.filter(((e,s,n)=>t.filter(e,s,n,i)))),t.itemSort&&(l=l.sort(((e,s)=>t.itemSort(e,s,i)))),u(l,(e=>{const i=Ia(t.callbacks,e);s.push(Fa(i,\"labelColor\",this,e)),n.push(Fa(i,\"labelPointStyle\",this,e)),o.push(Fa(i,\"labelTextColor\",this,e))})),this.labelColors=s,this.labelPointStyles=n,this.labelTextColors=o,this.dataPoints=l,l}update(t,e){const i=this.options.setContext(this.getContext()),s=this._active;let n,o=[];if(s.length){const t=Sa[i.position].call(this,s,this._eventPosition);o=this._createItems(i),this.title=this.getTitle(o,i),this.beforeBody=this.getBeforeBody(o,i),this.body=this.getBody(o,i),this.afterBody=this.getAfterBody(o,i),this.footer=this.getFooter(o,i);const e=this._size=Oa(this,i),a=Object.assign({},t,e),r=Ta(this.chart,i,a),l=La(i,a,r,this.chart);this.xAlign=r.xAlign,this.yAlign=r.yAlign,n={opacity:1,x:l.x,y:l.y,width:e.width,height:e.height,caretX:t.x,caretY:t.y}}else 0!==this.opacity&&(n={opacity:0});this._tooltipItems=o,this.$context=void 0,n&&this._resolveAnimations().update(this,n),t&&i.external&&i.external.call(this,{chart:this.chart,tooltip:this,replay:e})}drawCaret(t,e,i,s){const n=this.getCaretPosition(t,i,s);e.lineTo(n.x1,n.y1),e.lineTo(n.x2,n.y2),e.lineTo(n.x3,n.y3)}getCaretPosition(t,e,i){const{xAlign:s,yAlign:n}=this,{caretSize:o,cornerRadius:a}=i,{topLeft:r,topRight:l,bottomLeft:h,bottomRight:c}=wi(a),{x:d,y:u}=t,{width:f,height:g}=e;let p,m,b,x,_,y;return\"center\"===n?(_=u+g\/2,\"left\"===s?(p=d,m=p-o,x=_+o,y=_-o):(p=d+f,m=p+o,x=_-o,y=_+o),b=p):(m=\"left\"===s?d+Math.max(r,h)+o:\"right\"===s?d+f-Math.max(l,c)-o:this.caretX,\"top\"===n?(x=u,_=x-o,p=m-o,b=m+o):(x=u+g,_=x+o,p=m+o,b=m-o),y=x),{x1:p,x2:m,x3:b,y1:x,y2:_,y3:y}}drawTitle(t,e,i){const s=this.title,n=s.length;let o,a,r;if(n){const l=Oi(i.rtl,this.x,this.width);for(t.x=Ea(this,i.titleAlign,i),e.textAlign=l.textAlign(i.titleAlign),e.textBaseline=\"middle\",o=Si(i.titleFont),a=i.titleSpacing,e.fillStyle=i.titleColor,e.font=o.string,r=0;r<n;++r)e.fillText(s[r],l.x(t.x),t.y+o.lineHeight\/2),t.y+=o.lineHeight+a,r+1===n&&(t.y+=i.titleMarginBottom-a)}}_drawColorBox(t,e,i,s,n){const a=this.labelColors[i],r=this.labelPointStyles[i],{boxHeight:l,boxWidth:h}=n,c=Si(n.bodyFont),d=Ea(this,\"left\",n),u=s.x(d),f=l<c.lineHeight?(c.lineHeight-l)\/2:0,g=e.y+f;if(n.usePointStyle){const e={radius:Math.min(h,l)\/2,pointStyle:r.pointStyle,rotation:r.rotation,borderWidth:1},i=s.leftForLtr(u,h)+h\/2,o=g+l\/2;t.strokeStyle=n.multiKeyBackground,t.fillStyle=n.multiKeyBackground,Le(t,e,i,o),t.strokeStyle=a.borderColor,t.fillStyle=a.backgroundColor,Le(t,e,i,o)}else{t.lineWidth=o(a.borderWidth)?Math.max(...Object.values(a.borderWidth)):a.borderWidth||1,t.strokeStyle=a.borderColor,t.setLineDash(a.borderDash||[]),t.lineDashOffset=a.borderDashOffset||0;const e=s.leftForLtr(u,h),i=s.leftForLtr(s.xPlus(u,1),h-2),r=wi(a.borderRadius);Object.values(r).some((t=>0!==t))?(t.beginPath(),t.fillStyle=n.multiKeyBackground,He(t,{x:e,y:g,w:h,h:l,radius:r}),t.fill(),t.stroke(),t.fillStyle=a.backgroundColor,t.beginPath(),He(t,{x:i,y:g+1,w:h-2,h:l-2,radius:r}),t.fill()):(t.fillStyle=n.multiKeyBackground,t.fillRect(e,g,h,l),t.strokeRect(e,g,h,l),t.fillStyle=a.backgroundColor,t.fillRect(i,g+1,h-2,l-2))}t.fillStyle=this.labelTextColors[i]}drawBody(t,e,i){const{body:s}=this,{bodySpacing:n,bodyAlign:o,displayColors:a,boxHeight:r,boxWidth:l,boxPadding:h}=i,c=Si(i.bodyFont);let d=c.lineHeight,f=0;const g=Oi(i.rtl,this.x,this.width),p=function(i){e.fillText(i,g.x(t.x+f),t.y+d\/2),t.y+=d+n},m=g.textAlign(o);let b,x,_,y,v,M,w;for(e.textAlign=o,e.textBaseline=\"middle\",e.font=c.string,t.x=Ea(this,m,i),e.fillStyle=i.bodyColor,u(this.beforeBody,p),f=a&&\"right\"!==m?\"center\"===o?l\/2+h:l+2+h:0,y=0,M=s.length;y<M;++y){for(b=s[y],x=this.labelTextColors[y],e.fillStyle=x,u(b.before,p),_=b.lines,a&&_.length&&(this._drawColorBox(e,t,y,g,i),d=Math.max(c.lineHeight,r)),v=0,w=_.length;v<w;++v)p(_[v]),d=c.lineHeight;u(b.after,p)}f=0,d=c.lineHeight,u(this.afterBody,p),t.y-=n}drawFooter(t,e,i){const s=this.footer,n=s.length;let o,a;if(n){const r=Oi(i.rtl,this.x,this.width);for(t.x=Ea(this,i.footerAlign,i),t.y+=i.footerMarginTop,e.textAlign=r.textAlign(i.footerAlign),e.textBaseline=\"middle\",o=Si(i.footerFont),e.fillStyle=i.footerColor,e.font=o.string,a=0;a<n;++a)e.fillText(s[a],r.x(t.x),t.y+o.lineHeight\/2),t.y+=o.lineHeight+i.footerSpacing}}drawBackground(t,e,i,s){const{xAlign:n,yAlign:o}=this,{x:a,y:r}=t,{width:l,height:h}=i,{topLeft:c,topRight:d,bottomLeft:u,bottomRight:f}=wi(s.cornerRadius);e.fillStyle=s.backgroundColor,e.strokeStyle=s.borderColor,e.lineWidth=s.borderWidth,e.beginPath(),e.moveTo(a+c,r),\"top\"===o&&this.drawCaret(t,e,i,s),e.lineTo(a+l-d,r),e.quadraticCurveTo(a+l,r,a+l,r+d),\"center\"===o&&\"right\"===n&&this.drawCaret(t,e,i,s),e.lineTo(a+l,r+h-f),e.quadraticCurveTo(a+l,r+h,a+l-f,r+h),\"bottom\"===o&&this.drawCaret(t,e,i,s),e.lineTo(a+u,r+h),e.quadraticCurveTo(a,r+h,a,r+h-u),\"center\"===o&&\"left\"===n&&this.drawCaret(t,e,i,s),e.lineTo(a,r+c),e.quadraticCurveTo(a,r,a+c,r),e.closePath(),e.fill(),s.borderWidth>0&&e.stroke()}_updateAnimationTarget(t){const e=this.chart,i=this.$animations,s=i&&i.x,n=i&&i.y;if(s||n){const i=Sa[t.position].call(this,this._active,this._eventPosition);if(!i)return;const o=this._size=Oa(this,t),a=Object.assign({},i,this._size),r=Ta(e,t,a),l=La(t,a,r,e);s._to===l.x&&n._to===l.y||(this.xAlign=r.xAlign,this.yAlign=r.yAlign,this.width=o.width,this.height=o.height,this.caretX=i.x,this.caretY=i.y,this._resolveAnimations().update(this,l))}}_willRender(){return!!this.opacity}draw(t){const e=this.options.setContext(this.getContext());let i=this.opacity;if(!i)return;this._updateAnimationTarget(e);const s={width:this.width,height:this.height},n={x:this.x,y:this.y};i=Math.abs(i)<.001?0:i;const o=ki(e.padding),a=this.title.length||this.beforeBody.length||this.body.length||this.afterBody.length||this.footer.length;e.enabled&&a&&(t.save(),t.globalAlpha=i,this.drawBackground(n,t,s,e),Ai(t,e.textDirection),n.y+=o.top,this.drawTitle(n,t,e),this.drawBody(n,t,e),this.drawFooter(n,t,e),Ti(t,e.textDirection),t.restore())}getActiveElements(){return this._active||[]}setActiveElements(t,e){const i=this._active,s=t.map((({datasetIndex:t,index:e})=>{const i=this.chart.getDatasetMeta(t);if(!i)throw new Error(\"Cannot find a dataset at index \"+t);return{datasetIndex:t,element:i.data[e],index:e}})),n=!f(i,s),o=this._positionChanged(s,e);(n||o)&&(this._active=s,this._eventPosition=e,this._ignoreReplayEvents=!0,this.update(!0))}handleEvent(t,e,i=!0){if(e&&this._ignoreReplayEvents)return!1;this._ignoreReplayEvents=!1;const s=this.options,n=this._active||[],o=this._getActiveElements(t,n,e,i),a=this._positionChanged(o,t),r=e||!f(o,n)||a;return r&&(this._active=o,(s.enabled||s.external)&&(this._eventPosition={x:t.x,y:t.y},this.update(!0,e))),r}_getActiveElements(t,e,i,s){const n=this.options;if(\"mouseout\"===t.type)return[];if(!s)return e.filter((t=>this.chart.data.datasets[t.datasetIndex]&&void 0!==this.chart.getDatasetMeta(t.datasetIndex).controller.getParsed(t.index)));const o=this.chart.getElementsAtEventForMode(t,n.mode,n,i);return n.reverse&&o.reverse(),o}_positionChanged(t,e){const{caretX:i,caretY:s,options:n}=this,o=Sa[n.position].call(this,t,e);return!1!==o&&(i!==o.x||s!==o.y)}}var Ba={id:\"tooltip\",_element:Va,positioners:Sa,afterInit(t,e,i){i&&(t.tooltip=new Va({chart:t,options:i}))},beforeUpdate(t,e,i){t.tooltip&&t.tooltip.initialize(i)},reset(t,e,i){t.tooltip&&t.tooltip.initialize(i)},afterDraw(t){const e=t.tooltip;if(e&&e._willRender()){const i={tooltip:e};if(!1===t.notifyPlugins(\"beforeTooltipDraw\",{...i,cancelable:!0}))return;e.draw(t.ctx),t.notifyPlugins(\"afterTooltipDraw\",i)}},afterEvent(t,e){if(t.tooltip){const i=e.replay;t.tooltip.handleEvent(e.event,i,e.inChartArea)&&(e.changed=!0)}},defaults:{enabled:!0,external:null,position:\"average\",backgroundColor:\"rgba(0,0,0,0.8)\",titleColor:\"#fff\",titleFont:{weight:\"bold\"},titleSpacing:2,titleMarginBottom:6,titleAlign:\"left\",bodyColor:\"#fff\",bodySpacing:2,bodyFont:{},bodyAlign:\"left\",footerColor:\"#fff\",footerSpacing:2,footerMarginTop:6,footerFont:{weight:\"bold\"},footerAlign:\"left\",padding:6,caretPadding:2,caretSize:5,cornerRadius:6,boxHeight:(t,e)=>e.bodyFont.size,boxWidth:(t,e)=>e.bodyFont.size,multiKeyBackground:\"#fff\",displayColors:!0,boxPadding:0,borderColor:\"rgba(0,0,0,0)\",borderWidth:0,animation:{duration:400,easing:\"easeOutQuart\"},animations:{numbers:{type:\"number\",properties:[\"x\",\"y\",\"width\",\"height\",\"caretX\",\"caretY\"]},opacity:{easing:\"linear\",duration:200}},callbacks:za},defaultRoutes:{bodyFont:\"font\",footerFont:\"font\",titleFont:\"font\"},descriptors:{_scriptable:t=>\"filter\"!==t&&\"itemSort\"!==t&&\"external\"!==t,_indexable:!1,callbacks:{_scriptable:!1,_indexable:!1},animation:{_fallback:!1},animations:{_fallback:\"animation\"}},additionalOptionScopes:[\"interaction\"]};return An.register(Yn,jo,fo,t),An.helpers={...Wi},An._adapters=Rn,An.Animation=Cs,An.Animations=Os,An.animator=xt,An.controllers=en.controllers.items,An.DatasetController=Ns,An.Element=Hs,An.elements=fo,An.Interaction=Xi,An.layouts=as,An.platforms=Ss,An.Scale=Js,An.Ticks=ae,Object.assign(An,Yn,jo,fo,t,Ss),An.Chart=An,\"undefined\"!=typeof window&&(window.Chart=An),An}));\n\/\/# sourceMappingURL=chart.umd.js.map\n<\/script>\n  <script>window.AIO2026_DATA = {\"meta\":{\"runId\":\"cmp0z3xoi0000oojptuyj1q1h\",\"capturedAt\":\"2026-05-12T07:59:44.816Z\",\"verticals\":18},\"sample\":{\"totalSerps\":116918,\"aioPresentSerps\":44142,\"aioCitedSerps\":42326,\"overallTriggerRate\":37.75466566311432,\"overallTriggerCi\":{\"ciLow\":37.47719431320301,\"ciHigh\":38.03294168178119},\"citeWhenAio\":95.88600425898237},\"finding1_triggerRateByVertical\":[{\"vertical\":\"Accounting\",\"slug\":\"accounting\",\"total\":6462,\"triggered\":3439,\"rate\":53.218817703497365,\"ciLow\":52.000684877456536,\"ciHigh\":54.43312568789972},{\"vertical\":\"E-commerce\",\"slug\":\"ecommerce\",\"total\":6492,\"triggered\":3408,\"rate\":52.495378927911275,\"ciLow\":51.27948811300711,\"ciHigh\":53.708318239906426},{\"vertical\":\"IT & Tech Services\",\"slug\":\"it-tech-services\",\"total\":6509,\"triggered\":3415,\"rate\":52.46581656168382,\"ciLow\":51.251497381054556,\"ciHigh\":53.67722681822583},{\"vertical\":\"B2B Services\",\"slug\":\"b2b-services\",\"total\":6495,\"triggered\":3358,\"rate\":51.70130869899923,\"ciLow\":50.48535780748805,\"ciHigh\":52.91524823282535},{\"vertical\":\"Real Estate\",\"slug\":\"real-estate\",\"total\":6555,\"triggered\":3339,\"rate\":50.93821510297482,\"ciLow\":49.72780290376594,\"ciHigh\":52.147528252272345},{\"vertical\":\"Legal\",\"slug\":\"legal\",\"total\":6466,\"triggered\":3154,\"rate\":48.77822455923291,\"ciLow\":47.56094343838699,\"ciHigh\":49.99695658809898},{\"vertical\":\"Marketing & Creative Services\",\"slug\":\"marketing-creative-services\",\"total\":6523,\"triggered\":2811,\"rate\":43.09366855741224,\"ciLow\":41.896315756046434,\"ciHigh\":44.2991512827124},{\"vertical\":\"Education & Training\",\"slug\":\"education-training\",\"total\":6512,\"triggered\":2607,\"rate\":40.03378378378378,\"ciLow\":38.84994515788621,\"ciHigh\":41.22937414293902},{\"vertical\":\"Healthcare\",\"slug\":\"healthcare\",\"total\":6475,\"triggered\":2435,\"rate\":37.6061776061776,\"ciLow\":36.43397685627542,\"ciHigh\":38.7930760786196},{\"vertical\":\"Trades\",\"slug\":\"trades\",\"total\":6493,\"triggered\":2417,\"rate\":37.224703526875096,\"ciLow\":36.05675413952665,\"ciHigh\":38.407761048899665},{\"vertical\":\"Travel & Tourism\",\"slug\":\"travel-tourism\",\"total\":6472,\"triggered\":2278,\"rate\":35.19777503090235,\"ciLow\":34.04330643891723,\"ciHigh\":36.36980558037615},{\"vertical\":\"Veterinary & Pet Services\",\"slug\":\"veterinary-pet\",\"total\":6520,\"triggered\":2207,\"rate\":33.84969325153374,\"ciLow\":32.710884419074745,\"ciHigh\":35.007522477867695},{\"vertical\":\"Home Services\",\"slug\":\"home-services\",\"total\":6540,\"triggered\":2191,\"rate\":33.50152905198777,\"ciLow\":32.36756387090072,\"ciHigh\":34.6548652783623},{\"vertical\":\"Fitness & Wellness\",\"slug\":\"fitness-wellness\",\"total\":6470,\"triggered\":1862,\"rate\":28.778979907264297,\"ciLow\":27.688649672934424,\"ciHigh\":29.894495395057348},{\"vertical\":\"Automotive\",\"slug\":\"automotive\",\"total\":6472,\"triggered\":1637,\"rate\":25.293572311495673,\"ciLow\":24.24938061276972,\"ciHigh\":26.367076713796152},{\"vertical\":\"Events & Weddings\",\"slug\":\"events-weddings\",\"total\":6471,\"triggered\":1602,\"rate\":24.756606397774686,\"ciLow\":23.720190049689442,\"ciHigh\":25.82297715304181},{\"vertical\":\"Beauty & Personal Care\",\"slug\":\"beauty-personal-care\",\"total\":6524,\"triggered\":1396,\"rate\":21.397915389331697,\"ciLow\":20.419717551437643,\"ciHigh\":22.409777576017657},{\"vertical\":\"Hospitality\",\"slug\":\"hospitality\",\"total\":6467,\"triggered\":586,\"rate\":9.061388588217103,\"ciLow\":8.385836041266465,\"ciHigh\":9.785549887883773}],\"finding2_mobileVsDesktop\":[{\"vertical\":\"Accounting\",\"slug\":\"accounting\",\"mobile\":{\"total\":4998,\"triggered\":2740,\"rate\":54.821928771508595,\"ciLow\":53.439004963486184,\"ciHigh\":56.19744573899107},\"desktop\":{\"total\":1464,\"triggered\":699,\"rate\":47.74590163934426,\"ciLow\":45.196477673122246,\"ciHigh\":50.30712435042036},\"gap\":7.076027132164334},{\"vertical\":\"Automotive\",\"slug\":\"automotive\",\"mobile\":{\"total\":4998,\"triggered\":1272,\"rate\":25.45018007202881,\"ciLow\":24.261741904725508,\"ciHigh\":26.676328585151655},\"desktop\":{\"total\":1474,\"triggered\":365,\"rate\":24.762550881953867,\"ciLow\":22.626497395281426,\"ciHigh\":27.029812184852197},\"gap\":0.6876291900749436},{\"vertical\":\"B2B Services\",\"slug\":\"b2b-services\",\"mobile\":{\"total\":4998,\"triggered\":2635,\"rate\":52.721088435374156,\"ciLow\":51.3353763484211,\"ciHigh\":54.10262072849553},\"desktop\":{\"total\":1497,\"triggered\":723,\"rate\":48.296593186372746,\"ciLow\":45.77277837194752,\"ciHigh\":50.82912818501358},\"gap\":4.42449524900141},{\"vertical\":\"Beauty & Personal Care\",\"slug\":\"beauty-personal-care\",\"mobile\":{\"total\":4998,\"triggered\":1062,\"rate\":21.248499399759904,\"ciLow\":20.136701790981917,\"ciHigh\":22.404461447773986},\"desktop\":{\"total\":1526,\"triggered\":334,\"rate\":21.887287024901703,\"ciLow\":19.88467929667876,\"ciHigh\":24.03108296262965},\"gap\":-0.6387876251417985},{\"vertical\":\"E-commerce\",\"slug\":\"ecommerce\",\"mobile\":{\"total\":4997,\"triggered\":2603,\"rate\":52.09125475285171,\"ciLow\":50.70504733075152,\"ciHigh\":53.47424921005472},\"desktop\":{\"total\":1495,\"triggered\":805,\"rate\":53.84615384615385,\"ciLow\":51.31245023080137,\"ciHigh\":56.360141722878055},\"gap\":-1.7548990933021358},{\"vertical\":\"Education & Training\",\"slug\":\"education-training\",\"mobile\":{\"total\":4998,\"triggered\":2035,\"rate\":40.71628651460584,\"ciLow\":39.36181895494493,\"ciHigh\":42.08501454733951},\"desktop\":{\"total\":1514,\"triggered\":572,\"rate\":37.780713342140025,\"ciLow\":35.37228301854757,\"ciHigh\":40.250996775602225},\"gap\":2.9355731724658156},{\"vertical\":\"Events & Weddings\",\"slug\":\"events-weddings\",\"mobile\":{\"total\":4998,\"triggered\":1247,\"rate\":24.9499799919968,\"ciLow\":23.769837428314485,\"ciHigh\":26.168601245953006},\"desktop\":{\"total\":1473,\"triggered\":355,\"rate\":24.100475220638153,\"ciLow\":21.98547527422672,\"ciHigh\":26.35021624475542},\"gap\":0.8495047713586459},{\"vertical\":\"Fitness & Wellness\",\"slug\":\"fitness-wellness\",\"mobile\":{\"total\":4998,\"triggered\":1466,\"rate\":29.331732693077228,\"ciLow\":28.085760116498705,\"ciHigh\":30.609453262509533},\"desktop\":{\"total\":1472,\"triggered\":396,\"rate\":26.902173913043477,\"ciLow\":24.699032297235128,\"ciHigh\":29.22556232050703},\"gap\":2.4295587800337515},{\"vertical\":\"Healthcare\",\"slug\":\"healthcare\",\"mobile\":{\"total\":4998,\"triggered\":1902,\"rate\":38.055222088835535,\"ciLow\":36.71881254185495,\"ciHigh\":39.40997970138602},\"desktop\":{\"total\":1477,\"triggered\":533,\"rate\":36.08666215301287,\"ciLow\":33.67640862936446,\"ciHigh\":38.56910365230024},\"gap\":1.9685599358226682},{\"vertical\":\"Home Services\",\"slug\":\"home-services\",\"mobile\":{\"total\":4998,\"triggered\":1709,\"rate\":34.19367747098839,\"ciLow\":32.891148570639054,\"ciHigh\":35.520486056095216},\"desktop\":{\"total\":1542,\"triggered\":482,\"rate\":31.25810635538262,\"ciLow\":28.993395319996786,\"ciHigh\":33.6159690547231},\"gap\":2.9355711156057716},{\"vertical\":\"Hospitality\",\"slug\":\"hospitality\",\"mobile\":{\"total\":4998,\"triggered\":476,\"rate\":9.523809523809524,\"ciLow\":8.740791645833797,\"ciHigh\":10.369001835031328},\"desktop\":{\"total\":1469,\"triggered\":110,\"rate\":7.488087134104833,\"ciLow\":6.250209767357297,\"ciHigh\":8.947731409752311},\"gap\":2.0357223897046905},{\"vertical\":\"IT & Tech Services\",\"slug\":\"it-tech-services\",\"mobile\":{\"total\":4998,\"triggered\":2663,\"rate\":53.28131252501001,\"ciLow\":51.89610306330682,\"ciHigh\":54.66148164709265},\"desktop\":{\"total\":1511,\"triggered\":752,\"rate\":49.768365320979484,\"ciLow\":47.25105658031594,\"ciHigh\":52.28684890102282},\"gap\":3.5129472040305245},{\"vertical\":\"Legal\",\"slug\":\"legal\",\"mobile\":{\"total\":4998,\"triggered\":2520,\"rate\":50.42016806722689,\"ciLow\":49.03422012268651,\"ciHigh\":51.80547060242561},\"desktop\":{\"total\":1468,\"triggered\":634,\"rate\":43.18801089918256,\"ciLow\":40.67510701617828,\"ciHigh\":45.736474230064516},\"gap\":7.232157168044331},{\"vertical\":\"Marketing & Creative Services\",\"slug\":\"marketing-creative-services\",\"mobile\":{\"total\":4998,\"triggered\":2200,\"rate\":44.017607042817126,\"ciLow\":42.64647407965383,\"ciHigh\":45.39792940565446},\"desktop\":{\"total\":1525,\"triggered\":611,\"rate\":40.0655737704918,\"ciLow\":37.6340119682229,\"ciHigh\":42.547061074268875},\"gap\":3.9520332723253233},{\"vertical\":\"Real Estate\",\"slug\":\"real-estate\",\"mobile\":{\"total\":4998,\"triggered\":2558,\"rate\":51.18047218887555,\"ciLow\":49.79427736211026,\"ciHigh\":52.564853722728564},\"desktop\":{\"total\":1557,\"triggered\":781,\"rate\":50.16056518946692,\"ciLow\":47.679640330254294,\"ciHigh\":52.64069967093481},\"gap\":1.0199069994086258},{\"vertical\":\"Trades\",\"slug\":\"trades\",\"mobile\":{\"total\":4998,\"triggered\":1925,\"rate\":38.51540616246499,\"ciLow\":37.175572000774224,\"ciHigh\":39.872881512827654},\"desktop\":{\"total\":1495,\"triggered\":492,\"rate\":32.909698996655514,\"ciLow\":30.57423270952666,\"ciHigh\":35.33277173977605},\"gap\":5.605707165809477},{\"vertical\":\"Travel & Tourism\",\"slug\":\"travel-tourism\",\"mobile\":{\"total\":4998,\"triggered\":1818,\"rate\":36.37454981992797,\"ciLow\":35.05174275906301,\"ciHigh\":37.71828658372945},\"desktop\":{\"total\":1474,\"triggered\":460,\"rate\":31.20759837177748,\"ciLow\":28.893602839343224,\"ciHigh\":33.619294348014336},\"gap\":5.166951448150492},{\"vertical\":\"Veterinary & Pet Services\",\"slug\":\"veterinary-pet\",\"mobile\":{\"total\":4998,\"triggered\":1774,\"rate\":35.494197679071625,\"ciLow\":34.17921354833023,\"ciHigh\":36.8314637989892},\"desktop\":{\"total\":1522,\"triggered\":433,\"rate\":28.44940867279895,\"ciLow\":26.239182309018418,\"ciHigh\":30.76815056223112},\"gap\":7.044789006272676}],\"finding3_metroVsRegional\":[{\"pair\":\"Sydney \u2194 Newcastle\",\"state\":\"NSW\",\"count\":14993,\"avg\":0.6865471688430745,\"median\":0.75},{\"pair\":\"Melbourne \u2194 Geelong\",\"state\":\"VIC\",\"count\":14994,\"avg\":0.702012742141293,\"median\":0.75},{\"pair\":\"Brisbane \u2194 Sunshine Coast\",\"state\":\"QLD\",\"count\":14993,\"avg\":0.7121618956275128,\"median\":0.75}],\"finding4_citationLeaderboard\":{\"overallTop20\":[{\"rank\":1,\"domain\":\"google.com\",\"count\":18214},{\"rank\":2,\"domain\":\"reddit.com\",\"count\":13551},{\"rank\":3,\"domain\":\"youtube.com\",\"count\":12466},{\"rank\":4,\"domain\":\"ato.gov.au\",\"count\":5909},{\"rank\":5,\"domain\":\"au.indeed.com\",\"count\":5509},{\"rank\":6,\"domain\":\"facebook.com\",\"count\":5302},{\"rank\":7,\"domain\":\"seek.com.au\",\"count\":3955},{\"rank\":8,\"domain\":\"au.seek.com\",\"count\":3883},{\"rank\":9,\"domain\":\"instagram.com\",\"count\":1677},{\"rank\":10,\"domain\":\"glassdoor.com.au\",\"count\":1660},{\"rank\":11,\"domain\":\"en.wikipedia.org\",\"count\":1468},{\"rank\":12,\"domain\":\"superprof.com.au\",\"count\":1446},{\"rank\":13,\"domain\":\"airtasker.com\",\"count\":1397},{\"rank\":14,\"domain\":\"au.linkedin.com\",\"count\":1375},{\"rank\":15,\"domain\":\"au.jora.com\",\"count\":1369},{\"rank\":16,\"domain\":\"realestate.com.au\",\"count\":1252},{\"rank\":17,\"domain\":\"tripadvisor.com.au\",\"count\":1220},{\"rank\":18,\"domain\":\"amazon.com.au\",\"count\":1072},{\"rank\":19,\"domain\":\"linkedin.com\",\"count\":931},{\"rank\":20,\"domain\":\"hrblock.com.au\",\"count\":877}],\"perVerticalTop10\":{\"accounting\":[{\"rank\":1,\"domain\":\"ato.gov.au\",\"count\":5689},{\"rank\":2,\"domain\":\"hrblock.com.au\",\"count\":853},{\"rank\":3,\"domain\":\"reddit.com\",\"count\":822},{\"rank\":4,\"domain\":\"my.gov.au\",\"count\":738},{\"rank\":5,\"domain\":\"seek.com.au\",\"count\":696},{\"rank\":6,\"domain\":\"youtube.com\",\"count\":659},{\"rank\":7,\"domain\":\"au.indeed.com\",\"count\":619},{\"rank\":8,\"domain\":\"scalesuite.com.au\",\"count\":545},{\"rank\":9,\"domain\":\"tpb.gov.au\",\"count\":527},{\"rank\":10,\"domain\":\"etax.com.au\",\"count\":500}],\"automotive\":[{\"rank\":1,\"domain\":\"google.com\",\"count\":1222},{\"rank\":2,\"domain\":\"mycar.com.au\",\"count\":648},{\"rank\":3,\"domain\":\"youtube.com\",\"count\":627},{\"rank\":4,\"domain\":\"reddit.com\",\"count\":468},{\"rank\":5,\"domain\":\"autoguru.com.au\",\"count\":464},{\"rank\":6,\"domain\":\"supercheapauto.com.au\",\"count\":306},{\"rank\":7,\"domain\":\"facebook.com\",\"count\":293},{\"rank\":8,\"domain\":\"airtasker.com\",\"count\":205},{\"rank\":9,\"domain\":\"yellowpages.com.au\",\"count\":201},{\"rank\":10,\"domain\":\"jaxtyres.com.au\",\"count\":140}],\"b2b-services\":[{\"rank\":1,\"domain\":\"au.indeed.com\",\"count\":942},{\"rank\":2,\"domain\":\"youtube.com\",\"count\":927},{\"rank\":3,\"domain\":\"reddit.com\",\"count\":705},{\"rank\":4,\"domain\":\"au.seek.com\",\"count\":650},{\"rank\":5,\"domain\":\"glassdoor.com.au\",\"count\":538},{\"rank\":6,\"domain\":\"seek.com.au\",\"count\":536},{\"rank\":7,\"domain\":\"au.linkedin.com\",\"count\":521},{\"rank\":8,\"domain\":\"linkedin.com\",\"count\":314},{\"rank\":9,\"domain\":\"imc.org.au\",\"count\":272},{\"rank\":10,\"domain\":\"deloitte.com\",\"count\":254}],\"beauty-personal-care\":[{\"rank\":1,\"domain\":\"google.com\",\"count\":1228},{\"rank\":2,\"domain\":\"reddit.com\",\"count\":572},{\"rank\":3,\"domain\":\"youtube.com\",\"count\":370},{\"rank\":4,\"domain\":\"removery.com\",\"count\":318},{\"rank\":5,\"domain\":\"laserclinics.com.au\",\"count\":218},{\"rank\":6,\"domain\":\"instagram.com\",\"count\":173},{\"rank\":7,\"domain\":\"facebook.com\",\"count\":152},{\"rank\":8,\"domain\":\"australianskinclinics.com.au\",\"count\":148},{\"rank\":9,\"domain\":\"fresha.com\",\"count\":136},{\"rank\":10,\"domain\":\"healthline.com\",\"count\":99}],\"ecommerce\":[{\"rank\":1,\"domain\":\"google.com\",\"count\":4784},{\"rank\":2,\"domain\":\"reddit.com\",\"count\":729},{\"rank\":3,\"domain\":\"amazon.com.au\",\"count\":424},{\"rank\":4,\"domain\":\"youtube.com\",\"count\":424},{\"rank\":5,\"domain\":\"australianmade.com.au\",\"count\":355},{\"rank\":6,\"domain\":\"facebook.com\",\"count\":308},{\"rank\":7,\"domain\":\"ebay.com.au\",\"count\":245},{\"rank\":8,\"domain\":\"theiconic.com.au\",\"count\":229},{\"rank\":9,\"domain\":\"en.wikipedia.org\",\"count\":211},{\"rank\":10,\"domain\":\"princesspolly.com.au\",\"count\":207}],\"education-training\":[{\"rank\":1,\"domain\":\"superprof.com.au\",\"count\":1320},{\"rank\":2,\"domain\":\"youtube.com\",\"count\":1273},{\"rank\":3,\"domain\":\"learnmate.com.au\",\"count\":874},{\"rank\":4,\"domain\":\"reddit.com\",\"count\":853},{\"rank\":5,\"domain\":\"clueylearning.com.au\",\"count\":489},{\"rank\":6,\"domain\":\"au.indeed.com\",\"count\":468},{\"rank\":7,\"domain\":\"facebook.com\",\"count\":421},{\"rank\":8,\"domain\":\"google.com\",\"count\":348},{\"rank\":9,\"domain\":\"au.seek.com\",\"count\":317},{\"rank\":10,\"domain\":\"tutorfinder.com.au\",\"count\":300}],\"events-weddings\":[{\"rank\":1,\"domain\":\"google.com\",\"count\":933},{\"rank\":2,\"domain\":\"reddit.com\",\"count\":726},{\"rank\":3,\"domain\":\"easyweddings.com.au\",\"count\":679},{\"rank\":4,\"domain\":\"facebook.com\",\"count\":290},{\"rank\":5,\"domain\":\"wedlockers.com.au\",\"count\":218},{\"rank\":6,\"domain\":\"youtube.com\",\"count\":167},{\"rank\":7,\"domain\":\"bridebook.com\",\"count\":164},{\"rank\":8,\"domain\":\"ag.gov.au\",\"count\":145},{\"rank\":9,\"domain\":\"instagram.com\",\"count\":140},{\"rank\":10,\"domain\":\"polkadotwedding.com\",\"count\":127}],\"fitness-wellness\":[{\"rank\":1,\"domain\":\"youtube.com\",\"count\":897},{\"rank\":2,\"domain\":\"google.com\",\"count\":769},{\"rank\":3,\"domain\":\"reddit.com\",\"count\":529},{\"rank\":4,\"domain\":\"fitness.edu.au\",\"count\":399},{\"rank\":5,\"domain\":\"facebook.com\",\"count\":315},{\"rank\":6,\"domain\":\"fitnesseducation.edu.au\",\"count\":255},{\"rank\":7,\"domain\":\"crossfit.com\",\"count\":250},{\"rank\":8,\"domain\":\"instagram.com\",\"count\":228},{\"rank\":9,\"domain\":\"aipt.edu.au\",\"count\":215},{\"rank\":10,\"domain\":\"seek.com.au\",\"count\":163}],\"healthcare\":[{\"rank\":1,\"domain\":\"youtube.com\",\"count\":571},{\"rank\":2,\"domain\":\"google.com\",\"count\":431},{\"rank\":3,\"domain\":\"au.indeed.com\",\"count\":411},{\"rank\":4,\"domain\":\"reddit.com\",\"count\":409},{\"rank\":5,\"domain\":\"healthdirect.gov.au\",\"count\":394},{\"rank\":6,\"domain\":\"dietitiansaustralia.org.au\",\"count\":317},{\"rank\":7,\"domain\":\"au.seek.com\",\"count\":281},{\"rank\":8,\"domain\":\"vu.edu.au\",\"count\":272},{\"rank\":9,\"domain\":\"seek.com.au\",\"count\":258},{\"rank\":10,\"domain\":\"facebook.com\",\"count\":252}],\"home-services\":[{\"rank\":1,\"domain\":\"google.com\",\"count\":1648},{\"rank\":2,\"domain\":\"youtube.com\",\"count\":565},{\"rank\":3,\"domain\":\"reddit.com\",\"count\":565},{\"rank\":4,\"domain\":\"airtasker.com\",\"count\":430},{\"rank\":5,\"domain\":\"hipages.com.au\",\"count\":389},{\"rank\":6,\"domain\":\"bunnings.com.au\",\"count\":367},{\"rank\":7,\"domain\":\"facebook.com\",\"count\":346},{\"rank\":8,\"domain\":\"jimscleaning.com.au\",\"count\":271},{\"rank\":9,\"domain\":\"tradeheroes.com.au\",\"count\":231},{\"rank\":10,\"domain\":\"clean4you.com.au\",\"count\":197}],\"hospitality\":[{\"rank\":1,\"domain\":\"google.com\",\"count\":509},{\"rank\":2,\"domain\":\"tripadvisor.com.au\",\"count\":301},{\"rank\":3,\"domain\":\"instagram.com\",\"count\":143},{\"rank\":4,\"domain\":\"reddit.com\",\"count\":127},{\"rank\":5,\"domain\":\"facebook.com\",\"count\":116},{\"rank\":6,\"domain\":\"broadsheet.com.au\",\"count\":108},{\"rank\":7,\"domain\":\"timeout.com\",\"count\":105},{\"rank\":8,\"domain\":\"opentable.com.au\",\"count\":100},{\"rank\":9,\"domain\":\"theurbanlist.com\",\"count\":94},{\"rank\":10,\"domain\":\"tripadvisor.com\",\"count\":92}],\"it-tech-services\":[{\"rank\":1,\"domain\":\"youtube.com\",\"count\":1816},{\"rank\":2,\"domain\":\"reddit.com\",\"count\":1579},{\"rank\":3,\"domain\":\"google.com\",\"count\":1093},{\"rank\":4,\"domain\":\"au.indeed.com\",\"count\":636},{\"rank\":5,\"domain\":\"seek.com.au\",\"count\":533},{\"rank\":6,\"domain\":\"au.seek.com\",\"count\":437},{\"rank\":7,\"domain\":\"thepcdoctor.com.au\",\"count\":417},{\"rank\":8,\"domain\":\"cleverfiles.com\",\"count\":361},{\"rank\":9,\"domain\":\"geeks2u.com.au\",\"count\":340},{\"rank\":10,\"domain\":\"payam.com.au\",\"count\":255}],\"legal\":[{\"rank\":1,\"domain\":\"google.com\",\"count\":1699},{\"rank\":2,\"domain\":\"legalaid.vic.gov.au\",\"count\":726},{\"rank\":3,\"domain\":\"legalaid.nsw.gov.au\",\"count\":657},{\"rank\":4,\"domain\":\"reddit.com\",\"count\":626},{\"rank\":5,\"domain\":\"legalaid.qld.gov.au\",\"count\":543},{\"rank\":6,\"domain\":\"youtube.com\",\"count\":365},{\"rank\":7,\"domain\":\"fcfcoa.gov.au\",\"count\":284},{\"rank\":8,\"domain\":\"au.indeed.com\",\"count\":208},{\"rank\":9,\"domain\":\"familyrelationships.gov.au\",\"count\":199},{\"rank\":10,\"domain\":\"justia.com\",\"count\":199}],\"marketing-creative-services\":[{\"rank\":1,\"domain\":\"reddit.com\",\"count\":1301},{\"rank\":2,\"domain\":\"youtube.com\",\"count\":1074},{\"rank\":3,\"domain\":\"au.indeed.com\",\"count\":645},{\"rank\":4,\"domain\":\"google.com\",\"count\":348},{\"rank\":5,\"domain\":\"au.seek.com\",\"count\":296},{\"rank\":6,\"domain\":\"seek.com.au\",\"count\":255},{\"rank\":7,\"domain\":\"linkedin.com\",\"count\":255},{\"rank\":8,\"domain\":\"support.google.com\",\"count\":247},{\"rank\":9,\"domain\":\"glassdoor.com.au\",\"count\":243},{\"rank\":10,\"domain\":\"clutch.co\",\"count\":233}],\"real-estate\":[{\"rank\":1,\"domain\":\"reddit.com\",\"count\":1693},{\"rank\":2,\"domain\":\"realestate.com.au\",\"count\":1189},{\"rank\":3,\"domain\":\"youtube.com\",\"count\":615},{\"rank\":4,\"domain\":\"entryeducation.edu.au\",\"count\":553},{\"rank\":5,\"domain\":\"aussie.com.au\",\"count\":456},{\"rank\":6,\"domain\":\"au.seek.com\",\"count\":406},{\"rank\":7,\"domain\":\"nsw.gov.au\",\"count\":395},{\"rank\":8,\"domain\":\"seek.com.au\",\"count\":346},{\"rank\":9,\"domain\":\"salebyhomeowner.com.au\",\"count\":345},{\"rank\":10,\"domain\":\"reiq.com\",\"count\":345}],\"trades\":[{\"rank\":1,\"domain\":\"youtube.com\",\"count\":1043},{\"rank\":2,\"domain\":\"google.com\",\"count\":956},{\"rank\":3,\"domain\":\"reddit.com\",\"count\":769},{\"rank\":4,\"domain\":\"au.indeed.com\",\"count\":610},{\"rank\":5,\"domain\":\"au.seek.com\",\"count\":593},{\"rank\":6,\"domain\":\"facebook.com\",\"count\":421},{\"rank\":7,\"domain\":\"seek.com.au\",\"count\":326},{\"rank\":8,\"domain\":\"hipages.com.au\",\"count\":296},{\"rank\":9,\"domain\":\"buildersacademy.edu.au\",\"count\":190},{\"rank\":10,\"domain\":\"bunnings.com.au\",\"count\":187}],\"travel-tourism\":[{\"rank\":1,\"domain\":\"tripadvisor.com.au\",\"count\":895},{\"rank\":2,\"domain\":\"google.com\",\"count\":700},{\"rank\":3,\"domain\":\"viator.com\",\"count\":497},{\"rank\":4,\"domain\":\"tourradar.com\",\"count\":470},{\"rank\":5,\"domain\":\"getyourguide.com\",\"count\":469},{\"rank\":6,\"domain\":\"youtube.com\",\"count\":381},{\"rank\":7,\"domain\":\"reddit.com\",\"count\":362},{\"rank\":8,\"domain\":\"klook.com\",\"count\":260},{\"rank\":9,\"domain\":\"luxuryescapes.com\",\"count\":255},{\"rank\":10,\"domain\":\"aptouring.com\",\"count\":248}],\"veterinary-pet\":[{\"rank\":1,\"domain\":\"google.com\",\"count\":1385},{\"rank\":2,\"domain\":\"facebook.com\",\"count\":851},{\"rank\":3,\"domain\":\"reddit.com\",\"count\":716},{\"rank\":4,\"domain\":\"youtube.com\",\"count\":650},{\"rank\":5,\"domain\":\"pawshake.com.au\",\"count\":203},{\"rank\":6,\"domain\":\"emergencyvet.com.au\",\"count\":196},{\"rank\":7,\"domain\":\"petcloud.com.au\",\"count\":192},{\"rank\":8,\"domain\":\"petbarn.com.au\",\"count\":159},{\"rank\":9,\"domain\":\"au.indeed.com\",\"count\":149},{\"rank\":10,\"domain\":\"greencrossvets.com.au\",\"count\":142}]},\"perVerticalTop20\":{\"accounting\":[{\"rank\":1,\"domain\":\"ato.gov.au\",\"count\":5689,\"share\":20.354203935599287},{\"rank\":2,\"domain\":\"hrblock.com.au\",\"count\":853,\"share\":3.0518783542039354},{\"rank\":3,\"domain\":\"reddit.com\",\"count\":822,\"share\":2.9409660107334528},{\"rank\":4,\"domain\":\"my.gov.au\",\"count\":738,\"share\":2.6404293381037567},{\"rank\":5,\"domain\":\"seek.com.au\",\"count\":696,\"share\":2.4901610017889086},{\"rank\":6,\"domain\":\"youtube.com\",\"count\":659,\"share\":2.3577817531305905},{\"rank\":7,\"domain\":\"au.indeed.com\",\"count\":619,\"share\":2.214669051878354},{\"rank\":8,\"domain\":\"scalesuite.com.au\",\"count\":545,\"share\":1.9499105545617172},{\"rank\":9,\"domain\":\"tpb.gov.au\",\"count\":527,\"share\":1.885509838998211},{\"rank\":10,\"domain\":\"etax.com.au\",\"count\":500,\"share\":1.7889087656529516},{\"rank\":11,\"domain\":\"moneysmart.gov.au\",\"count\":494,\"share\":1.7674418604651163},{\"rank\":12,\"domain\":\"facebook.com\",\"count\":379,\"share\":1.3559928443649374},{\"rank\":13,\"domain\":\"au.seek.com\",\"count\":354,\"share\":1.2665474060822899},{\"rank\":14,\"domain\":\"roberthalf.com\",\"count\":302,\"share\":1.0805008944543828},{\"rank\":15,\"domain\":\"xero.com\",\"count\":300,\"share\":1.073345259391771},{\"rank\":16,\"domain\":\"business.gov.au\",\"count\":245,\"share\":0.8765652951699463},{\"rank\":17,\"domain\":\"monarch.edu.au\",\"count\":220,\"share\":0.7871198568872988},{\"rank\":18,\"domain\":\"jobsandskills.gov.au\",\"count\":211,\"share\":0.7549194991055456},{\"rank\":19,\"domain\":\"itp.com.au\",\"count\":186,\"share\":0.6654740608228981},{\"rank\":20,\"domain\":\"cpaaustralia.com.au\",\"count\":182,\"share\":0.6511627906976745}],\"automotive\":[{\"rank\":1,\"domain\":\"google.com\",\"count\":1222,\"share\":9.027110881288321},{\"rank\":2,\"domain\":\"mycar.com.au\",\"count\":648,\"share\":4.7868804018615645},{\"rank\":3,\"domain\":\"youtube.com\",\"count\":627,\"share\":4.631750018467903},{\"rank\":4,\"domain\":\"reddit.com\",\"count\":468,\"share\":3.457191401344464},{\"rank\":5,\"domain\":\"autoguru.com.au\",\"count\":464,\"share\":3.427642756888528},{\"rank\":6,\"domain\":\"supercheapauto.com.au\",\"count\":306,\"share\":2.260471300879072},{\"rank\":7,\"domain\":\"facebook.com\",\"count\":293,\"share\":2.1644382063972816},{\"rank\":8,\"domain\":\"airtasker.com\",\"count\":205,\"share\":1.5143680283666987},{\"rank\":9,\"domain\":\"yellowpages.com.au\",\"count\":201,\"share\":1.484819383910763},{\"rank\":10,\"domain\":\"jaxtyres.com.au\",\"count\":140,\"share\":1.0342025559577455},{\"rank\":11,\"domain\":\"bobjane.com.au\",\"count\":123,\"share\":0.9086208170200193},{\"rank\":12,\"domain\":\"dinggo.com.au\",\"count\":121,\"share\":0.8938464947920515},{\"rank\":13,\"domain\":\"starcarwash.com.au\",\"count\":110,\"share\":0.8125877225382285},{\"rank\":14,\"domain\":\"localsearch.com.au\",\"count\":106,\"share\":0.783039078082293},{\"rank\":15,\"domain\":\"obrien.com.au\",\"count\":88,\"share\":0.6500701780305829},{\"rank\":16,\"domain\":\"racv.com.au\",\"count\":86,\"share\":0.635295855802615},{\"rank\":17,\"domain\":\"amazon.com.au\",\"count\":75,\"share\":0.5540370835487922},{\"rank\":18,\"domain\":\"oneflare.com.au\",\"count\":71,\"share\":0.5244884390928567},{\"rank\":19,\"domain\":\"marshallbatteries.com.au\",\"count\":70,\"share\":0.5171012779788727},{\"rank\":20,\"domain\":\"euromasterautohaus.com.au\",\"count\":68,\"share\":0.5023269557509049}],\"b2b-services\":[{\"rank\":1,\"domain\":\"au.indeed.com\",\"count\":942,\"share\":3.108705695993664},{\"rank\":2,\"domain\":\"youtube.com\",\"count\":927,\"share\":3.0592040129364397},{\"rank\":3,\"domain\":\"reddit.com\",\"count\":705,\"share\":2.3265791036895256},{\"rank\":4,\"domain\":\"au.seek.com\",\"count\":650,\"share\":2.145072932479704},{\"rank\":5,\"domain\":\"glassdoor.com.au\",\"count\":538,\"share\":1.7754603656524321},{\"rank\":6,\"domain\":\"seek.com.au\",\"count\":536,\"share\":1.7688601412448022},{\"rank\":7,\"domain\":\"au.linkedin.com\",\"count\":521,\"share\":1.7193584581875785},{\"rank\":8,\"domain\":\"linkedin.com\",\"count\":314,\"share\":1.0362352319978878},{\"rank\":9,\"domain\":\"imc.org.au\",\"count\":272,\"share\":0.8976305194376609},{\"rank\":10,\"domain\":\"deloitte.com\",\"count\":254,\"share\":0.8382284997689923},{\"rank\":11,\"domain\":\"consultancy.com.au\",\"count\":233,\"share\":0.7689261434888787},{\"rank\":12,\"domain\":\"kornferry.com\",\"count\":221,\"share\":0.7293247970430994},{\"rank\":13,\"domain\":\"ey.com\",\"count\":211,\"share\":0.6963236750049502},{\"rank\":14,\"domain\":\"hays.com.au\",\"count\":203,\"share\":0.6699227773744307},{\"rank\":15,\"domain\":\"business.gov.au\",\"count\":188,\"share\":0.6204210943172068},{\"rank\":16,\"domain\":\"au.jora.com\",\"count\":170,\"share\":0.5610190746485381},{\"rank\":17,\"domain\":\"sixdegreesexecutive.com.au\",\"count\":167,\"share\":0.5511187380370932},{\"rank\":18,\"domain\":\"payscale.com\",\"count\":166,\"share\":0.5478186258332783},{\"rank\":19,\"domain\":\"vetassess.com.au\",\"count\":156,\"share\":0.514817503795129},{\"rank\":20,\"domain\":\"michaelpage.com.au\",\"count\":144,\"share\":0.47521615734934985}],\"beauty-personal-care\":[{\"rank\":1,\"domain\":\"google.com\",\"count\":1228,\"share\":10.354131534569982},{\"rank\":2,\"domain\":\"reddit.com\",\"count\":572,\"share\":4.822934232715008},{\"rank\":3,\"domain\":\"youtube.com\",\"count\":370,\"share\":3.1197301854974704},{\"rank\":4,\"domain\":\"removery.com\",\"count\":318,\"share\":2.681281618887015},{\"rank\":5,\"domain\":\"laserclinics.com.au\",\"count\":218,\"share\":1.8381112984822934},{\"rank\":6,\"domain\":\"instagram.com\",\"count\":173,\"share\":1.4586846543001686},{\"rank\":7,\"domain\":\"facebook.com\",\"count\":152,\"share\":1.281618887015177},{\"rank\":8,\"domain\":\"australianskinclinics.com.au\",\"count\":148,\"share\":1.2478920741989883},{\"rank\":9,\"domain\":\"fresha.com\",\"count\":136,\"share\":1.1467116357504217},{\"rank\":10,\"domain\":\"healthline.com\",\"count\":99,\"share\":0.8347386172006745},{\"rank\":11,\"domain\":\"evolutionlaser.com.au\",\"count\":91,\"share\":0.7672849915682968},{\"rank\":12,\"domain\":\"sprayaus.com.au\",\"count\":74,\"share\":0.6239460370994941},{\"rank\":13,\"domain\":\"bondisands.com.au\",\"count\":72,\"share\":0.6070826306913997},{\"rank\":14,\"domain\":\"prolonglash.com.au\",\"count\":68,\"share\":0.5733558178752108},{\"rank\":15,\"domain\":\"lazerwizard.com.au\",\"count\":63,\"share\":0.5311973018549747},{\"rank\":16,\"domain\":\"mayoclinic.org\",\"count\":61,\"share\":0.5143338954468802},{\"rank\":17,\"domain\":\"groupon.com.au\",\"count\":61,\"share\":0.5143338954468802},{\"rank\":18,\"domain\":\"shavershop.com.au\",\"count\":59,\"share\":0.4974704890387858},{\"rank\":19,\"domain\":\"cosmetictattoomelbourne.com.au\",\"count\":58,\"share\":0.48903878583473864},{\"rank\":20,\"domain\":\"amazon.com.au\",\"count\":56,\"share\":0.4721753794266442}],\"ecommerce\":[{\"rank\":1,\"domain\":\"google.com\",\"count\":4784,\"share\":13.924382221963501},{\"rank\":2,\"domain\":\"reddit.com\",\"count\":729,\"share\":2.1218383444421804},{\"rank\":3,\"domain\":\"amazon.com.au\",\"count\":424,\"share\":1.2341007654917484},{\"rank\":4,\"domain\":\"youtube.com\",\"count\":424,\"share\":1.2341007654917484},{\"rank\":5,\"domain\":\"australianmade.com.au\",\"count\":355,\"share\":1.033268329598044},{\"rank\":6,\"domain\":\"facebook.com\",\"count\":308,\"share\":0.8964694239892889},{\"rank\":7,\"domain\":\"ebay.com.au\",\"count\":245,\"share\":0.713100678173298},{\"rank\":8,\"domain\":\"theiconic.com.au\",\"count\":229,\"share\":0.6665308379660623},{\"rank\":9,\"domain\":\"en.wikipedia.org\",\"count\":211,\"share\":0.6141397677329219},{\"rank\":10,\"domain\":\"princesspolly.com.au\",\"count\":207,\"share\":0.602497307681113},{\"rank\":11,\"domain\":\"vogue.com.au\",\"count\":172,\"share\":0.5006257822277848},{\"rank\":12,\"domain\":\"allyfashion.com\",\"count\":158,\"share\":0.4598771720464534},{\"rank\":13,\"domain\":\"asos.com\",\"count\":153,\"share\":0.4453240969816922},{\"rank\":14,\"domain\":\"shopify.com\",\"count\":145,\"share\":0.42203917687807435},{\"rank\":15,\"domain\":\"jardan.com.au\",\"count\":139,\"share\":0.40457548680036093},{\"rank\":16,\"domain\":\"u-buy.com.au\",\"count\":126,\"share\":0.3667374916319818},{\"rank\":17,\"domain\":\"printful.com\",\"count\":125,\"share\":0.3638268766190296},{\"rank\":18,\"domain\":\"australiathegift.com.au\",\"count\":121,\"share\":0.35218441656722066},{\"rank\":19,\"domain\":\"broadsheet.com.au\",\"count\":115,\"share\":0.33472072648950724},{\"rank\":20,\"domain\":\"everythingaustralian.com.au\",\"count\":114,\"share\":0.331810111476555}],\"education-training\":[{\"rank\":1,\"domain\":\"superprof.com.au\",\"count\":1320,\"share\":5.742376125636229},{\"rank\":2,\"domain\":\"youtube.com\",\"count\":1273,\"share\":5.53791273328403},{\"rank\":3,\"domain\":\"learnmate.com.au\",\"count\":874,\"share\":3.8021490407621696},{\"rank\":4,\"domain\":\"reddit.com\",\"count\":853,\"share\":3.71079305694523},{\"rank\":5,\"domain\":\"clueylearning.com.au\",\"count\":489,\"share\":2.127289337451603},{\"rank\":6,\"domain\":\"au.indeed.com\",\"count\":468,\"share\":2.035933353634663},{\"rank\":7,\"domain\":\"facebook.com\",\"count\":421,\"share\":1.8314699612824639},{\"rank\":8,\"domain\":\"google.com\",\"count\":348,\"share\":1.5138991603950058},{\"rank\":9,\"domain\":\"au.seek.com\",\"count\":317,\"share\":1.3790403271414278},{\"rank\":10,\"domain\":\"tutorfinder.com.au\",\"count\":300,\"share\":1.3050854830991432},{\"rank\":11,\"domain\":\"seek.com.au\",\"count\":280,\"share\":1.2180797842258668},{\"rank\":12,\"domain\":\"preply.com\",\"count\":248,\"share\":1.0788706660286247},{\"rank\":13,\"domain\":\"au.amazingtalker.com\",\"count\":241,\"share\":1.0484186714229782},{\"rank\":14,\"domain\":\"highschooltutors.com.au\",\"count\":212,\"share\":0.9222604080567277},{\"rank\":15,\"domain\":\"dymockstutoring.edu.au\",\"count\":199,\"share\":0.8657067037890981},{\"rank\":16,\"domain\":\"ezlicence.com.au\",\"count\":198,\"share\":0.8613564188454343},{\"rank\":17,\"domain\":\"alchemytuition.com.au\",\"count\":193,\"share\":0.8396049941271154},{\"rank\":18,\"domain\":\"tutero.com\",\"count\":171,\"share\":0.7438987253665115},{\"rank\":19,\"domain\":\"airtasker.com\",\"count\":143,\"share\":0.6220907469439249},{\"rank\":20,\"domain\":\"musiclessonsacademy.com.au\",\"count\":131,\"share\":0.5698873276199591}],\"events-weddings\":[{\"rank\":1,\"domain\":\"google.com\",\"count\":933,\"share\":6.504461795872839},{\"rank\":2,\"domain\":\"reddit.com\",\"count\":726,\"share\":5.061349693251533},{\"rank\":3,\"domain\":\"easyweddings.com.au\",\"count\":679,\"share\":4.733686558839933},{\"rank\":4,\"domain\":\"facebook.com\",\"count\":290,\"share\":2.0217512548800896},{\"rank\":5,\"domain\":\"wedlockers.com.au\",\"count\":218,\"share\":1.5197992191857224},{\"rank\":6,\"domain\":\"youtube.com\",\"count\":167,\"share\":1.164249860568879},{\"rank\":7,\"domain\":\"bridebook.com\",\"count\":164,\"share\":1.143335192414947},{\"rank\":8,\"domain\":\"ag.gov.au\",\"count\":145,\"share\":1.0108756274400448},{\"rank\":9,\"domain\":\"instagram.com\",\"count\":140,\"share\":0.9760178471834913},{\"rank\":10,\"domain\":\"polkadotwedding.com\",\"count\":127,\"share\":0.8853876185164528},{\"rank\":11,\"domain\":\"bark.com\",\"count\":105,\"share\":0.7320133853876185},{\"rank\":12,\"domain\":\"airtasker.com\",\"count\":103,\"share\":0.7180702732849973},{\"rank\":13,\"domain\":\"tagvenue.com\",\"count\":91,\"share\":0.6344116006692694},{\"rank\":14,\"domain\":\"marqueemonkeys.com.au\",\"count\":86,\"share\":0.5995538204127161},{\"rank\":15,\"domain\":\"rosetraining.com.au\",\"count\":85,\"share\":0.5925822643614054},{\"rank\":16,\"domain\":\"courses.com.au\",\"count\":83,\"share\":0.5786391522587842},{\"rank\":17,\"domain\":\"en.wikipedia.org\",\"count\":82,\"share\":0.5716675962074735},{\"rank\":18,\"domain\":\"brides.com\",\"count\":78,\"share\":0.5437813720022309},{\"rank\":19,\"domain\":\"timthedj.com.au\",\"count\":65,\"share\":0.4531511433351924},{\"rank\":20,\"domain\":\"abia.com.au\",\"count\":58,\"share\":0.40435025097601784}],\"fitness-wellness\":[{\"rank\":1,\"domain\":\"youtube.com\",\"count\":897,\"share\":5.6876545558303215},{\"rank\":2,\"domain\":\"google.com\",\"count\":769,\"share\":4.876038298142159},{\"rank\":3,\"domain\":\"reddit.com\",\"count\":529,\"share\":3.3542578149768563},{\"rank\":4,\"domain\":\"fitness.edu.au\",\"count\":399,\"share\":2.5299600532623168},{\"rank\":5,\"domain\":\"facebook.com\",\"count\":315,\"share\":1.9973368841544608},{\"rank\":6,\"domain\":\"fitnesseducation.edu.au\",\"count\":255,\"share\":1.616891763363135},{\"rank\":7,\"domain\":\"crossfit.com\",\"count\":250,\"share\":1.5851880032971912},{\"rank\":8,\"domain\":\"instagram.com\",\"count\":228,\"share\":1.4456914590070382},{\"rank\":9,\"domain\":\"aipt.edu.au\",\"count\":215,\"share\":1.3632616828355841},{\"rank\":10,\"domain\":\"seek.com.au\",\"count\":163,\"share\":1.0335425781497685},{\"rank\":11,\"domain\":\"acfpt.com.au\",\"count\":163,\"share\":1.0335425781497685},{\"rank\":12,\"domain\":\"fitcollege.edu.au\",\"count\":158,\"share\":1.0018388180838247},{\"rank\":13,\"domain\":\"au.indeed.com\",\"count\":129,\"share\":0.8179570097013505},{\"rank\":14,\"domain\":\"games.crossfit.com\",\"count\":125,\"share\":0.7925940016485956},{\"rank\":15,\"domain\":\"tafecourses.com.au\",\"count\":121,\"share\":0.7672309935958405},{\"rank\":16,\"domain\":\"fitnessimage.com.au\",\"count\":110,\"share\":0.6974827214507641},{\"rank\":17,\"domain\":\"au.seek.com\",\"count\":93,\"share\":0.589689937226555},{\"rank\":18,\"domain\":\"garagegymreviews.com\",\"count\":90,\"share\":0.5706676811869889},{\"rank\":19,\"domain\":\"thecorecollab.com.au\",\"count\":85,\"share\":0.538963921121045},{\"rank\":20,\"domain\":\"fitnessnetwork.com.au\",\"count\":82,\"share\":0.5199416650814787}],\"healthcare\":[{\"rank\":1,\"domain\":\"youtube.com\",\"count\":571,\"share\":2.683522887489426},{\"rank\":2,\"domain\":\"google.com\",\"count\":431,\"share\":2.0255663126233667},{\"rank\":3,\"domain\":\"au.indeed.com\",\"count\":411,\"share\":1.9315725162139297},{\"rank\":4,\"domain\":\"reddit.com\",\"count\":409,\"share\":1.9221731365729862},{\"rank\":5,\"domain\":\"healthdirect.gov.au\",\"count\":394,\"share\":1.8516777892659084},{\"rank\":6,\"domain\":\"dietitiansaustralia.org.au\",\"count\":317,\"share\":1.489801673089576},{\"rank\":7,\"domain\":\"au.seek.com\",\"count\":281,\"share\":1.3206128395525896},{\"rank\":8,\"domain\":\"vu.edu.au\",\"count\":272,\"share\":1.278315631168343},{\"rank\":9,\"domain\":\"seek.com.au\",\"count\":258,\"share\":1.2125199736817371},{\"rank\":10,\"domain\":\"facebook.com\",\"count\":252,\"share\":1.184321834758906},{\"rank\":11,\"domain\":\"speechpathologyaustralia.org.au\",\"count\":233,\"share\":1.0950277281699408},{\"rank\":12,\"domain\":\"sydney.edu.au\",\"count\":233,\"share\":1.0950277281699408},{\"rank\":13,\"domain\":\"psychologyboard.gov.au\",\"count\":228,\"share\":1.0715292790675817},{\"rank\":14,\"domain\":\"psychology.org.au\",\"count\":208,\"share\":0.9775354826581446},{\"rank\":15,\"domain\":\"hotdoc.com.au\",\"count\":169,\"share\":0.7942475796597425},{\"rank\":16,\"domain\":\"13sick.com.au\",\"count\":163,\"share\":0.7660494407369114},{\"rank\":17,\"domain\":\"study.uq.edu.au\",\"count\":161,\"share\":0.7566500610959677},{\"rank\":18,\"domain\":\"deakin.edu.au\",\"count\":151,\"share\":0.7096531628912492},{\"rank\":19,\"domain\":\"instagram.com\",\"count\":137,\"share\":0.6438575054046434},{\"rank\":20,\"domain\":\"open.edu.au\",\"count\":130,\"share\":0.6109596766613403}],\"home-services\":[{\"rank\":1,\"domain\":\"google.com\",\"count\":1648,\"share\":8.79261590993971},{\"rank\":2,\"domain\":\"youtube.com\",\"count\":565,\"share\":3.0144587312596705},{\"rank\":3,\"domain\":\"reddit.com\",\"count\":565,\"share\":3.0144587312596705},{\"rank\":4,\"domain\":\"airtasker.com\",\"count\":430,\"share\":2.2941898308701916},{\"rank\":5,\"domain\":\"hipages.com.au\",\"count\":389,\"share\":2.075441498159313},{\"rank\":6,\"domain\":\"bunnings.com.au\",\"count\":367,\"share\":1.958064344021768},{\"rank\":7,\"domain\":\"facebook.com\",\"count\":346,\"share\":1.8460225150722938},{\"rank\":8,\"domain\":\"jimscleaning.com.au\",\"count\":271,\"share\":1.4458731259670277},{\"rank\":9,\"domain\":\"tradeheroes.com.au\",\"count\":231,\"share\":1.2324601184442192},{\"rank\":10,\"domain\":\"clean4you.com.au\",\"count\":197,\"share\":1.051059062049832},{\"rank\":11,\"domain\":\"jimsmowing.com.au\",\"count\":155,\"share\":0.826975404150883},{\"rank\":12,\"domain\":\"au.indeed.com\",\"count\":145,\"share\":0.7736221522701808},{\"rank\":13,\"domain\":\"thelaundrylady.com.au\",\"count\":121,\"share\":0.6455743477564958},{\"rank\":14,\"domain\":\"productreview.com.au\",\"count\":113,\"share\":0.6028917462519341},{\"rank\":15,\"domain\":\"seek.com.au\",\"count\":105,\"share\":0.5602091447473724},{\"rank\":16,\"domain\":\"au.seek.com\",\"count\":98,\"share\":0.5228618684308808},{\"rank\":17,\"domain\":\"fantasticcleaners.com.au\",\"count\":83,\"share\":0.44283199060982764},{\"rank\":18,\"domain\":\"thegoodguys.com.au\",\"count\":81,\"share\":0.43216134023368724},{\"rank\":19,\"domain\":\"en.wikipedia.org\",\"count\":81,\"share\":0.43216134023368724},{\"rank\":20,\"domain\":\"amazon.com.au\",\"count\":80,\"share\":0.426826015045617}],\"hospitality\":[{\"rank\":1,\"domain\":\"google.com\",\"count\":509,\"share\":9.84335718429704},{\"rank\":2,\"domain\":\"tripadvisor.com.au\",\"count\":301,\"share\":5.82092438599884},{\"rank\":3,\"domain\":\"instagram.com\",\"count\":143,\"share\":2.7654225488300135},{\"rank\":4,\"domain\":\"reddit.com\",\"count\":127,\"share\":2.4560046412686134},{\"rank\":5,\"domain\":\"facebook.com\",\"count\":116,\"share\":2.243279829820151},{\"rank\":6,\"domain\":\"broadsheet.com.au\",\"count\":108,\"share\":2.0885708760394506},{\"rank\":7,\"domain\":\"timeout.com\",\"count\":105,\"share\":2.0305550183716883},{\"rank\":8,\"domain\":\"opentable.com.au\",\"count\":100,\"share\":1.933861922258751},{\"rank\":9,\"domain\":\"theurbanlist.com\",\"count\":94,\"share\":1.8178302069232255},{\"rank\":10,\"domain\":\"tripadvisor.com\",\"count\":92,\"share\":1.7791529684780507},{\"rank\":11,\"domain\":\"agfg.com.au\",\"count\":92,\"share\":1.7791529684780507},{\"rank\":12,\"domain\":\"ubereats.com\",\"count\":75,\"share\":1.4503964416940631},{\"rank\":13,\"domain\":\"booking.com\",\"count\":65,\"share\":1.257010249468188},{\"rank\":14,\"domain\":\"yelp.com\",\"count\":63,\"share\":1.218333011023013},{\"rank\":15,\"domain\":\"taste.com.au\",\"count\":52,\"share\":1.0056081995745503},{\"rank\":16,\"domain\":\"gourmettraveller.com.au\",\"count\":42,\"share\":0.8122220073486752},{\"rank\":17,\"domain\":\"whatson.melbourne.vic.gov.au\",\"count\":42,\"share\":0.8122220073486752},{\"rank\":18,\"domain\":\"bestrestaurants.com.au\",\"count\":42,\"share\":0.8122220073486752},{\"rank\":19,\"domain\":\"youtube.com\",\"count\":42,\"share\":0.8122220073486752},{\"rank\":20,\"domain\":\"visitvictoria.com\",\"count\":41,\"share\":0.7928833881260878}],\"it-tech-services\":[{\"rank\":1,\"domain\":\"youtube.com\",\"count\":1816,\"share\":6.137208516390673},{\"rank\":2,\"domain\":\"reddit.com\",\"count\":1579,\"share\":5.3362622507603925},{\"rank\":3,\"domain\":\"google.com\",\"count\":1093,\"share\":3.6938154782020955},{\"rank\":4,\"domain\":\"au.indeed.com\",\"count\":636,\"share\":2.149374788779993},{\"rank\":5,\"domain\":\"seek.com.au\",\"count\":533,\"share\":1.801284217641095},{\"rank\":6,\"domain\":\"au.seek.com\",\"count\":437,\"share\":1.476850287259209},{\"rank\":7,\"domain\":\"thepcdoctor.com.au\",\"count\":417,\"share\":1.4092598850963163},{\"rank\":8,\"domain\":\"cleverfiles.com\",\"count\":361,\"share\":1.2200067590402164},{\"rank\":9,\"domain\":\"geeks2u.com.au\",\"count\":340,\"share\":1.1490368367691788},{\"rank\":10,\"domain\":\"payam.com.au\",\"count\":255,\"share\":0.861777627576884},{\"rank\":11,\"domain\":\"techcommunity.microsoft.com\",\"count\":229,\"share\":0.7739101047651233},{\"rank\":12,\"domain\":\"au.jora.com\",\"count\":224,\"share\":0.7570125042244001},{\"rank\":13,\"domain\":\"procomputerrepairs.com.au\",\"count\":188,\"share\":0.6353497803311929},{\"rank\":14,\"domain\":\"ontrack.com\",\"count\":186,\"share\":0.6285907401149037},{\"rank\":15,\"domain\":\"hp.com\",\"count\":184,\"share\":0.6218316998986143},{\"rank\":16,\"domain\":\"facebook.com\",\"count\":181,\"share\":0.6116931395741805},{\"rank\":17,\"domain\":\"computercures.com.au\",\"count\":179,\"share\":0.6049340993578912},{\"rank\":18,\"domain\":\"1300nerdcore.com.au\",\"count\":176,\"share\":0.5947955390334573},{\"rank\":19,\"domain\":\"techradar.com\",\"count\":170,\"share\":0.5745184183845894},{\"rank\":20,\"domain\":\"glassdoor.com.au\",\"count\":169,\"share\":0.5711388982764447}],\"legal\":[{\"rank\":1,\"domain\":\"google.com\",\"count\":1699,\"share\":5.933505622686317},{\"rank\":2,\"domain\":\"legalaid.vic.gov.au\",\"count\":726,\"share\":2.5354473702591322},{\"rank\":3,\"domain\":\"legalaid.nsw.gov.au\",\"count\":657,\"share\":2.294475099532025},{\"rank\":4,\"domain\":\"reddit.com\",\"count\":626,\"share\":2.18621219529231},{\"rank\":5,\"domain\":\"legalaid.qld.gov.au\",\"count\":543,\"share\":1.8963470000698468},{\"rank\":6,\"domain\":\"youtube.com\",\"count\":365,\"share\":1.2747083886289028},{\"rank\":7,\"domain\":\"fcfcoa.gov.au\",\"count\":284,\"share\":0.9918278969057763},{\"rank\":8,\"domain\":\"au.indeed.com\",\"count\":208,\"share\":0.7264091639309911},{\"rank\":9,\"domain\":\"familyrelationships.gov.au\",\"count\":199,\"share\":0.6949779981839771},{\"rank\":10,\"domain\":\"justia.com\",\"count\":199,\"share\":0.6949779981839771},{\"rank\":11,\"domain\":\"en.wikipedia.org\",\"count\":192,\"share\":0.6705315359362995},{\"rank\":12,\"domain\":\"facebook.com\",\"count\":190,\"share\":0.663546832436963},{\"rank\":13,\"domain\":\"criminaldefencelawyers.com.au\",\"count\":183,\"share\":0.6391003701892854},{\"rank\":14,\"domain\":\"clcnsw.org.au\",\"count\":169,\"share\":0.5902074456939302},{\"rank\":15,\"domain\":\"lawsociety.com.au\",\"count\":157,\"share\":0.5482992246979116},{\"rank\":16,\"domain\":\"attorneys.superlawyers.com\",\"count\":153,\"share\":0.5343298176992387},{\"rank\":17,\"domain\":\"probonocentre.org.au\",\"count\":152,\"share\":0.5308374659495705},{\"rank\":18,\"domain\":\"yelp.com\",\"count\":151,\"share\":0.5273451141999022},{\"rank\":19,\"domain\":\"seek.com.au\",\"count\":150,\"share\":0.523852762450234},{\"rank\":20,\"domain\":\"liv.asn.au\",\"count\":147,\"share\":0.5133757072012293}],\"marketing-creative-services\":[{\"rank\":1,\"domain\":\"reddit.com\",\"count\":1301,\"share\":5.298741497983953},{\"rank\":2,\"domain\":\"youtube.com\",\"count\":1074,\"share\":4.374210890726184},{\"rank\":3,\"domain\":\"au.indeed.com\",\"count\":645,\"share\":2.626970227670753},{\"rank\":4,\"domain\":\"google.com\",\"count\":348,\"share\":1.4173420763246853},{\"rank\":5,\"domain\":\"au.seek.com\",\"count\":296,\"share\":1.2055553292876635},{\"rank\":6,\"domain\":\"linkedin.com\",\"count\":255,\"share\":1.0385696248930885},{\"rank\":7,\"domain\":\"seek.com.au\",\"count\":255,\"share\":1.0385696248930885},{\"rank\":8,\"domain\":\"support.google.com\",\"count\":247,\"share\":1.0059870484258544},{\"rank\":9,\"domain\":\"glassdoor.com.au\",\"count\":243,\"share\":0.9896957601922373},{\"rank\":10,\"domain\":\"clutch.co\",\"count\":233,\"share\":0.9489675396081945},{\"rank\":11,\"domain\":\"agencies.semrush.com\",\"count\":209,\"share\":0.8512198102064921},{\"rank\":12,\"domain\":\"au.linkedin.com\",\"count\":203,\"share\":0.8267828778560665},{\"rank\":13,\"domain\":\"digitalnomadshq.com.au\",\"count\":201,\"share\":0.818637233739258},{\"rank\":14,\"domain\":\"studiohawk.com.au\",\"count\":183,\"share\":0.745326436687981},{\"rank\":15,\"domain\":\"rocketagency.com.au\",\"count\":182,\"share\":0.7412536146295768},{\"rank\":16,\"domain\":\"quora.com\",\"count\":167,\"share\":0.6801612837535128},{\"rank\":17,\"domain\":\"facebook.com\",\"count\":159,\"share\":0.6475787072862786},{\"rank\":18,\"domain\":\"payscale.com\",\"count\":150,\"share\":0.6109233087606403},{\"rank\":19,\"domain\":\"upwork.com\",\"count\":143,\"share\":0.5824135543518104},{\"rank\":20,\"domain\":\"digitalagencynetwork.com\",\"count\":132,\"share\":0.5376125117093634}],\"real-estate\":[{\"rank\":1,\"domain\":\"reddit.com\",\"count\":1693,\"share\":5.869708421454079},{\"rank\":2,\"domain\":\"realestate.com.au\",\"count\":1189,\"share\":4.122317373366155},{\"rank\":3,\"domain\":\"youtube.com\",\"count\":615,\"share\":2.1322331241549075},{\"rank\":4,\"domain\":\"entryeducation.edu.au\",\"count\":553,\"share\":1.9172762888742503},{\"rank\":5,\"domain\":\"aussie.com.au\",\"count\":456,\"share\":1.5809728530319316},{\"rank\":6,\"domain\":\"au.seek.com\",\"count\":406,\"share\":1.4076205665152723},{\"rank\":7,\"domain\":\"nsw.gov.au\",\"count\":395,\"share\":1.3694830634816073},{\"rank\":8,\"domain\":\"seek.com.au\",\"count\":346,\"share\":1.1995978226952813},{\"rank\":9,\"domain\":\"salebyhomeowner.com.au\",\"count\":345,\"share\":1.1961307769649483},{\"rank\":10,\"domain\":\"reiq.com\",\"count\":345,\"share\":1.1961307769649483},{\"rank\":11,\"domain\":\"au.indeed.com\",\"count\":323,\"share\":1.119855770897618},{\"rank\":12,\"domain\":\"openagent.com.au\",\"count\":317,\"share\":1.0990534965156191},{\"rank\":13,\"domain\":\"ljhooker.com.au\",\"count\":311,\"share\":1.0782512221336198},{\"rank\":14,\"domain\":\"facebook.com\",\"count\":283,\"share\":0.9811739416842907},{\"rank\":15,\"domain\":\"anz.com.au\",\"count\":264,\"share\":0.9153000728079603},{\"rank\":16,\"domain\":\"reaa.com.au\",\"count\":253,\"share\":0.8771625697742954},{\"rank\":17,\"domain\":\"forsalebyowner.com.au\",\"count\":250,\"share\":0.8667614325832959},{\"rank\":18,\"domain\":\"whichrealestateagent.com.au\",\"count\":249,\"share\":0.8632943868529626},{\"rank\":19,\"domain\":\"rebaa.com.au\",\"count\":225,\"share\":0.7800852893249662},{\"rank\":20,\"domain\":\"propertynow.com.au\",\"count\":216,\"share\":0.7488818777519676}],\"trades\":[{\"rank\":1,\"domain\":\"youtube.com\",\"count\":1043,\"share\":5.134390075809786},{\"rank\":2,\"domain\":\"google.com\",\"count\":956,\"share\":4.706114010042335},{\"rank\":3,\"domain\":\"reddit.com\",\"count\":769,\"share\":3.785566604312297},{\"rank\":4,\"domain\":\"au.indeed.com\",\"count\":610,\"share\":3.002855173771783},{\"rank\":5,\"domain\":\"au.seek.com\",\"count\":593,\"share\":2.919169045978143},{\"rank\":6,\"domain\":\"facebook.com\",\"count\":421,\"share\":2.0724623412424927},{\"rank\":7,\"domain\":\"seek.com.au\",\"count\":326,\"share\":1.604804568278035},{\"rank\":8,\"domain\":\"hipages.com.au\",\"count\":296,\"share\":1.4571231662892588},{\"rank\":9,\"domain\":\"buildersacademy.edu.au\",\"count\":190,\"share\":0.9353155459289161},{\"rank\":10,\"domain\":\"bunnings.com.au\",\"count\":187,\"share\":0.9205474057300383},{\"rank\":11,\"domain\":\"jobsandskills.gov.au\",\"count\":176,\"share\":0.8663975583341538},{\"rank\":12,\"domain\":\"airtasker.com\",\"count\":161,\"share\":0.7925568573397657},{\"rank\":13,\"domain\":\"en.wikipedia.org\",\"count\":160,\"share\":0.7876341439401398},{\"rank\":14,\"domain\":\"au.jora.com\",\"count\":159,\"share\":0.782711430540514},{\"rank\":15,\"domain\":\"racv.com.au\",\"count\":148,\"share\":0.7285615831446294},{\"rank\":16,\"domain\":\"careerone.com.au\",\"count\":121,\"share\":0.5956483213547308},{\"rank\":17,\"domain\":\"service.com.au\",\"count\":113,\"share\":0.5562666141577238},{\"rank\":18,\"domain\":\"egt.net.au\",\"count\":109,\"share\":0.5365757605592203},{\"rank\":19,\"domain\":\"payscale.com\",\"count\":108,\"share\":0.5316530471595944},{\"rank\":20,\"domain\":\"tafensw.edu.au\",\"count\":96,\"share\":0.47258048636408384}],\"travel-tourism\":[{\"rank\":1,\"domain\":\"tripadvisor.com.au\",\"count\":895,\"share\":4.167636786961583},{\"rank\":2,\"domain\":\"google.com\",\"count\":700,\"share\":3.259604190919674},{\"rank\":3,\"domain\":\"viator.com\",\"count\":497,\"share\":2.3143189755529687},{\"rank\":4,\"domain\":\"tourradar.com\",\"count\":470,\"share\":2.1885913853317813},{\"rank\":5,\"domain\":\"getyourguide.com\",\"count\":469,\"share\":2.1839348079161818},{\"rank\":6,\"domain\":\"youtube.com\",\"count\":381,\"share\":1.7741559953434225},{\"rank\":7,\"domain\":\"reddit.com\",\"count\":362,\"share\":1.6856810244470315},{\"rank\":8,\"domain\":\"klook.com\",\"count\":260,\"share\":1.210710128055879},{\"rank\":9,\"domain\":\"luxuryescapes.com\",\"count\":255,\"share\":1.1874272409778812},{\"rank\":10,\"domain\":\"aptouring.com\",\"count\":248,\"share\":1.1548311990686846},{\"rank\":11,\"domain\":\"luxurygold.com\",\"count\":247,\"share\":1.1501746216530848},{\"rank\":12,\"domain\":\"facebook.com\",\"count\":220,\"share\":1.0244470314318976},{\"rank\":13,\"domain\":\"camperchamp.com.au\",\"count\":199,\"share\":0.9266589057043074},{\"rank\":14,\"domain\":\"intrepidtravel.com\",\"count\":188,\"share\":0.8754365541327124},{\"rank\":15,\"domain\":\"insightvacations.com\",\"count\":177,\"share\":0.8242142025611175},{\"rank\":16,\"domain\":\"captaincook.com.au\",\"count\":163,\"share\":0.7590221187427241},{\"rank\":17,\"domain\":\"drivenow.com.au\",\"count\":154,\"share\":0.7171129220023282},{\"rank\":18,\"domain\":\"tripadvisor.com\",\"count\":146,\"share\":0.6798603026775321},{\"rank\":19,\"domain\":\"trafalgar.com\",\"count\":140,\"share\":0.6519208381839348},{\"rank\":20,\"domain\":\"apollocamper.com\",\"count\":139,\"share\":0.6472642607683353}],\"veterinary-pet\":[{\"rank\":1,\"domain\":\"google.com\",\"count\":1385,\"share\":7.791404140414042},{\"rank\":2,\"domain\":\"facebook.com\",\"count\":851,\"share\":4.787353735373538},{\"rank\":3,\"domain\":\"reddit.com\",\"count\":716,\"share\":4.027902790279028},{\"rank\":4,\"domain\":\"youtube.com\",\"count\":650,\"share\":3.6566156615661565},{\"rank\":5,\"domain\":\"pawshake.com.au\",\"count\":203,\"share\":1.141989198919892},{\"rank\":6,\"domain\":\"emergencyvet.com.au\",\"count\":196,\"share\":1.1026102610261026},{\"rank\":7,\"domain\":\"petcloud.com.au\",\"count\":192,\"share\":1.08010801080108},{\"rank\":8,\"domain\":\"petbarn.com.au\",\"count\":159,\"share\":0.8944644464446445},{\"rank\":9,\"domain\":\"au.indeed.com\",\"count\":149,\"share\":0.8382088208820881},{\"rank\":10,\"domain\":\"greencrossvets.com.au\",\"count\":142,\"share\":0.7988298829882988},{\"rank\":11,\"domain\":\"madpaws.com.au\",\"count\":139,\"share\":0.7819531953195319},{\"rank\":12,\"domain\":\"pawssum.com.au\",\"count\":138,\"share\":0.7763276327632763},{\"rank\":13,\"domain\":\"happyhousesitters.com.au\",\"count\":133,\"share\":0.7481998199819981},{\"rank\":14,\"domain\":\"airtasker.com\",\"count\":130,\"share\":0.7313231323132313},{\"rank\":15,\"domain\":\"rover.com\",\"count\":130,\"share\":0.7313231323132313},{\"rank\":16,\"domain\":\"yelp.com\",\"count\":126,\"share\":0.7088208820882088},{\"rank\":17,\"domain\":\"akc.org\",\"count\":120,\"share\":0.6750675067506751},{\"rank\":18,\"domain\":\"seek.com.au\",\"count\":118,\"share\":0.6638163816381638},{\"rank\":19,\"domain\":\"amazon.com.au\",\"count\":116,\"share\":0.6525652565256526},{\"rank\":20,\"domain\":\"animalemergencyservice.com.au\",\"count\":115,\"share\":0.6469396939693969}]}},\"finding5_aioOrganicOverlap\":[{\"vertical\":\"Accounting\",\"slug\":\"accounting\",\"totalCitations\":27950,\"inTop10\":18685,\"inTop10Pct\":66.85152057245081,\"inTop10Ci\":{\"ciLow\":66.297347674726,\"ciHigh\":67.40106177751903},\"inTop3\":8679,\"inTop3Pct\":31.05187835420394,\"inTop3Ci\":{\"ciLow\":30.512050102926437,\"ciHigh\":31.596914555440947}},{\"vertical\":\"Automotive\",\"slug\":\"automotive\",\"totalCitations\":13537,\"inTop10\":6773,\"inTop10Pct\":50.03324222501293,\"inTop10Ci\":{\"ciLow\":49.191056231780756,\"ciHigh\":50.87540935629614},\"inTop3\":1888,\"inTop3Pct\":13.946960183201595,\"inTop3Ci\":{\"ciLow\":13.373578442355699,\"ciHigh\":14.540798755587447}},{\"vertical\":\"B2B Services\",\"slug\":\"b2b-services\",\"totalCitations\":30302,\"inTop10\":16895,\"inTop10Pct\":55.75539568345324,\"inTop10Ci\":{\"ciLow\":55.19546649352881,\"ciHigh\":56.3138657534925},\"inTop3\":5120,\"inTop3Pct\":16.89657448353244,\"inTop3Ci\":{\"ciLow\":16.478857448949448,\"ciHigh\":17.322683967409034}},{\"vertical\":\"Beauty & Personal Care\",\"slug\":\"beauty-personal-care\",\"totalCitations\":11860,\"inTop10\":5472,\"inTop10Pct\":46.138279932546375,\"inTop10Ci\":{\"ciLow\":45.24248455432675,\"ciHigh\":47.036576218028806},\"inTop3\":1444,\"inTop3Pct\":12.175379426644183,\"inTop3Ci\":{\"ciLow\":11.599072591243194,\"ciHigh\":12.776182048029803}},{\"vertical\":\"E-commerce\",\"slug\":\"ecommerce\",\"totalCitations\":34357,\"inTop10\":17885,\"inTop10Pct\":52.056349506650754,\"inTop10Ci\":{\"ciLow\":51.52788527600606,\"ciHigh\":52.58435393061455},\"inTop3\":6596,\"inTop3Pct\":19.198416625432955,\"inTop3Ci\":{\"ciLow\":18.7853922686495,\"ciHigh\":19.6183283200802}},{\"vertical\":\"Education & Training\",\"slug\":\"education-training\",\"totalCitations\":22987,\"inTop10\":13532,\"inTop10Pct\":58.868055857658675,\"inTop10Ci\":{\"ciLow\":58.230497673892145,\"ciHigh\":59.502650468018416},\"inTop3\":4468,\"inTop3Pct\":19.437073128289903,\"inTop3Ci\":{\"ciLow\":18.930635571329827,\"ciHigh\":19.953724364410842}},{\"vertical\":\"Events & Weddings\",\"slug\":\"events-weddings\",\"totalCitations\":14344,\"inTop10\":7240,\"inTop10Pct\":50.47406581148912,\"inTop10Ci\":{\"ciLow\":49.65582592098045,\"ciHigh\":51.29205184204141},\"inTop3\":2300,\"inTop3Pct\":16.0345789180145,\"inTop3Ci\":{\"ciLow\":15.443202665119848,\"ciHigh\":16.6441434901374}},{\"vertical\":\"Fitness & Wellness\",\"slug\":\"fitness-wellness\",\"totalCitations\":15771,\"inTop10\":8356,\"inTop10Pct\":52.98332382220531,\"inTop10Ci\":{\"ciLow\":52.20371951511014,\"ciHigh\":53.76147508944295},\"inTop3\":2676,\"inTop3Pct\":16.967852387293135,\"inTop3Ci\":{\"ciLow\":16.39009428018076,\"ciHigh\":17.561698934655706}},{\"vertical\":\"Healthcare\",\"slug\":\"healthcare\",\"totalCitations\":21278,\"inTop10\":11668,\"inTop10Pct\":54.83598082526553,\"inTop10Ci\":{\"ciLow\":54.166485454875335,\"ciHigh\":55.50373030314441},\"inTop3\":3341,\"inTop3Pct\":15.701663690196446,\"inTop3Ci\":{\"ciLow\":15.219012763451605,\"ciHigh\":16.196697049932208}},{\"vertical\":\"Home Services\",\"slug\":\"home-services\",\"totalCitations\":18743,\"inTop10\":8449,\"inTop10Pct\":45.07816251400523,\"inTop10Ci\":{\"ciLow\":44.36689546929418,\"ciHigh\":45.79144672313144},\"inTop3\":2304,\"inTop3Pct\":12.292589233313771,\"inTop3Ci\":{\"ciLow\":11.830215937854286,\"ciHigh\":12.770416522815783}},{\"vertical\":\"Hospitality\",\"slug\":\"hospitality\",\"totalCitations\":5171,\"inTop10\":2247,\"inTop10Pct\":43.45387739315413,\"inTop10Ci\":{\"ciLow\":42.10813918822543,\"ciHigh\":44.80933476885182},\"inTop3\":634,\"inTop3Pct\":12.26068458712048,\"inTop3Ci\":{\"ciLow\":11.394622912744643,\"ciHigh\":13.182778644821871}},{\"vertical\":\"IT & Tech Services\",\"slug\":\"it-tech-services\",\"totalCitations\":29590,\"inTop10\":15842,\"inTop10Pct\":53.53835755322744,\"inTop10Ci\":{\"ciLow\":52.96965360420502,\"ciHigh\":54.10614286826105},\"inTop3\":4631,\"inTop3Pct\":15.650557620817843,\"inTop3Ci\":{\"ciLow\":15.241029641223797,\"ciHigh\":16.069003457013775}},{\"vertical\":\"Legal\",\"slug\":\"legal\",\"totalCitations\":28634,\"inTop10\":13689,\"inTop10Pct\":47.80680310120836,\"inTop10Ci\":{\"ciLow\":47.22855145003762,\"ciHigh\":48.385643161612165},\"inTop3\":3897,\"inTop3Pct\":13.609694768457079,\"inTop3Ci\":{\"ciLow\":13.217407234727425,\"ciHigh\":14.011745398060377}},{\"vertical\":\"Marketing & Creative Services\",\"slug\":\"marketing-creative-services\",\"totalCitations\":24553,\"inTop10\":12850,\"inTop10Pct\":52.335763450494845,\"inTop10Ci\":{\"ciLow\":51.71070669859835,\"ciHigh\":52.9600894024768},\"inTop3\":3632,\"inTop3Pct\":14.792489716124301,\"inTop3Ci\":{\"ciLow\":14.353915856228685,\"ciHigh\":15.242079094522639}},{\"vertical\":\"Real Estate\",\"slug\":\"real-estate\",\"totalCitations\":28843,\"inTop10\":15979,\"inTop10Pct\":55.39992372499394,\"inTop10Ci\":{\"ciLow\":54.825577503166336,\"ciHigh\":55.97283170638817},\"inTop3\":4666,\"inTop3Pct\":16.177235377734632,\"inTop3Ci\":{\"ciLow\":15.75676356510303,\"ciHigh\":16.60671570050919}},{\"vertical\":\"Trades\",\"slug\":\"trades\",\"totalCitations\":20314,\"inTop10\":9421,\"inTop10Pct\":46.37688293787536,\"inTop10Ci\":{\"ciLow\":45.69185193923444,\"ciHigh\":47.06328401969538},\"inTop3\":2665,\"inTop3Pct\":13.119031210002955,\"inTop3Ci\":{\"ciLow\":12.661725008511882,\"ciHigh\":13.590283964724732}},{\"vertical\":\"Travel & Tourism\",\"slug\":\"travel-tourism\",\"totalCitations\":21475,\"inTop10\":11327,\"inTop10Pct\":52.74505238649593,\"inTop10Ci\":{\"ciLow\":52.076886184556415,\"ciHigh\":53.412236655289846},\"inTop3\":3687,\"inTop3Pct\":17.168800931315484,\"inTop3Ci\":{\"ciLow\":16.670305526163563,\"ciHigh\":17.67904039014507}},{\"vertical\":\"Veterinary & Pet Services\",\"slug\":\"veterinary-pet\",\"totalCitations\":17776,\"inTop10\":9231,\"inTop10Pct\":51.92956795679567,\"inTop10Ci\":{\"ciLow\":51.19474107320865,\"ciHigh\":52.66356101650174},\"inTop3\":2418,\"inTop3Pct\":13.602610261026102,\"inTop3Ci\":{\"ciLow\":13.106502414741767,\"ciHigh\":14.114446505298107}}],\"finding6_localIntent\":[{\"vertical\":\"Accounting\",\"slug\":\"accounting\",\"local\":{\"total\":1036,\"triggered\":397,\"rate\":38.32046332046332,\"ciLow\":35.40829103547109,\"ciHigh\":41.3189335725846},\"general\":{\"total\":5426,\"triggered\":3042,\"rate\":56.06339845189827,\"ciLow\":54.73897549758641,\"ciHigh\":57.37924172628254},\"gap\":-17.742935131434955},{\"vertical\":\"Automotive\",\"slug\":\"automotive\",\"local\":{\"total\":1396,\"triggered\":138,\"rate\":9.885386819484241,\"ciLow\":8.428055576518531,\"ciHigh\":11.562891970689668},\"general\":{\"total\":5076,\"triggered\":1499,\"rate\":29.531126871552406,\"ciLow\":28.29201374380274,\"ciHigh\":30.801198926450596},\"gap\":-19.645740052068163},{\"vertical\":\"B2B Services\",\"slug\":\"b2b-services\",\"local\":{\"total\":940,\"triggered\":216,\"rate\":22.97872340425532,\"ciLow\":20.40249982845081,\"ciHigh\":25.77490960126706},\"general\":{\"total\":5555,\"triggered\":3142,\"rate\":56.56165616561656,\"ciLow\":55.2540620628028,\"ciHigh\":57.860181019784754},\"gap\":-33.58293276136124},{\"vertical\":\"Beauty & Personal Care\",\"slug\":\"beauty-personal-care\",\"local\":{\"total\":1363,\"triggered\":110,\"rate\":8.070432868672047,\"ciLow\":6.739458726244905,\"ciHigh\":9.637098732936904},\"general\":{\"total\":5161,\"triggered\":1286,\"rate\":24.91765161790351,\"ciLow\":23.756518797243107,\"ciHigh\":26.11609685083408},\"gap\":-16.847218749231462},{\"vertical\":\"E-commerce\",\"slug\":\"ecommerce\",\"local\":{\"total\":4650,\"triggered\":2673,\"rate\":57.483870967741936,\"ciLow\":56.057314271253524,\"ciHigh\":58.89807226360405},\"general\":{\"total\":1842,\"triggered\":735,\"rate\":39.902280130293164,\"ciLow\":37.68917862845883,\"ciHigh\":42.15741275836441},\"gap\":17.581590837448772},{\"vertical\":\"Education & Training\",\"slug\":\"education-training\",\"local\":{\"total\":1142,\"triggered\":307,\"rate\":26.882661996497376,\"ciLow\":24.391912381917514,\"ciHigh\":29.52842006193861},\"general\":{\"total\":5370,\"triggered\":2300,\"rate\":42.83054003724395,\"ciLow\":41.512616909278336,\"ciHigh\":44.15871363384746},\"gap\":-15.947878040746573},{\"vertical\":\"Events & Weddings\",\"slug\":\"events-weddings\",\"local\":{\"total\":1553,\"triggered\":367,\"rate\":23.631680618158406,\"ciLow\":21.585474390747102,\"ciHigh\":25.808017663935917},\"general\":{\"total\":4918,\"triggered\":1235,\"rate\":25.111834078893857,\"ciLow\":23.919563217079958,\"ciHigh\":26.34295640565638},\"gap\":-1.4801534607354512},{\"vertical\":\"Fitness & Wellness\",\"slug\":\"fitness-wellness\",\"local\":{\"total\":1141,\"triggered\":260,\"rate\":22.78702892199825,\"ciLow\":20.44681856552468,\"ciHigh\":25.309869521281385},\"general\":{\"total\":5329,\"triggered\":1602,\"rate\":30.061925314317882,\"ciLow\":28.84553324123787,\"ciHigh\":31.30704282627556},\"gap\":-7.274896392319633},{\"vertical\":\"Healthcare\",\"slug\":\"healthcare\",\"local\":{\"total\":1585,\"triggered\":476,\"rate\":30.031545741324923,\"ciLow\":27.825300123751084,\"ciHigh\":32.33435329922072},\"general\":{\"total\":4890,\"triggered\":1959,\"rate\":40.061349693251536,\"ciLow\":38.69620242563272,\"ciHigh\":41.44210037517717},\"gap\":-10.029803951926613},{\"vertical\":\"Home Services\",\"slug\":\"home-services\",\"local\":{\"total\":1672,\"triggered\":345,\"rate\":20.63397129186603,\"ciLow\":18.762589668330826,\"ciHigh\":22.63998680429046},\"general\":{\"total\":4868,\"triggered\":1846,\"rate\":37.92111750205423,\"ciLow\":36.56815431118533,\"ciHigh\":39.293129848792276},\"gap\":-17.2871462101882},{\"vertical\":\"Hospitality\",\"slug\":\"hospitality\",\"local\":{\"total\":2384,\"triggered\":236,\"rate\":9.899328859060402,\"ciLow\":8.764208487167428,\"ciHigh\":11.163478508485884},\"general\":{\"total\":4083,\"triggered\":350,\"rate\":8.572128337007102,\"ciLow\":7.751874045543776,\"ciHigh\":9.470266396601081},\"gap\":1.3272005220532996},{\"vertical\":\"IT & Tech Services\",\"slug\":\"it-tech-services\",\"local\":{\"total\":878,\"triggered\":187,\"rate\":21.298405466970387,\"ciLow\":18.71829466699297,\"ciHigh\":24.128583956106695},\"general\":{\"total\":5631,\"triggered\":3228,\"rate\":57.32551944592434,\"ciLow\":56.02907822405962,\"ciHigh\":58.611972200498904},\"gap\":-36.027113978953956},{\"vertical\":\"Legal\",\"slug\":\"legal\",\"local\":{\"total\":1156,\"triggered\":468,\"rate\":40.484429065743946,\"ciLow\":37.690786184508354,\"ciHigh\":43.341106446347446},\"general\":{\"total\":5310,\"triggered\":2686,\"rate\":50.58380414312617,\"ciLow\":49.23909449775002,\"ciHigh\":51.92766967527314},\"gap\":-10.099375077382227},{\"vertical\":\"Marketing & Creative Services\",\"slug\":\"marketing-creative-services\",\"local\":{\"total\":700,\"triggered\":115,\"rate\":16.428571428571427,\"ciLow\":13.868222494761085,\"ciHigh\":19.355389181502442},\"general\":{\"total\":5823,\"triggered\":2696,\"rate\":46.29915850935944,\"ciLow\":45.02128193348862,\"ciHigh\":47.58191496824284},\"gap\":-29.87058708078801},{\"vertical\":\"Real Estate\",\"slug\":\"real-estate\",\"local\":{\"total\":1388,\"triggered\":297,\"rate\":21.397694524495677,\"ciLow\":19.32061510804237,\"ciHigh\":23.63266348342953},\"general\":{\"total\":5167,\"triggered\":3042,\"rate\":58.873621056706014,\"ciLow\":57.52580454691648,\"ciHigh\":60.20825251644434},\"gap\":-37.47592653221034},{\"vertical\":\"Trades\",\"slug\":\"trades\",\"local\":{\"total\":1557,\"triggered\":305,\"rate\":19.588953114964674,\"ciLow\":17.69340508623789,\"ciHigh\":21.63419868854617},\"general\":{\"total\":4936,\"triggered\":2112,\"rate\":42.78768233387358,\"ciLow\":41.41351927233554,\"ciHigh\":44.17306309905064},\"gap\":-23.19872921890891},{\"vertical\":\"Travel & Tourism\",\"slug\":\"travel-tourism\",\"local\":{\"total\":1775,\"triggered\":511,\"rate\":28.788732394366196,\"ciLow\":26.729909445361955,\"ciHigh\":30.939171376674135},\"general\":{\"total\":4697,\"triggered\":1767,\"rate\":37.61975729188844,\"ciLow\":36.24499705977082,\"ciHigh\":39.01475217321759},\"gap\":-8.831024897522244},{\"vertical\":\"Veterinary & Pet Services\",\"slug\":\"veterinary-pet\",\"local\":{\"total\":1597,\"triggered\":417,\"rate\":26.111458985597995,\"ciLow\":24.016300476941943,\"ciHigh\":28.3212699610077},\"general\":{\"total\":4923,\"triggered\":1790,\"rate\":36.35994312411132,\"ciLow\":35.02731192725223,\"ciHigh\":37.71384540973218},\"gap\":-10.248484138513323}],\"finding8_pageTypeSafetyMap\":{\"topOrganic\":[{\"pageType\":\"other\",\"total\":52409,\"aio\":23590,\"rate\":45.01135301188727,\"ciLow\":44.58579189231997,\"ciHigh\":45.43764541736409},{\"pageType\":\"homepage\",\"total\":35922,\"aio\":6987,\"rate\":19.45047603140137,\"ciLow\":19.044422669999403,\"ciHigh\":19.86306279862216},{\"pageType\":\"location\",\"total\":12665,\"aio\":4545,\"rate\":35.88630082905645,\"ciLow\":35.0552986320966,\"ciHigh\":36.72586248053426},{\"pageType\":\"blog\/content\",\"total\":7445,\"aio\":5664,\"rate\":76.07790463398254,\"ciLow\":75.0955477057943,\"ciHigh\":77.03336318418891},{\"pageType\":\"product\",\"total\":3841,\"aio\":1564,\"rate\":40.7185628742515,\"ciLow\":39.17480532264747,\"ciHigh\":42.28086764967991},{\"pageType\":\"service\",\"total\":2407,\"aio\":1030,\"rate\":42.79185708350644,\"ciLow\":40.82824539694055,\"ciHigh\":44.77844066654865},{\"pageType\":\"directory\",\"total\":1336,\"aio\":401,\"rate\":30.01497005988024,\"ciLow\":27.61745365348025,\"ciHigh\":32.52708880586719},{\"pageType\":\"FAQ\",\"total\":291,\"aio\":135,\"rate\":46.391752577319586,\"ciLow\":40.746139173477836,\"ciHigh\":52.13139235531594}],\"citationBreakdown\":[{\"pageType\":\"other\",\"count\":206701,\"share\":53.34425848742532},{\"pageType\":\"blog\/content\",\"count\":76546,\"share\":19.75457114468947},{\"pageType\":\"homepage\",\"count\":41477,\"share\":10.7041562899209},{\"pageType\":\"location\",\"count\":38708,\"share\":9.989547982502549},{\"pageType\":\"product\",\"count\":10825,\"share\":2.7936565286398185},{\"pageType\":\"service\",\"count\":7984,\"share\":2.0604668567815527},{\"pageType\":\"directory\",\"count\":3729,\"share\":0.9623598332838691},{\"pageType\":\"FAQ\",\"count\":1515,\"share\":0.3909828767565196}]},\"perVerticalPageData\":{\"accounting\":{\"vertical\":\"Accounting\",\"slug\":\"accounting\",\"overall\":{\"total\":6462,\"triggered\":3439,\"rate\":53.218817703497365,\"ciLow\":52.000684877456536,\"ciHigh\":54.43312568789972},\"byIntent\":[{\"intent\":\"informational\",\"total\":4106,\"triggered\":2646,\"rate\":64.44227959084266,\"ciLow\":62.965206869404255,\"ciHigh\":65.89235299373013},{\"intent\":\"commercial\",\"total\":833,\"triggered\":278,\"rate\":33.373349339735896,\"ciLow\":30.253856162589223,\"ciHigh\":36.64549492129572},{\"intent\":\"transactional\",\"total\":529,\"triggered\":323,\"rate\":61.05860113421549,\"ciLow\":56.837763013290456,\"ciHigh\":65.11998202763728},{\"intent\":\"navigational\",\"total\":994,\"triggered\":192,\"rate\":19.3158953722334,\"ciLow\":16.981683816892904,\"ciHigh\":21.88636898828178}],\"byDevice\":{\"mobile\":{\"total\":4998,\"triggered\":2740,\"rate\":54.821928771508595,\"ciLow\":53.439004963486184,\"ciHigh\":56.19744573899107},\"desktop\":{\"total\":1464,\"triggered\":699,\"rate\":47.74590163934426,\"ciLow\":45.196477673122246,\"ciHigh\":50.30712435042036},\"gap\":7.076027132164334},\"byLocalIntent\":{\"local\":{\"total\":1036,\"triggered\":397,\"rate\":38.32046332046332,\"ciLow\":35.40829103547109,\"ciHigh\":41.3189335725846},\"general\":{\"total\":5426,\"triggered\":3042,\"rate\":56.06339845189827,\"ciLow\":54.73897549758641,\"ciHigh\":57.37924172628254},\"gap\":-17.742935131434955},\"byLocationType\":{\"metro\":{\"total\":3221,\"triggered\":1711,\"rate\":53.12014902204284,\"ciLow\":51.39406534948827,\"ciHigh\":54.838798925147714},\"regional\":{\"total\":3241,\"triggered\":1728,\"rate\":53.316877506942305,\"ciLow\":51.5963361919609,\"ciHigh\":55.029565053881115},\"gap\":-0.1967284848994666},\"byCity\":[{\"city\":\"Brisbane\",\"state\":\"QLD\",\"locationType\":\"metro\",\"total\":1062,\"triggered\":580,\"rate\":54.61393596986818,\"ciLow\":51.60828162591709,\"ciHigh\":57.58633040648999},{\"city\":\"Geelong\",\"state\":\"VIC\",\"locationType\":\"regional\",\"total\":1069,\"triggered\":573,\"rate\":53.60149672591207,\"ciLow\":50.60436732010625,\"ciHigh\":56.5728338622491},{\"city\":\"Newcastle\",\"state\":\"NSW\",\"locationType\":\"regional\",\"total\":1074,\"triggered\":573,\"rate\":53.351955307262564,\"ciLow\":50.361670370733094,\"ciHigh\":56.31834643322029},{\"city\":\"Sydney\",\"state\":\"NSW\",\"locationType\":\"metro\",\"total\":1068,\"triggered\":568,\"rate\":53.18352059925093,\"ciLow\":50.18478977847597,\"ciHigh\":56.159431233285474},{\"city\":\"Sunshine Coast\",\"state\":\"QLD\",\"locationType\":\"regional\",\"total\":1098,\"triggered\":582,\"rate\":53.00546448087432,\"ciLow\":50.04796480430434,\"ciHigh\":55.94200689398695},{\"city\":\"Melbourne\",\"state\":\"VIC\",\"locationType\":\"metro\",\"total\":1091,\"triggered\":563,\"rate\":51.60403299725023,\"ciLow\":48.63815999050961,\"ciHigh\":54.5586494840299}],\"topDomains\":[{\"rank\":1,\"domain\":\"ato.gov.au\",\"count\":5689,\"share\":20.354203935599287},{\"rank\":2,\"domain\":\"hrblock.com.au\",\"count\":853,\"share\":3.0518783542039354},{\"rank\":3,\"domain\":\"reddit.com\",\"count\":822,\"share\":2.9409660107334528},{\"rank\":4,\"domain\":\"my.gov.au\",\"count\":738,\"share\":2.6404293381037567},{\"rank\":5,\"domain\":\"seek.com.au\",\"count\":696,\"share\":2.4901610017889086},{\"rank\":6,\"domain\":\"youtube.com\",\"count\":659,\"share\":2.3577817531305905},{\"rank\":7,\"domain\":\"au.indeed.com\",\"count\":619,\"share\":2.214669051878354},{\"rank\":8,\"domain\":\"scalesuite.com.au\",\"count\":545,\"share\":1.9499105545617172},{\"rank\":9,\"domain\":\"tpb.gov.au\",\"count\":527,\"share\":1.885509838998211},{\"rank\":10,\"domain\":\"etax.com.au\",\"count\":500,\"share\":1.7889087656529516},{\"rank\":11,\"domain\":\"moneysmart.gov.au\",\"count\":494,\"share\":1.7674418604651163},{\"rank\":12,\"domain\":\"facebook.com\",\"count\":379,\"share\":1.3559928443649374},{\"rank\":13,\"domain\":\"au.seek.com\",\"count\":354,\"share\":1.2665474060822899},{\"rank\":14,\"domain\":\"roberthalf.com\",\"count\":302,\"share\":1.0805008944543828},{\"rank\":15,\"domain\":\"xero.com\",\"count\":300,\"share\":1.073345259391771},{\"rank\":16,\"domain\":\"business.gov.au\",\"count\":245,\"share\":0.8765652951699463},{\"rank\":17,\"domain\":\"monarch.edu.au\",\"count\":220,\"share\":0.7871198568872988},{\"rank\":18,\"domain\":\"jobsandskills.gov.au\",\"count\":211,\"share\":0.7549194991055456},{\"rank\":19,\"domain\":\"itp.com.au\",\"count\":186,\"share\":0.6654740608228981},{\"rank\":20,\"domain\":\"cpaaustralia.com.au\",\"count\":182,\"share\":0.6511627906976745}],\"citationPageType\":[{\"pageType\":\"other\",\"count\":16969,\"share\":60.711985688729875},{\"pageType\":\"blog\/content\",\"count\":7513,\"share\":26.880143112701255},{\"pageType\":\"location\",\"count\":2052,\"share\":7.341681574239714},{\"pageType\":\"homepage\",\"count\":1165,\"share\":4.168157423971378},{\"pageType\":\"directory\",\"count\":92,\"share\":0.3291592128801431},{\"pageType\":\"product\",\"count\":79,\"share\":0.2826475849731664},{\"pageType\":\"FAQ\",\"count\":75,\"share\":0.26833631484794274},{\"pageType\":\"service\",\"count\":5,\"share\":0.017889087656529516}],\"topOrganicByPageType\":[{\"pageType\":\"other\",\"total\":4512,\"aio\":2654,\"rate\":58.8209219858156,\"ciLow\":57.377938963698696,\"ciHigh\":60.248897194593475},{\"pageType\":\"homepage\",\"total\":925,\"aio\":172,\"rate\":18.594594594594593,\"ciLow\":16.219011965448466,\"ciHigh\":21.229956728460163},{\"pageType\":\"blog\/content\",\"total\":542,\"aio\":445,\"rate\":82.10332103321034,\"ciLow\":78.65365000206475,\"ciHigh\":85.10110962050706},{\"pageType\":\"location\",\"total\":339,\"aio\":118,\"rate\":34.80825958702065,\"ciLow\":29.93310337436589,\"ciHigh\":40.023868008336805},{\"pageType\":\"directory\",\"total\":80,\"aio\":11,\"rate\":13.750000000000002,\"ciLow\":7.854633679551141,\"ciHigh\":22.967297199630554}]},\"automotive\":{\"vertical\":\"Automotive\",\"slug\":\"automotive\",\"overall\":{\"total\":6472,\"triggered\":1637,\"rate\":25.293572311495673,\"ciLow\":24.24938061276972,\"ciHigh\":26.367076713796152},\"byIntent\":[{\"intent\":\"informational\",\"total\":797,\"triggered\":589,\"rate\":73.9021329987453,\"ciLow\":70.74363370042828,\"ciHigh\":76.83131745096047},{\"intent\":\"commercial\",\"total\":2465,\"triggered\":602,\"rate\":24.421906693711968,\"ciLow\":22.766522686629127,\"ciHigh\":26.15689143601041},{\"intent\":\"transactional\",\"total\":1131,\"triggered\":288,\"rate\":25.46419098143236,\"ciLow\":23.01113343065647,\"ciHigh\":28.08336292901169},{\"intent\":\"navigational\",\"total\":2079,\"triggered\":158,\"rate\":7.599807599807599,\"ciLow\":6.537265537546815,\"ciHigh\":8.8187557748756}],\"byDevice\":{\"mobile\":{\"total\":4998,\"triggered\":1272,\"rate\":25.45018007202881,\"ciLow\":24.261741904725508,\"ciHigh\":26.676328585151655},\"desktop\":{\"total\":1474,\"triggered\":365,\"rate\":24.762550881953867,\"ciLow\":22.626497395281426,\"ciHigh\":27.029812184852197},\"gap\":0.6876291900749436},\"byLocalIntent\":{\"local\":{\"total\":1396,\"triggered\":138,\"rate\":9.885386819484241,\"ciLow\":8.428055576518531,\"ciHigh\":11.562891970689668},\"general\":{\"total\":5076,\"triggered\":1499,\"rate\":29.531126871552406,\"ciLow\":28.29201374380274,\"ciHigh\":30.801198926450596},\"gap\":-19.645740052068163},\"byLocationType\":{\"metro\":{\"total\":3226,\"triggered\":805,\"rate\":24.95350278983261,\"ciLow\":23.49055754771848,\"ciHigh\":26.476029048974066},\"regional\":{\"total\":3246,\"triggered\":832,\"rate\":25.63154651879236,\"ciLow\":24.158985741478347,\"ciHigh\":27.161718627620747},\"gap\":-0.6780437289597501},\"byCity\":[{\"city\":\"Newcastle\",\"state\":\"NSW\",\"locationType\":\"regional\",\"total\":1088,\"triggered\":286,\"rate\":26.286764705882355,\"ciLow\":23.757801819687366,\"ciHigh\":28.98259568852261},{\"city\":\"Geelong\",\"state\":\"VIC\",\"locationType\":\"regional\",\"total\":1062,\"triggered\":275,\"rate\":25.89453860640301,\"ciLow\":23.35008868047444,\"ciHigh\":28.612754578786596},{\"city\":\"Melbourne\",\"state\":\"VIC\",\"locationType\":\"metro\",\"total\":1082,\"triggered\":273,\"rate\":25.231053604436227,\"ciLow\":22.73374139566906,\"ciHigh\":27.90362596988407},{\"city\":\"Brisbane\",\"state\":\"QLD\",\"locationType\":\"metro\",\"total\":1079,\"triggered\":270,\"rate\":25.023169601482852,\"ciLow\":22.53032644772402,\"ciHigh\":27.693233489389584},{\"city\":\"Sunshine Coast\",\"state\":\"QLD\",\"locationType\":\"regional\",\"total\":1096,\"triggered\":271,\"rate\":24.72627737226277,\"ciLow\":22.263309865080604,\"ciHigh\":27.365800363155895},{\"city\":\"Sydney\",\"state\":\"NSW\",\"locationType\":\"metro\",\"total\":1065,\"triggered\":262,\"rate\":24.60093896713615,\"ciLow\":22.108602560121167,\"ciHigh\":27.275852535937954}],\"topDomains\":[{\"rank\":1,\"domain\":\"google.com\",\"count\":1222,\"share\":9.027110881288321},{\"rank\":2,\"domain\":\"mycar.com.au\",\"count\":648,\"share\":4.7868804018615645},{\"rank\":3,\"domain\":\"youtube.com\",\"count\":627,\"share\":4.631750018467903},{\"rank\":4,\"domain\":\"reddit.com\",\"count\":468,\"share\":3.457191401344464},{\"rank\":5,\"domain\":\"autoguru.com.au\",\"count\":464,\"share\":3.427642756888528},{\"rank\":6,\"domain\":\"supercheapauto.com.au\",\"count\":306,\"share\":2.260471300879072},{\"rank\":7,\"domain\":\"facebook.com\",\"count\":293,\"share\":2.1644382063972816},{\"rank\":8,\"domain\":\"airtasker.com\",\"count\":205,\"share\":1.5143680283666987},{\"rank\":9,\"domain\":\"yellowpages.com.au\",\"count\":201,\"share\":1.484819383910763},{\"rank\":10,\"domain\":\"jaxtyres.com.au\",\"count\":140,\"share\":1.0342025559577455},{\"rank\":11,\"domain\":\"bobjane.com.au\",\"count\":123,\"share\":0.9086208170200193},{\"rank\":12,\"domain\":\"dinggo.com.au\",\"count\":121,\"share\":0.8938464947920515},{\"rank\":13,\"domain\":\"starcarwash.com.au\",\"count\":110,\"share\":0.8125877225382285},{\"rank\":14,\"domain\":\"localsearch.com.au\",\"count\":106,\"share\":0.783039078082293},{\"rank\":15,\"domain\":\"obrien.com.au\",\"count\":88,\"share\":0.6500701780305829},{\"rank\":16,\"domain\":\"racv.com.au\",\"count\":86,\"share\":0.635295855802615},{\"rank\":17,\"domain\":\"amazon.com.au\",\"count\":75,\"share\":0.5540370835487922},{\"rank\":18,\"domain\":\"oneflare.com.au\",\"count\":71,\"share\":0.5244884390928567},{\"rank\":19,\"domain\":\"marshallbatteries.com.au\",\"count\":70,\"share\":0.5171012779788727},{\"rank\":20,\"domain\":\"euromasterautohaus.com.au\",\"count\":68,\"share\":0.5023269557509049}],\"citationPageType\":[{\"pageType\":\"other\",\"count\":4935,\"share\":36.455640097510525},{\"pageType\":\"location\",\"count\":3254,\"share\":24.037822264903596},{\"pageType\":\"blog\/content\",\"count\":2538,\"share\":18.748614907291127},{\"pageType\":\"service\",\"count\":915,\"share\":6.759252419295265},{\"pageType\":\"homepage\",\"count\":820,\"share\":6.057472113466795},{\"pageType\":\"directory\",\"count\":620,\"share\":4.580039890670016},{\"pageType\":\"product\",\"count\":400,\"share\":2.954864445593558},{\"pageType\":\"FAQ\",\"count\":55,\"share\":0.40629386126911426}],\"topOrganicByPageType\":[{\"pageType\":\"homepage\",\"total\":2106,\"aio\":162,\"rate\":7.6923076923076925,\"ciLow\":6.6296880494585135,\"ciHigh\":8.908995044096947},{\"pageType\":\"location\",\"total\":1775,\"aio\":475,\"rate\":26.76056338028169,\"ciLow\":24.752792338682486,\"ciHigh\":28.86871055398654},{\"pageType\":\"other\",\"total\":1446,\"aio\":484,\"rate\":33.471645919778695,\"ciLow\":31.085988756953753,\"ciHigh\":35.94489240965093},{\"pageType\":\"service\",\"total\":406,\"aio\":181,\"rate\":44.58128078817734,\"ciLow\":39.81950587707911,\"ciHigh\":49.44463909990714},{\"pageType\":\"product\",\"total\":249,\"aio\":93,\"rate\":37.34939759036144,\"ciLow\":31.575902220098772,\"ciHigh\":43.50731193453401},{\"pageType\":\"blog\/content\",\"total\":239,\"aio\":193,\"rate\":80.75313807531381,\"ciLow\":75.28429017775412,\"ciHigh\":85.24899571724906},{\"pageType\":\"directory\",\"total\":211,\"aio\":37,\"rate\":17.535545023696685,\"ciLow\":12.99802928603627,\"ciHigh\":23.234059843815675}]},\"b2b-services\":{\"vertical\":\"B2B Services\",\"slug\":\"b2b-services\",\"overall\":{\"total\":6495,\"triggered\":3358,\"rate\":51.70130869899923,\"ciLow\":50.48535780748805,\"ciHigh\":52.91524823282535},\"byIntent\":[{\"intent\":\"informational\",\"total\":2248,\"triggered\":1571,\"rate\":69.88434163701068,\"ciLow\":67.95527251974323,\"ciHigh\":71.7455661182853},{\"intent\":\"commercial\",\"total\":2462,\"triggered\":1177,\"rate\":47.806661251015434,\"ciLow\":45.83844620041816,\"ciHigh\":49.781710422781},{\"intent\":\"transactional\",\"total\":145,\"triggered\":92,\"rate\":63.44827586206897,\"ciLow\":55.35665825588361,\"ciHigh\":70.84569377473149},{\"intent\":\"navigational\",\"total\":1640,\"triggered\":518,\"rate\":31.585365853658537,\"ciLow\":29.380778758929125,\"ciHigh\":33.87602165298404}],\"byDevice\":{\"mobile\":{\"total\":4998,\"triggered\":2635,\"rate\":52.721088435374156,\"ciLow\":51.3353763484211,\"ciHigh\":54.10262072849553},\"desktop\":{\"total\":1497,\"triggered\":723,\"rate\":48.296593186372746,\"ciLow\":45.77277837194752,\"ciHigh\":50.82912818501358},\"gap\":4.42449524900141},\"byLocalIntent\":{\"local\":{\"total\":940,\"triggered\":216,\"rate\":22.97872340425532,\"ciLow\":20.40249982845081,\"ciHigh\":25.77490960126706},\"general\":{\"total\":5555,\"triggered\":3142,\"rate\":56.56165616561656,\"ciLow\":55.2540620628028,\"ciHigh\":57.860181019784754},\"gap\":-33.58293276136124},\"byLocationType\":{\"metro\":{\"total\":3232,\"triggered\":1635,\"rate\":50.58787128712871,\"ciLow\":48.86450188184162,\"ciHigh\":52.30984484761512},\"regional\":{\"total\":3263,\"triggered\":1723,\"rate\":52.80416794361017,\"ciLow\":51.08896895294376,\"ciHigh\":54.51277188444487},\"gap\":-2.216296656481454},\"byCity\":[{\"city\":\"Geelong\",\"state\":\"VIC\",\"locationType\":\"regional\",\"total\":1106,\"triggered\":593,\"rate\":53.61663652802894,\"ciLow\":50.670115775060346,\"ciHigh\":56.538120066883245},{\"city\":\"Newcastle\",\"state\":\"NSW\",\"locationType\":\"regional\",\"total\":1064,\"triggered\":563,\"rate\":52.91353383458647,\"ciLow\":49.909156029924226,\"ciHigh\":55.896948545885515},{\"city\":\"Sunshine Coast\",\"state\":\"QLD\",\"locationType\":\"regional\",\"total\":1093,\"triggered\":567,\"rate\":51.87557182067704,\"ciLow\":48.91201570832315,\"ciHigh\":54.82598985237039},{\"city\":\"Brisbane\",\"state\":\"QLD\",\"locationType\":\"metro\",\"total\":1070,\"triggered\":542,\"rate\":50.654205607476634,\"ciLow\":47.66153659711496,\"ciHigh\":53.642193859965474},{\"city\":\"Sydney\",\"state\":\"NSW\",\"locationType\":\"metro\",\"total\":1056,\"triggered\":534,\"rate\":50.56818181818182,\"ciLow\":47.55604499773597,\"ciHigh\":53.57619966976907},{\"city\":\"Melbourne\",\"state\":\"VIC\",\"locationType\":\"metro\",\"total\":1106,\"triggered\":559,\"rate\":50.54249547920434,\"ciLow\":47.5991092381847,\"ciHigh\":53.482126138106835}],\"topDomains\":[{\"rank\":1,\"domain\":\"au.indeed.com\",\"count\":942,\"share\":3.108705695993664},{\"rank\":2,\"domain\":\"youtube.com\",\"count\":927,\"share\":3.0592040129364397},{\"rank\":3,\"domain\":\"reddit.com\",\"count\":705,\"share\":2.3265791036895256},{\"rank\":4,\"domain\":\"au.seek.com\",\"count\":650,\"share\":2.145072932479704},{\"rank\":5,\"domain\":\"glassdoor.com.au\",\"count\":538,\"share\":1.7754603656524321},{\"rank\":6,\"domain\":\"seek.com.au\",\"count\":536,\"share\":1.7688601412448022},{\"rank\":7,\"domain\":\"au.linkedin.com\",\"count\":521,\"share\":1.7193584581875785},{\"rank\":8,\"domain\":\"linkedin.com\",\"count\":314,\"share\":1.0362352319978878},{\"rank\":9,\"domain\":\"imc.org.au\",\"count\":272,\"share\":0.8976305194376609},{\"rank\":10,\"domain\":\"deloitte.com\",\"count\":254,\"share\":0.8382284997689923},{\"rank\":11,\"domain\":\"consultancy.com.au\",\"count\":233,\"share\":0.7689261434888787},{\"rank\":12,\"domain\":\"kornferry.com\",\"count\":221,\"share\":0.7293247970430994},{\"rank\":13,\"domain\":\"ey.com\",\"count\":211,\"share\":0.6963236750049502},{\"rank\":14,\"domain\":\"hays.com.au\",\"count\":203,\"share\":0.6699227773744307},{\"rank\":15,\"domain\":\"business.gov.au\",\"count\":188,\"share\":0.6204210943172068},{\"rank\":16,\"domain\":\"au.jora.com\",\"count\":170,\"share\":0.5610190746485381},{\"rank\":17,\"domain\":\"sixdegreesexecutive.com.au\",\"count\":167,\"share\":0.5511187380370932},{\"rank\":18,\"domain\":\"payscale.com\",\"count\":166,\"share\":0.5478186258332783},{\"rank\":19,\"domain\":\"vetassess.com.au\",\"count\":156,\"share\":0.514817503795129},{\"rank\":20,\"domain\":\"michaelpage.com.au\",\"count\":144,\"share\":0.47521615734934985}],\"citationPageType\":[{\"pageType\":\"other\",\"count\":17725,\"share\":58.49448881261963},{\"pageType\":\"blog\/content\",\"count\":5504,\"share\":18.163817569797374},{\"pageType\":\"homepage\",\"count\":3602,\"share\":11.887004158141377},{\"pageType\":\"location\",\"count\":3203,\"share\":10.57025938881922},{\"pageType\":\"product\",\"count\":137,\"share\":0.45211537192264534},{\"pageType\":\"FAQ\",\"count\":67,\"share\":0.22110751765560027},{\"pageType\":\"directory\",\"count\":33,\"share\":0.10890370272589268},{\"pageType\":\"service\",\"count\":31,\"share\":0.10230347831826282}],\"topOrganicByPageType\":[{\"pageType\":\"other\",\"total\":3438,\"aio\":1970,\"rate\":57.30075625363583,\"ciLow\":55.64005155884226,\"ciHigh\":58.94516351903929},{\"pageType\":\"homepage\",\"total\":1771,\"aio\":584,\"rate\":32.975719932241674,\"ciLow\":30.825053161958426,\"ciHigh\":35.20008395450313},{\"pageType\":\"location\",\"total\":754,\"aio\":367,\"rate\":48.673740053050395,\"ciLow\":45.121816989930664,\"ciHigh\":52.23910909277579},{\"pageType\":\"blog\/content\",\"total\":453,\"aio\":395,\"rate\":87.19646799116998,\"ciLow\":83.80376560909305,\"ciHigh\":89.96359708292097}]},\"beauty-personal-care\":{\"vertical\":\"Beauty & Personal Care\",\"slug\":\"beauty-personal-care\",\"overall\":{\"total\":6524,\"triggered\":1396,\"rate\":21.397915389331697,\"ciLow\":20.419717551437643,\"ciHigh\":22.409777576017657},\"byIntent\":[{\"intent\":\"informational\",\"total\":1125,\"triggered\":704,\"rate\":62.577777777777776,\"ciLow\":59.711626373304796,\"ciHigh\":65.35832143868228},{\"intent\":\"commercial\",\"total\":2101,\"triggered\":335,\"rate\":15.944788196097095,\"ciLow\":14.441703935123721,\"ciHigh\":17.572182525501155},{\"intent\":\"transactional\",\"total\":1504,\"triggered\":291,\"rate\":19.34840425531915,\"ciLow\":17.43105022502319,\"ciHigh\":21.421943352020982},{\"intent\":\"navigational\",\"total\":1794,\"triggered\":66,\"rate\":3.678929765886288,\"ciLow\":2.902131505804238,\"ciHigh\":4.6536843124525}],\"byDevice\":{\"mobile\":{\"total\":4998,\"triggered\":1062,\"rate\":21.248499399759904,\"ciLow\":20.136701790981917,\"ciHigh\":22.404461447773986},\"desktop\":{\"total\":1526,\"triggered\":334,\"rate\":21.887287024901703,\"ciLow\":19.88467929667876,\"ciHigh\":24.03108296262965},\"gap\":-0.6387876251417985},\"byLocalIntent\":{\"local\":{\"total\":1363,\"triggered\":110,\"rate\":8.070432868672047,\"ciLow\":6.739458726244905,\"ciHigh\":9.637098732936904},\"general\":{\"total\":5161,\"triggered\":1286,\"rate\":24.91765161790351,\"ciLow\":23.756518797243107,\"ciHigh\":26.11609685083408},\"gap\":-16.847218749231462},\"byLocationType\":{\"metro\":{\"total\":3261,\"triggered\":691,\"rate\":21.18981907390371,\"ciLow\":19.821529133190474,\"ciHigh\":22.62590843927858},\"regional\":{\"total\":3263,\"triggered\":705,\"rate\":21.60588415568495,\"ciLow\":20.227577473929042,\"ciHigh\":23.050970221802515},\"gap\":-0.416065081781241},\"byCity\":[{\"city\":\"Geelong\",\"state\":\"VIC\",\"locationType\":\"regional\",\"total\":1072,\"triggered\":241,\"rate\":22.48134328358209,\"ciLow\":20.083099303616,\"ciHigh\":25.076113725513938},{\"city\":\"Melbourne\",\"state\":\"VIC\",\"locationType\":\"metro\",\"total\":1085,\"triggered\":233,\"rate\":21.474654377880185,\"ciLow\":19.134052636406608,\"ciHigh\":24.01653969952178},{\"city\":\"Newcastle\",\"state\":\"NSW\",\"locationType\":\"regional\",\"total\":1088,\"triggered\":231,\"rate\":21.231617647058822,\"ciLow\":18.904989841162507,\"ciHigh\":23.760686205619365},{\"city\":\"Brisbane\",\"state\":\"QLD\",\"locationType\":\"metro\",\"total\":1088,\"triggered\":230,\"rate\":21.139705882352942,\"ciLow\":18.817229028275147,\"ciHigh\":23.66527026466258},{\"city\":\"Sunshine Coast\",\"state\":\"QLD\",\"locationType\":\"regional\",\"total\":1103,\"triggered\":233,\"rate\":21.12420670897552,\"ciLow\":18.81756031523229,\"ciHigh\":23.631295961944147},{\"city\":\"Sydney\",\"state\":\"NSW\",\"locationType\":\"metro\",\"total\":1088,\"triggered\":228,\"rate\":20.955882352941178,\"ciLow\":18.64176236435821,\"ciHigh\":23.474383420891225}],\"topDomains\":[{\"rank\":1,\"domain\":\"google.com\",\"count\":1228,\"share\":10.354131534569982},{\"rank\":2,\"domain\":\"reddit.com\",\"count\":572,\"share\":4.822934232715008},{\"rank\":3,\"domain\":\"youtube.com\",\"count\":370,\"share\":3.1197301854974704},{\"rank\":4,\"domain\":\"removery.com\",\"count\":318,\"share\":2.681281618887015},{\"rank\":5,\"domain\":\"laserclinics.com.au\",\"count\":218,\"share\":1.8381112984822934},{\"rank\":6,\"domain\":\"instagram.com\",\"count\":173,\"share\":1.4586846543001686},{\"rank\":7,\"domain\":\"facebook.com\",\"count\":152,\"share\":1.281618887015177},{\"rank\":8,\"domain\":\"australianskinclinics.com.au\",\"count\":148,\"share\":1.2478920741989883},{\"rank\":9,\"domain\":\"fresha.com\",\"count\":136,\"share\":1.1467116357504217},{\"rank\":10,\"domain\":\"healthline.com\",\"count\":99,\"share\":0.8347386172006745},{\"rank\":11,\"domain\":\"evolutionlaser.com.au\",\"count\":91,\"share\":0.7672849915682968},{\"rank\":12,\"domain\":\"sprayaus.com.au\",\"count\":74,\"share\":0.6239460370994941},{\"rank\":13,\"domain\":\"bondisands.com.au\",\"count\":72,\"share\":0.6070826306913997},{\"rank\":14,\"domain\":\"prolonglash.com.au\",\"count\":68,\"share\":0.5733558178752108},{\"rank\":15,\"domain\":\"lazerwizard.com.au\",\"count\":63,\"share\":0.5311973018549747},{\"rank\":16,\"domain\":\"mayoclinic.org\",\"count\":61,\"share\":0.5143338954468802},{\"rank\":17,\"domain\":\"groupon.com.au\",\"count\":61,\"share\":0.5143338954468802},{\"rank\":18,\"domain\":\"shavershop.com.au\",\"count\":59,\"share\":0.4974704890387858},{\"rank\":19,\"domain\":\"cosmetictattoomelbourne.com.au\",\"count\":58,\"share\":0.48903878583473864},{\"rank\":20,\"domain\":\"amazon.com.au\",\"count\":56,\"share\":0.4721753794266442}],\"citationPageType\":[{\"pageType\":\"other\",\"count\":7191,\"share\":60.632377740303546},{\"pageType\":\"blog\/content\",\"count\":2901,\"share\":24.460370994940977},{\"pageType\":\"product\",\"count\":771,\"share\":6.500843170320405},{\"pageType\":\"homepage\",\"count\":569,\"share\":4.797639123102867},{\"pageType\":\"location\",\"count\":341,\"share\":2.875210792580101},{\"pageType\":\"directory\",\"count\":47,\"share\":0.39629005059021927},{\"pageType\":\"FAQ\",\"count\":38,\"share\":0.32040472175379425},{\"pageType\":\"service\",\"count\":2,\"share\":0.016863406408094434}],\"topOrganicByPageType\":[{\"pageType\":\"other\",\"total\":2890,\"aio\":812,\"rate\":28.096885813148788,\"ciLow\":26.488052216326572,\"ciHigh\":29.763872560758664},{\"pageType\":\"homepage\",\"total\":2483,\"aio\":113,\"rate\":4.55094643576319,\"ciLow\":3.798991704602001,\"ciHigh\":5.44331789806831},{\"pageType\":\"blog\/content\",\"total\":416,\"aio\":310,\"rate\":74.51923076923077,\"ciLow\":70.12059316759672,\"ciHigh\":78.46916068242672},{\"pageType\":\"location\",\"total\":345,\"aio\":37,\"rate\":10.72463768115942,\"ciLow\":7.881351068038891,\"ciHigh\":14.432960069164924},{\"pageType\":\"product\",\"total\":326,\"aio\":117,\"rate\":35.88957055214724,\"ciLow\":30.874617872330624,\"ciHigh\":41.23320600434231}]},\"ecommerce\":{\"vertical\":\"E-commerce\",\"slug\":\"ecommerce\",\"overall\":{\"total\":6492,\"triggered\":3408,\"rate\":52.495378927911275,\"ciLow\":51.27948811300711,\"ciHigh\":53.708318239906426},\"byIntent\":[{\"intent\":\"informational\",\"total\":452,\"triggered\":350,\"rate\":77.43362831858407,\"ciLow\":73.35800556422659,\"ciHigh\":81.04685787956618},{\"intent\":\"commercial\",\"total\":1647,\"triggered\":1121,\"rate\":68.06314511232544,\"ciLow\":65.77163559026579,\"ciHigh\":70.2705867525683},{\"intent\":\"transactional\",\"total\":3215,\"triggered\":1636,\"rate\":50.88646967340591,\"ciLow\":49.15834906409781,\"ciHigh\":52.61247432777086},{\"intent\":\"navigational\",\"total\":1178,\"triggered\":301,\"rate\":25.551782682512737,\"ciLow\":23.143335278480144,\"ciHigh\":28.119168935282516}],\"byDevice\":{\"mobile\":{\"total\":4997,\"triggered\":2603,\"rate\":52.09125475285171,\"ciLow\":50.70504733075152,\"ciHigh\":53.47424921005472},\"desktop\":{\"total\":1495,\"triggered\":805,\"rate\":53.84615384615385,\"ciLow\":51.31245023080137,\"ciHigh\":56.360141722878055},\"gap\":-1.7548990933021358},\"byLocalIntent\":{\"local\":{\"total\":4650,\"triggered\":2673,\"rate\":57.483870967741936,\"ciLow\":56.057314271253524,\"ciHigh\":58.89807226360405},\"general\":{\"total\":1842,\"triggered\":735,\"rate\":39.902280130293164,\"ciLow\":37.68917862845883,\"ciHigh\":42.15741275836441},\"gap\":17.581590837448772},\"byLocationType\":{\"metro\":{\"total\":3221,\"triggered\":1681,\"rate\":52.188761254268854,\"ciLow\":50.462080030036326,\"ciHigh\":53.910227744708315},\"regional\":{\"total\":3271,\"triggered\":1727,\"rate\":52.79730969122593,\"ciLow\":51.08420589778143,\"ciHigh\":54.50385063600635},\"gap\":-0.6085484369570722},\"byCity\":[{\"city\":\"Brisbane\",\"state\":\"QLD\",\"locationType\":\"metro\",\"total\":1051,\"triggered\":562,\"rate\":53.47288296860133,\"ciLow\":50.450098930102406,\"ciHigh\":56.470371404021705},{\"city\":\"Newcastle\",\"state\":\"NSW\",\"locationType\":\"regional\",\"total\":1104,\"triggered\":589,\"rate\":53.35144927536232,\"ciLow\":50.40209124827787,\"ciHigh\":56.27756403818186},{\"city\":\"Sunshine Coast\",\"state\":\"QLD\",\"locationType\":\"regional\",\"total\":1087,\"triggered\":577,\"rate\":53.081876724931,\"ciLow\":50.10945612115013,\"ciHigh\":56.03259053346955},{\"city\":\"Geelong\",\"state\":\"VIC\",\"locationType\":\"regional\",\"total\":1080,\"triggered\":561,\"rate\":51.94444444444445,\"ciLow\":48.963040787418784,\"ciHigh\":54.912064209473755},{\"city\":\"Sydney\",\"state\":\"NSW\",\"locationType\":\"metro\",\"total\":1088,\"triggered\":563,\"rate\":51.74632352941176,\"ciLow\":48.77615226916012,\"ciHigh\":54.704206053878664},{\"city\":\"Melbourne\",\"state\":\"VIC\",\"locationType\":\"metro\",\"total\":1082,\"triggered\":556,\"rate\":51.386321626617374,\"ciLow\":48.40854344615133,\"ciHigh\":54.35429046995577}],\"topDomains\":[{\"rank\":1,\"domain\":\"google.com\",\"count\":4784,\"share\":13.924382221963501},{\"rank\":2,\"domain\":\"reddit.com\",\"count\":729,\"share\":2.1218383444421804},{\"rank\":3,\"domain\":\"amazon.com.au\",\"count\":424,\"share\":1.2341007654917484},{\"rank\":4,\"domain\":\"youtube.com\",\"count\":424,\"share\":1.2341007654917484},{\"rank\":5,\"domain\":\"australianmade.com.au\",\"count\":355,\"share\":1.033268329598044},{\"rank\":6,\"domain\":\"facebook.com\",\"count\":308,\"share\":0.8964694239892889},{\"rank\":7,\"domain\":\"ebay.com.au\",\"count\":245,\"share\":0.713100678173298},{\"rank\":8,\"domain\":\"theiconic.com.au\",\"count\":229,\"share\":0.6665308379660623},{\"rank\":9,\"domain\":\"en.wikipedia.org\",\"count\":211,\"share\":0.6141397677329219},{\"rank\":10,\"domain\":\"princesspolly.com.au\",\"count\":207,\"share\":0.602497307681113},{\"rank\":11,\"domain\":\"vogue.com.au\",\"count\":172,\"share\":0.5006257822277848},{\"rank\":12,\"domain\":\"allyfashion.com\",\"count\":158,\"share\":0.4598771720464534},{\"rank\":13,\"domain\":\"asos.com\",\"count\":153,\"share\":0.4453240969816922},{\"rank\":14,\"domain\":\"shopify.com\",\"count\":145,\"share\":0.42203917687807435},{\"rank\":15,\"domain\":\"jardan.com.au\",\"count\":139,\"share\":0.40457548680036093},{\"rank\":16,\"domain\":\"u-buy.com.au\",\"count\":126,\"share\":0.3667374916319818},{\"rank\":17,\"domain\":\"printful.com\",\"count\":125,\"share\":0.3638268766190296},{\"rank\":18,\"domain\":\"australiathegift.com.au\",\"count\":121,\"share\":0.35218441656722066},{\"rank\":19,\"domain\":\"broadsheet.com.au\",\"count\":115,\"share\":0.33472072648950724},{\"rank\":20,\"domain\":\"everythingaustralian.com.au\",\"count\":114,\"share\":0.331810111476555}],\"citationPageType\":[{\"pageType\":\"other\",\"count\":15777,\"share\":45.92077305934744},{\"pageType\":\"homepage\",\"count\":9957,\"share\":28.980993683965423},{\"pageType\":\"product\",\"count\":5342,\"share\":15.548505399190848},{\"pageType\":\"blog\/content\",\"count\":2954,\"share\":8.597956748260907},{\"pageType\":\"location\",\"count\":136,\"share\":0.3958436417615042},{\"pageType\":\"FAQ\",\"count\":95,\"share\":0.27650842623046246},{\"pageType\":\"service\",\"count\":56,\"share\":0.16299444072532526},{\"pageType\":\"directory\",\"count\":40,\"share\":0.11642460051808946}],\"topOrganicByPageType\":[{\"pageType\":\"homepage\",\"total\":2796,\"aio\":1281,\"rate\":45.81545064377682,\"ciLow\":43.97560247727804,\"ciHigh\":47.6667818633218},{\"pageType\":\"other\",\"total\":1940,\"aio\":1165,\"rate\":60.051546391752574,\"ciLow\":57.854193484000504,\"ciHigh\":62.20916970361724},{\"pageType\":\"product\",\"total\":1463,\"aio\":714,\"rate\":48.803827751196174,\"ciLow\":46.24890195261702,\"ciHigh\":51.365019005174204},{\"pageType\":\"blog\/content\",\"total\":224,\"aio\":202,\"rate\":90.17857142857143,\"ciLow\":85.57782784221376,\"ciHigh\":93.42442635543932}]},\"education-training\":{\"vertical\":\"Education & Training\",\"slug\":\"education-training\",\"overall\":{\"total\":6512,\"triggered\":2607,\"rate\":40.03378378378378,\"ciLow\":38.84994515788621,\"ciHigh\":41.22937414293902},\"byIntent\":[{\"intent\":\"informational\",\"total\":2467,\"triggered\":1417,\"rate\":57.438184029185244,\"ciLow\":55.476991643084936,\"ciHigh\":59.37624702668652},{\"intent\":\"commercial\",\"total\":2166,\"triggered\":780,\"rate\":36.011080332409975,\"ciLow\":34.0158758931248,\"ciHigh\":38.05581818813902},{\"intent\":\"transactional\",\"total\":355,\"triggered\":179,\"rate\":50.42253521126761,\"ciLow\":45.244810870674776,\"ciHigh\":55.59121260040549},{\"intent\":\"navigational\",\"total\":1524,\"triggered\":231,\"rate\":15.157480314960631,\"ciLow\":13.444758696344389,\"ciHigh\":17.045417772210993}],\"byDevice\":{\"mobile\":{\"total\":4998,\"triggered\":2035,\"rate\":40.71628651460584,\"ciLow\":39.36181895494493,\"ciHigh\":42.08501454733951},\"desktop\":{\"total\":1514,\"triggered\":572,\"rate\":37.780713342140025,\"ciLow\":35.37228301854757,\"ciHigh\":40.250996775602225},\"gap\":2.9355731724658156},\"byLocalIntent\":{\"local\":{\"total\":1142,\"triggered\":307,\"rate\":26.882661996497376,\"ciLow\":24.391912381917514,\"ciHigh\":29.52842006193861},\"general\":{\"total\":5370,\"triggered\":2300,\"rate\":42.83054003724395,\"ciLow\":41.512616909278336,\"ciHigh\":44.15871363384746},\"gap\":-15.947878040746573},\"byLocationType\":{\"metro\":{\"total\":3261,\"triggered\":1269,\"rate\":38.91444342226311,\"ciLow\":37.25499974381291,\"ciHigh\":40.59997490488062},\"regional\":{\"total\":3251,\"triggered\":1338,\"rate\":41.1565672100892,\"ciLow\":39.476299271870005,\"ciHigh\":42.857710469187744},\"gap\":-2.2421237878260882},\"byCity\":[{\"city\":\"Newcastle\",\"state\":\"NSW\",\"locationType\":\"regional\",\"total\":1073,\"triggered\":442,\"rate\":41.192917054986026,\"ciLow\":38.28444623954723,\"ciHigh\":44.164225877131784},{\"city\":\"Geelong\",\"state\":\"VIC\",\"locationType\":\"regional\",\"total\":1103,\"triggered\":454,\"rate\":41.160471441523114,\"ciLow\":38.29172291755968,\"ciHigh\":44.09058002443311},{\"city\":\"Sunshine Coast\",\"state\":\"QLD\",\"locationType\":\"regional\",\"total\":1075,\"triggered\":442,\"rate\":41.116279069767444,\"ciLow\":38.21156855267438,\"ciHigh\":44.08425689565835},{\"city\":\"Brisbane\",\"state\":\"QLD\",\"locationType\":\"metro\",\"total\":1095,\"triggered\":430,\"rate\":39.26940639269406,\"ciLow\":36.4191942110587,\"ciHigh\":42.19464785680621},{\"city\":\"Melbourne\",\"state\":\"VIC\",\"locationType\":\"metro\",\"total\":1076,\"triggered\":419,\"rate\":38.940520446096656,\"ciLow\":36.071203545149565,\"ciHigh\":41.88852684493728},{\"city\":\"Sydney\",\"state\":\"NSW\",\"locationType\":\"metro\",\"total\":1090,\"triggered\":420,\"rate\":38.53211009174312,\"ciLow\":35.6879772727192,\"ciHigh\":41.456793962896626}],\"topDomains\":[{\"rank\":1,\"domain\":\"superprof.com.au\",\"count\":1320,\"share\":5.742376125636229},{\"rank\":2,\"domain\":\"youtube.com\",\"count\":1273,\"share\":5.53791273328403},{\"rank\":3,\"domain\":\"learnmate.com.au\",\"count\":874,\"share\":3.8021490407621696},{\"rank\":4,\"domain\":\"reddit.com\",\"count\":853,\"share\":3.71079305694523},{\"rank\":5,\"domain\":\"clueylearning.com.au\",\"count\":489,\"share\":2.127289337451603},{\"rank\":6,\"domain\":\"au.indeed.com\",\"count\":468,\"share\":2.035933353634663},{\"rank\":7,\"domain\":\"facebook.com\",\"count\":421,\"share\":1.8314699612824639},{\"rank\":8,\"domain\":\"google.com\",\"count\":348,\"share\":1.5138991603950058},{\"rank\":9,\"domain\":\"au.seek.com\",\"count\":317,\"share\":1.3790403271414278},{\"rank\":10,\"domain\":\"tutorfinder.com.au\",\"count\":300,\"share\":1.3050854830991432},{\"rank\":11,\"domain\":\"seek.com.au\",\"count\":280,\"share\":1.2180797842258668},{\"rank\":12,\"domain\":\"preply.com\",\"count\":248,\"share\":1.0788706660286247},{\"rank\":13,\"domain\":\"au.amazingtalker.com\",\"count\":241,\"share\":1.0484186714229782},{\"rank\":14,\"domain\":\"highschooltutors.com.au\",\"count\":212,\"share\":0.9222604080567277},{\"rank\":15,\"domain\":\"dymockstutoring.edu.au\",\"count\":199,\"share\":0.8657067037890981},{\"rank\":16,\"domain\":\"ezlicence.com.au\",\"count\":198,\"share\":0.8613564188454343},{\"rank\":17,\"domain\":\"alchemytuition.com.au\",\"count\":193,\"share\":0.8396049941271154},{\"rank\":18,\"domain\":\"tutero.com\",\"count\":171,\"share\":0.7438987253665115},{\"rank\":19,\"domain\":\"airtasker.com\",\"count\":143,\"share\":0.6220907469439249},{\"rank\":20,\"domain\":\"musiclessonsacademy.com.au\",\"count\":131,\"share\":0.5698873276199591}],\"citationPageType\":[{\"pageType\":\"other\",\"count\":15347,\"share\":66.76382303040849},{\"pageType\":\"blog\/content\",\"count\":3456,\"share\":15.034584765302128},{\"pageType\":\"homepage\",\"count\":3022,\"share\":13.146561099752033},{\"pageType\":\"location\",\"count\":713,\"share\":3.1017531648322967},{\"pageType\":\"product\",\"count\":180,\"share\":0.7830512898594858},{\"pageType\":\"directory\",\"count\":158,\"share\":0.687345021098882},{\"pageType\":\"FAQ\",\"count\":56,\"share\":0.24361595684517334},{\"pageType\":\"service\",\"count\":55,\"share\":0.23926567190150957}],\"topOrganicByPageType\":[{\"pageType\":\"other\",\"total\":3870,\"aio\":1688,\"rate\":43.617571059431526,\"ciLow\":42.06222292208141,\"ciHigh\":45.185577814014785},{\"pageType\":\"homepage\",\"total\":1912,\"aio\":494,\"rate\":25.83682008368201,\"ciLow\":23.924519783206144,\"ciHigh\":27.846023251249306},{\"pageType\":\"blog\/content\",\"total\":326,\"aio\":237,\"rate\":72.69938650306749,\"ciLow\":67.61985347128389,\"ciHigh\":77.25016898798141},{\"pageType\":\"location\",\"total\":292,\"aio\":121,\"rate\":41.43835616438356,\"ciLow\":35.93492318946597,\"ciHigh\":47.16414063387733}]},\"events-weddings\":{\"vertical\":\"Events & Weddings\",\"slug\":\"events-weddings\",\"overall\":{\"total\":6471,\"triggered\":1602,\"rate\":24.756606397774686,\"ciLow\":23.720190049689442,\"ciHigh\":25.82297715304181},\"byIntent\":[{\"intent\":\"informational\",\"total\":1388,\"triggered\":628,\"rate\":45.24495677233429,\"ciLow\":42.64312869773344,\"ciHigh\":47.87303348623922},{\"intent\":\"commercial\",\"total\":3202,\"triggered\":735,\"rate\":22.954403497813868,\"ciLow\":21.530684570473092,\"ciHigh\":24.442940576820522},{\"intent\":\"transactional\",\"total\":865,\"triggered\":128,\"rate\":14.797687861271678,\"ciLow\":12.587143354226733,\"ciHigh\":17.319527781225347},{\"intent\":\"navigational\",\"total\":1016,\"triggered\":111,\"rate\":10.9251968503937,\"ciLow\":9.152120340707253,\"ciHigh\":12.992651945498759}],\"byDevice\":{\"mobile\":{\"total\":4998,\"triggered\":1247,\"rate\":24.9499799919968,\"ciLow\":23.769837428314485,\"ciHigh\":26.168601245953006},\"desktop\":{\"total\":1473,\"triggered\":355,\"rate\":24.100475220638153,\"ciLow\":21.98547527422672,\"ciHigh\":26.35021624475542},\"gap\":0.8495047713586459},\"byLocalIntent\":{\"local\":{\"total\":1553,\"triggered\":367,\"rate\":23.631680618158406,\"ciLow\":21.585474390747102,\"ciHigh\":25.808017663935917},\"general\":{\"total\":4918,\"triggered\":1235,\"rate\":25.111834078893857,\"ciLow\":23.919563217079958,\"ciHigh\":26.34295640565638},\"gap\":-1.4801534607354512},\"byLocationType\":{\"metro\":{\"total\":3238,\"triggered\":794,\"rate\":24.52130945027795,\"ciLow\":23.07023118845471,\"ciHigh\":26.032772486987056},\"regional\":{\"total\":3233,\"triggered\":808,\"rate\":24.992267244045777,\"ciLow\":23.530056111038004,\"ciHigh\":26.513838529960175},\"gap\":-0.47095779376782687},\"byCity\":[{\"city\":\"Geelong\",\"state\":\"VIC\",\"locationType\":\"regional\",\"total\":1068,\"triggered\":281,\"rate\":26.31086142322097,\"ciLow\":23.758310144267572,\"ciHigh\":29.033221738801718},{\"city\":\"Sydney\",\"state\":\"NSW\",\"locationType\":\"metro\",\"total\":1064,\"triggered\":274,\"rate\":25.75187969924812,\"ciLow\":23.214955420363726,\"ciHigh\":28.463271013219682},{\"city\":\"Brisbane\",\"state\":\"QLD\",\"locationType\":\"metro\",\"total\":1093,\"triggered\":278,\"rate\":25.434583714547117,\"ciLow\":22.94188532941194,\"ciHigh\":28.099358912236067},{\"city\":\"Newcastle\",\"state\":\"NSW\",\"locationType\":\"regional\",\"total\":1080,\"triggered\":271,\"rate\":25.092592592592595,\"ciLow\":22.598245106381285,\"ciHigh\":27.763505171519103},{\"city\":\"Sunshine Coast\",\"state\":\"QLD\",\"locationType\":\"regional\",\"total\":1085,\"triggered\":256,\"rate\":23.59447004608295,\"ciLow\":21.163935034121707,\"ciHigh\":26.211330569249807},{\"city\":\"Melbourne\",\"state\":\"VIC\",\"locationType\":\"metro\",\"total\":1081,\"triggered\":242,\"rate\":22.38667900092507,\"ciLow\":20.002054802158803,\"ciHigh\":24.96686969336202}],\"topDomains\":[{\"rank\":1,\"domain\":\"google.com\",\"count\":933,\"share\":6.504461795872839},{\"rank\":2,\"domain\":\"reddit.com\",\"count\":726,\"share\":5.061349693251533},{\"rank\":3,\"domain\":\"easyweddings.com.au\",\"count\":679,\"share\":4.733686558839933},{\"rank\":4,\"domain\":\"facebook.com\",\"count\":290,\"share\":2.0217512548800896},{\"rank\":5,\"domain\":\"wedlockers.com.au\",\"count\":218,\"share\":1.5197992191857224},{\"rank\":6,\"domain\":\"youtube.com\",\"count\":167,\"share\":1.164249860568879},{\"rank\":7,\"domain\":\"bridebook.com\",\"count\":164,\"share\":1.143335192414947},{\"rank\":8,\"domain\":\"ag.gov.au\",\"count\":145,\"share\":1.0108756274400448},{\"rank\":9,\"domain\":\"instagram.com\",\"count\":140,\"share\":0.9760178471834913},{\"rank\":10,\"domain\":\"polkadotwedding.com\",\"count\":127,\"share\":0.8853876185164528},{\"rank\":11,\"domain\":\"bark.com\",\"count\":105,\"share\":0.7320133853876185},{\"rank\":12,\"domain\":\"airtasker.com\",\"count\":103,\"share\":0.7180702732849973},{\"rank\":13,\"domain\":\"tagvenue.com\",\"count\":91,\"share\":0.6344116006692694},{\"rank\":14,\"domain\":\"marqueemonkeys.com.au\",\"count\":86,\"share\":0.5995538204127161},{\"rank\":15,\"domain\":\"rosetraining.com.au\",\"count\":85,\"share\":0.5925822643614054},{\"rank\":16,\"domain\":\"courses.com.au\",\"count\":83,\"share\":0.5786391522587842},{\"rank\":17,\"domain\":\"en.wikipedia.org\",\"count\":82,\"share\":0.5716675962074735},{\"rank\":18,\"domain\":\"brides.com\",\"count\":78,\"share\":0.5437813720022309},{\"rank\":19,\"domain\":\"timthedj.com.au\",\"count\":65,\"share\":0.4531511433351924},{\"rank\":20,\"domain\":\"abia.com.au\",\"count\":58,\"share\":0.40435025097601784}],\"citationPageType\":[{\"pageType\":\"other\",\"count\":9072,\"share\":63.24595649749024},{\"pageType\":\"blog\/content\",\"count\":3166,\"share\":22.071946458449528},{\"pageType\":\"homepage\",\"count\":1198,\"share\":8.351924149470163},{\"pageType\":\"location\",\"count\":375,\"share\":2.614333519241495},{\"pageType\":\"product\",\"count\":335,\"share\":2.3354712771890687},{\"pageType\":\"directory\",\"count\":174,\"share\":1.2130507529280534},{\"pageType\":\"FAQ\",\"count\":24,\"share\":0.16731734523145567}],\"topOrganicByPageType\":[{\"pageType\":\"other\",\"total\":3556,\"aio\":975,\"rate\":27.418447694038246,\"ciLow\":25.977149492960894,\"ciHigh\":28.908483620602354},{\"pageType\":\"homepage\",\"total\":1867,\"aio\":211,\"rate\":11.301553294054633,\"ciLow\":9.94410635440232,\"ciHigh\":12.817927587968859},{\"pageType\":\"blog\/content\",\"total\":664,\"aio\":346,\"rate\":52.108433734939766,\"ciLow\":48.307475706371626,\"ciHigh\":55.88513523610336},{\"pageType\":\"product\",\"total\":233,\"aio\":23,\"rate\":9.871244635193133,\"ciLow\":6.667993455815775,\"ciHigh\":14.376282549750814},{\"pageType\":\"location\",\"total\":115,\"aio\":33,\"rate\":28.695652173913043,\"ciLow\":21.222458930478513,\"ciHigh\":37.5461877387013}]},\"fitness-wellness\":{\"vertical\":\"Fitness & Wellness\",\"slug\":\"fitness-wellness\",\"overall\":{\"total\":6470,\"triggered\":1862,\"rate\":28.778979907264297,\"ciLow\":27.688649672934424,\"ciHigh\":29.894495395057348},\"byIntent\":[{\"intent\":\"informational\",\"total\":1680,\"triggered\":894,\"rate\":53.214285714285715,\"ciLow\":50.823654965959385,\"ciHigh\":55.59024999992338},{\"intent\":\"commercial\",\"total\":2666,\"triggered\":664,\"rate\":24.90622655663916,\"ciLow\":23.30146271012115,\"ciHigh\":26.583204604973503},{\"intent\":\"transactional\",\"total\":903,\"triggered\":206,\"rate\":22.812846068660022,\"ciLow\":20.194395838852593,\"ciHigh\":25.661638996779125},{\"intent\":\"navigational\",\"total\":1221,\"triggered\":98,\"rate\":8.026208026208026,\"ciLow\":6.630560540487647,\"ciHigh\":9.6851491806714}],\"byDevice\":{\"mobile\":{\"total\":4998,\"triggered\":1466,\"rate\":29.331732693077228,\"ciLow\":28.085760116498705,\"ciHigh\":30.609453262509533},\"desktop\":{\"total\":1472,\"triggered\":396,\"rate\":26.902173913043477,\"ciLow\":24.699032297235128,\"ciHigh\":29.22556232050703},\"gap\":2.4295587800337515},\"byLocalIntent\":{\"local\":{\"total\":1141,\"triggered\":260,\"rate\":22.78702892199825,\"ciLow\":20.44681856552468,\"ciHigh\":25.309869521281385},\"general\":{\"total\":5329,\"triggered\":1602,\"rate\":30.061925314317882,\"ciLow\":28.84553324123787,\"ciHigh\":31.30704282627556},\"gap\":-7.274896392319633},\"byLocationType\":{\"metro\":{\"total\":3249,\"triggered\":939,\"rate\":28.901200369344416,\"ciLow\":27.36811160897365,\"ciHigh\":30.484124417520846},\"regional\":{\"total\":3221,\"triggered\":923,\"rate\":28.655696988512886,\"ciLow\":27.120332800338886,\"ciHigh\":30.241914077151154},\"gap\":0.24550338083152923},\"byCity\":[{\"city\":\"Sydney\",\"state\":\"NSW\",\"locationType\":\"metro\",\"total\":1063,\"triggered\":321,\"rate\":30.197554092191908,\"ciLow\":27.51290209914051,\"ciHigh\":33.02481971448204},{\"city\":\"Geelong\",\"state\":\"VIC\",\"locationType\":\"regional\",\"total\":1074,\"triggered\":319,\"rate\":29.702048417132215,\"ciLow\":27.045442176015623,\"ciHigh\":32.5033449556},{\"city\":\"Brisbane\",\"state\":\"QLD\",\"locationType\":\"metro\",\"total\":1099,\"triggered\":326,\"rate\":29.66333030027298,\"ciLow\":27.037361015680716,\"ciHigh\":32.43097967803269},{\"city\":\"Newcastle\",\"state\":\"NSW\",\"locationType\":\"regional\",\"total\":1078,\"triggered\":308,\"rate\":28.57142857142857,\"ciLow\":25.954438790372492,\"ciHigh\":31.340603293422387},{\"city\":\"Sunshine Coast\",\"state\":\"QLD\",\"locationType\":\"regional\",\"total\":1069,\"triggered\":296,\"rate\":27.68942937324602,\"ciLow\":25.09052401741846,\"ciHigh\":30.448112813964666},{\"city\":\"Melbourne\",\"state\":\"VIC\",\"locationType\":\"metro\",\"total\":1087,\"triggered\":292,\"rate\":26.862925482980682,\"ciLow\":24.312752050777227,\"ciHigh\":29.5760618705107}],\"topDomains\":[{\"rank\":1,\"domain\":\"youtube.com\",\"count\":897,\"share\":5.6876545558303215},{\"rank\":2,\"domain\":\"google.com\",\"count\":769,\"share\":4.876038298142159},{\"rank\":3,\"domain\":\"reddit.com\",\"count\":529,\"share\":3.3542578149768563},{\"rank\":4,\"domain\":\"fitness.edu.au\",\"count\":399,\"share\":2.5299600532623168},{\"rank\":5,\"domain\":\"facebook.com\",\"count\":315,\"share\":1.9973368841544608},{\"rank\":6,\"domain\":\"fitnesseducation.edu.au\",\"count\":255,\"share\":1.616891763363135},{\"rank\":7,\"domain\":\"crossfit.com\",\"count\":250,\"share\":1.5851880032971912},{\"rank\":8,\"domain\":\"instagram.com\",\"count\":228,\"share\":1.4456914590070382},{\"rank\":9,\"domain\":\"aipt.edu.au\",\"count\":215,\"share\":1.3632616828355841},{\"rank\":10,\"domain\":\"seek.com.au\",\"count\":163,\"share\":1.0335425781497685},{\"rank\":11,\"domain\":\"acfpt.com.au\",\"count\":163,\"share\":1.0335425781497685},{\"rank\":12,\"domain\":\"fitcollege.edu.au\",\"count\":158,\"share\":1.0018388180838247},{\"rank\":13,\"domain\":\"au.indeed.com\",\"count\":129,\"share\":0.8179570097013505},{\"rank\":14,\"domain\":\"games.crossfit.com\",\"count\":125,\"share\":0.7925940016485956},{\"rank\":15,\"domain\":\"tafecourses.com.au\",\"count\":121,\"share\":0.7672309935958405},{\"rank\":16,\"domain\":\"fitnessimage.com.au\",\"count\":110,\"share\":0.6974827214507641},{\"rank\":17,\"domain\":\"au.seek.com\",\"count\":93,\"share\":0.589689937226555},{\"rank\":18,\"domain\":\"garagegymreviews.com\",\"count\":90,\"share\":0.5706676811869889},{\"rank\":19,\"domain\":\"thecorecollab.com.au\",\"count\":85,\"share\":0.538963921121045},{\"rank\":20,\"domain\":\"fitnessnetwork.com.au\",\"count\":82,\"share\":0.5199416650814787}],\"citationPageType\":[{\"pageType\":\"other\",\"count\":4102,\"share\":26.009764758100314},{\"pageType\":\"blog\/content\",\"count\":3129,\"share\":19.840213049267643},{\"pageType\":\"service\",\"count\":3110,\"share\":19.719738761017055},{\"pageType\":\"location\",\"count\":2919,\"share\":18.508655126498002},{\"pageType\":\"homepage\",\"count\":1928,\"share\":12.224969881427937},{\"pageType\":\"product\",\"count\":529,\"share\":3.3542578149768563},{\"pageType\":\"directory\",\"count\":37,\"share\":0.23460782448798426},{\"pageType\":\"FAQ\",\"count\":17,\"share\":0.10779278422420899}],\"topOrganicByPageType\":[{\"pageType\":\"homepage\",\"total\":2435,\"aio\":408,\"rate\":16.75564681724846,\"ciLow\":15.32483500122373,\"ciHigh\":18.291189918147833},{\"pageType\":\"location\",\"total\":1113,\"aio\":335,\"rate\":30.098831985624436,\"ciLow\":27.47626013937608,\"ciHigh\":32.858311925274805},{\"pageType\":\"service\",\"total\":1095,\"aio\":385,\"rate\":35.15981735159817,\"ciLow\":32.38807267365228,\"ciHigh\":38.03532593084176},{\"pageType\":\"other\",\"total\":1068,\"aio\":439,\"rate\":41.10486891385768,\"ciLow\":38.19095497521763,\"ciHigh\":44.08254513897835},{\"pageType\":\"product\",\"total\":376,\"aio\":90,\"rate\":23.93617021276596,\"ciLow\":19.900557192316278,\"ciHigh\":28.498986196296244},{\"pageType\":\"blog\/content\",\"total\":327,\"aio\":187,\"rate\":57.18654434250765,\"ciLow\":51.77053075712036,\"ciHigh\":62.43566338533332}]},\"healthcare\":{\"vertical\":\"Healthcare\",\"slug\":\"healthcare\",\"overall\":{\"total\":6475,\"triggered\":2435,\"rate\":37.6061776061776,\"ciLow\":36.43397685627542,\"ciHigh\":38.7930760786196},\"byIntent\":[{\"intent\":\"informational\",\"total\":2976,\"triggered\":1735,\"rate\":58.299731182795696,\"ciLow\":56.51863643410777,\"ciHigh\":60.05942597028311},{\"intent\":\"commercial\",\"total\":1576,\"triggered\":384,\"rate\":24.36548223350254,\"ciLow\":22.31001565667544,\"ciHigh\":26.545616452265108},{\"intent\":\"transactional\",\"total\":427,\"triggered\":163,\"rate\":38.17330210772833,\"ciLow\":33.69015844920387,\"ciHigh\":42.8673513177267},{\"intent\":\"navigational\",\"total\":1496,\"triggered\":153,\"rate\":10.227272727272728,\"ciLow\":8.792258060692266,\"ciHigh\":11.86603012120641}],\"byDevice\":{\"mobile\":{\"total\":4998,\"triggered\":1902,\"rate\":38.055222088835535,\"ciLow\":36.71881254185495,\"ciHigh\":39.40997970138602},\"desktop\":{\"total\":1477,\"triggered\":533,\"rate\":36.08666215301287,\"ciLow\":33.67640862936446,\"ciHigh\":38.56910365230024},\"gap\":1.9685599358226682},\"byLocalIntent\":{\"local\":{\"total\":1585,\"triggered\":476,\"rate\":30.031545741324923,\"ciLow\":27.825300123751084,\"ciHigh\":32.33435329922072},\"general\":{\"total\":4890,\"triggered\":1959,\"rate\":40.061349693251536,\"ciLow\":38.69620242563272,\"ciHigh\":41.44210037517717},\"gap\":-10.029803951926613},\"byLocationType\":{\"metro\":{\"total\":3237,\"triggered\":1223,\"rate\":37.781896818041396,\"ciLow\":36.127043737534756,\"ciHigh\":39.4657158715742},\"regional\":{\"total\":3238,\"triggered\":1212,\"rate\":37.43051266213712,\"ciLow\":35.779420144104165,\"ciHigh\":39.11139500244711},\"gap\":0.3513841559042774},\"byCity\":[{\"city\":\"Brisbane\",\"state\":\"QLD\",\"locationType\":\"metro\",\"total\":1103,\"triggered\":424,\"rate\":38.44061650045331,\"ciLow\":35.614591327225845,\"ciHigh\":41.34688175076474},{\"city\":\"Sydney\",\"state\":\"NSW\",\"locationType\":\"metro\",\"total\":1049,\"triggered\":401,\"rate\":38.22688274547188,\"ciLow\":35.33418377608116,\"ciHigh\":41.20549702680506},{\"city\":\"Newcastle\",\"state\":\"NSW\",\"locationType\":\"regional\",\"total\":1078,\"triggered\":408,\"rate\":37.84786641929499,\"ciLow\":35.000529189281686,\"ciHigh\":40.78150766343315},{\"city\":\"Geelong\",\"state\":\"VIC\",\"locationType\":\"regional\",\"total\":1076,\"triggered\":406,\"rate\":37.732342007434944,\"ciLow\":34.88454836192358,\"ciHigh\":40.667421482542494},{\"city\":\"Sunshine Coast\",\"state\":\"QLD\",\"locationType\":\"regional\",\"total\":1084,\"triggered\":398,\"rate\":36.715867158671585,\"ciLow\":33.89790299972839,\"ciHigh\":39.62765439759857},{\"city\":\"Melbourne\",\"state\":\"VIC\",\"locationType\":\"metro\",\"total\":1085,\"triggered\":398,\"rate\":36.68202764976958,\"ciLow\":33.86600867421489,\"ciHigh\":39.592022319457655}],\"topDomains\":[{\"rank\":1,\"domain\":\"youtube.com\",\"count\":571,\"share\":2.683522887489426},{\"rank\":2,\"domain\":\"google.com\",\"count\":431,\"share\":2.0255663126233667},{\"rank\":3,\"domain\":\"au.indeed.com\",\"count\":411,\"share\":1.9315725162139297},{\"rank\":4,\"domain\":\"reddit.com\",\"count\":409,\"share\":1.9221731365729862},{\"rank\":5,\"domain\":\"healthdirect.gov.au\",\"count\":394,\"share\":1.8516777892659084},{\"rank\":6,\"domain\":\"dietitiansaustralia.org.au\",\"count\":317,\"share\":1.489801673089576},{\"rank\":7,\"domain\":\"au.seek.com\",\"count\":281,\"share\":1.3206128395525896},{\"rank\":8,\"domain\":\"vu.edu.au\",\"count\":272,\"share\":1.278315631168343},{\"rank\":9,\"domain\":\"seek.com.au\",\"count\":258,\"share\":1.2125199736817371},{\"rank\":10,\"domain\":\"facebook.com\",\"count\":252,\"share\":1.184321834758906},{\"rank\":11,\"domain\":\"speechpathologyaustralia.org.au\",\"count\":233,\"share\":1.0950277281699408},{\"rank\":12,\"domain\":\"sydney.edu.au\",\"count\":233,\"share\":1.0950277281699408},{\"rank\":13,\"domain\":\"psychologyboard.gov.au\",\"count\":228,\"share\":1.0715292790675817},{\"rank\":14,\"domain\":\"psychology.org.au\",\"count\":208,\"share\":0.9775354826581446},{\"rank\":15,\"domain\":\"hotdoc.com.au\",\"count\":169,\"share\":0.7942475796597425},{\"rank\":16,\"domain\":\"13sick.com.au\",\"count\":163,\"share\":0.7660494407369114},{\"rank\":17,\"domain\":\"study.uq.edu.au\",\"count\":161,\"share\":0.7566500610959677},{\"rank\":18,\"domain\":\"deakin.edu.au\",\"count\":151,\"share\":0.7096531628912492},{\"rank\":19,\"domain\":\"instagram.com\",\"count\":137,\"share\":0.6438575054046434},{\"rank\":20,\"domain\":\"open.edu.au\",\"count\":130,\"share\":0.6109596766613403}],\"citationPageType\":[{\"pageType\":\"other\",\"count\":9278,\"share\":43.60372215433782},{\"pageType\":\"location\",\"count\":4870,\"share\":22.887489425697904},{\"pageType\":\"blog\/content\",\"count\":3586,\"share\":16.85308769621205},{\"pageType\":\"homepage\",\"count\":1501,\"share\":7.054234420528245},{\"pageType\":\"service\",\"count\":1372,\"share\":6.447974433687377},{\"pageType\":\"product\",\"count\":479,\"share\":2.2511514240060158},{\"pageType\":\"FAQ\",\"count\":178,\"share\":0.8365447880439891},{\"pageType\":\"directory\",\"count\":14,\"share\":0.06579565748660589}],\"topOrganicByPageType\":[{\"pageType\":\"homepage\",\"total\":2441,\"aio\":248,\"rate\":10.15977058582548,\"ciLow\":9.023147026651767,\"ciHigh\":11.421596714619652},{\"pageType\":\"other\",\"total\":1962,\"aio\":1168,\"rate\":59.53109072375128,\"ciLow\":57.34261146033175,\"ciHigh\":61.68231913427975},{\"pageType\":\"location\",\"total\":1340,\"aio\":522,\"rate\":38.95522388059702,\"ciLow\":36.379317308579814,\"ciHigh\":41.594277198391836},{\"pageType\":\"service\",\"total\":341,\"aio\":182,\"rate\":53.3724340175953,\"ciLow\":48.06939404471695,\"ciHigh\":58.600334897498826},{\"pageType\":\"blog\/content\",\"total\":289,\"aio\":261,\"rate\":90.3114186851211,\"ciLow\":86.35359452098211,\"ciHigh\":93.2116038661323},{\"pageType\":\"product\",\"total\":51,\"aio\":30,\"rate\":58.82352941176471,\"ciLow\":45.16509274741746,\"ciHigh\":71.24580700751311}]},\"home-services\":{\"vertical\":\"Home Services\",\"slug\":\"home-services\",\"overall\":{\"total\":6540,\"triggered\":2191,\"rate\":33.50152905198777,\"ciLow\":32.36756387090072,\"ciHigh\":34.6548652783623},\"byIntent\":[{\"intent\":\"informational\",\"total\":1397,\"triggered\":894,\"rate\":63.99427344309234,\"ciLow\":61.44187749360689,\"ciHigh\":66.46991496030083},{\"intent\":\"commercial\",\"total\":3378,\"triggered\":874,\"rate\":25.873297809354646,\"ciLow\":24.424428627762108,\"ciHigh\":27.376980403340944},{\"intent\":\"transactional\",\"total\":756,\"triggered\":279,\"rate\":36.904761904761905,\"ciLow\":33.53922478381076,\"ciHigh\":40.402712588399446},{\"intent\":\"navigational\",\"total\":1009,\"triggered\":144,\"rate\":14.271555996035678,\"ciLow\":12.248624765895205,\"ciHigh\":16.565515569572852}],\"byDevice\":{\"mobile\":{\"total\":4998,\"triggered\":1709,\"rate\":34.19367747098839,\"ciLow\":32.891148570639054,\"ciHigh\":35.520486056095216},\"desktop\":{\"total\":1542,\"triggered\":482,\"rate\":31.25810635538262,\"ciLow\":28.993395319996786,\"ciHigh\":33.6159690547231},\"gap\":2.9355711156057716},\"byLocalIntent\":{\"local\":{\"total\":1672,\"triggered\":345,\"rate\":20.63397129186603,\"ciLow\":18.762589668330826,\"ciHigh\":22.63998680429046},\"general\":{\"total\":4868,\"triggered\":1846,\"rate\":37.92111750205423,\"ciLow\":36.56815431118533,\"ciHigh\":39.293129848792276},\"gap\":-17.2871462101882},\"byLocationType\":{\"metro\":{\"total\":3279,\"triggered\":1081,\"rate\":32.9673681000305,\"ciLow\":31.37906393751869,\"ciHigh\":34.59553562890573},\"regional\":{\"total\":3261,\"triggered\":1110,\"rate\":34.038638454461825,\"ciLow\":32.43192727151572,\"ciHigh\":35.68291174548284},\"gap\":-1.0712703544313271},\"byCity\":[{\"city\":\"Sunshine Coast\",\"state\":\"QLD\",\"locationType\":\"regional\",\"total\":1082,\"triggered\":393,\"rate\":36.32162661737523,\"ciLow\":33.50904742515081,\"ciHigh\":39.23099126925912},{\"city\":\"Sydney\",\"state\":\"NSW\",\"locationType\":\"metro\",\"total\":1115,\"triggered\":374,\"rate\":33.54260089686099,\"ciLow\":30.831960287560133,\"ciHigh\":36.36625615344457},{\"city\":\"Newcastle\",\"state\":\"NSW\",\"locationType\":\"regional\",\"total\":1081,\"triggered\":359,\"rate\":33.20999074930619,\"ciLow\":30.46620392355277,\"ciHigh\":36.07268986518098},{\"city\":\"Brisbane\",\"state\":\"QLD\",\"locationType\":\"metro\",\"total\":1100,\"triggered\":361,\"rate\":32.81818181818182,\"ciLow\":30.107294169751675,\"ciHigh\":35.64866211962897},{\"city\":\"Geelong\",\"state\":\"VIC\",\"locationType\":\"regional\",\"total\":1098,\"triggered\":358,\"rate\":32.60473588342441,\"ciLow\":29.896813379437425,\"ciHigh\":35.433956488028095},{\"city\":\"Melbourne\",\"state\":\"VIC\",\"locationType\":\"metro\",\"total\":1064,\"triggered\":346,\"rate\":32.5187969924812,\"ciLow\":29.771273834700985,\"ciHigh\":35.39209871044054}],\"topDomains\":[{\"rank\":1,\"domain\":\"google.com\",\"count\":1648,\"share\":8.79261590993971},{\"rank\":2,\"domain\":\"youtube.com\",\"count\":565,\"share\":3.0144587312596705},{\"rank\":3,\"domain\":\"reddit.com\",\"count\":565,\"share\":3.0144587312596705},{\"rank\":4,\"domain\":\"airtasker.com\",\"count\":430,\"share\":2.2941898308701916},{\"rank\":5,\"domain\":\"hipages.com.au\",\"count\":389,\"share\":2.075441498159313},{\"rank\":6,\"domain\":\"bunnings.com.au\",\"count\":367,\"share\":1.958064344021768},{\"rank\":7,\"domain\":\"facebook.com\",\"count\":346,\"share\":1.8460225150722938},{\"rank\":8,\"domain\":\"jimscleaning.com.au\",\"count\":271,\"share\":1.4458731259670277},{\"rank\":9,\"domain\":\"tradeheroes.com.au\",\"count\":231,\"share\":1.2324601184442192},{\"rank\":10,\"domain\":\"clean4you.com.au\",\"count\":197,\"share\":1.051059062049832},{\"rank\":11,\"domain\":\"jimsmowing.com.au\",\"count\":155,\"share\":0.826975404150883},{\"rank\":12,\"domain\":\"au.indeed.com\",\"count\":145,\"share\":0.7736221522701808},{\"rank\":13,\"domain\":\"thelaundrylady.com.au\",\"count\":121,\"share\":0.6455743477564958},{\"rank\":14,\"domain\":\"productreview.com.au\",\"count\":113,\"share\":0.6028917462519341},{\"rank\":15,\"domain\":\"seek.com.au\",\"count\":105,\"share\":0.5602091447473724},{\"rank\":16,\"domain\":\"au.seek.com\",\"count\":98,\"share\":0.5228618684308808},{\"rank\":17,\"domain\":\"fantasticcleaners.com.au\",\"count\":83,\"share\":0.44283199060982764},{\"rank\":18,\"domain\":\"thegoodguys.com.au\",\"count\":81,\"share\":0.43216134023368724},{\"rank\":19,\"domain\":\"en.wikipedia.org\",\"count\":81,\"share\":0.43216134023368724},{\"rank\":20,\"domain\":\"amazon.com.au\",\"count\":80,\"share\":0.426826015045617}],\"citationPageType\":[{\"pageType\":\"other\",\"count\":9603,\"share\":51.23512778103826},{\"pageType\":\"blog\/content\",\"count\":3749,\"share\":20.002134130075227},{\"pageType\":\"location\",\"count\":2090,\"share\":11.150829643066745},{\"pageType\":\"homepage\",\"count\":1452,\"share\":7.746892173077949},{\"pageType\":\"directory\",\"count\":1173,\"share\":6.258336445606359},{\"pageType\":\"product\",\"count\":636,\"share\":3.393266819612655},{\"pageType\":\"FAQ\",\"count\":37,\"share\":0.19740703195859788},{\"pageType\":\"service\",\"count\":3,\"share\":0.01600597556421064}],\"topOrganicByPageType\":[{\"pageType\":\"other\",\"total\":2494,\"aio\":1075,\"rate\":43.103448275862064,\"ciLow\":41.17192144035686,\"ciHigh\":45.056188460607224},{\"pageType\":\"homepage\",\"total\":2160,\"aio\":359,\"rate\":16.62037037037037,\"ciLow\":15.10997916352441,\"ciHigh\":18.24928336290081},{\"pageType\":\"location\",\"total\":1015,\"aio\":260,\"rate\":25.615763546798032,\"ciLow\":23.025746327087464,\"ciHigh\":28.38966505776373},{\"pageType\":\"product\",\"total\":313,\"aio\":140,\"rate\":44.72843450479233,\"ciLow\":39.317058347682256,\"ciHigh\":50.26764265117648},{\"pageType\":\"directory\",\"total\":269,\"aio\":153,\"rate\":56.877323420074354,\"ciLow\":50.90313277057225,\"ciHigh\":62.65784913248068},{\"pageType\":\"blog\/content\",\"total\":266,\"aio\":197,\"rate\":74.06015037593986,\"ciLow\":68.47670214145334,\"ciHigh\":78.95853393778721}]},\"hospitality\":{\"vertical\":\"Hospitality\",\"slug\":\"hospitality\",\"overall\":{\"total\":6467,\"triggered\":586,\"rate\":9.061388588217103,\"ciLow\":8.385836041266465,\"ciHigh\":9.785549887883773},\"byIntent\":[{\"intent\":\"informational\",\"total\":956,\"triggered\":231,\"rate\":24.163179916317993,\"ciLow\":21.556459606040733,\"ciHigh\":26.97671503444161},{\"intent\":\"commercial\",\"total\":2097,\"triggered\":176,\"rate\":8.392942298521698,\"ciLow\":7.2808696512724635,\"ciHigh\":9.657180318796675},{\"intent\":\"transactional\",\"total\":216,\"triggered\":39,\"rate\":18.055555555555554,\"ciLow\":13.498505076045792,\"ciHigh\":23.729026019069966},{\"intent\":\"navigational\",\"total\":3198,\"triggered\":140,\"rate\":4.377736085053159,\"ciLow\":3.721666575426729,\"ciHigh\":5.1432816468713405}],\"byDevice\":{\"mobile\":{\"total\":4998,\"triggered\":476,\"rate\":9.523809523809524,\"ciLow\":8.740791645833797,\"ciHigh\":10.369001835031328},\"desktop\":{\"total\":1469,\"triggered\":110,\"rate\":7.488087134104833,\"ciLow\":6.250209767357297,\"ciHigh\":8.947731409752311},\"gap\":2.0357223897046905},\"byLocalIntent\":{\"local\":{\"total\":2384,\"triggered\":236,\"rate\":9.899328859060402,\"ciLow\":8.764208487167428,\"ciHigh\":11.163478508485884},\"general\":{\"total\":4083,\"triggered\":350,\"rate\":8.572128337007102,\"ciLow\":7.751874045543776,\"ciHigh\":9.470266396601081},\"gap\":1.3272005220532996},\"byLocationType\":{\"metro\":{\"total\":3241,\"triggered\":290,\"rate\":8.947855600123418,\"ciLow\":8.013137287788554,\"ciHigh\":9.979777990417938},\"regional\":{\"total\":3226,\"triggered\":296,\"rate\":9.175449473031618,\"ciLow\":8.227232573742661,\"ciHigh\":10.220780480519814},\"gap\":-0.22759387290819966},\"byCity\":[{\"city\":\"Sunshine Coast\",\"state\":\"QLD\",\"locationType\":\"regional\",\"total\":1066,\"triggered\":104,\"rate\":9.75609756097561,\"ciLow\":8.11669576964246,\"ciHigh\":11.684515923752153},{\"city\":\"Geelong\",\"state\":\"VIC\",\"locationType\":\"regional\",\"total\":1082,\"triggered\":104,\"rate\":9.611829944547134,\"ciLow\":7.9957052058326985,\"ciHigh\":11.513733371580434},{\"city\":\"Brisbane\",\"state\":\"QLD\",\"locationType\":\"metro\",\"total\":1075,\"triggered\":102,\"rate\":9.488372093023257,\"ciLow\":7.877948215364608,\"ciHigh\":11.387308148498262},{\"city\":\"Melbourne\",\"state\":\"VIC\",\"locationType\":\"metro\",\"total\":1065,\"triggered\":95,\"rate\":8.92018779342723,\"ciLow\":7.352644430708172,\"ciHigh\":10.78302693537638},{\"city\":\"Sydney\",\"state\":\"NSW\",\"locationType\":\"metro\",\"total\":1101,\"triggered\":93,\"rate\":8.446866485013624,\"ciLow\":6.945197824484206,\"ciHigh\":10.237500582237624},{\"city\":\"Newcastle\",\"state\":\"NSW\",\"locationType\":\"regional\",\"total\":1078,\"triggered\":88,\"rate\":8.16326530612245,\"ciLow\":6.673474647423756,\"ciHigh\":9.950178944747218}],\"topDomains\":[{\"rank\":1,\"domain\":\"google.com\",\"count\":509,\"share\":9.84335718429704},{\"rank\":2,\"domain\":\"tripadvisor.com.au\",\"count\":301,\"share\":5.82092438599884},{\"rank\":3,\"domain\":\"instagram.com\",\"count\":143,\"share\":2.7654225488300135},{\"rank\":4,\"domain\":\"reddit.com\",\"count\":127,\"share\":2.4560046412686134},{\"rank\":5,\"domain\":\"facebook.com\",\"count\":116,\"share\":2.243279829820151},{\"rank\":6,\"domain\":\"broadsheet.com.au\",\"count\":108,\"share\":2.0885708760394506},{\"rank\":7,\"domain\":\"timeout.com\",\"count\":105,\"share\":2.0305550183716883},{\"rank\":8,\"domain\":\"opentable.com.au\",\"count\":100,\"share\":1.933861922258751},{\"rank\":9,\"domain\":\"theurbanlist.com\",\"count\":94,\"share\":1.8178302069232255},{\"rank\":10,\"domain\":\"tripadvisor.com\",\"count\":92,\"share\":1.7791529684780507},{\"rank\":11,\"domain\":\"agfg.com.au\",\"count\":92,\"share\":1.7791529684780507},{\"rank\":12,\"domain\":\"ubereats.com\",\"count\":75,\"share\":1.4503964416940631},{\"rank\":13,\"domain\":\"booking.com\",\"count\":65,\"share\":1.257010249468188},{\"rank\":14,\"domain\":\"yelp.com\",\"count\":63,\"share\":1.218333011023013},{\"rank\":15,\"domain\":\"taste.com.au\",\"count\":52,\"share\":1.0056081995745503},{\"rank\":16,\"domain\":\"gourmettraveller.com.au\",\"count\":42,\"share\":0.8122220073486752},{\"rank\":17,\"domain\":\"whatson.melbourne.vic.gov.au\",\"count\":42,\"share\":0.8122220073486752},{\"rank\":18,\"domain\":\"bestrestaurants.com.au\",\"count\":42,\"share\":0.8122220073486752},{\"rank\":19,\"domain\":\"youtube.com\",\"count\":42,\"share\":0.8122220073486752},{\"rank\":20,\"domain\":\"visitvictoria.com\",\"count\":41,\"share\":0.7928833881260878}],\"citationPageType\":[{\"pageType\":\"other\",\"count\":3497,\"share\":67.6271514213885},{\"pageType\":\"blog\/content\",\"count\":697,\"share\":13.479017598143491},{\"pageType\":\"homepage\",\"count\":633,\"share\":12.241345967897892},{\"pageType\":\"product\",\"count\":251,\"share\":4.853993424869464},{\"pageType\":\"location\",\"count\":44,\"share\":0.8508992457938503},{\"pageType\":\"directory\",\"count\":33,\"share\":0.6381744343453877},{\"pageType\":\"service\",\"count\":11,\"share\":0.2127248114484626},{\"pageType\":\"FAQ\",\"count\":5,\"share\":0.09669309611293754}],\"topOrganicByPageType\":[{\"pageType\":\"other\",\"total\":3801,\"aio\":398,\"rate\":10.470928702972902,\"ciLow\":9.537134320891493,\"ciHigh\":11.484545004734045},{\"pageType\":\"homepage\",\"total\":2170,\"aio\":108,\"rate\":4.976958525345622,\"ciLow\":4.13887268346891,\"ciHigh\":5.974173271673359},{\"pageType\":\"blog\/content\",\"total\":294,\"aio\":56,\"rate\":19.047619047619047,\"ciLow\":14.969385850343642,\"ciHigh\":23.92430797885953},{\"pageType\":\"product\",\"total\":99,\"aio\":18,\"rate\":18.181818181818183,\"ciLow\":11.821769885745203,\"ciHigh\":26.91897315987058}]},\"it-tech-services\":{\"vertical\":\"IT & Tech Services\",\"slug\":\"it-tech-services\",\"overall\":{\"total\":6509,\"triggered\":3415,\"rate\":52.46581656168382,\"ciLow\":51.251497381054556,\"ciHigh\":53.67722681822583},\"byIntent\":[{\"intent\":\"informational\",\"total\":2938,\"triggered\":2097,\"rate\":71.37508509189925,\"ciLow\":69.71353662260493,\"ciHigh\":72.98080830745519},{\"intent\":\"commercial\",\"total\":1460,\"triggered\":599,\"rate\":41.02739726027397,\"ciLow\":38.53100476868201,\"ciHigh\":43.57088385096098},{\"intent\":\"transactional\",\"total\":389,\"triggered\":188,\"rate\":48.329048843187664,\"ciLow\":43.403681286344785,\"ciHigh\":53.28709687971502},{\"intent\":\"navigational\",\"total\":1722,\"triggered\":531,\"rate\":30.836236933797913,\"ciLow\":28.699635269822192,\"ciHigh\":33.058152930439064}],\"byDevice\":{\"mobile\":{\"total\":4998,\"triggered\":2663,\"rate\":53.28131252501001,\"ciLow\":51.89610306330682,\"ciHigh\":54.66148164709265},\"desktop\":{\"total\":1511,\"triggered\":752,\"rate\":49.768365320979484,\"ciLow\":47.25105658031594,\"ciHigh\":52.28684890102282},\"gap\":3.5129472040305245},\"byLocalIntent\":{\"local\":{\"total\":878,\"triggered\":187,\"rate\":21.298405466970387,\"ciLow\":18.71829466699297,\"ciHigh\":24.128583956106695},\"general\":{\"total\":5631,\"triggered\":3228,\"rate\":57.32551944592434,\"ciLow\":56.02907822405962,\"ciHigh\":58.611972200498904},\"gap\":-36.027113978953956},\"byLocationType\":{\"metro\":{\"total\":3273,\"triggered\":1690,\"rate\":51.63458600672166,\"ciLow\":49.921605033040066,\"ciHigh\":53.34373437183078},\"regional\":{\"total\":3236,\"triggered\":1725,\"rate\":53.30655129789864,\"ciLow\":51.58466848233577,\"ciHigh\":55.02059271314984},\"gap\":-1.6719652911769813},\"byCity\":[{\"city\":\"Newcastle\",\"state\":\"NSW\",\"locationType\":\"regional\",\"total\":1059,\"triggered\":569,\"rate\":53.72993389990557,\"ciLow\":50.718778175151634,\"ciHigh\":56.71412622000941},{\"city\":\"Sunshine Coast\",\"state\":\"QLD\",\"locationType\":\"regional\",\"total\":1083,\"triggered\":580,\"rate\":53.554939981532776,\"ciLow\":50.57722651574006,\"ciHigh\":56.50752254060818},{\"city\":\"Melbourne\",\"state\":\"VIC\",\"locationType\":\"metro\",\"total\":1087,\"triggered\":574,\"rate\":52.80588776448943,\"ciLow\":49.833476523551695,\"ciHigh\":55.7585361022961},{\"city\":\"Geelong\",\"state\":\"VIC\",\"locationType\":\"regional\",\"total\":1094,\"triggered\":576,\"rate\":52.6508226691042,\"ciLow\":49.687977491883615,\"ciHigh\":55.59511617117304},{\"city\":\"Brisbane\",\"state\":\"QLD\",\"locationType\":\"metro\",\"total\":1073,\"triggered\":553,\"rate\":51.537744641192916,\"ciLow\":48.54725141198932,\"ciHigh\":54.51726615493975},{\"city\":\"Sydney\",\"state\":\"NSW\",\"locationType\":\"metro\",\"total\":1113,\"triggered\":563,\"rate\":50.58400718778078,\"ciLow\":47.64974996438625,\"ciHigh\":53.51424679218157}],\"topDomains\":[{\"rank\":1,\"domain\":\"youtube.com\",\"count\":1816,\"share\":6.137208516390673},{\"rank\":2,\"domain\":\"reddit.com\",\"count\":1579,\"share\":5.3362622507603925},{\"rank\":3,\"domain\":\"google.com\",\"count\":1093,\"share\":3.6938154782020955},{\"rank\":4,\"domain\":\"au.indeed.com\",\"count\":636,\"share\":2.149374788779993},{\"rank\":5,\"domain\":\"seek.com.au\",\"count\":533,\"share\":1.801284217641095},{\"rank\":6,\"domain\":\"au.seek.com\",\"count\":437,\"share\":1.476850287259209},{\"rank\":7,\"domain\":\"thepcdoctor.com.au\",\"count\":417,\"share\":1.4092598850963163},{\"rank\":8,\"domain\":\"cleverfiles.com\",\"count\":361,\"share\":1.2200067590402164},{\"rank\":9,\"domain\":\"geeks2u.com.au\",\"count\":340,\"share\":1.1490368367691788},{\"rank\":10,\"domain\":\"payam.com.au\",\"count\":255,\"share\":0.861777627576884},{\"rank\":11,\"domain\":\"techcommunity.microsoft.com\",\"count\":229,\"share\":0.7739101047651233},{\"rank\":12,\"domain\":\"au.jora.com\",\"count\":224,\"share\":0.7570125042244001},{\"rank\":13,\"domain\":\"procomputerrepairs.com.au\",\"count\":188,\"share\":0.6353497803311929},{\"rank\":14,\"domain\":\"ontrack.com\",\"count\":186,\"share\":0.6285907401149037},{\"rank\":15,\"domain\":\"hp.com\",\"count\":184,\"share\":0.6218316998986143},{\"rank\":16,\"domain\":\"facebook.com\",\"count\":181,\"share\":0.6116931395741805},{\"rank\":17,\"domain\":\"computercures.com.au\",\"count\":179,\"share\":0.6049340993578912},{\"rank\":18,\"domain\":\"1300nerdcore.com.au\",\"count\":176,\"share\":0.5947955390334573},{\"rank\":19,\"domain\":\"techradar.com\",\"count\":170,\"share\":0.5745184183845894},{\"rank\":20,\"domain\":\"glassdoor.com.au\",\"count\":169,\"share\":0.5711388982764447}],\"citationPageType\":[{\"pageType\":\"other\",\"count\":15316,\"share\":51.760729976343356},{\"pageType\":\"blog\/content\",\"count\":6809,\"share\":23.01115241635688},{\"pageType\":\"location\",\"count\":4854,\"share\":16.4041906049341},{\"pageType\":\"homepage\",\"count\":1451,\"share\":4.903683676917877},{\"pageType\":\"product\",\"count\":500,\"share\":1.6897600540723219},{\"pageType\":\"FAQ\",\"count\":377,\"share\":1.2740790807705304},{\"pageType\":\"directory\",\"count\":164,\"share\":0.5542412977357215},{\"pageType\":\"service\",\"count\":119,\"share\":0.4021628928692126}],\"topOrganicByPageType\":[{\"pageType\":\"other\",\"total\":3034,\"aio\":1819,\"rate\":59.95385629531971,\"ciLow\":58.1987649520427,\"ciHigh\":61.68377270232348},{\"pageType\":\"homepage\",\"total\":1234,\"aio\":314,\"rate\":25.44570502431118,\"ciLow\":23.0942858006657,\"ciHigh\":27.94953111419643},{\"pageType\":\"location\",\"total\":1175,\"aio\":588,\"rate\":50.04255319148936,\"ciLow\":47.188123886257905,\"ciHigh\":52.89670515269016},{\"pageType\":\"blog\/content\",\"total\":579,\"aio\":479,\"rate\":82.72884283246978,\"ciLow\":79.43673929994995,\"ciHigh\":85.5895045371406},{\"pageType\":\"FAQ\",\"total\":200,\"aio\":66,\"rate\":33,\"ciLow\":26.857320614303315,\"ciHigh\":39.78344358691961},{\"pageType\":\"product\",\"total\":180,\"aio\":115,\"rate\":63.888888888888886,\"ciLow\":56.64927882840125,\"ciHigh\":70.5480475656249},{\"pageType\":\"directory\",\"total\":65,\"aio\":13,\"rate\":20,\"ciLow\":12.077845770945213,\"ciHigh\":31.270362289297427}]},\"legal\":{\"vertical\":\"Legal\",\"slug\":\"legal\",\"overall\":{\"total\":6466,\"triggered\":3154,\"rate\":48.77822455923291,\"ciLow\":47.56094343838699,\"ciHigh\":49.99695658809898},\"byIntent\":[{\"intent\":\"informational\",\"total\":1953,\"triggered\":1541,\"rate\":78.90424987199181,\"ciLow\":77.038917553873,\"ciHigh\":80.6560946535535},{\"intent\":\"commercial\",\"total\":3602,\"triggered\":1343,\"rate\":37.28484175458079,\"ciLow\":35.71997341332083,\"ciHigh\":38.876803106202374},{\"intent\":\"transactional\",\"total\":262,\"triggered\":154,\"rate\":58.778625954198475,\"ciLow\":52.733218451117324,\"ciHigh\":64.57031869280597},{\"intent\":\"navigational\",\"total\":649,\"triggered\":116,\"rate\":17.873651771956855,\"ciLow\":15.117620062187928,\"ciHigh\":21.007773907804175}],\"byDevice\":{\"mobile\":{\"total\":4998,\"triggered\":2520,\"rate\":50.42016806722689,\"ciLow\":49.03422012268651,\"ciHigh\":51.80547060242561},\"desktop\":{\"total\":1468,\"triggered\":634,\"rate\":43.18801089918256,\"ciLow\":40.67510701617828,\"ciHigh\":45.736474230064516},\"gap\":7.232157168044331},\"byLocalIntent\":{\"local\":{\"total\":1156,\"triggered\":468,\"rate\":40.484429065743946,\"ciLow\":37.690786184508354,\"ciHigh\":43.341106446347446},\"general\":{\"total\":5310,\"triggered\":2686,\"rate\":50.58380414312617,\"ciLow\":49.23909449775002,\"ciHigh\":51.92766967527314},\"gap\":-10.099375077382227},\"byLocationType\":{\"metro\":{\"total\":3237,\"triggered\":1565,\"rate\":48.347235094223045,\"ciLow\":46.62867291412137,\"ciHigh\":50.06971555386178},\"regional\":{\"total\":3229,\"triggered\":1589,\"rate\":49.21028182099722,\"ciLow\":47.48784539825973,\"ciHigh\":50.93459509495838},\"gap\":-0.8630467267741722},\"byCity\":[{\"city\":\"Newcastle\",\"state\":\"NSW\",\"locationType\":\"regional\",\"total\":1080,\"triggered\":550,\"rate\":50.92592592592593,\"ciLow\":47.94639717874769,\"ciHigh\":53.898890915010675},{\"city\":\"Geelong\",\"state\":\"VIC\",\"locationType\":\"regional\",\"total\":1072,\"triggered\":529,\"rate\":49.34701492537313,\"ciLow\":46.3617978334714,\"ciHigh\":52.33689535705033},{\"city\":\"Melbourne\",\"state\":\"VIC\",\"locationType\":\"metro\",\"total\":1070,\"triggered\":525,\"rate\":49.06542056074766,\"ciLow\":46.078700842434884,\"ciHigh\":52.05882707602163},{\"city\":\"Brisbane\",\"state\":\"QLD\",\"locationType\":\"metro\",\"total\":1079,\"triggered\":527,\"rate\":48.84151992585728,\"ciLow\":45.86829680067299,\"ciHigh\":51.82296293666994},{\"city\":\"Sunshine Coast\",\"state\":\"QLD\",\"locationType\":\"regional\",\"total\":1077,\"triggered\":510,\"rate\":47.353760445682454,\"ciLow\":44.3864449138816,\"ciHigh\":50.33988686313364},{\"city\":\"Sydney\",\"state\":\"NSW\",\"locationType\":\"metro\",\"total\":1088,\"triggered\":513,\"rate\":47.150735294117645,\"ciLow\":44.199732743560354,\"ciHigh\":50.12178788727108}],\"topDomains\":[{\"rank\":1,\"domain\":\"google.com\",\"count\":1699,\"share\":5.933505622686317},{\"rank\":2,\"domain\":\"legalaid.vic.gov.au\",\"count\":726,\"share\":2.5354473702591322},{\"rank\":3,\"domain\":\"legalaid.nsw.gov.au\",\"count\":657,\"share\":2.294475099532025},{\"rank\":4,\"domain\":\"reddit.com\",\"count\":626,\"share\":2.18621219529231},{\"rank\":5,\"domain\":\"legalaid.qld.gov.au\",\"count\":543,\"share\":1.8963470000698468},{\"rank\":6,\"domain\":\"youtube.com\",\"count\":365,\"share\":1.2747083886289028},{\"rank\":7,\"domain\":\"fcfcoa.gov.au\",\"count\":284,\"share\":0.9918278969057763},{\"rank\":8,\"domain\":\"au.indeed.com\",\"count\":208,\"share\":0.7264091639309911},{\"rank\":9,\"domain\":\"familyrelationships.gov.au\",\"count\":199,\"share\":0.6949779981839771},{\"rank\":10,\"domain\":\"justia.com\",\"count\":199,\"share\":0.6949779981839771},{\"rank\":11,\"domain\":\"en.wikipedia.org\",\"count\":192,\"share\":0.6705315359362995},{\"rank\":12,\"domain\":\"facebook.com\",\"count\":190,\"share\":0.663546832436963},{\"rank\":13,\"domain\":\"criminaldefencelawyers.com.au\",\"count\":183,\"share\":0.6391003701892854},{\"rank\":14,\"domain\":\"clcnsw.org.au\",\"count\":169,\"share\":0.5902074456939302},{\"rank\":15,\"domain\":\"lawsociety.com.au\",\"count\":157,\"share\":0.5482992246979116},{\"rank\":16,\"domain\":\"attorneys.superlawyers.com\",\"count\":153,\"share\":0.5343298176992387},{\"rank\":17,\"domain\":\"probonocentre.org.au\",\"count\":152,\"share\":0.5308374659495705},{\"rank\":18,\"domain\":\"yelp.com\",\"count\":151,\"share\":0.5273451141999022},{\"rank\":19,\"domain\":\"seek.com.au\",\"count\":150,\"share\":0.523852762450234},{\"rank\":20,\"domain\":\"liv.asn.au\",\"count\":147,\"share\":0.5133757072012293}],\"citationPageType\":[{\"pageType\":\"other\",\"count\":18179,\"share\":63.48746245721869},{\"pageType\":\"homepage\",\"count\":4311,\"share\":15.055528392819726},{\"pageType\":\"blog\/content\",\"count\":3540,\"share\":12.362925193825522},{\"pageType\":\"location\",\"count\":2295,\"share\":8.01494726548858},{\"pageType\":\"FAQ\",\"count\":215,\"share\":0.7508556261786687},{\"pageType\":\"directory\",\"count\":46,\"share\":0.16064818048473842},{\"pageType\":\"product\",\"count\":31,\"share\":0.10826290423971503},{\"pageType\":\"service\",\"count\":17,\"share\":0.05936997974435985}],\"topOrganicByPageType\":[{\"pageType\":\"other\",\"total\":3799,\"aio\":2052,\"rate\":54.01421426691234,\"ciLow\":52.42610794465501,\"ciHigh\":55.59421033523337},{\"pageType\":\"homepage\",\"total\":1732,\"aio\":564,\"rate\":32.5635103926097,\"ciLow\":30.397241123057285,\"ciHigh\":34.80695723236871},{\"pageType\":\"location\",\"total\":490,\"aio\":229,\"rate\":46.73469387755102,\"ciLow\":42.35949989061339,\"ciHigh\":51.160689579046505},{\"pageType\":\"blog\/content\",\"total\":369,\"aio\":270,\"rate\":73.17073170731707,\"ciLow\":68.42820142655148,\"ciHigh\":77.43577941678788}]},\"marketing-creative-services\":{\"vertical\":\"Marketing & Creative Services\",\"slug\":\"marketing-creative-services\",\"overall\":{\"total\":6523,\"triggered\":2811,\"rate\":43.09366855741224,\"ciLow\":41.896315756046434,\"ciHigh\":44.2991512827124},\"byIntent\":[{\"intent\":\"informational\",\"total\":1276,\"triggered\":910,\"rate\":71.31661442006269,\"ciLow\":68.77387696032432,\"ciHigh\":73.73138306560388},{\"intent\":\"commercial\",\"total\":4362,\"triggered\":1614,\"rate\":37.00137551581843,\"ciLow\":35.580591090122006,\"ciHigh\":38.445035492390744},{\"intent\":\"transactional\",\"total\":204,\"triggered\":64,\"rate\":31.372549019607842,\"ciLow\":25.39913799288631,\"ciHigh\":38.034553818570096},{\"intent\":\"navigational\",\"total\":681,\"triggered\":223,\"rate\":32.74596182085169,\"ciLow\":29.326628113004304,\"ciHigh\":36.35886762790862}],\"byDevice\":{\"mobile\":{\"total\":4998,\"triggered\":2200,\"rate\":44.017607042817126,\"ciLow\":42.64647407965383,\"ciHigh\":45.39792940565446},\"desktop\":{\"total\":1525,\"triggered\":611,\"rate\":40.0655737704918,\"ciLow\":37.6340119682229,\"ciHigh\":42.547061074268875},\"gap\":3.9520332723253233},\"byLocalIntent\":{\"local\":{\"total\":700,\"triggered\":115,\"rate\":16.428571428571427,\"ciLow\":13.868222494761085,\"ciHigh\":19.355389181502442},\"general\":{\"total\":5823,\"triggered\":2696,\"rate\":46.29915850935944,\"ciLow\":45.02128193348862,\"ciHigh\":47.58191496824284},\"gap\":-29.87058708078801},\"byLocationType\":{\"metro\":{\"total\":3255,\"triggered\":1367,\"rate\":41.996927803379414,\"ciLow\":40.31176890894375,\"ciHigh\":43.70095512158292},\"regional\":{\"total\":3268,\"triggered\":1444,\"rate\":44.18604651162791,\"ciLow\":42.49119485791123,\"ciHigh\":45.894550955700296},\"gap\":-2.1891187082484933},\"byCity\":[{\"city\":\"Sunshine Coast\",\"state\":\"QLD\",\"locationType\":\"regional\",\"total\":1074,\"triggered\":483,\"rate\":44.97206703910614,\"ciLow\":42.02003470830211,\"ciHigh\":47.959940085767805},{\"city\":\"Newcastle\",\"state\":\"NSW\",\"locationType\":\"regional\",\"total\":1089,\"triggered\":480,\"rate\":44.0771349862259,\"ciLow\":41.154281284703096,\"ciHigh\":47.041629266286165},{\"city\":\"Geelong\",\"state\":\"VIC\",\"locationType\":\"regional\",\"total\":1105,\"triggered\":481,\"rate\":43.529411764705884,\"ciLow\":40.63348387134009,\"ciHigh\":46.470174577260686},{\"city\":\"Melbourne\",\"state\":\"VIC\",\"locationType\":\"metro\",\"total\":1097,\"triggered\":465,\"rate\":42.38833181403829,\"ciLow\":39.4955182924786,\"ciHigh\":45.33427011668036},{\"city\":\"Brisbane\",\"state\":\"QLD\",\"locationType\":\"metro\",\"total\":1069,\"triggered\":447,\"rate\":41.81478016838167,\"ciLow\":38.892330348517554,\"ciHigh\":44.79584878249303},{\"city\":\"Sydney\",\"state\":\"NSW\",\"locationType\":\"metro\",\"total\":1089,\"triggered\":455,\"rate\":41.78145087235997,\"ciLow\":38.88604656003389,\"ciHigh\":44.73463552234657}],\"topDomains\":[{\"rank\":1,\"domain\":\"reddit.com\",\"count\":1301,\"share\":5.298741497983953},{\"rank\":2,\"domain\":\"youtube.com\",\"count\":1074,\"share\":4.374210890726184},{\"rank\":3,\"domain\":\"au.indeed.com\",\"count\":645,\"share\":2.626970227670753},{\"rank\":4,\"domain\":\"google.com\",\"count\":348,\"share\":1.4173420763246853},{\"rank\":5,\"domain\":\"au.seek.com\",\"count\":296,\"share\":1.2055553292876635},{\"rank\":6,\"domain\":\"seek.com.au\",\"count\":255,\"share\":1.0385696248930885},{\"rank\":7,\"domain\":\"linkedin.com\",\"count\":255,\"share\":1.0385696248930885},{\"rank\":8,\"domain\":\"support.google.com\",\"count\":247,\"share\":1.0059870484258544},{\"rank\":9,\"domain\":\"glassdoor.com.au\",\"count\":243,\"share\":0.9896957601922373},{\"rank\":10,\"domain\":\"clutch.co\",\"count\":233,\"share\":0.9489675396081945},{\"rank\":11,\"domain\":\"agencies.semrush.com\",\"count\":209,\"share\":0.8512198102064921},{\"rank\":12,\"domain\":\"au.linkedin.com\",\"count\":203,\"share\":0.8267828778560665},{\"rank\":13,\"domain\":\"digitalnomadshq.com.au\",\"count\":201,\"share\":0.818637233739258},{\"rank\":14,\"domain\":\"studiohawk.com.au\",\"count\":183,\"share\":0.745326436687981},{\"rank\":15,\"domain\":\"rocketagency.com.au\",\"count\":182,\"share\":0.7412536146295768},{\"rank\":16,\"domain\":\"quora.com\",\"count\":167,\"share\":0.6801612837535128},{\"rank\":17,\"domain\":\"facebook.com\",\"count\":159,\"share\":0.6475787072862786},{\"rank\":18,\"domain\":\"payscale.com\",\"count\":150,\"share\":0.6109233087606403},{\"rank\":19,\"domain\":\"upwork.com\",\"count\":143,\"share\":0.5824135543518104},{\"rank\":20,\"domain\":\"digitalagencynetwork.com\",\"count\":132,\"share\":0.5376125117093634}],\"citationPageType\":[{\"pageType\":\"other\",\"count\":13362,\"share\":54.42104834439784},{\"pageType\":\"blog\/content\",\"count\":6864,\"share\":27.955850608886895},{\"pageType\":\"homepage\",\"count\":2359,\"share\":9.60778723577567},{\"pageType\":\"location\",\"count\":1571,\"share\":6.398403453753105},{\"pageType\":\"product\",\"count\":237,\"share\":0.9652588278418115},{\"pageType\":\"FAQ\",\"count\":61,\"share\":0.2484421455626604},{\"pageType\":\"service\",\"count\":50,\"share\":0.20364110292021342},{\"pageType\":\"directory\",\"count\":49,\"share\":0.19956828086180917}],\"topOrganicByPageType\":[{\"pageType\":\"other\",\"total\":3354,\"aio\":1634,\"rate\":48.717948717948715,\"ciLow\":47.028766972360536,\"ciHigh\":50.410063971898424},{\"pageType\":\"homepage\",\"total\":2027,\"aio\":461,\"rate\":22.74296990626542,\"ciLow\":20.97070053336628,\"ciHigh\":24.61835968679072},{\"pageType\":\"blog\/content\",\"total\":644,\"aio\":510,\"rate\":79.19254658385093,\"ciLow\":75.88876276323612,\"ciHigh\":82.15011587623378},{\"pageType\":\"location\",\"total\":370,\"aio\":154,\"rate\":41.62162162162162,\"ciLow\":36.71010948669929,\"ciHigh\":46.70532635564676},{\"pageType\":\"product\",\"total\":62,\"aio\":21,\"rate\":33.87096774193548,\"ciLow\":23.34153463018197,\"ciHigh\":46.282532828689014}]},\"real-estate\":{\"vertical\":\"Real Estate\",\"slug\":\"real-estate\",\"overall\":{\"total\":6555,\"triggered\":3339,\"rate\":50.93821510297482,\"ciLow\":49.72780290376594,\"ciHigh\":52.147528252272345},\"byIntent\":[{\"intent\":\"informational\",\"total\":3078,\"triggered\":2390,\"rate\":77.64782326185835,\"ciLow\":76.14208179884189,\"ciHigh\":79.08463718632596},{\"intent\":\"commercial\",\"total\":1946,\"triggered\":546,\"rate\":28.05755395683453,\"ciLow\":26.106092816115282,\"ciHigh\":30.09547760888744},{\"intent\":\"transactional\",\"total\":558,\"triggered\":223,\"rate\":39.96415770609319,\"ciLow\":35.98187272220332,\"ciHigh\":44.0836831212942},{\"intent\":\"navigational\",\"total\":973,\"triggered\":180,\"rate\":18.499486125385406,\"ciLow\":16.185189967765588,\"ciHigh\":21.06154481502826}],\"byDevice\":{\"mobile\":{\"total\":4998,\"triggered\":2558,\"rate\":51.18047218887555,\"ciLow\":49.79427736211026,\"ciHigh\":52.564853722728564},\"desktop\":{\"total\":1557,\"triggered\":781,\"rate\":50.16056518946692,\"ciLow\":47.679640330254294,\"ciHigh\":52.64069967093481},\"gap\":1.0199069994086258},\"byLocalIntent\":{\"local\":{\"total\":1388,\"triggered\":297,\"rate\":21.397694524495677,\"ciLow\":19.32061510804237,\"ciHigh\":23.63266348342953},\"general\":{\"total\":5167,\"triggered\":3042,\"rate\":58.873621056706014,\"ciLow\":57.52580454691648,\"ciHigh\":60.20825251644434},\"gap\":-37.47592653221034},\"byLocationType\":{\"metro\":{\"total\":3288,\"triggered\":1658,\"rate\":50.4257907542579,\"ciLow\":48.71728199547888,\"ciHigh\":52.13330571202198},\"regional\":{\"total\":3267,\"triggered\":1681,\"rate\":51.453933272115094,\"ciLow\":49.73940121508988,\"ciHigh\":53.16505004295943},\"gap\":-1.0281425178571908},\"byCity\":[{\"city\":\"Sunshine Coast\",\"state\":\"QLD\",\"locationType\":\"regional\",\"total\":1094,\"triggered\":566,\"rate\":51.736745886654475,\"ciLow\":48.77473277920741,\"ciHigh\":54.68660444831248},{\"city\":\"Newcastle\",\"state\":\"NSW\",\"locationType\":\"regional\",\"total\":1079,\"triggered\":554,\"rate\":51.343836886005555,\"ciLow\":48.36201165474653,\"ciHigh\":54.31612704993566},{\"city\":\"Geelong\",\"state\":\"VIC\",\"locationType\":\"regional\",\"total\":1094,\"triggered\":561,\"rate\":51.27970749542962,\"ciLow\":48.31848062514809,\"ciHigh\":54.231978384603416},{\"city\":\"Brisbane\",\"state\":\"QLD\",\"locationType\":\"metro\",\"total\":1083,\"triggered\":548,\"rate\":50.60018467220684,\"ciLow\":47.62563232077422,\"ciHigh\":53.57049414328458},{\"city\":\"Melbourne\",\"state\":\"VIC\",\"locationType\":\"metro\",\"total\":1100,\"triggered\":556,\"rate\":50.54545454545455,\"ciLow\":47.59406614638584,\"ciHigh\":53.49304635236398},{\"city\":\"Sydney\",\"state\":\"NSW\",\"locationType\":\"metro\",\"total\":1105,\"triggered\":554,\"rate\":50.13574660633484,\"ciLow\":47.19227994793436,\"ciHigh\":53.07827267202507}],\"topDomains\":[{\"rank\":1,\"domain\":\"reddit.com\",\"count\":1693,\"share\":5.869708421454079},{\"rank\":2,\"domain\":\"realestate.com.au\",\"count\":1189,\"share\":4.122317373366155},{\"rank\":3,\"domain\":\"youtube.com\",\"count\":615,\"share\":2.1322331241549075},{\"rank\":4,\"domain\":\"entryeducation.edu.au\",\"count\":553,\"share\":1.9172762888742503},{\"rank\":5,\"domain\":\"aussie.com.au\",\"count\":456,\"share\":1.5809728530319316},{\"rank\":6,\"domain\":\"au.seek.com\",\"count\":406,\"share\":1.4076205665152723},{\"rank\":7,\"domain\":\"nsw.gov.au\",\"count\":395,\"share\":1.3694830634816073},{\"rank\":8,\"domain\":\"seek.com.au\",\"count\":346,\"share\":1.1995978226952813},{\"rank\":9,\"domain\":\"salebyhomeowner.com.au\",\"count\":345,\"share\":1.1961307769649483},{\"rank\":10,\"domain\":\"reiq.com\",\"count\":345,\"share\":1.1961307769649483},{\"rank\":11,\"domain\":\"au.indeed.com\",\"count\":323,\"share\":1.119855770897618},{\"rank\":12,\"domain\":\"openagent.com.au\",\"count\":317,\"share\":1.0990534965156191},{\"rank\":13,\"domain\":\"ljhooker.com.au\",\"count\":311,\"share\":1.0782512221336198},{\"rank\":14,\"domain\":\"facebook.com\",\"count\":283,\"share\":0.9811739416842907},{\"rank\":15,\"domain\":\"anz.com.au\",\"count\":264,\"share\":0.9153000728079603},{\"rank\":16,\"domain\":\"reaa.com.au\",\"count\":253,\"share\":0.8771625697742954},{\"rank\":17,\"domain\":\"forsalebyowner.com.au\",\"count\":250,\"share\":0.8667614325832959},{\"rank\":18,\"domain\":\"whichrealestateagent.com.au\",\"count\":249,\"share\":0.8632943868529626},{\"rank\":19,\"domain\":\"rebaa.com.au\",\"count\":225,\"share\":0.7800852893249662},{\"rank\":20,\"domain\":\"propertynow.com.au\",\"count\":216,\"share\":0.7488818777519676}],\"citationPageType\":[{\"pageType\":\"other\",\"count\":16663,\"share\":57.77138300454183},{\"pageType\":\"blog\/content\",\"count\":9491,\"share\":32.905731026592235},{\"pageType\":\"homepage\",\"count\":1769,\"share\":6.133203896959401},{\"pageType\":\"location\",\"count\":663,\"share\":2.2986513192109004},{\"pageType\":\"product\",\"count\":109,\"share\":0.37790798460631697},{\"pageType\":\"directory\",\"count\":87,\"share\":0.30163297853898696},{\"pageType\":\"FAQ\",\"count\":60,\"share\":0.208022743819991},{\"pageType\":\"service\",\"count\":1,\"share\":0.003467045730333183}],\"topOrganicByPageType\":[{\"pageType\":\"other\",\"total\":3955,\"aio\":2067,\"rate\":52.2629582806574,\"ciLow\":50.704806787818924,\"ciHigh\":53.81671789253202},{\"pageType\":\"homepage\",\"total\":1355,\"aio\":324,\"rate\":23.911439114391143,\"ciLow\":21.71604171317411,\"ciHigh\":26.254347182779618},{\"pageType\":\"blog\/content\",\"total\":890,\"aio\":804,\"rate\":90.3370786516854,\"ciLow\":88.21904692166615,\"ciHigh\":92.10838469485296},{\"pageType\":\"location\",\"total\":282,\"aio\":105,\"rate\":37.234042553191486,\"ciLow\":31.79863289444919,\"ciHigh\":43.01259122408359}]},\"trades\":{\"vertical\":\"Trades\",\"slug\":\"trades\",\"overall\":{\"total\":6493,\"triggered\":2417,\"rate\":37.224703526875096,\"ciLow\":36.05675413952665,\"ciHigh\":38.407761048899665},\"byIntent\":[{\"intent\":\"informational\",\"total\":2237,\"triggered\":1483,\"rate\":66.29414394278051,\"ciLow\":64.30878564187518,\"ciHigh\":68.22363432033903},{\"intent\":\"commercial\",\"total\":2407,\"triggered\":523,\"rate\":21.72829248026589,\"ciLow\":20.126509805882637,\"ciHigh\":23.420175301923702},{\"intent\":\"transactional\",\"total\":814,\"triggered\":212,\"rate\":26.044226044226043,\"ciLow\":23.146749077323367,\"ciHigh\":29.16675515136835},{\"intent\":\"navigational\",\"total\":1035,\"triggered\":199,\"rate\":19.22705314009662,\"ciLow\":16.941687061322227,\"ciHigh\":21.7400137870073}],\"byDevice\":{\"mobile\":{\"total\":4998,\"triggered\":1925,\"rate\":38.51540616246499,\"ciLow\":37.175572000774224,\"ciHigh\":39.872881512827654},\"desktop\":{\"total\":1495,\"triggered\":492,\"rate\":32.909698996655514,\"ciLow\":30.57423270952666,\"ciHigh\":35.33277173977605},\"gap\":5.605707165809477},\"byLocalIntent\":{\"local\":{\"total\":1557,\"triggered\":305,\"rate\":19.588953114964674,\"ciLow\":17.69340508623789,\"ciHigh\":21.63419868854617},\"general\":{\"total\":4936,\"triggered\":2112,\"rate\":42.78768233387358,\"ciLow\":41.41351927233554,\"ciHigh\":44.17306309905064},\"gap\":-23.19872921890891},\"byLocationType\":{\"metro\":{\"total\":3237,\"triggered\":1207,\"rate\":37.287611986407164,\"ciLow\":35.63772047251019,\"ciHigh\":38.967641295247915},\"regional\":{\"total\":3256,\"triggered\":1210,\"rate\":37.16216216216216,\"ciLow\":35.518326976019985,\"ciHigh\":38.83625516073168},\"gap\":0.12544982424500262},\"byCity\":[{\"city\":\"Newcastle\",\"state\":\"NSW\",\"locationType\":\"regional\",\"total\":1075,\"triggered\":407,\"rate\":37.860465116279066,\"ciLow\":35.00899846084964,\"ciHigh\":40.79838605231707},{\"city\":\"Melbourne\",\"state\":\"VIC\",\"locationType\":\"metro\",\"total\":1097,\"triggered\":411,\"rate\":37.46581586144029,\"ciLow\":34.64985416150817,\"ciHigh\":40.36925848830448},{\"city\":\"Sydney\",\"state\":\"NSW\",\"locationType\":\"metro\",\"total\":1087,\"triggered\":405,\"rate\":37.258509659613615,\"ciLow\":34.433800206649536,\"ciHigh\":40.17296213171379},{\"city\":\"Brisbane\",\"state\":\"QLD\",\"locationType\":\"metro\",\"total\":1053,\"triggered\":391,\"rate\":37.13200379867047,\"ciLow\":34.265405636354316,\"ciHigh\":40.092151825426136},{\"city\":\"Sunshine Coast\",\"state\":\"QLD\",\"locationType\":\"regional\",\"total\":1113,\"triggered\":413,\"rate\":37.10691823899371,\"ciLow\":34.31764168841961,\"ciHigh\":39.98489145504495},{\"city\":\"Geelong\",\"state\":\"VIC\",\"locationType\":\"regional\",\"total\":1068,\"triggered\":390,\"rate\":36.51685393258427,\"ciLow\":33.68229157151707,\"ciHigh\":39.448066496316834}],\"topDomains\":[{\"rank\":1,\"domain\":\"youtube.com\",\"count\":1043,\"share\":5.134390075809786},{\"rank\":2,\"domain\":\"google.com\",\"count\":956,\"share\":4.706114010042335},{\"rank\":3,\"domain\":\"reddit.com\",\"count\":769,\"share\":3.785566604312297},{\"rank\":4,\"domain\":\"au.indeed.com\",\"count\":610,\"share\":3.002855173771783},{\"rank\":5,\"domain\":\"au.seek.com\",\"count\":593,\"share\":2.919169045978143},{\"rank\":6,\"domain\":\"facebook.com\",\"count\":421,\"share\":2.0724623412424927},{\"rank\":7,\"domain\":\"seek.com.au\",\"count\":326,\"share\":1.604804568278035},{\"rank\":8,\"domain\":\"hipages.com.au\",\"count\":296,\"share\":1.4571231662892588},{\"rank\":9,\"domain\":\"buildersacademy.edu.au\",\"count\":190,\"share\":0.9353155459289161},{\"rank\":10,\"domain\":\"bunnings.com.au\",\"count\":187,\"share\":0.9205474057300383},{\"rank\":11,\"domain\":\"jobsandskills.gov.au\",\"count\":176,\"share\":0.8663975583341538},{\"rank\":12,\"domain\":\"airtasker.com\",\"count\":161,\"share\":0.7925568573397657},{\"rank\":13,\"domain\":\"en.wikipedia.org\",\"count\":160,\"share\":0.7876341439401398},{\"rank\":14,\"domain\":\"au.jora.com\",\"count\":159,\"share\":0.782711430540514},{\"rank\":15,\"domain\":\"racv.com.au\",\"count\":148,\"share\":0.7285615831446294},{\"rank\":16,\"domain\":\"careerone.com.au\",\"count\":121,\"share\":0.5956483213547308},{\"rank\":17,\"domain\":\"service.com.au\",\"count\":113,\"share\":0.5562666141577238},{\"rank\":18,\"domain\":\"egt.net.au\",\"count\":109,\"share\":0.5365757605592203},{\"rank\":19,\"domain\":\"payscale.com\",\"count\":108,\"share\":0.5316530471595944},{\"rank\":20,\"domain\":\"tafensw.edu.au\",\"count\":96,\"share\":0.47258048636408384}],\"citationPageType\":[{\"pageType\":\"location\",\"count\":7530,\"share\":37.06803189918283},{\"pageType\":\"blog\/content\",\"count\":4568,\"share\":22.486954809490992},{\"pageType\":\"other\",\"count\":4129,\"share\":20.325883627055234},{\"pageType\":\"service\",\"count\":2148,\"share\":10.573988382396376},{\"pageType\":\"homepage\",\"count\":969,\"share\":4.7701092842374715},{\"pageType\":\"directory\",\"count\":645,\"share\":3.1751501427586883},{\"pageType\":\"product\",\"count\":266,\"share\":1.3094417643004823},{\"pageType\":\"FAQ\",\"count\":59,\"share\":0.2904400905779265}],\"topOrganicByPageType\":[{\"pageType\":\"location\",\"total\":2262,\"aio\":905,\"rate\":40.00884173297967,\"ciLow\":38.008445224735915,\"ciHigh\":42.04311707335236},{\"pageType\":\"homepage\",\"total\":1848,\"aio\":245,\"rate\":13.257575757575758,\"ciLow\":11.787367392118371,\"ciHigh\":14.880226639682192},{\"pageType\":\"other\",\"total\":792,\"aio\":442,\"rate\":55.80808080808081,\"ciLow\":52.32958413300063,\"ciHigh\":59.23050521141163},{\"pageType\":\"service\",\"total\":503,\"aio\":239,\"rate\":47.514910536779325,\"ciLow\":43.186072471087414,\"ciHigh\":51.88142001571715},{\"pageType\":\"directory\",\"total\":503,\"aio\":132,\"rate\":26.24254473161034,\"ciLow\":22.588144608457988,\"ciHigh\":30.257083565393568},{\"pageType\":\"blog\/content\",\"total\":438,\"aio\":388,\"rate\":88.58447488584474,\"ciLow\":85.26491489300079,\"ciHigh\":91.23308801120741},{\"pageType\":\"product\",\"total\":114,\"aio\":57,\"rate\":50,\"ciLow\":40.97230744494871,\"ciHigh\":59.02769255505129}]},\"travel-tourism\":{\"vertical\":\"Travel & Tourism\",\"slug\":\"travel-tourism\",\"overall\":{\"total\":6472,\"triggered\":2278,\"rate\":35.19777503090235,\"ciLow\":34.04330643891723,\"ciHigh\":36.36980558037615},\"byIntent\":[{\"intent\":\"informational\",\"total\":1255,\"triggered\":627,\"rate\":49.9601593625498,\"ciLow\":47.19817460163891,\"ciHigh\":52.72238728636989},{\"intent\":\"commercial\",\"total\":3161,\"triggered\":1225,\"rate\":38.75355900031636,\"ciLow\":37.06978628439072,\"ciHigh\":40.46463439562055},{\"intent\":\"transactional\",\"total\":1447,\"triggered\":288,\"rate\":19.90324809951624,\"ciLow\":17.926850342197124,\"ciHigh\":22.039028772380238},{\"intent\":\"navigational\",\"total\":609,\"triggered\":138,\"rate\":22.660098522167488,\"ciLow\":19.512576707164946,\"ciHigh\":26.15038089884613}],\"byDevice\":{\"mobile\":{\"total\":4998,\"triggered\":1818,\"rate\":36.37454981992797,\"ciLow\":35.05174275906301,\"ciHigh\":37.71828658372945},\"desktop\":{\"total\":1474,\"triggered\":460,\"rate\":31.20759837177748,\"ciLow\":28.893602839343224,\"ciHigh\":33.619294348014336},\"gap\":5.166951448150492},\"byLocalIntent\":{\"local\":{\"total\":1775,\"triggered\":511,\"rate\":28.788732394366196,\"ciLow\":26.729909445361955,\"ciHigh\":30.939171376674135},\"general\":{\"total\":4697,\"triggered\":1767,\"rate\":37.61975729188844,\"ciLow\":36.24499705977082,\"ciHigh\":39.01475217321759},\"gap\":-8.831024897522244},\"byLocationType\":{\"metro\":{\"total\":3234,\"triggered\":1135,\"rate\":35.09585652442795,\"ciLow\":33.46948034021225,\"ciHigh\":36.757599329157614},\"regional\":{\"total\":3238,\"triggered\":1143,\"rate\":35.29956763434219,\"ciLow\":33.671772173075695,\"ciHigh\":36.96220328087617},\"gap\":-0.2037111099142379},\"byCity\":[{\"city\":\"Brisbane\",\"state\":\"QLD\",\"locationType\":\"metro\",\"total\":1064,\"triggered\":399,\"rate\":37.5,\"ciLow\":34.640877222867275,\"ciHigh\":40.44906120994898},{\"city\":\"Newcastle\",\"state\":\"NSW\",\"locationType\":\"regional\",\"total\":1081,\"triggered\":400,\"rate\":37.00277520814061,\"ciLow\":34.17533172101053,\"ciHigh\":39.92226925594316},{\"city\":\"Geelong\",\"state\":\"VIC\",\"locationType\":\"regional\",\"total\":1066,\"triggered\":371,\"rate\":34.80300187617261,\"ciLow\":32.00262587525963,\"ciHigh\":37.7125170019663},{\"city\":\"Sydney\",\"state\":\"NSW\",\"locationType\":\"metro\",\"total\":1094,\"triggered\":379,\"rate\":34.643510054844604,\"ciLow\":31.88197200349106,\"ciHigh\":37.512519879490966},{\"city\":\"Sunshine Coast\",\"state\":\"QLD\",\"locationType\":\"regional\",\"total\":1091,\"triggered\":372,\"rate\":34.097158570119156,\"ciLow\":31.344440012954756,\"ciHigh\":36.96147748232492},{\"city\":\"Melbourne\",\"state\":\"VIC\",\"locationType\":\"metro\",\"total\":1076,\"triggered\":357,\"rate\":33.17843866171003,\"ciLow\":30.429223094284552,\"ciHigh\":36.047341616687866}],\"topDomains\":[{\"rank\":1,\"domain\":\"tripadvisor.com.au\",\"count\":895,\"share\":4.167636786961583},{\"rank\":2,\"domain\":\"google.com\",\"count\":700,\"share\":3.259604190919674},{\"rank\":3,\"domain\":\"viator.com\",\"count\":497,\"share\":2.3143189755529687},{\"rank\":4,\"domain\":\"tourradar.com\",\"count\":470,\"share\":2.1885913853317813},{\"rank\":5,\"domain\":\"getyourguide.com\",\"count\":469,\"share\":2.1839348079161818},{\"rank\":6,\"domain\":\"youtube.com\",\"count\":381,\"share\":1.7741559953434225},{\"rank\":7,\"domain\":\"reddit.com\",\"count\":362,\"share\":1.6856810244470315},{\"rank\":8,\"domain\":\"klook.com\",\"count\":260,\"share\":1.210710128055879},{\"rank\":9,\"domain\":\"luxuryescapes.com\",\"count\":255,\"share\":1.1874272409778812},{\"rank\":10,\"domain\":\"aptouring.com\",\"count\":248,\"share\":1.1548311990686846},{\"rank\":11,\"domain\":\"luxurygold.com\",\"count\":247,\"share\":1.1501746216530848},{\"rank\":12,\"domain\":\"facebook.com\",\"count\":220,\"share\":1.0244470314318976},{\"rank\":13,\"domain\":\"camperchamp.com.au\",\"count\":199,\"share\":0.9266589057043074},{\"rank\":14,\"domain\":\"intrepidtravel.com\",\"count\":188,\"share\":0.8754365541327124},{\"rank\":15,\"domain\":\"insightvacations.com\",\"count\":177,\"share\":0.8242142025611175},{\"rank\":16,\"domain\":\"captaincook.com.au\",\"count\":163,\"share\":0.7590221187427241},{\"rank\":17,\"domain\":\"drivenow.com.au\",\"count\":154,\"share\":0.7171129220023282},{\"rank\":18,\"domain\":\"tripadvisor.com\",\"count\":146,\"share\":0.6798603026775321},{\"rank\":19,\"domain\":\"trafalgar.com\",\"count\":140,\"share\":0.6519208381839348},{\"rank\":20,\"domain\":\"apollocamper.com\",\"count\":139,\"share\":0.6472642607683353}],\"citationPageType\":[{\"pageType\":\"other\",\"count\":16180,\"share\":75.34342258440047},{\"pageType\":\"homepage\",\"count\":2373,\"share\":11.050058207217695},{\"pageType\":\"blog\/content\",\"count\":2288,\"share\":10.654249126891735},{\"pageType\":\"location\",\"count\":354,\"share\":1.648428405122235},{\"pageType\":\"product\",\"count\":212,\"share\":0.9871944121071013},{\"pageType\":\"FAQ\",\"count\":30,\"share\":0.13969732246798602},{\"pageType\":\"directory\",\"count\":29,\"share\":0.1350407450523865},{\"pageType\":\"service\",\"count\":9,\"share\":0.04190919674039581}],\"topOrganicByPageType\":[{\"pageType\":\"other\",\"total\":4098,\"aio\":1670,\"rate\":40.75158613958028,\"ciLow\":39.2564672634861,\"ciHigh\":42.2640283109895},{\"pageType\":\"homepage\",\"total\":1789,\"aio\":412,\"rate\":23.029625489100056,\"ciLow\":21.137655889598808,\"ciHigh\":25.037176287432338},{\"pageType\":\"location\",\"total\":346,\"aio\":86,\"rate\":24.85549132947977,\"ciLow\":20.594424451178238,\"ciHigh\":29.668780382094862},{\"pageType\":\"blog\/content\",\"total\":112,\"aio\":82,\"rate\":73.21428571428571,\"ciLow\":64.3433558114235,\"ciHigh\":80.54552693881475},{\"pageType\":\"product\",\"total\":83,\"aio\":15,\"rate\":18.072289156626507,\"ciLow\":11.26926689223679,\"ciHigh\":27.700074989994768}]},\"veterinary-pet\":{\"vertical\":\"Veterinary & Pet Services\",\"slug\":\"veterinary-pet\",\"overall\":{\"total\":6520,\"triggered\":2207,\"rate\":33.84969325153374,\"ciLow\":32.710884419074745,\"ciHigh\":35.007522477867695},\"byIntent\":[{\"intent\":\"informational\",\"total\":1688,\"triggered\":977,\"rate\":57.87914691943128,\"ciLow\":55.50838341595058,\"ciHigh\":60.214128667922985},{\"intent\":\"commercial\",\"total\":1241,\"triggered\":298,\"rate\":24.012892828364222,\"ciLow\":21.718770266323144,\"ciHigh\":26.467408601735247},{\"intent\":\"transactional\",\"total\":726,\"triggered\":242,\"rate\":33.33333333333333,\"ciLow\":29.999861160209303,\"ciHigh\":36.842259102598405},{\"intent\":\"navigational\",\"total\":2865,\"triggered\":690,\"rate\":24.083769633507853,\"ciLow\":22.55338414319182,\"ciHigh\":25.683562783400436}],\"byDevice\":{\"mobile\":{\"total\":4998,\"triggered\":1774,\"rate\":35.494197679071625,\"ciLow\":34.17921354833023,\"ciHigh\":36.8314637989892},\"desktop\":{\"total\":1522,\"triggered\":433,\"rate\":28.44940867279895,\"ciLow\":26.239182309018418,\"ciHigh\":30.76815056223112},\"gap\":7.044789006272676},\"byLocalIntent\":{\"local\":{\"total\":1597,\"triggered\":417,\"rate\":26.111458985597995,\"ciLow\":24.016300476941943,\"ciHigh\":28.3212699610077},\"general\":{\"total\":4923,\"triggered\":1790,\"rate\":36.35994312411132,\"ciLow\":35.02731192725223,\"ciHigh\":37.71384540973218},\"gap\":-10.248484138513323},\"byLocationType\":{\"metro\":{\"total\":3245,\"triggered\":1095,\"rate\":33.7442218798151,\"ciLow\":32.13739415555932,\"ciHigh\":35.38949296629975},\"regional\":{\"total\":3275,\"triggered\":1112,\"rate\":33.954198473282446,\"ciLow\":32.35195573560993,\"ciHigh\":35.59404080170373},\"gap\":-0.20997659346734565},\"byCity\":[{\"city\":\"Newcastle\",\"state\":\"NSW\",\"locationType\":\"regional\",\"total\":1082,\"triggered\":381,\"rate\":35.212569316081336,\"ciLow\":32.423431359611016,\"ciHigh\":38.106340201913255},{\"city\":\"Sydney\",\"state\":\"NSW\",\"locationType\":\"metro\",\"total\":1077,\"triggered\":373,\"rate\":34.63324048282266,\"ciLow\":31.850719293907026,\"ciHigh\":37.524996814725355},{\"city\":\"Brisbane\",\"state\":\"QLD\",\"locationType\":\"metro\",\"total\":1073,\"triggered\":360,\"rate\":33.550792171481824,\"ciLow\":30.78868620695839,\"ciHigh\":36.43026224377012},{\"city\":\"Sunshine Coast\",\"state\":\"QLD\",\"locationType\":\"regional\",\"total\":1111,\"triggered\":371,\"rate\":33.39333933393339,\"ciLow\":30.681512441289392,\"ciHigh\":36.219615037268994},{\"city\":\"Geelong\",\"state\":\"VIC\",\"locationType\":\"regional\",\"total\":1082,\"triggered\":360,\"rate\":33.271719038817004,\"ciLow\":30.52764945109459,\"ciHigh\":36.13415462787973},{\"city\":\"Melbourne\",\"state\":\"VIC\",\"locationType\":\"metro\",\"total\":1095,\"triggered\":362,\"rate\":33.0593607305936,\"ciLow\":30.336445179820874,\"ciHigh\":35.90072676561694}],\"topDomains\":[{\"rank\":1,\"domain\":\"google.com\",\"count\":1385,\"share\":7.791404140414042},{\"rank\":2,\"domain\":\"facebook.com\",\"count\":851,\"share\":4.787353735373538},{\"rank\":3,\"domain\":\"reddit.com\",\"count\":716,\"share\":4.027902790279028},{\"rank\":4,\"domain\":\"youtube.com\",\"count\":650,\"share\":3.6566156615661565},{\"rank\":5,\"domain\":\"pawshake.com.au\",\"count\":203,\"share\":1.141989198919892},{\"rank\":6,\"domain\":\"emergencyvet.com.au\",\"count\":196,\"share\":1.1026102610261026},{\"rank\":7,\"domain\":\"petcloud.com.au\",\"count\":192,\"share\":1.08010801080108},{\"rank\":8,\"domain\":\"petbarn.com.au\",\"count\":159,\"share\":0.8944644464446445},{\"rank\":9,\"domain\":\"au.indeed.com\",\"count\":149,\"share\":0.8382088208820881},{\"rank\":10,\"domain\":\"greencrossvets.com.au\",\"count\":142,\"share\":0.7988298829882988},{\"rank\":11,\"domain\":\"madpaws.com.au\",\"count\":139,\"share\":0.7819531953195319},{\"rank\":12,\"domain\":\"pawssum.com.au\",\"count\":138,\"share\":0.7763276327632763},{\"rank\":13,\"domain\":\"happyhousesitters.com.au\",\"count\":133,\"share\":0.7481998199819981},{\"rank\":14,\"domain\":\"airtasker.com\",\"count\":130,\"share\":0.7313231323132313},{\"rank\":15,\"domain\":\"rover.com\",\"count\":130,\"share\":0.7313231323132313},{\"rank\":16,\"domain\":\"yelp.com\",\"count\":126,\"share\":0.7088208820882088},{\"rank\":17,\"domain\":\"akc.org\",\"count\":120,\"share\":0.6750675067506751},{\"rank\":18,\"domain\":\"seek.com.au\",\"count\":118,\"share\":0.6638163816381638},{\"rank\":19,\"domain\":\"amazon.com.au\",\"count\":116,\"share\":0.6525652565256526},{\"rank\":20,\"domain\":\"animalemergencyservice.com.au\",\"count\":115,\"share\":0.6469396939693969}],\"citationPageType\":[{\"pageType\":\"other\",\"count\":9376,\"share\":52.74527452745274},{\"pageType\":\"blog\/content\",\"count\":3793,\"share\":21.33775877587759},{\"pageType\":\"homepage\",\"count\":2398,\"share\":13.490099009900991},{\"pageType\":\"location\",\"count\":1444,\"share\":8.123312331233123},{\"pageType\":\"product\",\"count\":331,\"share\":1.862061206120612},{\"pageType\":\"directory\",\"count\":288,\"share\":1.6201620162016201},{\"pageType\":\"service\",\"count\":80,\"share\":0.45004500450045004},{\"pageType\":\"FAQ\",\"count\":66,\"share\":0.3712871287128713}],\"topOrganicByPageType\":[{\"pageType\":\"homepage\",\"total\":2871,\"aio\":527,\"rate\":18.35597352838732,\"ciLow\":16.98248523554244,\"ciHigh\":19.814032527384043},{\"pageType\":\"other\",\"total\":2400,\"aio\":1078,\"rate\":44.916666666666664,\"ciLow\":42.936313080498294,\"ciHigh\":46.91326769054753},{\"pageType\":\"location\",\"total\":583,\"aio\":197,\"rate\":33.79073756432247,\"ciLow\":30.068417130376517,\"ciHigh\":37.725277113521656},{\"pageType\":\"blog\/content\",\"total\":373,\"aio\":302,\"rate\":80.9651474530831,\"ciLow\":76.67323551043454,\"ciHigh\":84.62572935968596},{\"pageType\":\"product\",\"total\":188,\"aio\":70,\"rate\":37.234042553191486,\"ciLow\":30.64394741232662,\"ciHigh\":44.33541055799889},{\"pageType\":\"directory\",\"total\":59,\"aio\":15,\"rate\":25.423728813559322,\"ciLow\":16.05583829520582,\"ciHigh\":37.79638698231735}]}},\"runId\":\"cmp0z3xoi0000oojptuyj1q1h\",\"findingA_questionKeywords\":{\"questionOverall\":{\"total\":6610,\"triggered\":6109,\"rate\":92.42057488653556,\"ciLow\":91.75759028624951,\"ciHigh\":93.0342801449988},\"nonQuestionOverall\":{\"total\":110308,\"triggered\":38033,\"rate\":34.4789135874098,\"ciLow\":34.19896684672822,\"ciHigh\":34.759941368978694},\"gap\":57.94166129912576,\"byQuestionWord\":[{\"word\":\"why\",\"total\":63,\"triggered\":60,\"rate\":95.23809523809523,\"ciLow\":86.90882244316417,\"ciHigh\":98.36741271577874},{\"word\":\"how\",\"total\":3332,\"triggered\":3138,\"rate\":94.17767106842737,\"ciLow\":93.33051887622612,\"ciHigh\":94.92307206166493},{\"word\":\"when\",\"total\":195,\"triggered\":181,\"rate\":92.82051282051282,\"ciLow\":88.31093489855527,\"ciHigh\":95.67551461703906},{\"word\":\"what\",\"total\":1299,\"triggered\":1205,\"rate\":92.76366435719784,\"ciLow\":91.22504578493488,\"ciHigh\":94.05009433954378},{\"word\":\"who\",\"total\":189,\"triggered\":160,\"rate\":84.65608465608466,\"ciLow\":78.8321688468756,\"ciHigh\":89.09923184675065},{\"word\":\"where\",\"total\":238,\"triggered\":186,\"rate\":78.15126050420169,\"ciLow\":72.47691189893162,\"ciHigh\":82.93125609201783}]},\"findingB_auDomainDominance\":{\"totalCitations\":387485,\"auTotal\":212909,\"auShare\":54.94638502135567,\"intlShare\":45.05361497864433,\"overallByTld\":[{\"tld\":\".com.au\",\"count\":166722,\"share\":43.02669780765707},{\"tld\":\".com\",\"count\":150177,\"share\":38.75685510406854},{\"tld\":\".gov.au\",\"count\":23061,\"share\":5.951456185400725},{\"tld\":\"other\",\"count\":15730,\"share\":4.059511981108946},{\"tld\":\".edu.au\",\"count\":12830,\"share\":3.3110959133901954},{\"tld\":\".org.au\",\"count\":6018,\"share\":1.553092377769462},{\"tld\":\".org\",\"count\":5846,\"share\":1.5087035627185568},{\"tld\":\".au (other)\",\"count\":2181,\"share\":0.5628604978257223},{\"tld\":\".net.au\",\"count\":2097,\"share\":0.5411822393124894},{\"tld\":\".net\",\"count\":1464,\"share\":0.377821076944914},{\"tld\":\".edu\",\"count\":700,\"share\":0.18065215427693976},{\"tld\":\".gov\",\"count\":659,\"share\":0.1700710995264333}],\"perVertical\":{\"accounting\":[{\"tld\":\".com.au\",\"count\":9632,\"share\":34.46153846153846},{\"tld\":\".gov.au\",\"count\":8659,\"share\":30.980322003577815},{\"tld\":\".com\",\"count\":6336,\"share\":22.669051878354203},{\"tld\":\".edu.au\",\"count\":1296,\"share\":4.636851520572451},{\"tld\":\"other\",\"count\":916,\"share\":3.2772808586762077},{\"tld\":\".net.au\",\"count\":306,\"share\":1.0948121645796065},{\"tld\":\".org.au\",\"count\":256,\"share\":0.9159212880143113},{\"tld\":\".org\",\"count\":161,\"share\":0.5760286225402504},{\"tld\":\".au (other)\",\"count\":154,\"share\":0.5509838998211092},{\"tld\":\".net\",\"count\":134,\"share\":0.47942754919499103},{\"tld\":\".edu\",\"count\":81,\"share\":0.2898032200357782},{\"tld\":\".gov\",\"count\":19,\"share\":0.06797853309481217}],\"automotive\":[{\"tld\":\".com.au\",\"count\":8401,\"share\":62.059540518578714},{\"tld\":\".com\",\"count\":4253,\"share\":31.417596217773507},{\"tld\":\".edu.au\",\"count\":308,\"share\":2.27524562310704},{\"tld\":\".gov.au\",\"count\":194,\"share\":1.4331092561128758},{\"tld\":\"other\",\"count\":171,\"share\":1.2632045504912461},{\"tld\":\".au (other)\",\"count\":66,\"share\":0.4875526335229371},{\"tld\":\".net.au\",\"count\":60,\"share\":0.44322966683903375},{\"tld\":\".net\",\"count\":54,\"share\":0.3989067001551304},{\"tld\":\".org\",\"count\":21,\"share\":0.1551303833936618},{\"tld\":\".org.au\",\"count\":8,\"share\":0.05909728891187117},{\"tld\":\".edu\",\"count\":1,\"share\":0.007387161113983896}],\"b2b-services\":[{\"tld\":\".com\",\"count\":13023,\"share\":42.97736123028183},{\"tld\":\".com.au\",\"count\":12300,\"share\":40.59138010692364},{\"tld\":\"other\",\"count\":1501,\"share\":4.953468417926209},{\"tld\":\".gov.au\",\"count\":1492,\"share\":4.923767408091876},{\"tld\":\".org\",\"count\":563,\"share\":1.8579631707478055},{\"tld\":\".edu.au\",\"count\":476,\"share\":1.5708534090159063},{\"tld\":\".org.au\",\"count\":470,\"share\":1.551052735793017},{\"tld\":\".net.au\",\"count\":160,\"share\":0.5280179526103888},{\"tld\":\".au (other)\",\"count\":130,\"share\":0.4290145864959408},{\"tld\":\".net\",\"count\":104,\"share\":0.34321166919675267},{\"tld\":\".edu\",\"count\":76,\"share\":0.25080852748993465},{\"tld\":\".gov\",\"count\":7,\"share\":0.023100785426704507}],\"beauty-personal-care\":[{\"tld\":\".com\",\"count\":5479,\"share\":46.197301854974704},{\"tld\":\".com.au\",\"count\":5187,\"share\":43.73524451939292},{\"tld\":\".edu.au\",\"count\":265,\"share\":2.2344013490725128},{\"tld\":\"other\",\"count\":250,\"share\":2.1079258010118047},{\"tld\":\".org\",\"count\":195,\"share\":1.6441821247892074},{\"tld\":\".gov.au\",\"count\":130,\"share\":1.0961214165261384},{\"tld\":\".au (other)\",\"count\":107,\"share\":0.9021922428330522},{\"tld\":\".gov\",\"count\":91,\"share\":0.7672849915682968},{\"tld\":\".org.au\",\"count\":70,\"share\":0.5902192242833052},{\"tld\":\".net.au\",\"count\":57,\"share\":0.4806070826306914},{\"tld\":\".net\",\"count\":29,\"share\":0.24451939291736932}],\"ecommerce\":[{\"tld\":\".com.au\",\"count\":19430,\"share\":56.553249701661954},{\"tld\":\".com\",\"count\":13099,\"share\":38.12614605466135},{\"tld\":\"other\",\"count\":731,\"share\":2.127659574468085},{\"tld\":\".gov.au\",\"count\":391,\"share\":1.1380504700643246},{\"tld\":\".org\",\"count\":279,\"share\":0.8120615886136742},{\"tld\":\".net.au\",\"count\":129,\"share\":0.37546933667083854},{\"tld\":\".org.au\",\"count\":121,\"share\":0.35218441656722066},{\"tld\":\".au (other)\",\"count\":117,\"share\":0.3405419565154117},{\"tld\":\".net\",\"count\":55,\"share\":0.16008382571237303},{\"tld\":\".edu\",\"count\":4,\"share\":0.011642460051808948},{\"tld\":\".gov\",\"count\":1,\"share\":0.002910615012952237}],\"education-training\":[{\"tld\":\".com\",\"count\":9565,\"share\":41.610475486144345},{\"tld\":\".com.au\",\"count\":8931,\"share\":38.85239483186149},{\"tld\":\".edu.au\",\"count\":1418,\"share\":6.1687040501152826},{\"tld\":\".gov.au\",\"count\":1020,\"share\":4.437290642537086},{\"tld\":\"other\",\"count\":974,\"share\":4.237177535128551},{\"tld\":\".org\",\"count\":394,\"share\":1.714012267803541},{\"tld\":\".org.au\",\"count\":273,\"share\":1.1876277896202203},{\"tld\":\".net\",\"count\":159,\"share\":0.6916953060425458},{\"tld\":\".net.au\",\"count\":108,\"share\":0.4698307739156915},{\"tld\":\".au (other)\",\"count\":84,\"share\":0.36542393526776},{\"tld\":\".edu\",\"count\":41,\"share\":0.1783616826902162},{\"tld\":\".gov\",\"count\":20,\"share\":0.08700569887327621}],\"events-weddings\":[{\"tld\":\".com.au\",\"count\":6993,\"share\":48.75209146681539},{\"tld\":\".com\",\"count\":5758,\"share\":40.14221974344674},{\"tld\":\"other\",\"count\":659,\"share\":4.59425543781372},{\"tld\":\".gov.au\",\"count\":402,\"share\":2.8025655326268826},{\"tld\":\".net.au\",\"count\":135,\"share\":0.941160066926938},{\"tld\":\".org\",\"count\":112,\"share\":0.7808142777467931},{\"tld\":\".au (other)\",\"count\":100,\"share\":0.6971556051310652},{\"tld\":\".org.au\",\"count\":91,\"share\":0.6344116006692694},{\"tld\":\".edu.au\",\"count\":76,\"share\":0.5298382598996095},{\"tld\":\".net\",\"count\":18,\"share\":0.12548800892359174}],\"fitness-wellness\":[{\"tld\":\".com\",\"count\":7427,\"share\":47.09276520195295},{\"tld\":\".com.au\",\"count\":5118,\"share\":32.451968803500094},{\"tld\":\".edu.au\",\"count\":1511,\"share\":9.580876291928222},{\"tld\":\"other\",\"count\":678,\"share\":4.299029864941982},{\"tld\":\".org\",\"count\":406,\"share\":2.5743453173546382},{\"tld\":\".org.au\",\"count\":243,\"share\":1.5408027392048698},{\"tld\":\".gov.au\",\"count\":175,\"share\":1.109631602308034},{\"tld\":\".net\",\"count\":82,\"share\":0.5199416650814787},{\"tld\":\".au (other)\",\"count\":44,\"share\":0.27899308858030564},{\"tld\":\".net.au\",\"count\":41,\"share\":0.2599708325407393},{\"tld\":\".edu\",\"count\":28,\"share\":0.17754105636928538},{\"tld\":\".gov\",\"count\":18,\"share\":0.11413353623739775}],\"healthcare\":[{\"tld\":\".com.au\",\"count\":7986,\"share\":37.53172290628818},{\"tld\":\".com\",\"count\":5369,\"share\":25.232634646113354},{\"tld\":\".edu.au\",\"count\":2600,\"share\":12.219193533226807},{\"tld\":\".gov.au\",\"count\":1740,\"share\":8.177460287621017},{\"tld\":\".org.au\",\"count\":1632,\"share\":7.669893787010057},{\"tld\":\".org\",\"count\":646,\"share\":3.0359996240248144},{\"tld\":\"other\",\"count\":531,\"share\":2.495535294670552},{\"tld\":\".net.au\",\"count\":267,\"share\":1.2548171820659837},{\"tld\":\".edu\",\"count\":183,\"share\":0.8600432371463483},{\"tld\":\".au (other)\",\"count\":156,\"share\":0.7331516119936085},{\"tld\":\".gov\",\"count\":146,\"share\":0.6861547137888899},{\"tld\":\".net\",\"count\":22,\"share\":0.10339317605038068}],\"home-services\":[{\"tld\":\".com.au\",\"count\":10959,\"share\":58.46982873606146},{\"tld\":\".com\",\"count\":5979,\"share\":31.8999092994718},{\"tld\":\".gov.au\",\"count\":688,\"share\":3.6707037293923066},{\"tld\":\"other\",\"count\":348,\"share\":1.856693165448434},{\"tld\":\".au (other)\",\"count\":205,\"share\":1.0937416635543937},{\"tld\":\".org\",\"count\":159,\"share\":0.8483167049031638},{\"tld\":\".net.au\",\"count\":145,\"share\":0.7736221522701808},{\"tld\":\".edu.au\",\"count\":114,\"share\":0.6082270714400042},{\"tld\":\".org.au\",\"count\":85,\"share\":0.4535026409859681},{\"tld\":\".net\",\"count\":43,\"share\":0.22941898308701916},{\"tld\":\".edu\",\"count\":18,\"share\":0.09603585338526384}],\"hospitality\":[{\"tld\":\".com\",\"count\":2688,\"share\":51.982208470315214},{\"tld\":\".com.au\",\"count\":2138,\"share\":41.34596789789209},{\"tld\":\"other\",\"count\":150,\"share\":2.9007928833881262},{\"tld\":\".gov.au\",\"count\":62,\"share\":1.1989943918004253},{\"tld\":\".org\",\"count\":37,\"share\":0.7155289112357377},{\"tld\":\".au (other)\",\"count\":26,\"share\":0.5028040997872751},{\"tld\":\".gov\",\"count\":26,\"share\":0.5028040997872751},{\"tld\":\".net.au\",\"count\":16,\"share\":0.3094179075614001},{\"tld\":\".net\",\"count\":13,\"share\":0.25140204989363757},{\"tld\":\".org.au\",\"count\":13,\"share\":0.25140204989363757},{\"tld\":\".edu.au\",\"count\":2,\"share\":0.03867723844517501}],\"it-tech-services\":[{\"tld\":\".com\",\"count\":15056,\"share\":50.88205474822575},{\"tld\":\".com.au\",\"count\":10357,\"share\":35.00168976005407},{\"tld\":\"other\",\"count\":1134,\"share\":3.8323758026360255},{\"tld\":\".edu.au\",\"count\":829,\"share\":2.8016221696519095},{\"tld\":\".gov.au\",\"count\":767,\"share\":2.5920919229469415},{\"tld\":\".org\",\"count\":553,\"share\":1.8688746198039878},{\"tld\":\".org.au\",\"count\":374,\"share\":1.2639405204460967},{\"tld\":\".net\",\"count\":192,\"share\":0.6488678607637716},{\"tld\":\".au (other)\",\"count\":96,\"share\":0.3244339303818858},{\"tld\":\".net.au\",\"count\":85,\"share\":0.2872592091922947},{\"tld\":\".gov\",\"count\":80,\"share\":0.27036160865157144},{\"tld\":\".edu\",\"count\":67,\"share\":0.2264278472456911}],\"legal\":[{\"tld\":\".com\",\"count\":9316,\"share\":32.5347488999092},{\"tld\":\".com.au\",\"count\":9041,\"share\":31.574352168750437},{\"tld\":\".gov.au\",\"count\":4240,\"share\":14.80757141859328},{\"tld\":\"other\",\"count\":2234,\"share\":7.801913808758819},{\"tld\":\".org.au\",\"count\":1799,\"share\":6.2827407976531395},{\"tld\":\".org\",\"count\":786,\"share\":2.744988475239226},{\"tld\":\".edu.au\",\"count\":575,\"share\":2.0081022560592303},{\"tld\":\".au (other)\",\"count\":255,\"share\":0.8905496961653978},{\"tld\":\".gov\",\"count\":176,\"share\":0.6146539079416079},{\"tld\":\".net\",\"count\":88,\"share\":0.30732695397080395},{\"tld\":\".edu\",\"count\":68,\"share\":0.2374799189774394},{\"tld\":\".net.au\",\"count\":56,\"share\":0.19557169798142068}],\"marketing-creative-services\":[{\"tld\":\".com\",\"count\":12254,\"share\":49.9083615036859},{\"tld\":\".com.au\",\"count\":8113,\"share\":33.04280535983383},{\"tld\":\"other\",\"count\":2103,\"share\":8.565144788824176},{\"tld\":\".edu.au\",\"count\":938,\"share\":3.8203070907832037},{\"tld\":\".org\",\"count\":347,\"share\":1.413269254266281},{\"tld\":\".gov.au\",\"count\":336,\"share\":1.3684682116238343},{\"tld\":\".net\",\"count\":192,\"share\":0.7819818352136194},{\"tld\":\".au (other)\",\"count\":108,\"share\":0.43986478230766096},{\"tld\":\".edu\",\"count\":57,\"share\":0.23215085732904328},{\"tld\":\".net.au\",\"count\":56,\"share\":0.22807803527063902},{\"tld\":\".gov\",\"count\":27,\"share\":0.10996619557691524},{\"tld\":\".org.au\",\"count\":22,\"share\":0.0896020852848939}],\"real-estate\":[{\"tld\":\".com.au\",\"count\":16868,\"share\":58.48212737926013},{\"tld\":\".com\",\"count\":7434,\"share\":25.774017959296884},{\"tld\":\".gov.au\",\"count\":1474,\"share\":5.110425406511112},{\"tld\":\"other\",\"count\":1124,\"share\":3.896959400894498},{\"tld\":\".edu.au\",\"count\":1038,\"share\":3.598793468085844},{\"tld\":\".org.au\",\"count\":214,\"share\":0.7419477862913012},{\"tld\":\".org\",\"count\":206,\"share\":0.7142114204486357},{\"tld\":\".au (other)\",\"count\":202,\"share\":0.700343237527303},{\"tld\":\".net.au\",\"count\":148,\"share\":0.5131227680893111},{\"tld\":\".net\",\"count\":120,\"share\":0.416045487639982},{\"tld\":\".gov\",\"count\":13,\"share\":0.04507159449433138},{\"tld\":\".edu\",\"count\":2,\"share\":0.006934091460666366}],\"trades\":[{\"tld\":\".com.au\",\"count\":9476,\"share\":46.64763217485478},{\"tld\":\".com\",\"count\":7225,\"share\":35.56660431229694},{\"tld\":\".gov.au\",\"count\":1046,\"share\":5.149158216008664},{\"tld\":\".edu.au\",\"count\":1036,\"share\":5.0999310820124055},{\"tld\":\"other\",\"count\":572,\"share\":2.8157920645859997},{\"tld\":\".org\",\"count\":351,\"share\":1.7278724032686816},{\"tld\":\".net.au\",\"count\":230,\"share\":1.132224081913951},{\"tld\":\".au (other)\",\"count\":220,\"share\":1.0829969479176922},{\"tld\":\".net\",\"count\":74,\"share\":0.3642807915723147},{\"tld\":\".org.au\",\"count\":60,\"share\":0.29536280397755243},{\"tld\":\".gov\",\"count\":18,\"share\":0.08860884119326573},{\"tld\":\".edu\",\"count\":6,\"share\":0.02953628039775524}],\"travel-tourism\":[{\"tld\":\".com\",\"count\":12742,\"share\":59.33410942956927},{\"tld\":\".com.au\",\"count\":6877,\"share\":32.023282887078},{\"tld\":\"other\",\"count\":1200,\"share\":5.587892898719441},{\"tld\":\".edu.au\",\"count\":167,\"share\":0.7776484284051222},{\"tld\":\".gov.au\",\"count\":148,\"share\":0.6891734575087312},{\"tld\":\".org.au\",\"count\":96,\"share\":0.4470314318975553},{\"tld\":\".org\",\"count\":90,\"share\":0.41909196740395804},{\"tld\":\".net\",\"count\":67,\"share\":0.31199068684516884},{\"tld\":\".au (other)\",\"count\":32,\"share\":0.1490104772991851},{\"tld\":\".edu\",\"count\":28,\"share\":0.13038416763678695},{\"tld\":\".gov\",\"count\":17,\"share\":0.07916181606519208},{\"tld\":\".net.au\",\"count\":11,\"share\":0.05122235157159488}],\"veterinary-pet\":[{\"tld\":\".com.au\",\"count\":8915,\"share\":50.1518901890189},{\"tld\":\".com\",\"count\":7174,\"share\":40.357785778577856},{\"tld\":\".org\",\"count\":540,\"share\":3.037803780378038},{\"tld\":\"other\",\"count\":454,\"share\":2.554005400540054},{\"tld\":\".org.au\",\"count\":191,\"share\":1.0744824482448245},{\"tld\":\".edu.au\",\"count\":181,\"share\":1.0182268226822682},{\"tld\":\".gov.au\",\"count\":97,\"share\":0.5456795679567957},{\"tld\":\".net.au\",\"count\":87,\"share\":0.4894239423942394},{\"tld\":\".au (other)\",\"count\":79,\"share\":0.4444194419441944},{\"tld\":\".edu\",\"count\":40,\"share\":0.22502250225022502},{\"tld\":\".net\",\"count\":18,\"share\":0.10126012601260126}]}},\"findingC_citationsPerAio\":{\"totalAioBlocks\":44142,\"mean\":8.77814779575008,\"median\":9,\"p25\":7,\"p75\":10,\"p95\":13,\"distribution\":[{\"bucket\":\"0\",\"count\":1816,\"share\":4.113995741017625},{\"bucket\":\"1\",\"count\":20,\"share\":0.045308323138960625},{\"bucket\":\"2\",\"count\":91,\"share\":0.20615287028227083},{\"bucket\":\"3\",\"count\":178,\"share\":0.4032440759367496},{\"bucket\":\"4\",\"count\":553,\"share\":1.2527751347922613},{\"bucket\":\"5\",\"count\":1213,\"share\":2.7479497983779617},{\"bucket\":\"6\u201310\",\"count\":29731,\"share\":67.35308776222192},{\"bucket\":\"11+\",\"count\":10540,\"share\":23.87748629423225}],\"perVertical\":[{\"vertical\":\"E-commerce\",\"slug\":\"ecommerce\",\"aioBlocks\":3408,\"mean\":10.081279342723004,\"median\":10},{\"vertical\":\"Travel & Tourism\",\"slug\":\"travel-tourism\",\"aioBlocks\":2278,\"mean\":9.427129060579455,\"median\":9},{\"vertical\":\"Legal\",\"slug\":\"legal\",\"aioBlocks\":3154,\"mean\":9.07863031071655,\"median\":9},{\"vertical\":\"B2B Services\",\"slug\":\"b2b-services\",\"aioBlocks\":3358,\"mean\":9.023823704586063,\"median\":9},{\"vertical\":\"Events & Weddings\",\"slug\":\"events-weddings\",\"aioBlocks\":1602,\"mean\":8.953807740324594,\"median\":9},{\"vertical\":\"Hospitality\",\"slug\":\"hospitality\",\"aioBlocks\":586,\"mean\":8.824232081911262,\"median\":9},{\"vertical\":\"Education & Training\",\"slug\":\"education-training\",\"aioBlocks\":2607,\"mean\":8.81741465285769,\"median\":9},{\"vertical\":\"Healthcare\",\"slug\":\"healthcare\",\"aioBlocks\":2435,\"mean\":8.738398357289528,\"median\":9},{\"vertical\":\"Marketing & Creative Services\",\"slug\":\"marketing-creative-services\",\"aioBlocks\":2811,\"mean\":8.734614016364283,\"median\":9},{\"vertical\":\"IT & Tech Services\",\"slug\":\"it-tech-services\",\"aioBlocks\":3415,\"mean\":8.664714494875549,\"median\":9},{\"vertical\":\"Real Estate\",\"slug\":\"real-estate\",\"aioBlocks\":3339,\"mean\":8.63821503444145,\"median\":9},{\"vertical\":\"Home Services\",\"slug\":\"home-services\",\"aioBlocks\":2191,\"mean\":8.554541305340027,\"median\":9},{\"vertical\":\"Beauty & Personal Care\",\"slug\":\"beauty-personal-care\",\"aioBlocks\":1396,\"mean\":8.495702005730658,\"median\":9},{\"vertical\":\"Fitness & Wellness\",\"slug\":\"fitness-wellness\",\"aioBlocks\":1862,\"mean\":8.469924812030076,\"median\":9},{\"vertical\":\"Trades\",\"slug\":\"trades\",\"aioBlocks\":2417,\"mean\":8.404633843607778,\"median\":9},{\"vertical\":\"Automotive\",\"slug\":\"automotive\",\"aioBlocks\":1637,\"mean\":8.269395235186316,\"median\":8},{\"vertical\":\"Accounting\",\"slug\":\"accounting\",\"aioBlocks\":3439,\"mean\":8.12736260540855,\"median\":8},{\"vertical\":\"Veterinary & Pet Services\",\"slug\":\"veterinary-pet\",\"aioBlocks\":2207,\"mean\":8.054372451291346,\"median\":8}]},\"findingD_featuredSnippetCooccurrence\":{\"total\":116918,\"aioYesFsYes\":0,\"aioYesFsNo\":44142,\"aioNoFsYes\":0,\"aioNoFsNo\":72776,\"aioOverall\":44142,\"fsOverall\":0,\"pctAioYesFsYes\":0,\"pctAioYesFsNo\":37.75466566311432,\"pctAioNoFsYes\":0,\"pctAioNoFsNo\":62.24533433688568,\"fsRateWhenAio\":0,\"fsRateWhenNoAio\":0},\"findingE_contentSignals\":{\"totalAioBlocks\":44142,\"overall\":{\"reddit\":{\"count\":9907,\"share\":22.443477866884145},\"youtube\":{\"count\":7134,\"share\":16.161478863667256},\"video\":{\"count\":0,\"share\":0},\"aussie\":{\"count\":36497,\"share\":82.6808934801323}},\"perVertical\":[{\"vertical\":\"Home Services\",\"slug\":\"home-services\",\"aioBlocks\":2191,\"redditShare\":19.899589228662713,\"youtubeShare\":15.335463258785943,\"videoShare\":0,\"aussieShare\":91.64764947512552},{\"vertical\":\"E-commerce\",\"slug\":\"ecommerce\",\"aioBlocks\":3408,\"redditShare\":18.133802816901408,\"youtubeShare\":9.242957746478874,\"videoShare\":0,\"aussieShare\":91.05046948356808},{\"vertical\":\"Accounting\",\"slug\":\"accounting\",\"aioBlocks\":3439,\"redditShare\":16.865367839488226,\"youtubeShare\":14.132015120674616,\"videoShare\":0,\"aussieShare\":90.89851701075894},{\"vertical\":\"Automotive\",\"slug\":\"automotive\",\"aioBlocks\":1637,\"redditShare\":22.419059254734268,\"youtubeShare\":20.15882712278558,\"videoShare\":0,\"aussieShare\":90.53145998778253},{\"vertical\":\"Hospitality\",\"slug\":\"hospitality\",\"aioBlocks\":586,\"redditShare\":15.699658703071673,\"youtubeShare\":6.655290102389079,\"videoShare\":0,\"aussieShare\":90.27303754266211},{\"vertical\":\"Healthcare\",\"slug\":\"healthcare\",\"aioBlocks\":2435,\"redditShare\":12.402464065708418,\"youtubeShare\":14.784394250513348,\"videoShare\":0,\"aussieShare\":90.06160164271047},{\"vertical\":\"Real Estate\",\"slug\":\"real-estate\",\"aioBlocks\":3339,\"redditShare\":33.8125187181791,\"youtubeShare\":13.11769991015274,\"videoShare\":0,\"aussieShare\":87.9005690326445},{\"vertical\":\"Beauty & Personal Care\",\"slug\":\"beauty-personal-care\",\"aioBlocks\":1396,\"redditShare\":32.306590257879655,\"youtubeShare\":16.977077363896846,\"videoShare\":0,\"aussieShare\":87.89398280802291},{\"vertical\":\"Veterinary & Pet Services\",\"slug\":\"veterinary-pet\",\"aioBlocks\":2207,\"redditShare\":24.467603081105572,\"youtubeShare\":15.722700498414136,\"videoShare\":0,\"aussieShare\":86.95061169007703},{\"vertical\":\"Trades\",\"slug\":\"trades\",\"aioBlocks\":2417,\"redditShare\":26.189491104675216,\"youtubeShare\":20.14894497310716,\"videoShare\":0,\"aussieShare\":84.69176665287547},{\"vertical\":\"Events & Weddings\",\"slug\":\"events-weddings\",\"aioBlocks\":1602,\"redditShare\":29.40074906367041,\"youtubeShare\":7.053682896379526,\"videoShare\":0,\"aussieShare\":82.33458177278402},{\"vertical\":\"B2B Services\",\"slug\":\"b2b-services\",\"aioBlocks\":3358,\"redditShare\":17.212626563430614,\"youtubeShare\":16.914830256104825,\"videoShare\":0,\"aussieShare\":82.2215604526504},{\"vertical\":\"Travel & Tourism\",\"slug\":\"travel-tourism\",\"aioBlocks\":2278,\"redditShare\":12.598770851624232,\"youtubeShare\":13.301141352063214,\"videoShare\":0,\"aussieShare\":80.81650570676031},{\"vertical\":\"Fitness & Wellness\",\"slug\":\"fitness-wellness\",\"aioBlocks\":1862,\"redditShare\":19.656283566058004,\"youtubeShare\":24.2749731471536,\"videoShare\":0,\"aussieShare\":80.02148227712136},{\"vertical\":\"Education & Training\",\"slug\":\"education-training\",\"aioBlocks\":2607,\"redditShare\":21.902570003835827,\"youtubeShare\":21.173762945914845,\"videoShare\":0,\"aussieShare\":77.06175680859225},{\"vertical\":\"IT & Tech Services\",\"slug\":\"it-tech-services\",\"aioBlocks\":3415,\"redditShare\":31.42020497803807,\"youtubeShare\":26.002928257686676,\"videoShare\":0,\"aussieShare\":72.26939970717423},{\"vertical\":\"Marketing & Creative Services\",\"slug\":\"marketing-creative-services\",\"aioBlocks\":2811,\"redditShare\":33.97367484880826,\"youtubeShare\":22.16293134115973,\"videoShare\":0,\"aussieShare\":69.47705442902881},{\"vertical\":\"Legal\",\"slug\":\"legal\",\"aioBlocks\":3154,\"redditShare\":14.521242866201648,\"youtubeShare\":8.243500317057704,\"videoShare\":0,\"aussieShare\":66.16994292961319}]},\"findingF_aioLength\":{\"totalBlocks\":42384,\"overallMean\":223.30008965647414,\"overallMedian\":218,\"p25\":181,\"p75\":258,\"p95\":330,\"perVertical\":[{\"vertical\":\"Travel & Tourism\",\"slug\":\"travel-tourism\",\"blocks\":2182,\"meanWords\":248.31576535288727,\"medianWords\":244,\"p95Words\":351},{\"vertical\":\"Education & Training\",\"slug\":\"education-training\",\"blocks\":2484,\"meanWords\":236.5390499194847,\"medianWords\":231,\"p95Words\":343},{\"vertical\":\"Real Estate\",\"slug\":\"real-estate\",\"blocks\":3194,\"meanWords\":232.65466499686912,\"medianWords\":226,\"p95Words\":349},{\"vertical\":\"Fitness & Wellness\",\"slug\":\"fitness-wellness\",\"blocks\":1777,\"meanWords\":231.37985368598763,\"medianWords\":229,\"p95Words\":327},{\"vertical\":\"Events & Weddings\",\"slug\":\"events-weddings\",\"blocks\":1538,\"meanWords\":230.40702210663198,\"medianWords\":221,\"p95Words\":343},{\"vertical\":\"IT & Tech Services\",\"slug\":\"it-tech-services\",\"blocks\":3277,\"meanWords\":230.06652425999388,\"medianWords\":223,\"p95Words\":336},{\"vertical\":\"Marketing & Creative Services\",\"slug\":\"marketing-creative-services\",\"blocks\":2697,\"meanWords\":228.8939562476826,\"medianWords\":225,\"p95Words\":344},{\"vertical\":\"Beauty & Personal Care\",\"slug\":\"beauty-personal-care\",\"blocks\":1353,\"meanWords\":227.32150776053214,\"medianWords\":224,\"p95Words\":331},{\"vertical\":\"Home Services\",\"slug\":\"home-services\",\"blocks\":2120,\"meanWords\":226.47641509433961,\"medianWords\":218,\"p95Words\":349},{\"vertical\":\"B2B Services\",\"slug\":\"b2b-services\",\"blocks\":3197,\"meanWords\":225.1495151704723,\"medianWords\":222,\"p95Words\":318},{\"vertical\":\"Veterinary & Pet Services\",\"slug\":\"veterinary-pet\",\"blocks\":2127,\"meanWords\":221.21814762576398,\"medianWords\":208,\"p95Words\":353},{\"vertical\":\"Legal\",\"slug\":\"legal\",\"blocks\":3008,\"meanWords\":220.98503989361703,\"medianWords\":217,\"p95Words\":310},{\"vertical\":\"E-commerce\",\"slug\":\"ecommerce\",\"blocks\":3341,\"meanWords\":220.69320562705778,\"medianWords\":220,\"p95Words\":315},{\"vertical\":\"Trades\",\"slug\":\"trades\",\"blocks\":2329,\"meanWords\":212.7174753112924,\"medianWords\":204,\"p95Words\":339},{\"vertical\":\"Healthcare\",\"slug\":\"healthcare\",\"blocks\":2336,\"meanWords\":211.15539383561645,\"medianWords\":207,\"p95Words\":301},{\"vertical\":\"Automotive\",\"slug\":\"automotive\",\"blocks\":1556,\"meanWords\":207.64910025706942,\"medianWords\":199,\"p95Words\":310},{\"vertical\":\"Hospitality\",\"slug\":\"hospitality\",\"blocks\":560,\"meanWords\":206.66607142857143,\"medianWords\":197,\"p95Words\":319},{\"vertical\":\"Accounting\",\"slug\":\"accounting\",\"blocks\":3308,\"meanWords\":195.73125755743652,\"medianWords\":193,\"p95Words\":290}]},\"findingG_aioPosition\":{\"totalBlocks\":44142,\"overallMean\":1.3489647048162747,\"overallMedian\":1,\"distribution\":[{\"position\":1,\"count\":37105,\"share\":84.0582665035567},{\"position\":2,\"count\":3568,\"share\":8.083004847990576},{\"position\":3,\"count\":1137,\"share\":2.5757781704499116},{\"position\":4,\"count\":865,\"share\":1.959584975760047},{\"position\":5,\"count\":808,\"share\":1.8304562548140093},{\"position\":6,\"count\":382,\"share\":0.865388971954148},{\"position\":7,\"count\":175,\"share\":0.39644782746590546},{\"position\":8,\"count\":74,\"share\":0.16764079561415432},{\"position\":9,\"count\":17,\"share\":0.038512074668116535},{\"position\":10,\"count\":2,\"share\":0.004530832313896062},{\"position\":11,\"count\":4,\"share\":0.009061664627792124},{\"position\":13,\"count\":2,\"share\":0.004530832313896062},{\"position\":14,\"count\":3,\"share\":0.006796248470844094}],\"perVertical\":[{\"vertical\":\"Legal\",\"slug\":\"legal\",\"blocks\":3154,\"meanPosition\":1.1173113506658212,\"medianPosition\":1,\"top3SharePct\":98.06594800253646},{\"vertical\":\"Trades\",\"slug\":\"trades\",\"blocks\":2417,\"meanPosition\":1.1390153082333472,\"medianPosition\":1,\"top3SharePct\":98.59329747621017},{\"vertical\":\"Real Estate\",\"slug\":\"real-estate\",\"blocks\":3339,\"meanPosition\":1.1416591793950284,\"medianPosition\":1,\"top3SharePct\":97.66397124887692},{\"vertical\":\"B2B Services\",\"slug\":\"b2b-services\",\"blocks\":3358,\"meanPosition\":1.1560452650387134,\"medianPosition\":1,\"top3SharePct\":98.15366289458011},{\"vertical\":\"Marketing & Creative Services\",\"slug\":\"marketing-creative-services\",\"blocks\":2811,\"meanPosition\":1.231945926716471,\"medianPosition\":1,\"top3SharePct\":97.15403770900035},{\"vertical\":\"IT & Tech Services\",\"slug\":\"it-tech-services\",\"blocks\":3415,\"meanPosition\":1.2363103953147876,\"medianPosition\":1,\"top3SharePct\":96.63250366032212},{\"vertical\":\"Beauty & Personal Care\",\"slug\":\"beauty-personal-care\",\"blocks\":1396,\"meanPosition\":1.245702005730659,\"medianPosition\":1,\"top3SharePct\":95.77363896848138},{\"vertical\":\"Healthcare\",\"slug\":\"healthcare\",\"blocks\":2435,\"meanPosition\":1.251334702258727,\"medianPosition\":1,\"top3SharePct\":95.81108829568788},{\"vertical\":\"Home Services\",\"slug\":\"home-services\",\"blocks\":2191,\"meanPosition\":1.2816065723413965,\"medianPosition\":1,\"top3SharePct\":95.52715654952077},{\"vertical\":\"Automotive\",\"slug\":\"automotive\",\"blocks\":1637,\"meanPosition\":1.3585827733659133,\"medianPosition\":1,\"top3SharePct\":94.25778863775199},{\"vertical\":\"Events & Weddings\",\"slug\":\"events-weddings\",\"blocks\":1602,\"meanPosition\":1.373283395755306,\"medianPosition\":1,\"top3SharePct\":95.06866416978777},{\"vertical\":\"Education & Training\",\"slug\":\"education-training\",\"blocks\":2607,\"meanPosition\":1.3993095512082854,\"medianPosition\":1,\"top3SharePct\":94.2079018028385},{\"vertical\":\"Fitness & Wellness\",\"slug\":\"fitness-wellness\",\"blocks\":1862,\"meanPosition\":1.5150375939849625,\"medianPosition\":1,\"top3SharePct\":91.29967776584319},{\"vertical\":\"Accounting\",\"slug\":\"accounting\",\"blocks\":3439,\"meanPosition\":1.5219540564117475,\"medianPosition\":1,\"top3SharePct\":93.05030532131433},{\"vertical\":\"Veterinary & Pet Services\",\"slug\":\"veterinary-pet\",\"blocks\":2207,\"meanPosition\":1.5396465790666063,\"medianPosition\":1,\"top3SharePct\":88.03806071590394},{\"vertical\":\"Hospitality\",\"slug\":\"hospitality\",\"blocks\":586,\"meanPosition\":1.6228668941979523,\"medianPosition\":1,\"top3SharePct\":86.17747440273038},{\"vertical\":\"E-commerce\",\"slug\":\"ecommerce\",\"blocks\":3408,\"meanPosition\":1.6458333333333333,\"medianPosition\":1,\"top3SharePct\":92.13615023474179},{\"vertical\":\"Travel & Tourism\",\"slug\":\"travel-tourism\",\"blocks\":2278,\"meanPosition\":1.8485513608428445,\"medianPosition\":1,\"top3SharePct\":86.61106233538192}]},\"findingH_paaCooccurrence\":{\"total\":116918,\"aioYesPaaYes\":38740,\"aioYesPaaNo\":5402,\"aioNoPaaYes\":50198,\"aioNoPaaNo\":22578,\"paaWhenAio\":87.76222192016674,\"paaWhenNoAio\":68.97603605584258,\"paaOverall\":76.0686977197694},\"findingI_localPackCooccurrence\":{\"total\":116918,\"aioYesLpYes\":0,\"aioYesLpNo\":44142,\"aioNoLpYes\":0,\"aioNoLpNo\":72776,\"lpWhenAio\":0,\"lpWhenNoAio\":0,\"lpOverall\":0,\"perVertical\":[{\"vertical\":\"Accounting\",\"slug\":\"accounting\",\"lpRateOverall\":0,\"lpWhenAio\":0,\"lpWhenNoAio\":0},{\"vertical\":\"Automotive\",\"slug\":\"automotive\",\"lpRateOverall\":0,\"lpWhenAio\":0,\"lpWhenNoAio\":0},{\"vertical\":\"B2B Services\",\"slug\":\"b2b-services\",\"lpRateOverall\":0,\"lpWhenAio\":0,\"lpWhenNoAio\":0},{\"vertical\":\"Beauty & Personal Care\",\"slug\":\"beauty-personal-care\",\"lpRateOverall\":0,\"lpWhenAio\":0,\"lpWhenNoAio\":0},{\"vertical\":\"E-commerce\",\"slug\":\"ecommerce\",\"lpRateOverall\":0,\"lpWhenAio\":0,\"lpWhenNoAio\":0},{\"vertical\":\"Education & Training\",\"slug\":\"education-training\",\"lpRateOverall\":0,\"lpWhenAio\":0,\"lpWhenNoAio\":0},{\"vertical\":\"Events & Weddings\",\"slug\":\"events-weddings\",\"lpRateOverall\":0,\"lpWhenAio\":0,\"lpWhenNoAio\":0},{\"vertical\":\"Fitness & Wellness\",\"slug\":\"fitness-wellness\",\"lpRateOverall\":0,\"lpWhenAio\":0,\"lpWhenNoAio\":0},{\"vertical\":\"Healthcare\",\"slug\":\"healthcare\",\"lpRateOverall\":0,\"lpWhenAio\":0,\"lpWhenNoAio\":0},{\"vertical\":\"Home Services\",\"slug\":\"home-services\",\"lpRateOverall\":0,\"lpWhenAio\":0,\"lpWhenNoAio\":0},{\"vertical\":\"Hospitality\",\"slug\":\"hospitality\",\"lpRateOverall\":0,\"lpWhenAio\":0,\"lpWhenNoAio\":0},{\"vertical\":\"IT & Tech Services\",\"slug\":\"it-tech-services\",\"lpRateOverall\":0,\"lpWhenAio\":0,\"lpWhenNoAio\":0},{\"vertical\":\"Legal\",\"slug\":\"legal\",\"lpRateOverall\":0,\"lpWhenAio\":0,\"lpWhenNoAio\":0},{\"vertical\":\"Marketing & Creative Services\",\"slug\":\"marketing-creative-services\",\"lpRateOverall\":0,\"lpWhenAio\":0,\"lpWhenNoAio\":0},{\"vertical\":\"Real Estate\",\"slug\":\"real-estate\",\"lpRateOverall\":0,\"lpWhenAio\":0,\"lpWhenNoAio\":0},{\"vertical\":\"Trades\",\"slug\":\"trades\",\"lpRateOverall\":0,\"lpWhenAio\":0,\"lpWhenNoAio\":0},{\"vertical\":\"Travel & Tourism\",\"slug\":\"travel-tourism\",\"lpRateOverall\":0,\"lpWhenAio\":0,\"lpWhenNoAio\":0},{\"vertical\":\"Veterinary & Pet Services\",\"slug\":\"veterinary-pet\",\"lpRateOverall\":0,\"lpWhenAio\":0,\"lpWhenNoAio\":0}]},\"findingJ_volumeVsTrigger\":{\"buckets\":[{\"bucket\":\"0\u2013100\",\"total\":72471,\"triggered\":32820,\"rate\":45.28708034938113,\"ciLow\":44.924924776010506,\"ciHigh\":45.649735548600674},{\"bucket\":\"101\u2013500\",\"total\":24916,\"triggered\":7657,\"rate\":30.731257023599294,\"ciLow\":30.16136800308344,\"ciHigh\":31.30708691679053},{\"bucket\":\"501\u20131K\",\"total\":8539,\"triggered\":1868,\"rate\":21.8760979037358,\"ciLow\":21.011992418711344,\"ciHigh\":22.76549726341035},{\"bucket\":\"1K\u20135K\",\"total\":7596,\"triggered\":1404,\"rate\":18.48341232227488,\"ciLow\":17.62649224064676,\"ciHigh\":19.37219467935431},{\"bucket\":\"5K\u201310K\",\"total\":1938,\"triggered\":259,\"rate\":13.364293085655316,\"ciLow\":11.92157722041163,\"ciHigh\":14.95196385523532},{\"bucket\":\"10K\u201350K\",\"total\":1315,\"triggered\":132,\"rate\":10.038022813688213,\"ciLow\":8.52839464811748,\"ciHigh\":11.7804582118469},{\"bucket\":\"50K+\",\"total\":143,\"triggered\":2,\"rate\":1.3986013986013985,\"ciLow\":0.3843806098051971,\"ciHigh\":4.955795471087411}]},\"findingK_spellCorrection\":{\"correctedTotal\":314,\"correctedTriggered\":125,\"correctedRate\":39.80891719745223,\"correctedCi\":{\"ciLow\":34.5491376766701,\"ciHigh\":45.31504624387397},\"notCorrectedTotal\":116604,\"notCorrectedTriggered\":44017,\"notCorrectedRate\":37.74913382045213,\"notCorrectedCi\":{\"ciLow\":37.47129788171191,\"ciHigh\":38.02777695923772},\"correctedSharePct\":0.26856429292324535,\"gap\":2.0597833770001017},\"findingD_featuredSnippetCorrected\":{\"total\":116918,\"aioYesFsYes\":4,\"aioYesFsNo\":44138,\"aioNoFsYes\":854,\"aioNoFsNo\":71922,\"fsOverall\":858,\"fsOverallPct\":0.7338476539112883,\"fsWhenAio\":0.009061664627792124,\"fsWhenNoAio\":1.1734637792678904},\"findingI_localPackAdjacentCorrected\":{\"total\":116918,\"aioYesLpYes\":4537,\"aioYesLpNo\":39605,\"aioNoLpYes\":12673,\"aioNoLpNo\":60103,\"lpOverall\":17210,\"lpOverallPct\":14.719718093022461,\"lpWhenAio\":10.27819310407322,\"lpWhenNoAio\":17.413707815763438,\"sourceTypes\":[\"local_services\",\"google_reviews\",\"hotels_pack\",\"top_sights\",\"knowledge_graph\"]}};\/* ============================================================\n * THE STATE OF AI SEARCH FOR AUSTRALIAN SMES, 2026\n * Vanilla JS app - drives all interactivity for the embedded report.\n *\n * No framework. Single global namespace `AIO2026`. Depends on Chart.js v4\n * loaded via the host page <head>.\n *\n * Architecture:\n *  - boot() loads data.json once, then renders the static structure.\n *  - Each tile is a chunk of HTML created by renderFindings().\n *  - Charts are Chart.js instances created on first expand AND on filter change.\n *  - Industry filter swaps the active dataset slice + re-renders affected charts.\n *  - TOC scroll-spy uses IntersectionObserver.\n *  - URL hash deep-link auto-expands target finding.\n * ============================================================ *\/\n\n(function () {\n  \"use strict\";\n\n  \/\/ \u2500\u2500\u2500 Palette + brand constants \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n  const PALETTE = {\n    ink: \"#002A45\",\n    paper: \"#F7F5F0\",\n    paperWarm: \"#E5E0D5\",\n    muted: \"#6B7785\",\n    rule: \"rgba(0, 42, 69, 0.12)\",\n    blue: \"#86A4EF\",\n    blueDark: \"#6985BA\",\n    yellow: \"#FDE39C\",\n    yellowDark: \"#F5C238\",\n    green: \"#CDFFB6\",\n    greenDark: \"#87D259\",\n    purple: \"#B89DFF\",\n    purpleDark: \"#8169D2\",\n    red: \"#F78E8D\",\n  };\n\n  \/\/ Inline SVG arrow \u2014 renders via CSS mask so it inherits currentColor\n  \/\/ (yellow in keyStat\/stat contexts, navy\/ink in title contexts automatically).\n  const ARROW = '<span class=\"dn-arrow-icon\" aria-hidden=\"true\"><\/span>';\n\n  const VERTICALS = [\n    { slug: \"accounting\", label: \"Accounting\" },\n    { slug: \"automotive\", label: \"Automotive\" },\n    { slug: \"b2b-services\", label: \"B2B Services\" },\n    { slug: \"beauty-personal-care\", label: \"Beauty & Personal Care\" },\n    { slug: \"e-commerce\", label: \"E-commerce\" },\n    { slug: \"education-training\", label: \"Education & Training\" },\n    { slug: \"events-weddings\", label: \"Events & Weddings\" },\n    { slug: \"fitness-wellness\", label: \"Fitness & Wellness\" },\n    { slug: \"healthcare\", label: \"Healthcare\" },\n    { slug: \"home-services\", label: \"Home Services\" },\n    { slug: \"hospitality\", label: \"Hospitality\" },\n    { slug: \"it-tech-services\", label: \"IT & Tech Services\" },\n    { slug: \"legal\", label: \"Legal\" },\n    { slug: \"marketing-creative-services\", label: \"Marketing & Creative Services\" },\n    { slug: \"real-estate\", label: \"Real Estate\" },\n    { slug: \"trades\", label: \"Trades\" },\n    { slug: \"travel-tourism\", label: \"Travel & Tourism\" },\n    { slug: \"veterinary-pet\", label: \"Veterinary & Pet Services\" },\n  ];\n\n  \/\/ TOC grouping: Part -> findings in numerical order.\n  const TOC_PARTS = [\n    {\n      n: 1,\n      title: \"Headline findings\",\n      lede: \"The eight questions the SME community has been asking since AI Overviews launched in Australia.\",\n      findings: [\n        { n: 1, shortLabel: \"Trigger rate by vertical\" },\n        { n: 2, shortLabel: \"Mobile vs desktop\" },\n        { n: 3, shortLabel: \"Metro vs regional SERPs\" },\n        { n: 4, shortLabel: \"Citation domain leaderboard\" },\n        { n: 5, shortLabel: \"AIO \u2194 organic overlap\" },\n        { n: 6, shortLabel: \"Local intent insulation\" },\n        { n: 7, shortLabel: \"Page-type safety map\" },\n      ],\n    },\n    {\n      n: 2,\n      title: \"Deeper behavioural cuts\",\n      lede: \"Six findings the dataset surfaced beyond the original brief - each inverts a piece of conventional industry wisdom.\",\n      findings: [\n        { n: 8, shortLabel: \"Question keywords (92.4%)\" },\n        { n: 9, shortLabel: \"Australian domain share\" },\n        { n: 10, shortLabel: \"Citations per AIO\" },\n        { n: 11, shortLabel: \"Featured snippet retirement\" },\n        { n: 12, shortLabel: \"Reddit \/ YouTube \/ AU mix\" },\n        { n: 13, shortLabel: \"Trigger rate by keyword intent\" },\n      ],\n    },\n    {\n      n: 3,\n      title: \"Structural mechanics\",\n      lede: \"Six findings about how AI Overviews actually behave on the page.\",\n      findings: [\n        { n: 14, shortLabel: \"AIO answer length\" },\n        { n: 15, shortLabel: \"AIO position on SERP\" },\n        { n: 16, shortLabel: \"AIO \u00d7 PAA co-occurrence\" },\n        { n: 17, shortLabel: \"Local widget migration\" },\n        { n: 18, shortLabel: \"Search volume vs trigger\" },\n        { n: 19, shortLabel: \"Spell-corrected queries\" },\n      ],\n    },\n  ];\n\n  \/\/ \u2500\u2500\u2500 Finding metadata: title, headline, keystat, narrative, action \u2500\u2500\u2500\n  \/\/ The narrative is plain HTML (uses <p>, <strong>, <em>). Action is HTML for a <ul>.\n  const FINDINGS = {\n    1: {\n      title: \"AIO trigger rate by vertical\",\n      headline: \"Overall: 37.8% trigger rate, but the spread across 18 industries is 44 percentage points wide.\",\n      keyStat: `44pp spread \u00b7 9.1% ${ARROW}53.2%`,\n      narrative: `<p><a href=\"https:\/\/digitalnomadshq.com.au\/state-of-ai-search\/accounting\/\">Accounting<\/a> tops at 53.2% trigger; Hospitality bottoms at 9.1%. The verticals above 48% trigger share a common substrate: their typical query is informational, comparative, or procedural - exactly the queries generative search was built to answer.<\/p>\n        <p>The bottom of the table tells the opposite story. Hospitality at 9.1% isn't Google being shy about restaurants - it's Google deferring to Maps and the Local Pack, surfaces it already monetises.<\/p>`,\n      action: `<ul>\n        <li>If your vertical is in the top 6 (<a href=\"https:\/\/digitalnomadshq.com.au\/state-of-ai-search\/accounting\/\">Accounting<\/a>, <a href=\"https:\/\/digitalnomadshq.com.au\/state-of-ai-search\/ecommerce\/\">E-commerce<\/a>, <a href=\"https:\/\/digitalnomadshq.com.au\/state-of-ai-search\/it-tech-services\/\">IT<\/a>, <a href=\"https:\/\/digitalnomadshq.com.au\/state-of-ai-search\/b2b-search\/\">B2B<\/a>, <a href=\"https:\/\/digitalnomadshq.com.au\/state-of-ai-search\/real-estate\/\">Real Estate<\/a>, <a href=\"https:\/\/digitalnomadshq.com.au\/state-of-ai-search\/legal\/\">Legal<\/a>): findings 4, 5, and 7 are urgent operational reading.<\/li>\n        <li>If your vertical is in the middle (37-43%): audit your top 20 commercial keywords manually. AIO is firing on informational queries, not transactional ones.<\/li>\n        <li>If you're in Hospitality or Beauty: AIO is not your problem in 2026. Focus on Maps, reviews, and Local Pack.<\/li>\n      <\/ul>`,\n    },\n    2: {\n      title: \"Mobile vs desktop AIO trigger gap\",\n      headline: \"AIO triggers more on mobile than desktop in 16 of 18 verticals.\",\n      keyStat: \"Gap up to +7.2pp on mobile\",\n      narrative: `<p>Largest gaps: Legal +7.2pp, Accounting +7.1pp, Veterinary +7.0pp, Trades +5.6pp, Travel +5.2pp. Only two verticals (Beauty \u22120.6pp, E-commerce \u22121.8pp) show desktop ahead - both within CI overlap, functionally null.<\/p>\n        <p>Mobile-first AIO has implications for media planning: if mobile share of search dominates for your category (it usually does), you're seeing more AIO than your desktop-rate suggests.<\/p>`,\n      action: `<ul>\n        <li>Stop benchmarking AIO presence from desktop screenshots - they underestimate exposure by 5-7pp in most verticals.<\/li>\n        <li>When pitching AIO-defence content, lead with mobile screenshots. They'll show the surface more often than desktop does.<\/li>\n        <li>iOS sampling is the 2027 follow-up gap to close - our mobile sample is Android-only.<\/li>\n      <\/ul>`,\n    },\n    3: {\n      title: \"Metro vs regional SERP divergence\",\n      headline: \"Average Jaccard 0.70 across the three NSW\/VIC\/QLD pairs - city-level targeting is mostly noise on top-10 organic.\",\n      keyStat: \"0.70 average Jaccard\",\n      narrative: `<p>The conventional \"you rank #1 in Sydney but not Newcastle\" SEO framing doesn't survive this dataset for top-10 organic. Most domains rank in both metro and paired regional location.<\/p>\n        <p>This finding is bounded: it's for top-10 organic only. Local Pack, Maps, and Google Business Profile signals are not measured here - those are where the genuinely regional game is played.<\/p>`,\n      action: `<ul>\n        <li>Stop reporting Sydney rankings separately from Newcastle rankings when discussing top-10 organic - they're largely the same set of domains.<\/li>\n        <li>For genuinely regional optimisation, prioritise Google Business Profile, review velocity, and Local Pack adjacency over organic-rank-by-city.<\/li>\n      <\/ul>`,\n    },\n    4: {\n      title: \"AIO citation domain leaderboard\",\n      headline: \"20 domains capture 22% of all AIO citations across the dataset.\",\n      keyStat: \"Top 20 domains = 22% of all citations\",\n      narrative: `<p>The list inverts a story the industry has been telling itself. Wikipedia sits at rank 11 in Australia, not rank 1-2 as US-focused studies imply. The top of the leaderboard is dominated by infrastructure SMEs cannot become: Google's own properties, Reddit, YouTube, Indeed, Seek, Facebook.<\/p>\n        <p>Nine of the top 20 are jobs\/employment\/freelance marketplaces. The \"compete for the AIO citation slot\" pitch agencies have been selling dissolves into \"compete with Google for the Google citation slot.\" The real game is at the vertical level.<\/p>`,\n      action: `<ul>\n        <li>Don't target the overall top-5 - they're structural (Google, Reddit, YouTube). Target your vertical's top-10.<\/li>\n        <li>If your vertical's top citation is a government domain (ATO, Legal Aid sites), accept that you can't displace it - aim for the next-tier organic position.<\/li>\n        <li>Get cited where AIO already cites: become a contributor on Reddit, an expert on industry aggregators, a guest on relevant publishers.<\/li>\n      <\/ul>`,\n    },\n    5: {\n      title: \"AIO citation \u2194 organic top-10 overlap rate\",\n      headline: \"53% of AIO citations also appear in the same SERP's top-10 organic results - partial decoupling.\",\n      keyStat: \"53% overlap with organic top-10\",\n      narrative: `<p>Roughly half the time, AIO cites a page that also ranks organically. The other half, AIO cites a domain that wasn't in the top 10. Two pipelines, partially overlapping.<\/p>\n        <p>Per-vertical: Accounting tops at 66.9% top-10 overlap (single dominant domain ato.gov.au collapses both leaderboards). Service categories like Hospitality (43.5%), Home Services (45.1%) leak more citations to directories and social.<\/p>`,\n      action: `<ul>\n        <li>Strong organic top-3 ranking is necessary but not sufficient for AIO citation - and AIO citation is achievable without organic top-3.<\/li>\n        <li>Run your top-10 organic alongside the AIO citation list for your industry - the overlap (or absence of overlap) tells you which channel to invest in.<\/li>\n      <\/ul>`,\n    },\n    6: {\n      title: \"Local intent insulation\",\n      headline: \"Local-intent queries trigger AIO 12.8pp less than general queries - except E-commerce, which inverts.\",\n      keyStat: \"\u221212.8pp local gap (\u221237.5pp in Real Estate)\",\n      narrative: `<p>Almost every vertical shows the same pattern: local-intent queries (with \"near me\", suburb, or city qualifiers) trigger AIO substantially less than general queries. Gaps reach \u221237.5pp in <a href=\"https:\/\/digitalnomadshq.com.au\/state-of-ai-search\/real-estate\/\">Real Estate<\/a>, \u221236pp in <a href=\"https:\/\/digitalnomadshq.com.au\/state-of-ai-search\/it-tech-services\/\">IT Services<\/a>, \u221233.6pp in <a href=\"https:\/\/digitalnomadshq.com.au\/state-of-ai-search\/b2b-search\/\">B2B<\/a>.<\/p>\n        <p><a href=\"https:\/\/digitalnomadshq.com.au\/state-of-ai-search\/ecommerce\/\">E-commerce<\/a> is the lone exception (+17.6pp). Likely because \"local intent\" in e-commerce means \"buy in Australia\" - a comparative commercial query Google's AI happily mediates - rather than \"shop near me.\"<\/p>`,\n      action: `<ul>\n        <li>Stop AIO-anxious rewriting of service and location pages - they're largely insulated.<\/li>\n        <li>The informational half of the customer journey is where AIO mediates. Service-business owners should worry about \"why is my X broken\" content, not \"X services in &lt;city&gt;\".<\/li>\n        <li>E-commerce sellers: AU-located product queries are MORE AIO-exposed than general product queries. The pattern flips for you.<\/li>\n      <\/ul>`,\n    },\n    7: {\n      title: \"Page-type safety map\",\n      headline: \"Blog\/content pages ranked #1 trigger AIO 76.1% of the time. Homepages ranked #1 trigger AIO 19.5% of the time.\",\n      keyStat: \"76.1% vs 19.5% \u00b7 56.6pp page-type spread\",\n      narrative: `<p>The page-type spread (56.6pp between blog\/content and homepage) is wider than the vertical spread (44pp between Accounting and Hospitality). In other words: <em>what kind of page ranks #1 predicts AIO trigger more strongly than which industry the query is in.<\/em><\/p>\n        <p>The citation breakdown is similarly skewed: blog\/content takes 19.8% of all AIO citations, homepage 10.7%, location pages 10.0%. \"Other\" (largely uncategorisable pages) takes the largest share at 53.3%.<\/p>`,\n      action: `<ul>\n        <li>If your blog ranks #1, AIO is eating your traffic ~75% of the time. Audit your top blog-driven keywords specifically.<\/li>\n        <li>Homepages and product pages are far safer surfaces. Don't over-optimise them for AIO defence.<\/li>\n        <li>FAQ pages trigger AIO 46% of the time when they rank #1 - useful middle ground.<\/li>\n      <\/ul>`,\n    },\n    8: {\n      title: \"Question keywords trigger AIO 92.4% of the time\",\n      headline: \"The cleanest single predictor of AIO trigger in the entire dataset.\",\n      keyStat: \"92.4% vs 34.5% (58pp gap)\",\n      narrative: `<p>Question-shaped keywords (how\/what\/why\/when\/where\/which\/who) trigger AIO 92.4% of the time. Non-question keywords trigger 34.5%. A 58pp gap - wider than vertical spread, wider than page-type spread.<\/p>\n        <p>This is a clean strategic signal: if you publish FAQ-style content that targets question keywords, you ARE the AIO trigger. Your content is the data Google's AI is using to write the answer.<\/p>`,\n      action: `<ul>\n        <li>Audit your blog's top performing pages. The question-titled ones are your highest-AIO-exposure pages.<\/li>\n        <li>Don't stop writing question-targeted content - but write it knowing the click-through is now AIO-mediated. Structure for citation, not for click.<\/li>\n        <li>For service businesses: question keywords are a feeder for transactional queries. Capture the question in content; convert downstream.<\/li>\n      <\/ul>`,\n    },\n    9: {\n      title: \"Australian domain dominance\",\n      headline: \"54.9% of all AIO citations are Australian domains.\",\n      keyStat: \"54.9% AU \u00b7 387,485 total citations\",\n      narrative: `<p>Of 387,485 AIO citations, 212,909 are to Australian domains (.com.au, .gov.au, .edu.au, .org.au, .net.au). 45.1% are international (.com, .org, etc.). Google's AI is meaningfully geo-aware.<\/p>\n        <p>Verticals where AU dominance is highest: Accounting (72.6% AU), Real Estate (69.1%), Healthcare (67.6%), Home Services (65.1%), Legal (55.8%). International-leaning: Travel (65.9% intl), Marketing (61.0%), IT\/Tech (57.7%).<\/p>`,\n      action: `<ul>\n        <li>The \"AIO just uses Wikipedia\" framing common in 2024-2025 doesn't fit Australia. Plan around AU domain authority, not US.<\/li>\n        <li>.gov.au and .edu.au domains carry disproportionate weight in regulated verticals. Government partnerships and authoritative referencing matter.<\/li>\n        <li>If your business operates in a high-AU-share vertical, the citation game is meaningfully winnable. If you're in a low-AU-share vertical (Travel, Marketing), it's harder.<\/li>\n      <\/ul>`,\n    },\n    10: {\n      title: \"Each AIO is a 9-source synthesis\",\n      headline: \"Mean 8.8 citations per AIO block (median 9, p25=7, p75=10).\",\n      keyStat: \"Median 9 citations per AIO\",\n      narrative: `<p>This number was lower in the industry's prior commentary - most marketers assumed AIO cited 1-3 sources. The truth is 7-10, tightly distributed. Google's AI is doing actual multi-source synthesis.<\/p>\n        <p>Implication: getting cited is harder than \"just rank in the top 3.\" You have to be one of nine. But also: the leaderboard is more meritocratic than it seems - Google IS sampling broadly, not just citing the top organic result.<\/p>`,\n      action: `<ul>\n        <li>Stop optimising as if AIO citation is a single-winner game. It's a top-9 game.<\/li>\n        <li>Authoritative middle-of-pack content can be cited even when not ranking organically top-3.<\/li>\n        <li>Verticals with lower mean citations (e.g., Veterinary 8.1) have slightly smaller competitive sets - marginal edge.<\/li>\n      <\/ul>`,\n    },\n    11: {\n      title: \"Featured snippets and AIO are mutually exclusive\",\n      headline: \"Of 116,918 SERPs, only 4 had both an AIO and a featured snippet.\",\n      keyStat: \"0.003% co-occurrence \u00b7 4 SERPs\",\n      narrative: `<p>Featured snippets appear on just 858 SERPs (0.73% of dataset). When AIO triggers, FS appears on 0.01% of the time. When AIO is absent, FS appears 1.17% of the time. Near-perfect mutual exclusivity.<\/p>\n        <p>The featured snippet is in advanced retirement. The \"optimise for featured snippets\" SEO playbook from 2019-2023 now targets a surface that appears on under 1% of search results.<\/p>`,\n      action: `<ul>\n        <li>Stop budgeting time for featured snippet capture as a distinct goal.<\/li>\n        <li>The technique that won featured snippets (concise direct-answer paragraph near the top of the page) still wins AIO citations. Same playbook, different target.<\/li>\n        <li>Decommission \"featured snippet\" alerts in your SEO reporting stack.<\/li>\n      <\/ul>`,\n    },\n    12: {\n      title: \"AIO content signals: Reddit, YouTube, and AU domains\",\n      headline: \"82.7% of AIO blocks cite at least one Australian domain. 22.4% cite Reddit. 16.2% cite YouTube.\",\n      keyStat: \"82.7% AU \u00b7 22.4% Reddit \u00b7 16.2% YouTube\",\n      narrative: `<p>The geo-awareness story from Finding 9 surfaces at the block level too: 82.7% of AIO blocks include at least one .au citation. Reddit appears in 22% - meaningfully structural to Google's AI answer engine in AU.<\/p>\n        <p>Per-vertical: Home Services (91.6% AU-share), E-commerce (91.1%), Accounting (90.9%) cite Australian sources most. Legal (66.2%) and Marketing (69.5%) most often reach for international citations.<\/p>`,\n      action: `<ul>\n        <li>Reddit presence in your category is no longer optional. Get expert contributors on relevant subreddits.<\/li>\n        <li>YouTube is a smaller citation channel than expected (16%) - but still meaningful in verticals where instructional video dominates.<\/li>\n      <\/ul>`,\n    },\n    14: {\n      title: \"AIO answers run ~220 words on average\",\n      headline: \"Mean 223 words, median 218. Longer than featured snippets, shorter than blog posts.\",\n      keyStat: \"223 words mean \u00b7 1-minute read\",\n      narrative: `<p>AIOs are tight distributions: p25=181, p75=258, p95=330. Travel & Tourism runs longest (~248 words mean); Accounting shortest (~196 words). Roughly a 1-minute read.<\/p>\n        <p>This sets the production target for AIO-friendly content: write in 200-word chunks that answer a single question, not 2,000-word long-form essays.<\/p>`,\n      action: `<ul>\n        <li>Write blog content in 200-word answer chunks, each with its own H2 question. Modular structure makes citation easier.<\/li>\n        <li>Lead each chunk with the direct answer. Supporting evidence follows.<\/li>\n      <\/ul>`,\n    },\n    15: {\n      title: \"AIO sits at the top of the SERP 84% of the time\",\n      headline: \"Mean position 1.35, median 1. 95% of AIOs are in the top 3 positions.\",\n      keyStat: \"84.1% of AIOs render at position 1\",\n      narrative: `<p>When AIO appears, it almost always appears at the very top of the SERP - above the organic results, above the ads. Position 1 captures 84.1% of all AIO appearances. The remaining 16% sit just below, often pushed down by shopping carousels or hotel cards.<\/p>\n        <p>This means: \"we rank #1 organically\" doesn't mean \"we're the first thing the user sees.\" If AIO triggers, AIO is the first impression.<\/p>`,\n      action: `<ul>\n        <li>Stop reporting \"ranking #1 organically\" as a first-impression metric on AIO-triggering keywords. It isn't.<\/li>\n        <li>For AIO-triggering keywords, the only true position-#1 prize is AIO citation.<\/li>\n      <\/ul>`,\n    },\n    16: {\n      title: \"AU SERPs are saturated with AI-adjacent surfaces\",\n      headline: \"Only 19.3% of SERPs have neither AIO nor a People Also Ask box.\",\n      keyStat: \"80.7% of SERPs carry AIO or PAA\",\n      narrative: `<p>When AIO triggers, PAA appears 87.8% of the time. When AIO doesn't trigger, PAA still appears 69% of the time. PAA is more ubiquitous than AIO.<\/p>\n        <p>Together, AIO + PAA dominate 80.7% of SERPs. The traditional \"10 blue links\" SERP is a minority in modern Australian search.<\/p>`,\n      action: `<ul>\n        <li>The PAA surface is an underused content opportunity - bigger than AIO and easier to win.<\/li>\n        <li>Content structured for AIO citation (question + direct answer) also wins PAA placement. Double the surface area for the same work.<\/li>\n      <\/ul>`,\n    },\n    17: {\n      title: \"Local presentation has migrated, not disappeared\",\n      headline: \"The classic 3-business Local Pack widget appeared in zero SERPs. But local-business widgets (Reviews, Knowledge Graph, Hotels Pack) appeared in 14.7%.\",\n      keyStat: \"14.7% of SERPs carry a local-entity widget\",\n      narrative: `<p>The Local Pack as a discrete labelled widget is gone from this dataset. But local-business presentation has fragmented across at least 5 named feature types: Google Reviews (13,556 SERPs), Knowledge Graph (15,181), Hotels Pack (1,802), Local Services (59), Top Sights (243).<\/p>\n        <p>Local SEO didn't die - its surface morphed. The win condition has expanded from one widget to a portfolio of entity surfaces.<\/p>`,\n      action: `<ul>\n        <li>Track all the local-entity surfaces your business can appear in, not just the 3-pack.<\/li>\n        <li>Google Reviews entity blocks, knowledge graph cards, hotels packs - these are the surviving \"above the organic\" slots.<\/li>\n        <li>Reviews velocity and Google Business Profile structure now matter more than 3-pack rank.<\/li>\n      <\/ul>`,\n    },\n    18: {\n      title: \"Search volume vs AIO trigger rate\",\n      headline: \"Google's AI plays in the long tail. Trigger rate drops 32\u00d7 from <100-vol queries (45.3%) to 50K+ queries (1.4%).\",\n      keyStat: \"32\u00d7 drop \u00b7 low volume to high volume\",\n      narrative: `<p>This is the dataset's most strategic finding. The highest-volume queries - the ones Google has historically monetised hardest via ads - are largely <em>untouched<\/em> by AIO. Google is protecting its ad inventory.<\/p>\n        <p>AIO is being deployed against the long tail: thousands of low-volume queries that don't justify ad spend. For SMEs, this means the AIO threat is concentrated on long-tail informational queries that have built modern SMB SEO.<\/p>`,\n      action: `<ul>\n        <li>The 100-search-a-month long-tail content that built modern SMB SEO is now AIO's primary feed.<\/li>\n        <li>Don't flee to head-term commercial queries - the competitive set there hasn't changed, and AIO isn't the problem.<\/li>\n        <li>Re-allocate content investment: fewer, deeper, more authoritative long-tail pieces. The 1,000-shallow-posts playbook is over.<\/li>\n      <\/ul>`,\n    },\n    19: {\n      title: \"Spell-corrected queries behave like everything else\",\n      headline: \"Spell correction affects 0.27% of queries and doesn't meaningfully shift AIO behaviour.\",\n      keyStat: \"0.27% of queries \u00b7 2.1pp gap (within noise)\",\n      narrative: `<p>Of 116,918 SERPs, only 314 were spell-corrected by Google. Trigger rate on those: 39.8% vs 37.7% on non-corrected. The 2.1pp gap is within noise.<\/p>\n        <p>Methodological footnote: we don't need to filter out spell-corrected queries. They behave like the rest of the dataset.<\/p>`,\n      action: `<ul>\n        <li>No specific action - included for methodological completeness.<\/li>\n      <\/ul>`,\n    },\n    13: {\n      title: \"AIO trigger rate by keyword intent\",\n      headline: \"Informational queries trigger AIO at 63.7%. Commercial at 31.0%, navigational at 16.3%. Intent is the single strongest predictor of AIO exposure after industry.\",\n      keyStat: `<span style=\"color:#6985BA\">63.7% info<\/span> \u00b7 <span style=\"color:#87D259\">34.6% trans<\/span> \u00b7 <span style=\"color:#F5C238\">31.0% comm<\/span> \u00b7 <span style=\"color:#B89DFF\">16.3% nav<\/span>`,\n      narrative: `<p>The 37.8% blended trigger rate obscures four fundamentally different experiences depending on why someone searched. Informational queries (\"how\", \"what\", \"why\", anything seeking an explanation) face near-certain AIO competition in any high-trigger vertical. Navigational and commercial queries are substantially more insulated because Google has stronger monetisation incentives to keep those clicks free.<\/p>\n        <p>Transactional queries sit in the middle, and the split is nuanced: straightforward transactional intent (\"buy X\", \"hire Y\", \"book Z\") tends to stay AIO-free, but Australian transactional queries often carry a definitional component (\"how much does X cost\", \"is Y tax deductible\", \"what's covered by Medicare\") and those earn AIOs at near-informational rates in several verticals.<\/p>`,\n      action: `<ul>\n        <li>Map your top-50 keywords by intent before overhauling content strategy. Navigational and purely commercial queries are the safest harbour; informational are most exposed.<\/li>\n        <li>In high-trigger verticals (Accounting, IT, Legal), even commercial queries run at 30-40% trigger. Don't assume commercial intent is a safe harbour across the board.<\/li>\n        <li>Transactional pages that include pricing, cost, or eligibility information should carry FAQ schema. Those queries earn AIOs and FAQ schema increases citation probability.<\/li>\n      <\/ul>`,\n      customChartHtml: (data) => {\n        const pvd = data.perVerticalPageData || {};\n        const INTENT_ORDER = [\"informational\", \"commercial\", \"transactional\", \"navigational\"];\n        const INTENT_LABELS = { informational: \"Info\", commercial: \"Comm\", transactional: \"Trans\", navigational: \"Nav\" };\n        const INTENT_COLORS = { informational: \"#6985BA\", commercial: \"#F5C238\", transactional: \"#87D259\", navigational: \"#B89DFF\" };\n\n        \/\/ Build rows from perVerticalPageData, sort by informational desc\n        const rows = Object.values(pvd).map((v) => {\n          const byIntent = {};\n          (v.byIntent || []).forEach((i) => { byIntent[i.intent] = i; });\n          return { vertical: v.vertical, byIntent };\n        }).sort((a, b) => {\n          const ai = a.byIntent.informational?.rate || 0;\n          const bi = b.byIntent.informational?.rate || 0;\n          return bi - ai;\n        });\n\n        const legend = INTENT_ORDER.map((k) =>\n          `<span class=\"dn-intent-legend-item\"><span class=\"dn-intent-swatch\" style=\"background:${INTENT_COLORS[k]}\"><\/span>${k.charAt(0).toUpperCase() + k.slice(1)}<\/span>`\n        ).join(\"\");\n\n        const tableRows = rows.map((row) => {\n          const cells = INTENT_ORDER.map((intent) => {\n            const d = row.byIntent[intent];\n            const rate = d ? d.rate : 0;\n            const barW = Math.round(Math.min(rate, 80) \/ 80 * 100);\n            const color = INTENT_COLORS[intent];\n            return `<td class=\"dn-intent-cell\">\n              <span class=\"dn-intent-bar\" style=\"width:${barW}%;background:${color}\"><\/span>\n              <span class=\"dn-intent-pct\">${rate.toFixed(1)}%<\/span>\n            <\/td>`;\n          }).join(\"\");\n          return `<tr><td class=\"dn-intent-industry\">${row.vertical}<\/td>${cells}<\/tr>`;\n        }).join(\"\");\n\n        return `<div class=\"dn-intent-table\">\n          <div class=\"dn-intent-legend\">${legend}<\/div>\n          <div class=\"dn-intent-scroll\">\n            <table>\n              <thead>\n                <tr>\n                  <th>Industry<\/th>\n                  ${INTENT_ORDER.map((k) => `<th>${INTENT_LABELS[k]}<\/th>`).join(\"\")}\n                <\/tr>\n              <\/thead>\n              <tbody>${tableRows}<\/tbody>\n            <\/table>\n          <\/div>\n        <\/div>`;\n      },\n    },\n  };\n\n  \/\/ \u2500\u2500\u2500 Application state \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n  let DATA = null;                  \/\/ dataset loaded from data.json\n  const chartInstances = {};        \/\/ finding number -> Chart instance\n\n  \/\/ \u2500\u2500\u2500 Utility: opacity-by-rank \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n  function opacityForRank(rank, total, floor) {\n    if (total <= 1) return 1;\n    const f = floor != null ? floor : 0.35;\n    return 1 - (rank \/ (total - 1)) * (1 - f);\n  }\n  \/** Convert a hex like #86A4EF and an opacity 0..1 \u2192 \"rgba(...)\" *\/\n  function hexAlpha(hex, alpha) {\n    const r = parseInt(hex.slice(1, 3), 16);\n    const g = parseInt(hex.slice(3, 5), 16);\n    const b = parseInt(hex.slice(5, 7), 16);\n    return `rgba(${r}, ${g}, ${b}, ${alpha})`;\n  }\n\n  \/\/ \u2500\u2500\u2500 Boot \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n  async function boot() {\n    try {\n      DATA = window.AIO2026_DATA ?? await fetch(\".\/data.json\").then((r) => {\n        if (!r.ok) throw new Error(\"Failed to load data.json: \" + r.status);\n        return r.json();\n      });\n    } catch (err) {\n      console.error(\"[AIO2026] boot failed:\", err);\n      document.body.insertAdjacentHTML(\n        \"afterbegin\",\n        '<div style=\"padding:24px;background:#fee;color:#900;text-align:center;\">Failed to load research data. Check that data.json is on the same path.<\/div>'\n      );\n      return;\n    }\n\n    renderHeadlines();\n    renderTOC();\n    renderFindings();\n    wireExpandAll();\n    wireBackToTop();\n    wireMobileTOC();\n    applyInitialUrlHash();\n\n    \/\/ Render charts only when Chart.js is available.\n    if (typeof Chart !== \"undefined\") {\n      configureChartDefaults();\n      renderAllCharts();\n    } else {\n      \/\/ Defer until Chart.js loads.\n      window.addEventListener(\"load\", () => {\n        if (typeof Chart !== \"undefined\") {\n          configureChartDefaults();\n          renderAllCharts();\n        }\n      });\n    }\n  }\n\n  \/\/ \u2500\u2500\u2500 Chart.js global defaults \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n  function configureChartDefaults() {\n    Chart.defaults.font.family = '\"Inter Tight\", \"Inter\", system-ui, sans-serif';\n    Chart.defaults.font.size = 11;\n    Chart.defaults.color = PALETTE.muted;\n    Chart.defaults.borderColor = PALETTE.rule;\n    Chart.defaults.plugins.legend.display = false;\n    Chart.defaults.animation = false;\n    Chart.defaults.maintainAspectRatio = false;\n  }\n\n  \/\/ \u2500\u2500\u2500 Flat list of all visible findings (sequential 1-19, minus 7) \u2500\u2500\n  function visibleFindings() {\n    const set = new Set();\n    TOC_PARTS.forEach((part) => {\n      part.findings.forEach((f) => set.add(f.n));\n    });\n    return set;\n  }\n\n  \/\/ \u2500\u2500\u2500 Render headlines \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n  function renderHeadlines() {\n    const grid = document.getElementById(\"headlines-grid\");\n    if (!grid || !DATA) return;\n    const overall = DATA.sample.overallTriggerRate;\n    const cards = [\n      {\n        n: 1,\n        title: \"One Google, eighteen behaviours\",\n        stat: \"44pp spread across industries\",\n        takeaway: \"AIO trigger rate spans 9.1% (Hospitality) to 53.2% (Accounting). The national average hides everything that matters - your industry determines your exposure.\",\n        miniChart: miniVerticalSparkline(),\n      },\n      {\n        n: 2,\n        title: \"Google's AI plays in the long tail\",\n        stat: `45.3% ${ARROW}1.4%`,\n        takeaway: \"Trigger rate drops 32\u00d7 from <100-vol queries to 50K+. Head-term commercial queries Google monetises via ads are largely untouched. AIO is eating long-tail informational content marketing.\",\n        miniChart: miniLongTailLine(),\n      },\n      {\n        n: 3,\n        title: \"Ask a question, get an AI answer\",\n        stat: \"92.4% trigger\",\n        takeaway: \"Question-shaped keywords (how\/what\/why\/when\/where) trigger AIO 92.4% of the time vs 34.5% on non-question queries. The cleanest predictor in the entire dataset.\",\n        miniChart: miniQuestionBars(),\n      },\n      {\n        n: 4,\n        title: \"Local intent is mostly insulated\",\n        stat: \"\u221212.8pp\",\n        takeaway: \"Local-intent queries trigger AIO 12.8 percentage points less than general queries overall. Gaps reach \u221237.5pp in Real Estate, IT, B2B. E-commerce inverts (+17.6pp).\",\n        miniChart: miniDivergingGap(),\n      },\n      {\n        n: 5,\n        title: \"AIO is a 9-source synthesis\",\n        stat: \"Median 9 citations\",\n        takeaway: \"Each AI Overview cites a median of 9 sources (mean 8.8). 54.9% of those citations are Australian domains. Google's AI is geo-aware and AU-skewed.\",\n        miniChart: miniCitationsHistogram(),\n      },\n    ];\n\n    grid.innerHTML = cards.map((c) => `\n      <article class=\"dn-headline-card\">\n        <p class=\"dn-descriptor\"><span class=\"dot\"><\/span>Finding ${c.n}<\/p>\n        <h3 class=\"dn-headline-title\">${c.title}<\/h3>\n        <p class=\"dn-headline-stat\">${c.stat}<\/p>\n        <div class=\"dn-headline-chart\">${c.miniChart.svg}<\/div>\n        <div class=\"dn-headline-chart-labels\">${c.miniChart.labels || \"\"}<\/div>\n        <p class=\"dn-headline-takeaway\">${c.takeaway}<\/p>\n      <\/article>\n    `).join(\"\");\n  }\n\n  \/\/ Mini SVG charts (no Chart.js \u2014 these are simple decorative SVGs)\n  function miniVerticalSparkline() {\n    const values = [53.2, 52.5, 52.5, 51.7, 50.9, 48.8, 43.1, 40.0, 37.6, 37.2, 35.2, 33.8, 33.5, 28.8, 25.3, 24.8, 21.4, 9.1];\n    const W = 280, H = 80, gap = 2;\n    const barW = (W - gap * (values.length - 1)) \/ values.length;\n    const max = Math.max(...values);\n    const bars = values.map((v, i) => {\n      const h = (v \/ max) * (H - 2);\n      const x = i * (barW + gap);\n      const y = H - h;\n      const isTop = i === 0;\n      const opacity = isTop ? 1 : 1 - (i \/ (values.length - 1)) * 0.7;\n      return `<rect x=\"${x}\" y=\"${y}\" width=\"${barW}\" height=\"${h}\" fill=\"${isTop ? PALETTE.yellowDark : PALETTE.blue}\" fill-opacity=\"${opacity}\" rx=\"0.5\"\/>`;\n    }).join(\"\");\n    return {\n      svg: `<svg viewBox=\"0 0 ${W} ${H}\" width=\"100%\" height=\"${H}\" preserveAspectRatio=\"none\" role=\"img\" aria-label=\"18 industry trigger rates sorted high to low\">${bars}<\/svg>`,\n      labels: `<span>Accounting<\/span><span>Hospitality<\/span>`,\n    };\n  }\n  function miniLongTailLine() {\n    const values = [45.3, 30.7, 21.9, 18.5, 13.4, 10.0, 1.4];\n    const labels = [\"<100\", \"101-500\", \"501-1K\", \"1K-5K\", \"5K-10K\", \"10K-50K\", \"50K+\"];\n    const W = 280, H = 80, padL = 6, padR = 6, padT = 6, padB = 6;\n    const max = 50;\n    const step = (W - padL - padR) \/ (values.length - 1);\n    const points = values.map((v, i) => {\n      const x = padL + i * step;\n      const y = padT + (1 - v \/ max) * (H - padT - padB);\n      return `${x.toFixed(1)},${y.toFixed(1)}`;\n    }).join(\" \");\n    const baseline = `<line x1=\"${padL}\" x2=\"${W - padR}\" y1=\"${H - padB}\" y2=\"${H - padB}\" stroke=\"${PALETTE.paperWarm}\" stroke-width=\"1\"\/>`;\n    const line = `<polyline points=\"${points}\" fill=\"none\" stroke=\"${PALETTE.blue}\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" vector-effect=\"non-scaling-stroke\"\/>`;\n    const dots = values.map((v, i) => {\n      const x = padL + i * step;\n      const y = padT + (1 - v \/ max) * (H - padT - padB);\n      return `<circle cx=\"${x}\" cy=\"${y}\" r=\"3\" fill=\"${i === 0 ? PALETTE.yellowDark : PALETTE.blue}\" stroke=\"#fff\" stroke-width=\"1\" vector-effect=\"non-scaling-stroke\"\/>`;\n    }).join(\"\");\n    return {\n      svg: `<svg viewBox=\"0 0 ${W} ${H}\" width=\"100%\" height=\"${H}\" preserveAspectRatio=\"none\">${baseline}${line}${dots}<\/svg>`,\n      labels: `<span>${labels[0]}<\/span><span>${labels[labels.length - 1]}<\/span>`,\n    };\n  }\n  function miniQuestionBars() {\n    const W = 280, H = 80, max = 100;\n    const bars = [\n      { label: \"Question\", value: 92, opacity: 1 },\n      { label: \"Non-question\", value: 34, opacity: 0.35 },\n    ];\n    const rects = bars.map((b, i) => {\n      const slot = W \/ bars.length;\n      const barW = slot \/ 1.7;\n      const x = i * slot + (slot - barW) \/ 2;\n      const h = (b.value \/ max) * H;\n      const y = H - h;\n      return `<rect x=\"${x}\" y=\"${y}\" width=\"${barW}\" height=\"${h}\" fill=\"${PALETTE.blue}\" fill-opacity=\"${b.opacity}\" rx=\"2\"\/>`;\n    }).join(\"\");\n    const values = `<div style=\"display:flex;font-family:var(--dn-display);font-size:13px;font-weight:700;color:var(--dn-ink);\">\n      ${bars.map((b) => `<div style=\"flex:1;text-align:center;\">${b.value}%<\/div>`).join(\"\")}\n    <\/div>`;\n    return {\n      svg: values + `<svg viewBox=\"0 0 ${W} ${H}\" width=\"100%\" height=\"${H}\" preserveAspectRatio=\"none\" style=\"margin-top:4px;\">${rects}<\/svg>`,\n      labels: `${bars.map((b) => `<span style=\"flex:1;text-align:center;\">${b.label}<\/span>`).join(\"\")}`,\n    };\n  }\n  function miniDivergingGap() {\n    const gaps = [-37, -32, -28, -24, -19, -16, -14, -12, -10, -8, -6, -4, -2, -1, 0.5, 2, 5, 9];\n    const W = 280, H = 80;\n    const rowH = H \/ gaps.length;\n    const centerX = W \/ 2;\n    const maxAbs = Math.max(...gaps.map((g) => Math.abs(g)));\n    const scale = (W \/ 2 - 4) \/ maxAbs;\n    const rects = gaps.map((g, i) => {\n      const y = i * rowH;\n      const w = Math.abs(g) * scale;\n      const x = g < 0 ? centerX - w : centerX;\n      const isPos = g > 0;\n      const op = 0.4 + (Math.abs(g) \/ maxAbs) * 0.55;\n      return `<rect x=\"${x}\" y=\"${y + 0.5}\" width=\"${w}\" height=\"${Math.max(rowH - 1, 1)}\" fill=\"${isPos ? PALETTE.red : PALETTE.blue}\" opacity=\"${op}\"\/>`;\n    }).join(\"\");\n    const axis = `<line x1=\"${centerX}\" x2=\"${centerX}\" y1=\"0\" y2=\"${H}\" stroke=\"${PALETTE.muted}\" stroke-width=\"1\" vector-effect=\"non-scaling-stroke\"\/>`;\n    return {\n      svg: `<svg viewBox=\"0 0 ${W} ${H}\" width=\"100%\" height=\"${H}\" preserveAspectRatio=\"none\">${rects}${axis}<\/svg>`,\n      labels: `<span>Local insulated<\/span><span>Local elevated<\/span>`,\n    };\n  }\n  function miniCitationsHistogram() {\n    const values = [3, 9, 18, 24, 22, 14, 6, 4];\n    const labels = [\"1-2\", \"3-4\", \"5-6\", \"7-8\", \"9-10\", \"11-12\", \"13-14\", \"15+\"];\n    const W = 280, H = 80, gap = 3;\n    const barW = (W - gap * (values.length - 1)) \/ values.length;\n    const max = Math.max(...values);\n    const peakIdx = values.indexOf(max);\n    const rects = values.map((v, i) => {\n      const h = (v \/ max) * H;\n      const x = i * (barW + gap);\n      const y = H - h;\n      const isPeak = i === peakIdx;\n      const op = isPeak ? 1 : 0.35 + (v \/ max) * 0.5;\n      return `<rect x=\"${x}\" y=\"${y}\" width=\"${barW}\" height=\"${h}\" fill=\"${isPeak ? PALETTE.yellowDark : PALETTE.blue}\" fill-opacity=\"${op}\" rx=\"1\"\/>`;\n    }).join(\"\");\n    return {\n      svg: `<svg viewBox=\"0 0 ${W} ${H}\" width=\"100%\" height=\"${H}\" preserveAspectRatio=\"none\">${rects}<\/svg>`,\n      labels: `<span>${labels[0]}<\/span><span>${labels[peakIdx]}<\/span><span>${labels[labels.length - 1]}<\/span>`,\n    };\n  }\n\n  \/\/ \u2500\u2500\u2500 Render TOC \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n  function renderTOC() {\n    const list = document.getElementById(\"toc-list\");\n    const mobileList = document.getElementById(\"toc-mobile-list\");\n    if (!list) return;\n\n    const html = TOC_PARTS.map((part) => `\n      <li>\n        <a href=\"#part-${part.n}\" class=\"dn-toc-part-title\" data-toc-part=\"${part.n}\">Part ${part.n} \u00b7 ${escapeHtml(part.title)}<\/a>\n        <ol class=\"dn-toc-sublist\">\n          ${part.findings.map((f) => `\n            <li data-toc-finding=\"${f.n}\">\n              <a href=\"#finding-${f.n}\" class=\"dn-toc-item\" data-toc-link=\"${f.n}\">\n                <span class=\"dn-toc-item-n\">${f.n}<\/span>${escapeHtml(f.shortLabel)}\n              <\/a>\n            <\/li>\n          `).join(\"\")}\n        <\/ol>\n      <\/li>\n    `).join(\"\");\n    list.innerHTML = html;\n\n    if (mobileList) {\n      mobileList.innerHTML = TOC_PARTS.map((part) => `\n        <div style=\"margin-top: 24px;\">\n          <p class=\"dn-toc-part-title\">Part ${part.n} \u00b7 ${escapeHtml(part.title)}<\/p>\n          ${part.findings.map((f) => `\n            <button type=\"button\" class=\"dn-toc-overlay-card\" data-toc-mobile-link=\"${f.n}\">\n              <span class=\"dn-toc-overlay-n\">${f.n}<\/span>\n              <span style=\"font-size: 14px; line-height: 1.3;\">${escapeHtml(f.shortLabel)}<\/span>\n            <\/button>\n          `).join(\"\")}\n        <\/div>\n      `).join(\"\");\n    }\n\n    \/\/ Wire TOC click handlers\n    document.querySelectorAll(\"[data-toc-link]\").forEach((a) => {\n      a.addEventListener(\"click\", (e) => {\n        e.preventDefault();\n        const n = parseInt(a.getAttribute(\"data-toc-link\"), 10);\n        navigateToFinding(n);\n      });\n    });\n    document.querySelectorAll(\"[data-toc-mobile-link]\").forEach((btn) => {\n      btn.addEventListener(\"click\", () => {\n        const n = parseInt(btn.getAttribute(\"data-toc-mobile-link\"), 10);\n        closeMobileTOC();\n        navigateToFinding(n);\n      });\n    });\n\n    \/\/ Scroll-spy\n    setTimeout(setupScrollSpy, 100);\n  }\n\n  function setupScrollSpy() {\n    const targets = document.querySelectorAll('[id^=\"finding-\"], [id^=\"part-\"]');\n    if (targets.length === 0) return;\n    const observer = new IntersectionObserver(\n      (entries) => {\n        const visible = entries.filter((e) => e.isIntersecting);\n        if (visible.length === 0) return;\n        visible.sort((a, b) => a.boundingClientRect.top - b.boundingClientRect.top);\n        const id = visible[0].target.getAttribute(\"id\");\n        if (!id) return;\n        \/\/ Clear all active\n        document.querySelectorAll(\".dn-toc-item.active, .dn-toc-part-title.active\").forEach((el) => el.classList.remove(\"active\"));\n        \/\/ Set active\n        const m = id.match(\/^finding-(\\d+)$\/);\n        const pm = id.match(\/^part-(\\d+)$\/);\n        if (m) {\n          const el = document.querySelector(`[data-toc-link=\"${m[1]}\"]`);\n          el?.classList.add(\"active\");\n        } else if (pm) {\n          const el = document.querySelector(`[data-toc-part=\"${pm[1]}\"]`);\n          el?.classList.add(\"active\");\n        }\n      },\n      { rootMargin: \"-20% 0px -60% 0px\", threshold: 0 }\n    );\n    targets.forEach((t) => observer.observe(t));\n  }\n\n  function navigateToFinding(n) {\n    const tile = document.getElementById(`finding-${n}`);\n    if (!tile) return;\n    expandTile(n);\n    history.replaceState(null, \"\", `#finding-${n}`);\n    setTimeout(() => {\n      tile.scrollIntoView({ behavior: \"smooth\", block: \"start\" });\n    }, 80);\n  }\n\n  \/\/ \u2500\u2500\u2500 Render findings \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n  function renderFindings() {\n    const stack = document.getElementById(\"findings-stack\");\n    if (!stack) return;\n\n    let html = \"\";\n    TOC_PARTS.forEach((part) => {\n      html += `\n        <div id=\"part-${part.n}\" class=\"dn-part-header\">\n          <p class=\"dn-descriptor\"><span class=\"dot\"><\/span>Part ${part.n} of 3<\/p>\n          <h3 class=\"dn-part-title\">${escapeHtml(part.title)}<\/h3>\n          <p class=\"dn-part-lede\">${escapeHtml(part.lede)}<\/p>\n        <\/div>\n      `;\n      part.findings.forEach((f) => {\n        const meta = FINDINGS[f.n];\n        if (!meta) return;\n        html += renderTile(f.n, meta);\n      });\n    });\n\n    stack.innerHTML = html;\n\n    \/\/ Wire tile expand\/collapse buttons\n    document.querySelectorAll(\"[data-tile-read]\").forEach((btn) => {\n      btn.addEventListener(\"click\", () => {\n        const n = parseInt(btn.getAttribute(\"data-tile-read\"), 10);\n        expandTile(n);\n        history.replaceState(null, \"\", `#finding-${n}`);\n      });\n    });\n    document.querySelectorAll(\"[data-tile-collapse]\").forEach((btn) => {\n      btn.addEventListener(\"click\", () => {\n        const n = parseInt(btn.getAttribute(\"data-tile-collapse\"), 10);\n        collapseTile(n);\n      });\n    });\n  }\n\n  function renderTile(n, meta) {\n    const anchor = `finding-${n}`;\n    const isWide = typeof meta.customChartHtml === \"function\";\n\n    \/\/ Custom-HTML tiles (e.g. Finding 13 intent table): bypass chart-wrap\/canvas\n    \/\/ entirely. The custom block is always visible; narrative shows on expand.\n    if (isWide) {\n      return `\n        <section id=\"${anchor}\" class=\"dn-tile dn-tile--wide-chart\" data-finding-n=\"${n}\">\n          <div class=\"dn-tile-body\">\n            <a href=\"#${anchor}\" class=\"dn-descriptor dn-tile-eyebrow\">\n              <span class=\"dot\"><\/span>Finding ${n}\n            <\/a>\n            <h2 class=\"dn-tile-title\">${escapeHtml(meta.title)}<\/h2>\n            <p class=\"dn-tile-headline\">${meta.headline}<\/p>\n            ${meta.keyStat ? `<p class=\"dn-tile-keystat tabular-nums\">${meta.keyStat}<\/p>` : \"\"}\n\n            <div class=\"dn-tile-custom-block\">\n              ${meta.customChartHtml(DATA)}\n            <\/div>\n\n            <div class=\"dn-tile-narrative\">${meta.narrative}<\/div>\n\n            <div class=\"dn-tile-action\">\n              <p class=\"dn-tile-action-label\">Action for SMEs<\/p>\n              <div class=\"dn-tile-action-body\">${meta.action}<\/div>\n            <\/div>\n\n            <button type=\"button\" class=\"dn-tile-toggle read-btn\" data-tile-read=\"${n}\">\n              Read finding <span aria-hidden=\"true\">\u2193<\/span>\n            <\/button>\n            <button type=\"button\" class=\"dn-tile-toggle collapse-btn\" data-tile-collapse=\"${n}\">\n              Collapse <span aria-hidden=\"true\">\u2191<\/span>\n            <\/button>\n          <\/div>\n        <\/section>\n      `;\n    }\n\n    return `\n      <section id=\"${anchor}\" class=\"dn-tile\" data-finding-n=\"${n}\">\n        <div class=\"dn-tile-body\">\n          <a href=\"#${anchor}\" class=\"dn-descriptor dn-tile-eyebrow\">\n            <span class=\"dot\"><\/span>Finding ${n}\n          <\/a>\n          <h2 class=\"dn-tile-title\">${escapeHtml(meta.title)}<\/h2>\n          <p class=\"dn-tile-headline\">${meta.headline}<\/p>\n          ${meta.keyStat ? `<p class=\"dn-tile-keystat tabular-nums\">${meta.keyStat}<\/p>` : \"\"}\n\n          <div class=\"dn-tile-content-grid\">\n            <div class=\"dn-tile-chart-wrap\">\n              <div class=\"dn-tile-chart\"><canvas id=\"chart-${n}\" data-finding-chart=\"${n}\"><\/canvas><\/div>\n            <\/div>\n            <div class=\"dn-tile-narrative\">${meta.narrative}<\/div>\n          <\/div>\n\n          <div class=\"dn-tile-action\">\n            <p class=\"dn-tile-action-label\">Action for SMEs<\/p>\n            <div class=\"dn-tile-action-body\">${meta.action}<\/div>\n          <\/div>\n\n          <button type=\"button\" class=\"dn-tile-toggle read-btn\" data-tile-read=\"${n}\">\n            Read finding <span aria-hidden=\"true\">\u2193<\/span>\n          <\/button>\n          <button type=\"button\" class=\"dn-tile-toggle collapse-btn\" data-tile-collapse=\"${n}\">\n            Collapse <span aria-hidden=\"true\">\u2191<\/span>\n          <\/button>\n        <\/div>\n      <\/section>\n    `;\n  }\n\n  function expandTile(n) {\n    const tile = document.getElementById(`finding-${n}`);\n    if (!tile) return;\n    tile.classList.add(\"expanded\");\n    updateExpandAllButton();\n    \/\/ Trigger Chart.js to recalculate dimensions after CSS expand transition.\n    setTimeout(() => {\n      if (chartInstances[n]) {\n        try { chartInstances[n].resize(); } catch (e) {}\n      }\n    }, 50);\n  }\n  function collapseTile(n) {\n    const tile = document.getElementById(`finding-${n}`);\n    if (!tile) return;\n    tile.classList.remove(\"expanded\");\n    updateExpandAllButton();\n    setTimeout(() => {\n      if (chartInstances[n]) {\n        try { chartInstances[n].resize(); } catch (e) {}\n      }\n    }, 50);\n  }\n\n  \/\/ \u2500\u2500\u2500 Expand all \/ Collapse all toggle \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n  function wireExpandAll() {\n    const btn = document.getElementById(\"expand-all-btn\");\n    if (!btn) return;\n    btn.addEventListener(\"click\", () => {\n      const visible = visibleFindings();\n      const tiles = Array.from(document.querySelectorAll(\".dn-tile\"));\n      const expandedCount = tiles.filter((t) => t.classList.contains(\"expanded\") && visible.has(parseInt(t.getAttribute(\"data-finding-n\"), 10))).length;\n      const shouldExpand = expandedCount < visible.size;\n      tiles.forEach((t) => {\n        const n = parseInt(t.getAttribute(\"data-finding-n\"), 10);\n        if (!visible.has(n)) return;\n        if (shouldExpand) expandTile(n); else collapseTile(n);\n      });\n    });\n  }\n\n  function updateExpandAllButton() {\n    const visible = visibleFindings();\n    const expanded = Array.from(document.querySelectorAll(\".dn-tile.expanded\"))\n      .filter((t) => visible.has(parseInt(t.getAttribute(\"data-finding-n\"), 10)));\n    const all = expanded.length >= visible.size;\n    const label = document.getElementById(\"expand-all-label\");\n    const icon = document.getElementById(\"expand-all-icon\");\n    if (label) label.textContent = all ? \"Collapse all\" : \"Expand all\";\n    if (icon) icon.textContent = all ? \"\u2191\" : \"\u2193\";\n  }\n\n  \/\/ \u2500\u2500\u2500 Mobile TOC overlay \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n  function wireMobileTOC() {\n    const btn = document.getElementById(\"toc-mobile-btn\");\n    const overlay = document.getElementById(\"toc-mobile-overlay\");\n    const close = document.getElementById(\"toc-mobile-close\");\n    if (!btn || !overlay) return;\n    btn.addEventListener(\"click\", () => {\n      overlay.setAttribute(\"data-open\", \"true\");\n      document.body.style.overflow = \"hidden\";\n    });\n    close?.addEventListener(\"click\", closeMobileTOC);\n  }\n  function closeMobileTOC() {\n    const overlay = document.getElementById(\"toc-mobile-overlay\");\n    if (!overlay) return;\n    overlay.removeAttribute(\"data-open\");\n    document.body.style.overflow = \"\";\n  }\n\n  \/\/ \u2500\u2500\u2500 Back-to-top \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n  function wireBackToTop() {\n    const btn = document.getElementById(\"back-to-top\");\n    if (!btn) return;\n    const onScroll = () => {\n      btn.classList.toggle(\"visible\", window.scrollY > 800);\n    };\n    onScroll();\n    window.addEventListener(\"scroll\", onScroll, { passive: true });\n    btn.addEventListener(\"click\", () => {\n      window.scrollTo({ top: 0, behavior: \"smooth\" });\n    });\n  }\n\n  \/\/ \u2500\u2500\u2500 URL hash deep-linking \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n  function applyInitialUrlHash() {\n    const hash = location.hash.replace(\/^#\/, \"\");\n    const m = hash.match(\/^finding-(\\d+)$\/);\n    if (m) {\n      const n = parseInt(m[1], 10);\n      setTimeout(() => {\n        navigateToFinding(n);\n      }, 200);\n    }\n  }\n\n  \/\/ \u2500\u2500\u2500 Chart rendering (Chart.js) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n  function renderAllCharts() {\n    Object.keys(chartInstances).forEach((k) => {\n      try { chartInstances[k].destroy(); } catch (e) { \/* ignore *\/ }\n      delete chartInstances[k];\n    });\n    visibleFindings().forEach((n) => renderChart(n));\n  }\n\n  function renderChart(n) {\n    if (typeof Chart === \"undefined\") return;\n    const canvas = document.getElementById(`chart-${n}`);\n    if (!canvas) return;\n\n    \/\/ Destroy any existing instance on this canvas\n    if (chartInstances[n]) {\n      try { chartInstances[n].destroy(); } catch (e) {}\n      delete chartInstances[n];\n    }\n\n    const config = buildChartConfig(n);\n    if (!config) return;\n\n    \/\/ Auto-size the chart-wrap parent height based on category count for\n    \/\/ horizontal bar charts (matches Recharts' dynamic-height behaviour).\n    const tile = canvas.closest(\".dn-tile\");\n    const chartWrap = canvas.closest(\".dn-tile-chart\");\n    if (chartWrap && config.options?.indexAxis === \"y\") {\n      const categories = config.data?.labels?.length || 1;\n      \/\/ ~26px per bar + 60px for axis\/padding, min 280\n      const computedHeight = Math.max(280, categories * 26 + 60);\n      \/\/ When tile is expanded, use a more generous height ceiling\n      const ceiling = tile?.classList.contains(\"expanded\") ? 720 : 520;\n      chartWrap.style.height = Math.min(computedHeight, ceiling) + \"px\";\n    } else if (chartWrap) {\n      \/\/ Reset to CSS-controlled height for non-horizontal charts\n      chartWrap.style.height = \"\";\n    }\n\n    chartInstances[n] = new Chart(canvas, config);\n  }\n\n  \/\/ \u2500\u2500\u2500 Chart config builders \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n  function buildChartConfig(n) {\n    switch (n) {\n      case 1: return chartFinding1();\n      case 2: return chartFinding2();\n      case 3: return chartFinding3();\n      case 4: return chartFinding4();\n      case 5: return chartFinding5();\n      case 6: return chartFinding6();\n      case 7: return chartFinding8(); \/\/ Page-type safety map (was 8)\n      case 8: return chartFinding9(); \/\/ Question keywords (was 9)\n      case 9: return chartFinding10(); \/\/ AU domain dominance (was 10)\n      case 10: return chartFinding11(); \/\/ Citations per AIO (was 11)\n      case 11: return chartFinding12(); \/\/ Featured snippet (was 12)\n      case 12: return chartFinding13(); \/\/ Content signals (was 13)\n      case 13: return null; \/\/ Custom HTML widget \u2014 keyword intent (was 14)\n      case 14: return chartFinding14(); \/\/ AIO answer length (was 15)\n      case 15: return chartFinding15(); \/\/ AIO position (was 16)\n      case 16: return chartFinding16(); \/\/ PAA co-occurrence (was 17)\n      case 17: return chartFinding17(); \/\/ Local widget (was 18)\n      case 18: return chartFinding18(); \/\/ Volume vs trigger (was 19)\n      case 19: return chartFinding19(); \/\/ Spell-corrected (was 20)\n      default: return null;\n    }\n  }\n\n  \/\/ Helper: horizontal-bar with opacity ramp by rank\n  function horizontalBarWithRamp(labels, values, opts) {\n    opts = opts || {};\n    const colors = values.map((_, i) => hexAlpha(opts.color || PALETTE.blue, opts.opacityFn ? opts.opacityFn(i, values.length) : opacityForRank(i, values.length)));\n    return {\n      type: \"bar\",\n      data: {\n        labels,\n        datasets: [{\n          data: values,\n          backgroundColor: colors,\n          borderRadius: 3,\n          borderSkipped: false,\n        }],\n      },\n      options: {\n        indexAxis: \"y\",\n        responsive: true,\n        scales: {\n          x: {\n            grid: { color: PALETTE.rule, drawBorder: false },\n            ticks: { color: PALETTE.muted, callback: (v) => opts.xFormat ? opts.xFormat(v) : v + \"%\" },\n            beginAtZero: true,\n            max: opts.xMax,\n          },\n          y: {\n            grid: { display: false },\n            ticks: {\n              color: PALETTE.ink,\n              font: { size: 11 },\n              autoSkip: false,  \/\/ show every label (matches Recharts default in React version)\n            },\n          },\n        },\n        plugins: {\n          tooltip: {\n            backgroundColor: \"#fff\",\n            titleColor: PALETTE.ink,\n            bodyColor: PALETTE.ink,\n            borderColor: PALETTE.rule,\n            borderWidth: 1,\n            cornerRadius: 6,\n            padding: 10,\n            callbacks: opts.tooltipCallbacks,\n          },\n        },\n        animation: false,\n      },\n    };\n  }\n\n  \/\/ Finding 1: AIO trigger rate by vertical (horizontal bar, opacity by rank)\n  function chartFinding1() {\n    const rows = [...DATA.finding1_triggerRateByVertical].sort((a, b) => b.rate - a.rate);\n    return horizontalBarWithRamp(\n      rows.map((r) => r.vertical),\n      rows.map((r) => r.rate),\n      {\n        xFormat: (v) => v + \"%\",\n        xMax: 60,\n        tooltipCallbacks: {\n          label: (ctx) => {\n            const row = rows[ctx.dataIndex];\n            return [\n              `Trigger rate: ${row.rate.toFixed(1)}%`,\n              `95% CI: ${row.ciLow.toFixed(1)}\u2013${row.ciHigh.toFixed(1)}%`,\n              `n = ${row.total.toLocaleString(\"en-AU\")} SERPs`,\n            ];\n          },\n        },\n      }\n    );\n  }\n\n  \/\/ Finding 2: Mobile vs desktop (grouped horizontal bar)\n  function chartFinding2() {\n    const rows = [...DATA.finding2_mobileVsDesktop].sort((a, b) => b.mobile.rate - a.mobile.rate);\n    return {\n      type: \"bar\",\n      data: {\n        labels: rows.map((r) => r.vertical),\n        datasets: [\n          { label: \"Mobile\", data: rows.map((r) => r.mobile.rate), backgroundColor: PALETTE.blueDark, borderRadius: 3 },\n          { label: \"Desktop\", data: rows.map((r) => r.desktop.rate), backgroundColor: hexAlpha(PALETTE.blue, 0.45), borderRadius: 3 },\n        ],\n      },\n      options: {\n        indexAxis: \"y\",\n        responsive: true,\n        scales: {\n          x: { grid: { color: PALETTE.rule }, ticks: { color: PALETTE.muted, callback: (v) => v + \"%\" }, beginAtZero: true, max: 60 },\n          y: { grid: { display: false }, ticks: { color: PALETTE.ink } },\n        },\n        plugins: {\n          legend: { display: true, position: \"top\", labels: { color: PALETTE.muted, font: { size: 11 } } },\n          tooltip: { backgroundColor: \"#fff\", titleColor: PALETTE.ink, bodyColor: PALETTE.ink, borderColor: PALETTE.rule, borderWidth: 1 },\n        },\n      },\n    };\n  }\n\n  \/\/ Finding 3: Metro vs regional Jaccard\n  function chartFinding3() {\n    const rows = DATA.finding3_metroVsRegional || [];\n    return horizontalBarWithRamp(\n      rows.map((r) => r.pair),\n      rows.map((r) => r.avg),\n      {\n        xFormat: (v) => v.toFixed(2),\n        xMax: 1,\n        opacityFn: (i, total) => 1 - (i \/ Math.max(total - 1, 1)) * 0.4,\n        tooltipCallbacks: {\n          label: (ctx) => {\n            const row = rows[ctx.dataIndex];\n            return [\n              `Mean Jaccard: ${row.avg.toFixed(3)}`,\n              `Median: ${row.median.toFixed(3)}`,\n              `n = ${row.count.toLocaleString(\"en-AU\")} keyword pairs`,\n            ];\n          },\n        },\n      }\n    );\n  }\n\n  \/\/ Finding 4: Citation leaderboard - always shows overall top 20\n  function chartFinding4() {\n    const rows = (DATA.finding4_citationLeaderboard?.overallTop20 || []).slice(0, 20);\n    return horizontalBarWithRamp(\n      rows.map((r) => r.domain),\n      rows.map((r) => r.count),\n      {\n        xFormat: (v) => v >= 1000 ? (v \/ 1000).toFixed(0) + \"k\" : String(v),\n        opacityFn: (i, total) => i === 0 ? 1 : 1 - (i \/ Math.max(total - 1, 1)) * 0.65,\n        color: PALETTE.blue,\n        tooltipCallbacks: {\n          title: (items) => `#${rows[items[0].dataIndex].rank} \u00b7 ${rows[items[0].dataIndex].domain}`,\n          label: (ctx) => `Citations: ${rows[ctx.dataIndex].count.toLocaleString(\"en-AU\")}`,\n        },\n      }\n    );\n  }\n\n  \/\/ Finding 5: AIO \u2194 organic top-10 overlap (stacked horizontal)\n  function chartFinding5() {\n    const rows = [...(DATA.finding5_aioOrganicOverlap || [])].sort((a, b) => b.inTop10Pct - a.inTop10Pct).map((r) => ({\n      ...r,\n      inTop4to10Pct: Math.max(0, r.inTop10Pct - r.inTop3Pct),\n      outsideTop10Pct: Math.max(0, 100 - r.inTop10Pct),\n    }));\n    return {\n      type: \"bar\",\n      data: {\n        labels: rows.map((r) => r.vertical),\n        datasets: [\n          { label: \"In top 3 organic\", data: rows.map((r) => r.inTop3Pct), backgroundColor: PALETTE.blueDark, borderRadius: 2 },\n          { label: \"In top 4\u201310\", data: rows.map((r) => r.inTop4to10Pct), backgroundColor: hexAlpha(PALETTE.blue, 0.7), borderRadius: 2 },\n          { label: \"Outside top 10\", data: rows.map((r) => r.outsideTop10Pct), backgroundColor: PALETTE.paperWarm, borderRadius: 2 },\n        ],\n      },\n      options: {\n        indexAxis: \"y\",\n        responsive: true,\n        scales: {\n          x: { stacked: true, grid: { color: PALETTE.rule }, ticks: { color: PALETTE.muted, callback: (v) => v + \"%\" }, beginAtZero: true, max: 100 },\n          y: { stacked: true, grid: { display: false }, ticks: { color: PALETTE.ink } },\n        },\n        plugins: {\n          legend: { display: true, position: \"top\", labels: { color: PALETTE.muted, font: { size: 11 } } },\n          tooltip: { backgroundColor: \"#fff\", titleColor: PALETTE.ink, bodyColor: PALETTE.ink, borderColor: PALETTE.rule, borderWidth: 1 },\n        },\n      },\n    };\n  }\n\n  \/\/ Finding 6: Local intent gap diverging\n  function chartFinding6() {\n    const rows = [...(DATA.finding6_localIntent || [])].sort((a, b) => a.gap - b.gap);\n    return {\n      type: \"bar\",\n      data: {\n        labels: rows.map((r) => r.vertical),\n        datasets: [{\n          data: rows.map((r) => r.gap),\n          backgroundColor: rows.map((r) => r.gap > 0 ? PALETTE.red : PALETTE.blue),\n          borderRadius: 3,\n        }],\n      },\n      options: {\n        indexAxis: \"y\",\n        responsive: true,\n        scales: {\n          x: { grid: { color: PALETTE.rule }, ticks: { color: PALETTE.muted, callback: (v) => (v > 0 ? \"+\" : \"\") + v + \"pp\" } },\n          y: { grid: { display: false }, ticks: { color: PALETTE.ink } },\n        },\n        plugins: {\n          tooltip: {\n            backgroundColor: \"#fff\", titleColor: PALETTE.ink, bodyColor: PALETTE.ink, borderColor: PALETTE.rule, borderWidth: 1,\n            callbacks: {\n              label: (ctx) => {\n                const gap = rows[ctx.dataIndex].gap;\n                return `Gap: ${gap > 0 ? \"+\" : \"\"}${gap.toFixed(1)}pp ${gap < 0 ? \"(local insulated)\" : \"(local elevated)\"}`;\n              },\n            },\n          },\n        },\n      },\n    };\n  }\n\n  \/\/ Finding 8: Page-type safety map (two side-by-side bar charts)\n  \/\/ Simplified: render the topOrganic chart only (more striking finding)\n  function chartFinding8() {\n    const rows = [...(DATA.finding8_pageTypeSafetyMap?.topOrganic || [])].sort((a, b) => b.rate - a.rate);\n    return horizontalBarWithRamp(\n      rows.map((r) => prettyPageType(r.pageType)),\n      rows.map((r) => r.rate),\n      {\n        xMax: 100,\n        opacityFn: (i, total) => i === 0 ? 1 : opacityForRank(i, total),\n        color: PALETTE.blue,\n        tooltipCallbacks: {\n          label: (ctx) => `AIO trigger: ${rows[ctx.dataIndex].rate.toFixed(1)}%`,\n        },\n      }\n    );\n  }\n  function prettyPageType(raw) {\n    if (!raw) return \"Unknown\";\n    const map = { blog: \"Blog \/ Content\", homepage: \"Homepage\", product: \"Product\", category: \"Category\", service: \"Service\", \"service-page\": \"Service\", location: \"Location\", \"location-page\": \"Location\", faq: \"FAQ\", about: \"About\", contact: \"Contact\", directory: \"Directory\", other: \"Other\", article: \"Article\" };\n    return map[raw] || (raw.charAt(0).toUpperCase() + raw.slice(1));\n  }\n\n  \/\/ Finding 9: Question keywords by leading word\n  function chartFinding9() {\n    const rows = [...(DATA.findingA_questionKeywords?.byQuestionWord || [])].sort((a, b) => b.rate - a.rate);\n    return horizontalBarWithRamp(\n      rows.map((r) => r.word.toLowerCase()),\n      rows.map((r) => r.rate),\n      {\n        xMax: 100,\n        tooltipCallbacks: {\n          label: (ctx) => `Trigger rate: ${rows[ctx.dataIndex].rate.toFixed(1)}%`,\n        },\n      }\n    );\n  }\n\n  \/\/ Finding 10: AU domain dominance \u2014 donut\n  function chartFinding10() {\n    const d = DATA.findingB_auDomainDominance;\n    if (!d) return null;\n    return {\n      type: \"doughnut\",\n      data: {\n        labels: [\"Australian domains\", \"International domains\"],\n        datasets: [{\n          data: [d.auShare, d.intlShare],\n          backgroundColor: [PALETTE.blue, PALETTE.paperWarm],\n          borderColor: \"#fff\",\n          borderWidth: 2,\n        }],\n      },\n      options: {\n        responsive: true,\n        cutout: \"55%\",\n        plugins: {\n          legend: { display: true, position: \"right\", labels: { color: PALETTE.muted, font: { size: 12 } } },\n          tooltip: { backgroundColor: \"#fff\", titleColor: PALETTE.ink, bodyColor: PALETTE.ink, borderColor: PALETTE.rule, borderWidth: 1, callbacks: { label: (ctx) => `${ctx.label}: ${ctx.parsed.toFixed(1)}%` } },\n        },\n      },\n    };\n  }\n\n  \/\/ Finding 11: Citations per AIO histogram\n  function chartFinding11() {\n    const hist = DATA.findingC_citationsPerAio?.distribution || [];\n    return {\n      type: \"bar\",\n      data: {\n        labels: hist.map((b) => b.bucket),\n        datasets: [{\n          data: hist.map((b) => b.share),\n          backgroundColor: hist.map((b, i, arr) => {\n            const max = Math.max(...arr.map((x) => x.share));\n            const isPeak = b.share === max;\n            return isPeak ? PALETTE.yellowDark : hexAlpha(PALETTE.blue, 0.35 + (b.share \/ max) * 0.5);\n          }),\n          borderRadius: 3,\n        }],\n      },\n      options: {\n        responsive: true,\n        scales: {\n          x: { grid: { display: false }, ticks: { color: PALETTE.muted }, title: { display: true, text: \"Citations per AIO\", color: PALETTE.muted, font: { size: 11 } } },\n          y: { grid: { color: PALETTE.rule }, ticks: { color: PALETTE.muted, callback: (v) => v + \"%\" } },\n        },\n        plugins: {\n          tooltip: { backgroundColor: \"#fff\", titleColor: PALETTE.ink, bodyColor: PALETTE.ink, borderColor: PALETTE.rule, borderWidth: 1, callbacks: { label: (ctx) => `${ctx.parsed.y.toFixed(1)}% of AIOs` } },\n        },\n      },\n    };\n  }\n\n  \/\/ Finding 12: Featured snippet co-occurrence (2x2 matrix \u2192 render as stacked bar)\n  function chartFinding12() {\n    const d = DATA.findingD_featuredSnippetCorrected;\n    if (!d) return null;\n    const total = d.total;\n    return {\n      type: \"bar\",\n      data: {\n        labels: [\"AIO + FS (rare overlap)\", \"AIO only\", \"FS only\", \"Neither\"],\n        datasets: [{\n          data: [d.aioYesFsYes, d.aioYesFsNo, d.aioNoFsYes, d.aioNoFsNo],\n          backgroundColor: [PALETTE.red, PALETTE.purpleDark, hexAlpha(PALETTE.blue, 0.4), PALETTE.paperWarm],\n          borderRadius: 3,\n        }],\n      },\n      options: {\n        indexAxis: \"y\",\n        responsive: true,\n        scales: {\n          x: { grid: { color: PALETTE.rule }, ticks: { color: PALETTE.muted, callback: (v) => v.toLocaleString(\"en-AU\") }, beginAtZero: true },\n          y: { grid: { display: false }, ticks: { color: PALETTE.ink } },\n        },\n        plugins: {\n          tooltip: { backgroundColor: \"#fff\", titleColor: PALETTE.ink, bodyColor: PALETTE.ink, borderColor: PALETTE.rule, borderWidth: 1, callbacks: { label: (ctx) => `${ctx.parsed.x.toLocaleString(\"en-AU\")} SERPs (${(ctx.parsed.x \/ total * 100).toFixed(2)}%)` } },\n        },\n      },\n    };\n  }\n\n  \/\/ Finding 13: Content signals (Reddit, YouTube, AU) \u2014 share is in d.overall\n  function chartFinding13() {\n    const d = DATA.findingE_contentSignals;\n    if (!d || !d.overall) return null;\n    const overall = d.overall;\n    const auShare = overall.aussie?.share ?? 82.7;\n    const reddit = overall.reddit?.share ?? 22.4;\n    const youtube = overall.youtube?.share ?? 16.2;\n    return {\n      type: \"bar\",\n      data: {\n        labels: [\"AU domain\", \"Reddit\", \"YouTube\"],\n        datasets: [{\n          data: [auShare, reddit, youtube],\n          backgroundColor: [PALETTE.blue, PALETTE.purple, PALETTE.muted],\n          borderRadius: 3,\n        }],\n      },\n      options: {\n        indexAxis: \"y\",\n        responsive: true,\n        scales: {\n          x: { grid: { color: PALETTE.rule }, ticks: { color: PALETTE.muted, callback: (v) => v + \"%\" }, max: 100 },\n          y: { grid: { display: false }, ticks: { color: PALETTE.ink } },\n        },\n        plugins: {\n          tooltip: { backgroundColor: \"#fff\", titleColor: PALETTE.ink, bodyColor: PALETTE.ink, borderColor: PALETTE.rule, borderWidth: 1, callbacks: { label: (ctx) => `${ctx.parsed.x.toFixed(1)}% of AIO blocks` } },\n        },\n      },\n    };\n  }\n\n  \/\/ Finding 14: AIO answer length per vertical\n  function chartFinding14() {\n    const rows = [...(DATA.findingF_aioLength?.perVertical || [])].sort((a, b) => b.meanWords - a.meanWords);\n    return horizontalBarWithRamp(\n      rows.map((r) => r.vertical),\n      rows.map((r) => r.meanWords),\n      {\n        xFormat: (v) => v + \"w\",\n        xMax: 280,\n        tooltipCallbacks: {\n          label: (ctx) => {\n            const row = rows[ctx.dataIndex];\n            return [\n              `Mean: ${Math.round(row.meanWords)} words`,\n              `Median: ${Math.round(row.medianWords)} words`,\n              `p95: ${Math.round(row.p95Words)} words`,\n            ];\n          },\n        },\n      }\n    );\n  }\n\n  \/\/ Finding 15: AIO position on SERP\n  function chartFinding15() {\n    const d = DATA.findingG_aioPosition;\n    if (!d) return null;\n    const rows = (d.distribution || []).filter((r) => r.share > 0);\n    return {\n      type: \"bar\",\n      data: {\n        labels: rows.map((r) => `Position ${r.position}`),\n        datasets: [{\n          data: rows.map((r) => r.share),\n          backgroundColor: rows.map((r, i, arr) => {\n            const max = Math.max(...arr.map((x) => x.share));\n            return r.share === max ? PALETTE.yellowDark : hexAlpha(PALETTE.blue, 0.45 + (r.share \/ max) * 0.45);\n          }),\n          borderRadius: 3,\n        }],\n      },\n      options: {\n        responsive: true,\n        scales: {\n          x: { grid: { display: false }, ticks: { color: PALETTE.muted } },\n          y: { grid: { color: PALETTE.rule }, ticks: { color: PALETTE.muted, callback: (v) => v + \"%\" } },\n        },\n        plugins: {\n          tooltip: { backgroundColor: \"#fff\", titleColor: PALETTE.ink, bodyColor: PALETTE.ink, borderColor: PALETTE.rule, borderWidth: 1, callbacks: { label: (ctx) => `${ctx.parsed.y.toFixed(1)}% of AIOs` } },\n        },\n      },\n    };\n  }\n\n  \/\/ Finding 16: PAA \u00d7 AIO co-occurrence (4 segments)\n  function chartFinding16() {\n    const d = DATA.findingH_paaCooccurrence;\n    if (!d) return null;\n    return {\n      type: \"bar\",\n      data: {\n        labels: [\"AIO + PAA\", \"AIO only\", \"PAA only\", \"Neither\"],\n        datasets: [{\n          data: [d.aioYesPaaYes, d.aioYesPaaNo, d.aioNoPaaYes, d.aioNoPaaNo].map((n) => n \/ d.total * 100),\n          backgroundColor: [PALETTE.blueDark, hexAlpha(PALETTE.blue, 0.7), hexAlpha(PALETTE.blue, 0.45), PALETTE.paperWarm],\n          borderRadius: 3,\n        }],\n      },\n      options: {\n        indexAxis: \"y\",\n        responsive: true,\n        scales: {\n          x: { grid: { color: PALETTE.rule }, ticks: { color: PALETTE.muted, callback: (v) => v + \"%\" }, max: 50 },\n          y: { grid: { display: false }, ticks: { color: PALETTE.ink } },\n        },\n        plugins: {\n          tooltip: { backgroundColor: \"#fff\", titleColor: PALETTE.ink, bodyColor: PALETTE.ink, borderColor: PALETTE.rule, borderWidth: 1, callbacks: { label: (ctx) => `${ctx.parsed.x.toFixed(1)}% of SERPs` } },\n        },\n      },\n    };\n  }\n\n  \/\/ Finding 17: Local widget breakdown - the JSON only carries top-level stats,\n  \/\/ so render a comparison: SERPs WITH some local widget vs WITHOUT.\n  function chartFinding17() {\n    const d = DATA.findingI_localPackAdjacentCorrected;\n    if (!d) return null;\n    const withLocal = d.lpOverall || 0;\n    const without = (d.total || 0) - withLocal;\n    return {\n      type: \"bar\",\n      data: {\n        labels: [\"With local-business widget\", \"Without local widget\"],\n        datasets: [{\n          data: [withLocal, without],\n          backgroundColor: [PALETTE.blue, PALETTE.paperWarm],\n          borderRadius: 3,\n        }],\n      },\n      options: {\n        indexAxis: \"y\",\n        responsive: true,\n        scales: {\n          x: {\n            grid: { color: PALETTE.rule },\n            ticks: { color: PALETTE.muted, callback: (v) => v >= 1000 ? (v \/ 1000).toFixed(0) + \"k\" : String(v) },\n            beginAtZero: true,\n          },\n          y: { grid: { display: false }, ticks: { color: PALETTE.ink } },\n        },\n        plugins: {\n          tooltip: {\n            backgroundColor: \"#fff\", titleColor: PALETTE.ink, bodyColor: PALETTE.ink,\n            borderColor: PALETTE.rule, borderWidth: 1,\n            callbacks: { label: (ctx) => `${ctx.parsed.x.toLocaleString(\"en-AU\")} SERPs (${(ctx.parsed.x \/ (d.total || 1) * 100).toFixed(1)}%)` },\n          },\n        },\n      },\n    };\n  }\n\n  \/\/ Finding 18: Volume vs trigger line chart (rate field, not triggerRate)\n  function chartFinding18() {\n    const buckets = DATA.findingJ_volumeVsTrigger?.buckets || [];\n    return {\n      type: \"line\",\n      data: {\n        labels: buckets.map((b) => b.bucket || b.label),\n        datasets: [{\n          data: buckets.map((b) => b.rate),\n          borderColor: PALETTE.blueDark,\n          backgroundColor: hexAlpha(PALETTE.blue, 0.15),\n          borderWidth: 2.5,\n          fill: true,\n          tension: 0.3,\n          pointBackgroundColor: buckets.map((_, i) => i === 0 ? PALETTE.yellowDark : PALETTE.blue),\n          pointBorderColor: \"#fff\",\n          pointRadius: 5,\n          pointHoverRadius: 7,\n        }],\n      },\n      options: {\n        responsive: true,\n        scales: {\n          x: {\n            grid: { display: false },\n            ticks: { color: PALETTE.muted, font: { size: 10 } },\n            title: { display: true, text: \"Monthly search volume bucket\", color: PALETTE.muted, font: { size: 11 } },\n          },\n          y: {\n            grid: { color: PALETTE.rule },\n            ticks: { color: PALETTE.muted, callback: (v) => v + \"%\" },\n            beginAtZero: true, max: 50,\n            title: { display: true, text: \"AIO trigger rate\", color: PALETTE.muted, font: { size: 11 } },\n          },\n        },\n        plugins: {\n          tooltip: {\n            backgroundColor: \"#fff\", titleColor: PALETTE.ink, bodyColor: PALETTE.ink,\n            borderColor: PALETTE.rule, borderWidth: 1,\n            callbacks: {\n              label: (ctx) => {\n                const b = buckets[ctx.dataIndex];\n                return [\n                  `Trigger rate: ${b.rate.toFixed(1)}%`,\n                  `n = ${b.total.toLocaleString(\"en-AU\")} keywords`,\n                ];\n              },\n            },\n          },\n        },\n      },\n    };\n  }\n\n  \/\/ Finding 19: Spell-corrected vs not\n  function chartFinding19() {\n    const d = DATA.findingK_spellCorrection;\n    if (!d) return null;\n    return {\n      type: \"bar\",\n      data: {\n        labels: [\"Spell-corrected\", \"Not corrected\"],\n        datasets: [{\n          data: [d.correctedRate, d.notCorrectedRate],\n          backgroundColor: [hexAlpha(PALETTE.blue, 0.55), PALETTE.blue],\n          borderRadius: 3,\n        }],\n      },\n      options: {\n        indexAxis: \"y\",\n        responsive: true,\n        scales: {\n          x: { grid: { color: PALETTE.rule }, ticks: { color: PALETTE.muted, callback: (v) => v + \"%\" }, max: 50, beginAtZero: true },\n          y: { grid: { display: false }, ticks: { color: PALETTE.ink } },\n        },\n        plugins: {\n          tooltip: { backgroundColor: \"#fff\", titleColor: PALETTE.ink, bodyColor: PALETTE.ink, borderColor: PALETTE.rule, borderWidth: 1, callbacks: { label: (ctx) => `${ctx.parsed.x.toFixed(1)}% trigger` } },\n        },\n      },\n    };\n  }\n\n  \/\/ \u2500\u2500\u2500 Helpers \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n  function escapeHtml(s) {\n    return String(s)\n      .replace(\/&\/g, \"&amp;\")\n      .replace(\/<\/g, \"&lt;\")\n      .replace(\/>\/g, \"&gt;\")\n      .replace(\/\"\/g, \"&quot;\")\n      .replace(\/'\/g, \"&#039;\");\n  }\n\n  \/\/ Expose for debugging\n  window.AIO2026 = { boot, navigateToFinding, get DATA() { return DATA; } };\n\n  \/\/ Start\n  if (document.readyState === \"loading\") {\n    document.addEventListener(\"DOMContentLoaded\", boot);\n  } else {\n    boot();\n  }\n})();\n<\/script>\n<\/head><body>\n<!--\n  The entire report lives inside `.dn-scope` so styles don't leak in\/out of\n  the host page. When pasting into Elementor or any other CMS, keep the\n  wrapping `<div class=\"dn-scope\">` intact.\n-->\n<div class=\"dn-scope\">\n\n  <main>\n    <!-- \u2500\u2500\u2500 Hero \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\n    <section class=\"container dn-hero\">\n      <div class=\"dn-hero-card\">\n        <div class=\"dn-hero-glow dn-hero-glow--blue\" aria-hidden=\"true\"><\/div>\n        <div class=\"dn-hero-glow dn-hero-glow--green\" aria-hidden=\"true\"><\/div>\n        <div class=\"dn-hero-body\">\n          <p class=\"dn-descriptor\">\n            <span class=\"dot\"><\/span>\n            DNHQ Research \u00b7 May 2026\n          <\/p>\n          <h1 class=\"dn-hero-title\">\n            The State of AI Search<br>\n            for Australian SMEs, 2026\n          <\/h1>\n          <p class=\"dn-hero-subtitle\">\n            A first-look at how Google AI Overviews are reshaping search results across\n            <strong>18 industries<\/strong>, <strong>116,918 SERPs analysed<\/strong>, and\n            <strong>1.1M+ organic results parsed<\/strong> - and what it means for SME owners\n            and the agencies that serve them.\n          <\/p>\n\n          <!-- 3 editorial pillars (replaces stat strip) -->\n          <div class=\"dn-hero-pillars\">\n            <article class=\"dn-pillar\">\n              <div class=\"dn-pillar-header\">\n                <img decoding=\"async\" src=\"https:\/\/digitalnomadshq.com.au\/wp-content\/uploads\/2025\/08\/iconeyes.svg\" class=\"dn-pillar-icon\" alt=\"\" aria-hidden=\"true\">\n                <p class=\"dn-pillar-eyebrow\">The audit<\/p>\n              <\/div>\n              <h2 class=\"dn-pillar-title\">Australia's first stratified AI Overviews study<\/h2>\n              <p class=\"dn-pillar-body\">\n                116,918 SERPs and 1.1M+ organic results analysed across 18\n                industries and 6 Australian cities in May 2026. Built from\n                primary SERP capture, not US data extrapolation - the first\n                empirical baseline for how Google AI Overviews behave in the\n                Australian market.\n              <\/p>\n            <\/article>\n            <article class=\"dn-pillar\">\n              <div class=\"dn-pillar-header\">\n                <img decoding=\"async\" src=\"https:\/\/digitalnomadshq.com.au\/wp-content\/uploads\/2025\/08\/corwnicon.svg\" class=\"dn-pillar-icon\" alt=\"\" aria-hidden=\"true\">\n                <p class=\"dn-pillar-eyebrow\">Why we did it<\/p>\n              <\/div>\n              <h2 class=\"dn-pillar-title\">Speculation outran the evidence<\/h2>\n              <p class=\"dn-pillar-body\">\n                AI search is reshaping the SME playbook faster than the industry\n                can describe it. Existing studies came from US data with US\n                verticals - Australian operators were left guessing whether the\n                same rules applied here. So we ran the audit ourselves, to move\n                the conversation from speculation to evidence.\n              <\/p>\n            <\/article>\n            <article class=\"dn-pillar\">\n              <div class=\"dn-pillar-header\">\n                <img decoding=\"async\" src=\"https:\/\/digitalnomadshq.com.au\/wp-content\/uploads\/2025\/08\/Group-2147258631.svg\" class=\"dn-pillar-icon\" alt=\"\" aria-hidden=\"true\">\n                <p class=\"dn-pillar-eyebrow\">Who it's for<\/p>\n              <\/div>\n              <h2 class=\"dn-pillar-title\">SMEs, agencies, journalists, researchers<\/h2>\n              <p class=\"dn-pillar-body\">\n                If you run an Australian SME, advise on its growth, plan its\n                marketing, or write about how search is changing - this is your\n                ground truth. Every percentage carries a 95% confidence interval.\n                Every finding is reproducible from the underlying dataset. Quote\n                it. Cite it. Argue with it.\n              <\/p>\n            <\/article>\n          <\/div>\n        <\/div>\n      <\/div>\n    <\/section>\n\n    <!-- \u2500\u2500\u2500 Stat strip (relocated below hero) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\n    <section class=\"container\" style=\"margin-top: 24px;\">\n      <div class=\"dn-stat-grid\">\n        <div class=\"dn-stat\">\n          <p class=\"dn-stat-value\" data-stat=\"sample-size\">116,918<\/p>\n          <p class=\"dn-stat-label\" data-stat=\"sample-label\">SERPs analysed<\/p>\n        <\/div>\n        <div class=\"dn-stat dn-stat--highlight\">\n          <p class=\"dn-stat-value\" data-stat=\"trigger-rate\">37.8%<\/p>\n          <p class=\"dn-stat-label\" data-stat=\"trigger-label\">Overall AIO trigger rate<\/p>\n        <\/div>\n        <div class=\"dn-stat\">\n          <p class=\"dn-stat-value\" data-stat=\"industries\">18<\/p>\n          <p class=\"dn-stat-label\">Industries covered<\/p>\n        <\/div>\n        <div class=\"dn-stat\">\n          <p class=\"dn-stat-value\">~387K<\/p>\n          <p class=\"dn-stat-label\">AIO citations<\/p>\n        <\/div>\n        <div class=\"dn-stat\">\n          <p class=\"dn-stat-value\">19<\/p>\n          <p class=\"dn-stat-label\">Findings<\/p>\n        <\/div>\n      <\/div>\n    <\/section>\n\n    <!-- \u2500\u2500\u2500 Reading guide \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\n    <section class=\"container\" style=\"margin-top: 32px;\">\n      <div class=\"dn-reading-guide\">\n        <p class=\"dn-descriptor\">\n          <span class=\"dot\"><\/span>\n          How to read this report\n        <\/p>\n        <p>\n          The 19 findings are grouped into three thematic Parts in numerical\n          order. Each tile shows its chart and headline by default - tap any\n          tile to read the full narrative and action recommendations.\n        <\/p>\n        <div class=\"dn-deep-dives-callout\">\n          <strong>Per-industry deep-dives:<\/strong>\n          <a href=\"https:\/\/digitalnomadshq.com.au\/state-of-ai-search\/accounting\/\">Accounting \u2192<\/a>\n          <a href=\"https:\/\/digitalnomadshq.com.au\/state-of-ai-search\/ecommerce\/\">E-commerce \u2192<\/a>\n          <a href=\"https:\/\/digitalnomadshq.com.au\/state-of-ai-search\/it-tech-services\/\">IT &amp; Tech Services \u2192<\/a>\n          <a href=\"https:\/\/digitalnomadshq.com.au\/state-of-ai-search\/b2b-search\/\">B2B \u2192<\/a>\n          <a href=\"https:\/\/digitalnomadshq.com.au\/state-of-ai-search\/real-estate\/\">Real Estate \u2192<\/a>\n          <a href=\"https:\/\/digitalnomadshq.com.au\/state-of-ai-search\/legal\/\">Legal \u2192<\/a>\n          <span style=\"color: var(--dn-muted); font-size: 12px;\">More industry pages publishing weekly<\/span>\n        <\/div>\n      <\/div>\n    <\/section>\n\n    <!-- \u2500\u2500\u2500 Headline findings \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\n    <section id=\"headlines\" class=\"container\">\n      <div class=\"dn-section-header\">\n        <p class=\"dn-descriptor\"><span class=\"dot\"><\/span>The Five<\/p>\n        <h2 class=\"dn-section-title\">Headline findings<\/h2>\n        <p class=\"dn-section-lede\">\n          Five takeaways the SME community should act on. Each one carries a\n          95% confidence interval and is sourced from the underlying\n          116,918-SERP dataset.\n        <\/p>\n      <\/div>\n\n      <div class=\"dn-headlines\" id=\"headlines-grid\">\n        <!-- Headlines rendered by app.js -->\n      <\/div>\n    <\/section>\n\n    <!-- \u2500\u2500\u2500 Findings region with TOC sidebar \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\n    <section id=\"findings\" class=\"container\" style=\"padding-bottom: 80px;\">\n      <div class=\"dn-findings-grid\">\n        <!-- Sticky TOC sidebar (desktop) -->\n        <nav class=\"dn-toc\" aria-label=\"Table of contents\" id=\"toc\">\n          <p class=\"dn-toc-label\">On this page<\/p>\n          <ol class=\"dn-toc-list\" id=\"toc-list\">\n            <!-- Populated by app.js -->\n          <\/ol>\n        <\/nav>\n\n        <!-- Findings stack -->\n        <div>\n          <div class=\"dn-findings-header\">\n            <p class=\"dn-descriptor\"><span class=\"dot\"><\/span>The Full Set<\/p>\n            <div class=\"dn-findings-title-row\">\n              <h2 class=\"dn-findings-title\">All <span id=\"findings-count\">19<\/span> findings<\/h2>\n              <button type=\"button\" id=\"expand-all-btn\" class=\"dn-expand-all-btn\">\n                <span id=\"expand-all-label\">Expand all<\/span>\n                <span aria-hidden=\"true\" id=\"expand-all-icon\">\u2193<\/span>\n              <\/button>\n            <\/div>\n            <p class=\"dn-section-lede\">\n              Three thematic Parts. Each finding shows its chart and headline\n              by default - tap any tile to read the full narrative and action\n              recommendations.\n            <\/p>\n          <\/div>\n\n          <!-- Mobile-only TOC button -->\n          <button type=\"button\" id=\"toc-mobile-btn\" class=\"dn-toc-mobile-btn\" aria-haspopup=\"dialog\">\n            <span>Jump to finding<\/span>\n            <span aria-hidden=\"true\">\u25be<\/span>\n          <\/button>\n\n          <!-- Mobile TOC overlay -->\n          <div class=\"dn-toc-overlay\" id=\"toc-mobile-overlay\" role=\"dialog\" aria-modal=\"true\" aria-label=\"Findings navigation\">\n            <div class=\"dn-toc-overlay-header\">\n              <p class=\"dn-descriptor\"><span class=\"dot\"><\/span>On this page<\/p>\n              <button type=\"button\" id=\"toc-mobile-close\" class=\"dn-btn-pill dn-btn-pill--primary\" aria-label=\"Close navigation\">\n                Close <span aria-hidden=\"true\">\u00d7<\/span>\n              <\/button>\n            <\/div>\n            <div class=\"dn-toc-overlay-body\" id=\"toc-mobile-list\">\n              <!-- Populated by app.js -->\n            <\/div>\n          <\/div>\n\n          <!-- Tile stack (populated by app.js) -->\n          <div id=\"findings-stack\"><\/div>\n        <\/div>\n      <\/div>\n    <\/section>\n\n    <!-- \u2500\u2500\u2500 Methodology \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\n    <section id=\"methodology\" class=\"container dn-methodology\">\n      <p class=\"dn-descriptor\"><span class=\"dot\"><\/span>The How<\/p>\n      <h2 class=\"dn-section-title\">Methodology<\/h2>\n      <p>\n        The audit captures <strong>116,918 SERPs<\/strong> from a balanced design\n        engineered for cross-vertical comparability: an equal stratified sample\n        of 833 commercial keywords per vertical \u00d7 18 verticals =\n        <strong>14,994 unique queries<\/strong>, each crawled at organic depth\n        100 across six Australian cities in May 2026.\n      <\/p>\n\n      <h3>Sample design<\/h3>\n      <p>\n        Verticals were sampled at equal quota - not proportional to market\n        size - so each industry carries the same statistical weight. The\n        833-per-vertical figure was set to guarantee a minimum cell size of\n        <strong>n \u2265 100<\/strong> in every cross-tab cut we report (e.g.\n        \"Real Estate \u00d7 local intent \u00d7 mobile\"), keeping confidence intervals\n        tight even at the long tail of the distribution. Keyword universes\n        were sourced from commercial-intent search data, deduplicated against\n        brand and adult terms, and filtered to AU search demand.\n      <\/p>\n\n      <h3>Geographic coverage<\/h3>\n      <p>\n        Three metro\/regional pairs span the eastern seaboard:\n        <strong>Sydney\/Newcastle<\/strong> (NSW),\n        <strong>Melbourne\/Geelong<\/strong> (VIC), and\n        <strong>Brisbane\/Toowoomba<\/strong> (QLD). Each keyword was issued\n        from each city to surface genuine geographic divergence in the SERP -\n        important because Google increasingly localises both organic results\n        and AI-generated answers.\n      <\/p>\n\n      <h3>Device and capture pipeline<\/h3>\n      <p>\n        70% of impressions were captured on Android mobile - the dominant\n        share of Australian search - with 30% on desktop as a control. Each\n        impression ran through an async SERP capture pipeline with\n        asynchronous-AIO retrieval enabled. Without this, an estimated\n        30-50% of AIOs that take longer than 2 seconds to render are\n        silently dropped from the response payload, which would have\n        materially understated the trigger rate. Parser v1.1.0 captures\n        both side-panel and inline citations, including domain, URL, rank,\n        and citation type.\n      <\/p>\n\n      <h3>Statistical method<\/h3>\n      <p>\n        Every percentage in this report carries a <strong>95% Wilson\n        confidence interval<\/strong> (tighter and better-behaved than naive \u00b1\n        formulas at the edges of the distribution). Findings whose CI\n        overlaps zero are flagged as \"within noise\" in the narrative.\n        Per-vertical breakdowns are only reported where n \u2265 100 SERPs in the\n        relevant cell. Snapshot data was captured 11-12 May 2026.\n      <\/p>\n\n      <p class=\"dn-methodology-meta\">\n        Full methodology, sampling tables, and limitations in the\n        downloadable report. Source data and SQL cuts available on request:\n        <a href=\"mailto:research@dnhq.com.au\">research@dnhq.com.au<\/a>.\n      <\/p>\n    <\/section>\n  <\/main>\n\n  <!-- \u2500\u2500\u2500 Footer \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\n  <footer class=\"dn-footer\">\n    <div class=\"container\">\n      <p>\n        \u00a9 2026 DNHQ. All rights reserved.\n        <em>The State of AI Search for Australian SMEs, 2026<\/em>\n        and its underlying dataset are the proprietary intellectual property\n        of DNHQ Pty Ltd. Brief quotation permitted with attribution;\n        reproduction or redistribution without prior written consent\n        prohibited. Press &amp; licensing:\n        <a href=\"mailto:research@dnhq.com.au\">research@dnhq.com.au<\/a>.\n      <\/p>\n    <\/div>\n  <\/footer>\n\n  <!-- Back-to-top floating button -->\n  <button type=\"button\" id=\"back-to-top\" class=\"dn-back-to-top\" aria-label=\"Back to top\">\u2191<\/button>\n<\/div>\n<\/body><\/html>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>The State of AI Search for Australian SMEs, 2026 \u2014 DNHQ Research DNHQ Research \u00b7 May 2026 The State of AI Search for Australian SMEs, 2026 A first-look at how Google AI Overviews are reshaping search results across 18 industries, 116,918 SERPs analysed, and 1.1M+ organic results parsed &#8211; and what it means for SME [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":44010,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"_acf_changed":false,"content-type":"","footnotes":""},"class_list":["post-43979","page","type-page","status-publish","has-post-thumbnail","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/digitalnomadshq.com.au\/wp-json\/wp\/v2\/pages\/43979","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/digitalnomadshq.com.au\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/digitalnomadshq.com.au\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/digitalnomadshq.com.au\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/digitalnomadshq.com.au\/wp-json\/wp\/v2\/comments?post=43979"}],"version-history":[{"count":44,"href":"https:\/\/digitalnomadshq.com.au\/wp-json\/wp\/v2\/pages\/43979\/revisions"}],"predecessor-version":[{"id":44286,"href":"https:\/\/digitalnomadshq.com.au\/wp-json\/wp\/v2\/pages\/43979\/revisions\/44286"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/digitalnomadshq.com.au\/wp-json\/wp\/v2\/media\/44010"}],"wp:attachment":[{"href":"https:\/\/digitalnomadshq.com.au\/wp-json\/wp\/v2\/media?parent=43979"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}