{"id":295,"date":"2026-10-14T07:59:09","date_gmt":"2026-10-14T07:59:09","guid":{"rendered":"https:\/\/ongroundmedia.com\/?page_id=295"},"modified":"2026-10-14T08:09:25","modified_gmt":"2026-10-14T08:09:25","slug":"schema-and-structured-data-tools","status":"publish","type":"page","link":"https:\/\/ongroundmedia.com\/?page_id=295","title":{"rendered":"Schema and Structured Data Tools"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"295\" class=\"elementor elementor-295\">\n\t\t\t\t<div class=\"elementor-element elementor-element-37842cf e-con e-atomic-element e-flexbox-base e-default-div e-d3eb43f \" data-id=\"37842cf\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"37842cf\">\n    \t\t<div class=\"elementor-element elementor-element-6062d32 elementor-widget elementor-widget-html\" data-id=\"6062d32\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!doctype html>\r\n<html lang=\"en\">\r\n<head>\r\n<meta charset=\"utf-8\">\r\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\r\n<title>Onground Schema Tools<\/title>\r\n<link rel=\"stylesheet\" href=\"https:\/\/fonts.googleapis.com\/css2?family=Bricolage+Grotesque:opsz,wght@12..96,500..800&family=DM+Sans:wght@400;500;600&family=JetBrains+Mono:wght@400;500&display=swap\">\r\n<style>\r\n\/* Layout: navy header band with search, then a sticky tool rail beside a form and live JSON-LD workbench. *\/\r\n:root {\r\n  --font-display: 'Bricolage Grotesque', 'Segoe UI', system-ui, sans-serif;\r\n  --font-body: 'DM Sans', system-ui, -apple-system, 'Segoe UI', sans-serif;\r\n  --font-mono: 'JetBrains Mono', ui-monospace, Menlo, Consolas, monospace;\r\n\r\n  --bg: #F8FAFC;\r\n  --surface: #FFFFFF;\r\n  --surface-2: #F1F5F9;\r\n  --text: #1E293B;\r\n  --muted: #64748B;\r\n  --border: #E2E8F0;\r\n  --primary: #4F46E5;\r\n  --primary-ink: #4F46E5;\r\n  --primary-soft: #EEF2FF;\r\n  --navy: #0F172A;\r\n  --accent: #FF6B35;\r\n  --accent-soft: #FFF1EB;\r\n  --accent-ink: #C2410C;\r\n  --good: #10B981;\r\n  --good-soft: #E7F8F2;\r\n  --good-ink: #047857;\r\n  --bad: #DC2626;\r\n  --bad-soft: #FEECEC;\r\n  --bad-ink: #B91C1C;\r\n  --on-navy: #F8FAFC;\r\n  --on-navy-muted: #A9B4C8;\r\n\r\n  --code-bg: #0F172A;\r\n  --code-text: #E2E8F0;\r\n  --c-key: #A5B4FC;\r\n  --c-str: #6EE7B7;\r\n  --c-num: #FDBA74;\r\n  --c-lit: #F9A8D4;\r\n  --c-punc: #94A3B8;\r\n\r\n  color-scheme: light;\r\n  --radius: 12px;\r\n  --shadow: 0 1px 2px rgba(15, 23, 42, .06), 0 8px 24px rgba(15, 23, 42, .07);\r\n}\r\n@media (prefers-color-scheme: dark) {\r\n  :root:not([data-theme=\"light\"]) {\r\n    --bg: #0A0F1E; --surface: #0F172A; --surface-2: #162036; --text: #E2E8F0; --muted: #94A3B8; --border: #25324D;\r\n    --primary-ink: #A5B4FC; --primary-soft: #1E2350; --accent-soft: #3A2218; --accent-ink: #FF9A72;\r\n    --good-soft: #0E2F28; --good-ink: #6EE7B7; --bad-soft: #3A1717; --bad-ink: #FCA5A5;\r\n    --code-bg: #070B16;\r\n    --shadow: 0 1px 2px rgba(0, 0, 0, .4), 0 8px 24px rgba(0, 0, 0, .35);\r\n    color-scheme: dark;\r\n  }\r\n}\r\n:root[data-theme=\"dark\"] {\r\n  --bg: #0A0F1E; --surface: #0F172A; --surface-2: #162036; --text: #E2E8F0; --muted: #94A3B8; --border: #25324D;\r\n  --primary-ink: #A5B4FC; --primary-soft: #1E2350; --accent-soft: #3A2218; --accent-ink: #FF9A72;\r\n  --good-soft: #0E2F28; --good-ink: #6EE7B7; --bad-soft: #3A1717; --bad-ink: #FCA5A5;\r\n  --code-bg: #070B16;\r\n  --shadow: 0 1px 2px rgba(0, 0, 0, .4), 0 8px 24px rgba(0, 0, 0, .35);\r\n  color-scheme: dark;\r\n}\r\n\r\n* { box-sizing: border-box; }\r\nbody { margin: 0; background: var(--bg); color: var(--text); font-family: var(--font-body); font-size: 16px; line-height: 1.55; }\r\nh1, h2, h3 { font-family: var(--font-display); margin: 0; text-wrap: balance; letter-spacing: -0.02em; line-height: 1.12; }\r\np { margin: 0; }\r\na { color: var(--primary-ink); }\r\nbutton, input, select, textarea { font: inherit; color: inherit; }\r\n:focus-visible { outline: 3px solid var(--accent); outline-offset: 2px; border-radius: 6px; }\r\n.wrap { width: 100%; max-width: 1240px; margin-inline: auto; padding-inline: 20px; }\r\n\r\n\/* Header *\/\r\n.hero { background: var(--navy); color: var(--on-navy); padding-bottom: 36px; position: relative; overflow: hidden; }\r\n.hero-art { position: absolute; right: -30px; bottom: -14px; width: 520px; max-width: 80%; opacity: .2; pointer-events: none; }\r\n.topbar { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding-block: 16px; position: relative; }\r\n.brand { display: flex; align-items: center; gap: 12px; color: var(--on-navy); text-decoration: none; min-width: 0; }\r\n.logo-tile { background: #FFFFFF; border-radius: 12px; padding: 6px 8px; display: grid; place-items: center; flex: none; }\r\n.logo-tile img { height: 34px; width: auto; display: block; }\r\n.brand-name { font-family: var(--font-display); font-weight: 700; font-size: 20px; white-space: nowrap; }\r\n.top-note { color: var(--on-navy-muted); font-size: 14px; }\r\n.hero-body { display: grid; grid-template-columns: minmax(0, 1.3fr) minmax(0, 1fr); gap: 32px; align-items: end; padding-top: 22px; position: relative; }\r\n.eyebrow { font-family: var(--font-mono); font-size: 13px; letter-spacing: .08em; text-transform: uppercase; color: var(--accent); }\r\n.hero h1 { font-size: clamp(2rem, 4.4vw, 3.2rem); font-weight: 800; margin-top: 12px; }\r\n.hero h1 em { font-style: normal; color: var(--accent); }\r\n.hero .lead { margin-top: 14px; color: var(--on-navy-muted); font-size: 17px; max-width: 52ch; }\r\n.search { display: grid; gap: 8px; min-width: 0; }\r\n.search label { font-size: 13px; font-weight: 600; color: var(--on-navy-muted); }\r\n.search input { width: 100%; background: #FFFFFF; color: #1E293B; border: 2px solid transparent; border-radius: 12px; padding: 13px 16px; font-size: 16px; }\r\n.search input:focus { outline: none; border-color: var(--accent); }\r\n.search small { color: var(--on-navy-muted); font-size: 13px; }\r\n\r\n\/* Layout *\/\r\n.shell { display: grid; grid-template-columns: 270px minmax(0, 1fr); gap: 28px; padding-block: 28px 64px; align-items: start; }\r\n.rail { position: sticky; top: env(safe-area-inset-top, 0px); max-height: 100vh; overflow-y: auto; padding-block: 4px 20px; display: grid; gap: 18px; scrollbar-width: thin; }\r\n.rail-group { display: grid; gap: 4px; }\r\n.rail-h { display: flex; justify-content: space-between; align-items: baseline; font-family: var(--font-mono); font-size: 12px; letter-spacing: .07em; text-transform: uppercase; color: var(--muted); padding: 0 10px 4px; }\r\n.rail-item { display: flex; align-items: center; gap: 10px; width: 100%; text-align: left; border: 0; background: transparent; border-radius: 10px; padding: 9px 10px; cursor: pointer; font-weight: 500; font-size: 15px; color: var(--text); }\r\n.rail-item:hover { background: var(--surface-2); }\r\n.rail-item[aria-current=\"true\"] { background: var(--primary-soft); color: var(--primary-ink); font-weight: 600; }\r\n.rail-item .dot { width: 8px; height: 8px; border-radius: 2px; background: var(--border); flex: none; }\r\n.rail-item[aria-current=\"true\"] .dot { background: var(--accent); }\r\n.rail-item.chk .dot { background: var(--good); }\r\n.rail-empty { padding: 8px 10px; color: var(--muted); font-size: 14px; }\r\n\r\n\/* Workbench *\/\r\n.bench { min-width: 0; display: grid; gap: 18px; }\r\n.bench-head { display: grid; gap: 10px; }\r\n.bench-head .tags { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; }\r\n.bench-head h2 { font-size: clamp(1.6rem, 3vw, 2.2rem); font-weight: 800; }\r\n.bench-head p { color: var(--muted); max-width: 70ch; }\r\n.pill { display: inline-flex; align-items: center; gap: 6px; border-radius: 99px; padding: 3px 10px; font-size: 12.5px; font-weight: 600; }\r\n.pill.gen { background: var(--good-soft); color: var(--good-ink); }\r\n.pill.chk { background: var(--primary-soft); color: var(--primary-ink); }\r\n.pill.warn { background: var(--accent-soft); color: var(--accent-ink); }\r\n.pill.bad { background: var(--bad-soft); color: var(--bad-ink); }\r\n.pill.ok { background: var(--good-soft); color: var(--good-ink); }\r\n.notice { background: var(--accent-soft); color: var(--accent-ink); border-radius: 10px; padding: 10px 14px; font-size: 14px; }\r\n\r\n.cols { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 18px; align-items: start; }\r\n.cols.single { grid-template-columns: minmax(0, 1fr); }\r\n.card { background: var(--surface); border: 1px solid var(--border); border-radius: 14px; padding: 18px; min-width: 0; }\r\n.card-h { display: flex; align-items: center; justify-content: space-between; gap: 10px; flex-wrap: wrap; margin-bottom: 14px; }\r\n.card-h h3 { font-size: 17px; font-weight: 700; }\r\n.sec { font-family: var(--font-mono); font-size: 12px; letter-spacing: .07em; text-transform: uppercase; color: var(--muted); grid-column: 1 \/ -1; padding-top: 8px; border-top: 1px solid var(--border); margin-top: 4px; }\r\n.sec:first-child { border-top: 0; padding-top: 0; margin-top: 0; }\r\n.fields { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }\r\n.field { display: grid; gap: 5px; min-width: 0; align-content: start; }\r\n.field.full { grid-column: 1 \/ -1; }\r\n.field label, .field .lbl { font-size: 13px; font-weight: 600; color: var(--muted); }\r\n.field label .req, .field .lbl .req { color: var(--accent); margin-left: 3px; }\r\n.field input[type=\"text\"], .field input[type=\"url\"], .field input[type=\"number\"], .field input[type=\"date\"], .field input[type=\"datetime-local\"], .field select, .field textarea, .ta {\r\n  width: 100%; border: 1px solid var(--border); background: var(--bg); border-radius: 8px; padding: 9px 11px; font-size: 15px; min-width: 0;\r\n}\r\n.field textarea, .ta { resize: vertical; min-height: 80px; line-height: 1.45; }\r\n.field input:focus, .field select:focus, .field textarea:focus, .ta:focus { outline: 2px solid var(--primary); outline-offset: 0; border-color: var(--primary); }\r\n.hint { font-size: 12.5px; color: var(--muted); }\r\n.check { display: flex; align-items: center; gap: 8px; font-size: 14.5px; }\r\n.check input { width: 17px; height: 17px; accent-color: var(--primary); }\r\n.list { display: grid; gap: 10px; }\r\n.row { display: grid; gap: 8px; grid-template-columns: minmax(0, 1fr) auto; align-items: start; background: var(--surface-2); border-radius: 10px; padding: 10px; }\r\n.row-fields { display: grid; gap: 8px; grid-template-columns: repeat(2, minmax(0, 1fr)); min-width: 0; }\r\n.row-fields .full { grid-column: 1 \/ -1; }\r\n.row-fields input, .row-fields select, .row-fields textarea { width: 100%; border: 1px solid var(--border); background: var(--surface); border-radius: 8px; padding: 8px 10px; font-size: 14.5px; min-width: 0; }\r\n.row-fields textarea { min-height: 62px; resize: vertical; }\r\n.row-fields input:focus, .row-fields select:focus, .row-fields textarea:focus { outline: 2px solid var(--primary); outline-offset: 0; border-color: var(--primary); }\r\n.row-n { font-family: var(--font-mono); font-size: 12px; color: var(--muted); grid-column: 1 \/ -1; }\r\n.btn { display: inline-flex; align-items: center; justify-content: center; gap: 8px; border: 0; border-radius: 10px; padding: 9px 15px; font-weight: 600; cursor: pointer; text-decoration: none; font-size: 14.5px; line-height: 1.2; }\r\n.btn-primary { background: var(--primary); color: #FFFFFF; }\r\n.btn-primary:hover { background: #4338CA; }\r\n.btn-cta { background: var(--accent); color: #0F172A; }\r\n.btn-cta:hover { background: #FF7F52; }\r\n.btn-ghost { background: transparent; color: var(--primary-ink); border: 1px solid var(--border); }\r\n.btn-ghost:hover { background: var(--surface-2); }\r\n.btn-sm { padding: 6px 11px; font-size: 13.5px; }\r\n.btn-x { background: transparent; color: var(--muted); border: 1px solid var(--border); border-radius: 8px; width: 32px; height: 32px; padding: 0; cursor: pointer; font-size: 18px; line-height: 1; }\r\n.btn-x:hover { color: var(--bad-ink); border-color: var(--bad); }\r\n.form-actions { display: flex; gap: 8px; flex-wrap: wrap; margin-top: 16px; }\r\n\r\n\/* Output *\/\r\n.out-col { display: grid; gap: 14px; position: sticky; top: env(safe-area-inset-top, 0px); min-width: 0; }\r\n.seg { display: inline-flex; border: 1px solid var(--border); border-radius: 9px; overflow: hidden; }\r\n.seg button { border: 0; background: var(--surface); padding: 6px 11px; font-size: 13px; font-weight: 600; cursor: pointer; color: var(--muted); }\r\n.seg button[aria-pressed=\"true\"] { background: var(--navy); color: var(--on-navy); }\r\n.code { background: var(--code-bg); color: var(--code-text); border-radius: 10px; padding: 14px 16px; font-family: var(--font-mono); font-size: 12.5px; line-height: 1.65; overflow: auto; max-height: 520px; margin: 0; white-space: pre; tab-size: 2; }\r\n.code .k { color: var(--c-key); } .code .s { color: var(--c-str); } .code .n { color: var(--c-num); } .code .l { color: var(--c-lit); } .code .p { color: var(--c-punc); }\r\n.out-actions { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; }\r\n.status { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; font-size: 13.5px; }\r\n.okmsg { color: var(--good-ink); font-size: 13.5px; font-weight: 600; }\r\n.tips { font-size: 13px; color: var(--muted); display: flex; gap: 14px; flex-wrap: wrap; }\r\n\r\n\/* Validator and extractor results *\/\r\n.res { display: grid; gap: 12px; }\r\n.res-card { border: 1px solid var(--border); border-radius: 12px; overflow: hidden; background: var(--surface); }\r\n.res-top { display: flex; justify-content: space-between; align-items: center; gap: 10px; flex-wrap: wrap; padding: 12px 14px; background: var(--surface-2); }\r\n.res-top b { font-family: var(--font-display); font-size: 17px; }\r\n.res-list { list-style: none; margin: 0; padding: 6px 14px 12px; display: grid; gap: 6px; }\r\n.res-list li { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 10px; align-items: baseline; font-size: 14px; padding-top: 6px; }\r\n.res-list code { font-family: var(--font-mono); font-size: 12.5px; color: var(--muted); word-break: break-all; }\r\n.res-sum { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; }\r\n.empty { color: var(--muted); font-size: 14.5px; padding: 18px; border: 1px dashed var(--border); border-radius: 12px; text-align: center; }\r\n.ex-pre { margin-top: 10px; }\r\n\r\nfooter { background: var(--navy); color: var(--on-navy-muted); padding-block: 26px; font-size: 14px; }\r\nfooter .wrap { display: flex; justify-content: space-between; gap: 12px; flex-wrap: wrap; align-items: center; }\r\nfooter strong { color: var(--on-navy); font-family: var(--font-display); }\r\n\r\n@media (max-width: 1080px) {\r\n  .cols { grid-template-columns: minmax(0, 1fr); }\r\n  .out-col { position: static; }\r\n}\r\n@media (max-width: 900px) {\r\n  .hero-body { grid-template-columns: minmax(0, 1fr); gap: 20px; }\r\n  .shell { grid-template-columns: minmax(0, 1fr); gap: 16px; padding-block: 16px 48px; }\r\n  .rail { position: static; max-height: none; overflow: visible; padding-block: 0; }\r\n  .rail-group { display: flex; gap: 6px; overflow-x: auto; padding-bottom: 6px; align-items: center; scrollbar-width: thin; }\r\n  .rail-h { display: none; }\r\n  .rail-item { width: auto; flex: none; white-space: nowrap; border: 1px solid var(--border); background: var(--surface); border-radius: 99px; padding: 7px 13px; }\r\n  .rail-item .dot { display: none; }\r\n  .top-note { display: none; }\r\n}\r\n@media (max-width: 560px) {\r\n  .fields, .row-fields { grid-template-columns: minmax(0, 1fr); }\r\n  .brand-name { font-size: 18px; }\r\n  .card { padding: 14px; }\r\n}\r\n<\/style>\r\n<\/head>\r\n<body>\r\n\r\n<header class=\"hero\">\r\n  <svg class=\"hero-art\" viewBox=\"0 0 620 300\" fill=\"none\" aria-hidden=\"true\">\r\n    <path d=\"M10 270 C120 250 160 200 250 190 S380 150 450 100 S540 50 585 30\" stroke=\"#FF6B35\" stroke-width=\"10\" stroke-linecap=\"round\"\/>\r\n    <path d=\"M540 20 L600 20 L590 80 Z\" fill=\"#FF6B35\"\/>\r\n    <rect x=\"360\" y=\"190\" width=\"18\" height=\"70\" rx=\"3\" fill=\"#4F46E5\"\/>\r\n    <rect x=\"395\" y=\"165\" width=\"18\" height=\"95\" rx=\"3\" fill=\"#4F46E5\"\/>\r\n    <rect x=\"430\" y=\"140\" width=\"18\" height=\"120\" rx=\"3\" fill=\"#4F46E5\"\/>\r\n  <\/svg>\r\n  <div class=\"wrap\">\r\n    <div class=\"topbar\">\r\n      <a class=\"brand\" href=\"#faq\" aria-label=\"Onground Media\">\r\n        <span class=\"logo-tile\"><img decoding=\"async\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAAC6CAYAAABBVJPBAACZj0lEQVR42ux9d5xdVbX\/d629z7llWmZSISGhBULvxS4iFkR8tlhQUVHsYu+\/h1Gf5emz6xPF57Mr+GxYQAUsSJEeQoQACSmQPn1uOWfvvX5\/7H3uPTO5M5lJoTn787kpM7ece85Za6\/1Xd\/1XYTptYuLABAuEatO+t+PRi5ZWSiX+gsdVVaJGoy16iixtaVYJKpWBnWtWmEioaqpQaPsCh0dabGnJxFjU1unmqn11oudJWO5O+2k9tqdxbPTI178YkOkHCDwj+k1vXbvnhVx6s8f\/Wj01GXL6gQITZ+UyS7Gmqu\/XbTrr+wsp4OzpNI\/X2uZT666sF4ZmUMu2TdmnqsJM2BticUWtKlrkoTJOjiXMmuCcwJwJCkpobjsAOVUVEzFSd2KHRGhbUbkAUSFrTYqbCcVr6W29nXVOj0wTDMGVr7ukoGlxHbaIUyvSZt9FOGeD71kTjy47bChwcoTU9X+z767R3592l\/+YqYdwLj2HmGVTQr622+Z115ZeWR7fevh9aS6P1gWaI39yNb3dVKfWdRGi0sAERAxRAhwABygXQoWG66C+KABArAGWMM4Acj\/myCwTmDDi1Wk4ISQGKnrKN4M8NrEqY0pRWttoWN9Tc9aUZ13\/F3uBV\/YfiTrBNnnTK\/p5Xd6veEzr5\/n7r\/j+HaiE+3AyLGxGzm23+n9bNe8txz0rb9+PYtjp1dYctNF5Qf+fsmhZRk8DOnIwWLTQ+KiOhi16oGRqc6OJQFRCigAMJC0DhGAyD8gyjsA4eBEHAgW\/kkhiufwNxGEGUIM55xPKIghUN6BsIBF\/OvD28ExHBVQkZI1qrzJcek+R8V7LUUrbUHf1zH74Ls7Xvq9e4jITF\/Nf7215sJzZ7h19x5ZSgaPRjpyeDGyxyEZPqQselbBWQjVsTHu2mzmH\/OKRZ\/77Z+mHYAI9V\/3+W7ZsHxhsunuM0oj25+N6vZFxRgz2SVlFhNRTHCpAXMEsRZEDoBFIy93eUyA\/cMxQIAogZAFw7aCDyDZPwBQ9kZOA6J9xAACxIXPcoALPyMFcARwAc5pGEJdtBuuWN1boa47C\/MW\/7FjwbFXF\/Z\/\/ANY\/OwhIprOFx6Da9WXflcwm3\/Y0zGw6VAZ2PTM4lD\/U1RS2a\/I6HHpSLm9KBAxIMeAA6REeLA0+\/bNB5\/4ohOWXXbvv6ADIEAcDf7ouTP7Nm49js3wM9tQOQ61oSVFbebFNmWIgYo0rLNw4sAscAKwKG+EsGDyxi8QkFDuJHJj9xcCLKngAAw45Owk\/ndEzSw+ywxGHSYYDgShppOAs+DsPUCNiIGzN1MMKxEqEqWiyxuqiO+WuPMG1bnP1f1x162HvPLHgzmPNb0eZffuJZc4dfh1S7s604GD1Ujfqbrae0qcDB2kbHUJGdNZIiICg4UhjmB1CqEUKnVgQ0Apxrb2ub9bccarzjntNcv6\/4UcAKH\/knf02O23Hka13qMLrvaK2tDASWWVRAVOQLYOgYTQ3Ifk1knY0AVMHKxSQJCwO0tzM8\/OYg5T9a5CgYjBsGBxfvPOGb6EvIB9NJLzBsGBAHCkGs9WEmIGl+EJIXoQhjj\/PCIH6wxUFME6Rp0LGJZ2Q+W5v0y45\/fSPvPmBYc+YzU98fVD00DiI\/++vf7CZ3bO2jywsDgweEBR5EhrzTO5NnRyO+qlotSAeqWRXjoBHAEOChQV4JQD2CBOCOQiGC663vZ9vzznkjvem6WJj20HoCI88ON3LTSrLn9WRzzybJ32Ha9NfZ8CSQRWAAnqSQ06UpAkgSIHpRiwzuf5RHAiuYwBoEYO3\/hrdGjfMFdAhAHSYLEgCIglGL03\/uzfDAFJCPOzCCCkCC6XIqhxq4EM57T\/TBIAFloTrLMACKxjWCmhivZ6qtpWG9G3GSle1nHUC\/7Ueea\/bwWmAcRHTlYq6vbPvWcmr\/z70R2Vrae0m8qRJWeOoiTZJ7a2R\/ttwaeGzjTxJQpeQAGWAasYLtxXUarAVEKSlka29xz07n0v\/cdFPrV8zDoAwsYfn7+\/efCGl8X1gdNjJE\/pcIMapg7FDJM6gBxYAcZaRIUIkqQg9idRnPjNPAP3OITdjY2X0Ny0eZT9y5hY3r9NiBoa8T\/giMLeT2DxvyOXs3AKhh3yA4bzn+uaiYOAIMQhhRCI2ABKknco1IQSoGNYKyBdgDCjwjOGEj3jaleY9evZR77o5\/SkN\/dNm9\/Dt\/r\/67yevpW3PFWnI6fa4cqRBbHHdUoyr5zWAJMAyvkKkfh7SITBIHB21xEBZOCcgCIfCTARYAnsCOAYg6awvn70af8257O\/uKXFnvUY8J4rVsT3X73shPZk3TNRWf9vbaq2JHaVghgLhoa1gIiF1gxnEyhNAFzYfbNzyyCtAbGw1oIYYMZoLk7wCuK8ARNx7nfZe7mwf9tQJsg5BvaVgkbGIBxAQGmmEaOuTHgtBy8kHIxfw4FBsGBJQCGGIDDEOrDyYCSsNOAJJ4AlAikNoAirO4f603hFrTD\/suKCE34970Vf+Cd5pHN67b1dnv7x0bfMLW+4e0lc6z+0I9l2fBebE5EMH6DFdClTZ7YO1hCYFEAhn9cedDZGoCmCIoa1niemNYPZwaQGSgNiBUyAs34LclEB21TpL\/POfNEZ9IZvpo8hB0D43e++WDjuwT8sLg5ufnOhtuVsSgf3KXKNBQKxAhEBOb9XWzgIWVAImYgABvmQOzgCasT5WT4uO4KJjZx\/\/FNILA3nkkcAGzbeAA9oh9h+5xQtamAN\/q0dyMOSYVdAy88VoPG3YgVnAaUKqNiCqbryfbr7gO9FXYd87x8Lztl02mmnTZcTd\/v2JFzoHD\/\/Pe8pHdw91JkMPHBwZduGZyd9m55edmZR7Ex3wdmoHDFgDSAWsEkj9XSsIKwBGL+ZNCJP8kElUROLEhm90QA+FDAKA6qE3rlzvnjQ9+575zhZ66PRk94Urb3o40+2Aw+cPcNsPWuG9B7IZqhhGA4Kwsobv3NgsRCSEFY3N3NqhPQyxjCnYpAtr\/1Ofr9nPmdnx97y+RQwChEw+5sJlpHqLtSinluruvtSnnXQz2ef+5O74aYxgl1ZV199oe6+bNWp0eY1Ty67viUFZY5S9ZElpfpwMbYJYjjAOhDHPsmzBkoJxJmGIVsifw+LA4W8vYEXU4YAtV4uVKyVKmE7l+26ufNfe\/x3ln8v\/xz9qDX+P77lkN7Pn\/eKjpHtryphaFGJq0CaNEJd4wBLPsxmctDK+viXd3SSInseDc8ijId2s5mC95BQ1eAIxgnEWUTKIXK9iGq9x8Xcfky6afMLHvzM0d8uH3X2JTOetax32qSntqrLe1Vnf99x3SPb37MvbekeoQpMmqKQAhEYRAJo5TGh1G9OFgasfEWKGFAiENgGYJwZ\/mRuWYKnjAg5OB0PdS08cDWwHI\/iCIAg1\/57z4M3XPnMTrvtTVFl4xMLMkwwIX8O1TonQEoMRwoEgRZfuyfJynA0ofHvzs48+rXykEUAu3AmIVZArCDEMOJALFBZRUIARDEGko7htG3Rb+uF\/b48\/83\/cRPRkcm0aU\/Bz37vs22b\/vSD16i+de+IZOSgsrJQ1gIu8Lk0+6jfBOxGDJg9TOTzNQag4Uggkrb8DN7JPWZQQH\/XohWzXvCG59GL3rX6UeoAGCs\/98QzetKN7+lCerKubZuhzYgHxhhNy2cFAcMKvIclByVu1NmadgChMgEPEAoBUARLArGNCiicBUQVYHQXRqS8DsWen5UOefoX2s78zw3Tpj21VOCI31z7+OT+1R8rVXqfomwf2kp+88+Y4iKAdR6cYRLPNhcGJAIkhuMEoKTl\/coTpKAOQKrK2N5z0G\/4Ze996T7PfNXIo8wBENb\/z7mLy\/3LX6Wrva8tSm1f5YbAbABHsGkKYgXWEWAFzlpfVycHwDTP0Jidf6IUYFcNc8fXyZTD9V11AEQ0xVSGANZwzm8\/zD7ktOHzLZG\/IR2jEBfAIFRrYtO2fa9K5h\/19b79n3\/VIae+cnDavCcPCPV98u37D95xw8c7k43P63L9HWRHgNR49rgCEguAGdoRtIOnlDsdcoEUjtIpOwBhoBJ1YmCfoz40\/+vXfQriHj0pwE2\/vrA8\/94\/nR5VNny8vb7lqJgNQ2kYcUhcCgZBKR068BgK8Kw7lwJZJYu9UTliOOYABsqUgTTZBUBvyg5AdlpY2GMOQECoiwYzI2J\/zjL+g8cDA\/rsBBEJYFOwApwqYit6hpP2g3+Qlhd96qBX\/3Dd2Jtqek1w3m+7ra3v+xeeW3tg1Qc7a9sWlNN+kKSQCEjE36exIyiboX3KXxPysPZUHAAcAK3Q3zbL1uceeOw+X75uRSuc4BG569\/xrVccNqdvxRs7K+teVnQDsyHG7+IM1KgES4SIav5bCoNAIOegnIAz8kvY+S0DCSk4YhScg3JuqoeTI\/\/IVJz+bkUAtJPPbOmoJnl8jgiGNAQEJQbK2VCyDOVFYggRhD1nkcn\/7QiAKqIqM2SYev420rnwi4vfdOUvxKbT1j3Z+0IpLH\/XC09re+DOZd396540g0fglIMNiVnkOADVFpYBwwBbQDlqGa3yeNffAaI1Nrbtc8+2qPuJx\/5g+Zap4AcP19lB38UvOH3e5usv7h667+1F1zsbziDXOAdNCQpSR+QctAAKvsRH1GTw5UvrLIAWBy2eSSUZ1XbMo9HX2+rxkEeMU\/tMERl18YlowvdgEWhJEUkCJTZwlRgkDIgCIwKLZ5FxYEEJAcoBXKuj3WyhuXz\/k7srt3957VcOeW\/\/397UPW3ak7xW1uKoz156dffxx1+AtvKNFuTZGw5gIZCoxs3rGDAaLbgjozeI\/PXPMAViggWhzoVb+zqfWJkqgPjQnxgRWvVfZ5xjHrjxK7PMxsdHMui\/iUKjQ06gEDmLSCxY\/A2pMjq0+JteeDQpnxwQWUFsLdREOySN83jUpZuTOWiBEg+QsgQaMoXyUyCZjHV8JAAcgYQA50Cugh7asqCjuvpjw7dd8Zn7fvTSudPmPdl73amNy28\/KqlX5zD7SgCDwU4F9F81OsfY7nh9J7rG2Z4lAhgqIEHhvlXmmPp4t\/wj44Rc98W5D1xz6YejyvpXz8BQB9JhKLZQGf0177JkNJYtwqFttunTSCSo8bjRRDsGHNMuG85DkQKMF9pPRFgaD7+Y6HgdOXC+uXFUGwP7Zigmz4QkX2rlnLCRVzcDEBeR8Ew3RB3Xph0L\/32fV\/\/h6mkTn+Ae+s83z9t4498+VKxve00Xhts5HfYRlmI40t45Zzm8wKdiyHQoJreL+\/tFYyCaUd0254i3HPytv32nFVbzCIgACBsufvGhA9d+5zOlwXveMpsHO8hWoKPQEisERwoWGpZ5VHIvpAB48QzPu3cgcr78xwxLGkK60YDzWOl8aLUD7GxXaPk+4nERIOT7iiAqS4dcMPrQjxjq0cYxUlIQpQDSECjYoQQ8vJ1L1TVPVL0rvjx86Qufsebqq4vTpj72hDPWv\/FZp27\/x5Vfah9+4M0z4lq7mIoP31lDLIHF948IWYjyBk\/ON\/5k13gy15lCC3tdqE+VimvGYw49rExAEeF1\/\/Pap8n6v3+mkzYfT5FFWq9BM0DOc9sdMjokg+DDI8W2gYgS2cbO5EFCF\/RzFCz5nJZDzsvkcl38k9zJ86odMlHuIHvIHY790AkAv90M5Vh874AlClUSHwYwO7A4cAD\/IIzwPyitYV0KKwSKYth6iqjAsC5FiSIoO3zkyObbfxINfeIjIvLNaXmyxr2u17352c\/mTas+X7ZbD07VEIYNQcce9NMpQNCASwHlmt2omQ5N0JNoaEDkeldkbJrm4wkQASqO7kkL5XvHuz8fRgdA6L34rGe19d7\/pTJtO5jMIBwztKbQ55zLZ2CDpmaQ2goyWT5FkkaXbSPnhxfGUJlpZE0w8G2UJADYNUqFlpomRQDYUV7zY5Q9Umi9FCI48rgDhHw3X\/Yiagp9kWSUGwGFpqNGVcHnLxDKficYrd4V5MVGARq+OUm4+Z04+4JjL7KTccuN\/gBdaHRSIYrK7jFBjiqUJf\/hLwNN3jGLrUJpDXGpb1d2DhGlaDMPdpsh86ENFz\/Disi3\/9WdgIjoB955+uui3ns+3OX6FrBLUWCGC\/cfKQDWeh0KEMiRP\/vs0zQwgR2Dshs1S8lIYMkrVilikJVwC4am9EIMjoo3L\/7MzzfhP+mR4wBEhLZ\/7nFviTbd8rZ2GjjYuZrXzwv97KAmuS9D8YGgxyej3gg0du+T\/GvcmK2Sms8PbNesVBjspXGCGQA5aj5R4PmZFLrqSBqafkTBCYQKQz4okLxCAOUkRCR7j+AeWLCjcp+0ACl9Oa5RsZPMwbWoD+8kVMy0Swk2MM8wQZTho62MJqx8qzmEU0BUqCA4OLFQro4Z8cD83qH7P97\/P89eKDdd9J904hsG\/hWNf9uX3rfg\/tcd\/\/Zi3\/rXzuWRmeLqEIlAjiHkAltPYHW4vbKSlENOgCJ3D2Y3Vvi5E18mBAHahIvqfOvrEMf1OhdXTOSAH3IHsGLFinj4q898UTq44ePtujLDkQXINeSx8mDYzvLgqTfxCITHnAvn9f68sAY1pbgAkJbQhcV+JyeBYwcJOycjKPeKL6EB3DRiltB5KDvE6dKIJCQTCG7AFAzyIo6Ufx9AQhDeDN+peVOQbwSeNIuQWrqXSZ7CAA4G5+ocg6G8w5UUSglsaiE0ghIwOxmU922741f9Ild\/hei02r9Ovk\/Y8p6XLq5e\/4tPtNV7X9Clapqq1pf4JPVn35B3wgSkDCACIBZKAB24LSxZ508KpwHDGgwF5QLQnfW5NyI0H0VYzRjheFtFF9dOdJgPqQOQf\/6yY+Nlr\/9gUn3wLTOLplNMCpemYG69g42HmtMu1uUb9f4QA5OEklaofze6rIJhZkZF5BoOQEKozyGL4KxxBq5RupHQlyCcjtYADP0JWVMSAY3W5GbuRqETpKk66GMNBQfbdAKSVw1+aABOCSKlLOSrBJnzEfIpKjFgLVQE2HqCKCKUSwW9tW\/lsg3f\/o9FIvKOf4V0QET4\/jc\/+Xy96eZ3lEY2HVrkxF\/FIOFFKrt2CiQRiBwEBn4zDBu8eOJPdieI9huTJeOfLz5N1SCI8+IfUNlGwoCOwaXy\/Wbm\/DXALTvbCx6Ck3L1F2YM3\/ydD8jIprdpVy0rFihXB9u0wfCT0Q50pw5gqhGAZwz7sN0TLoLXzLbORqO1hNIXRof0OUMlaZZpmtu6N14bWoG9FuAEZ7xFDcYohg3IPAfcwx+K83m2hPxvzKwByefsY0Ch8S6y2xXKcTgeF5ykI09cUc6fT4gBIoEowAggSoPjMgbTGUOu65BlG3j+t497zXf7H6vGf8fHX7LfzAf\/+ZJ4+4YP9Ui92xkLSX2KRdrASSYCS3AowEH7G4kSACZsGJm6tK8KAA6WBTaISxU43HuGfB1WPPht2XqlaMewVJJK94JvdJ\/\/0XfT45dWH9YIQG77bNvA77\/9wUJt\/QUFrhYsA86mPqXl8cPRVjs97Q4rTzzjqmnN2Q46hiuQV\/AKuxzBs7OyyNsFjT8CvAcOr5Mc3oAGoyuHaGaxPloglyLekBgAjH+qUHCGIe\/nIOTBjTim8XuPDbRWFprMZIBWvIIWbqOBRTRPYwASHQOqANRroBiICgxTNyCMoFOpjuGh1Z+Y11atA\/TVx54iMWHj519yRLL85k+0J9v\/rYwRuKTuRWG1hoUNCtMArHe+FuKN3jlo5xo5vjD7yhc5jxOIgC356F4BdfCQEtKauSQUAezrZSzGO2cnMAq1qrhbeyYw\/nH2oD0P+FWu+sVriyPr31rESMGYBIQEmkLfucsBcnv9Ekkob3vjy2SUG9EHN8+ITxcC10B0ozNLJIJFBEMRDEcwrOA0w4ROOsfN1yJoEkh4+MImoyHoCT8ZCBQ6vqBC6Of7FbQ4KFhf6iQHx87vvA1WpIYgguT8+M7KhbtboqRQbeCQqXCDM+D7iJ2xgIr9OasLtGLAWEg6jBm0tdg2sPpd67\/21Bc0PP9jI+RXd7\/9Sc+PbrvpB3NGtj6vIxkEbApoAiuPO1l2QYFJBU1HhrABcQLFqc\/ds71ImncIiYAdoJwGUxlDesY19bj80qG4+70DumeLi8pwWoMUgYVBhsEWMOKGRmK9amfHznv5xPDaTz7tdahs+1BMSRlkoVTzg32k60klO9LvR+9GrR67shh+Ug+JgcA3xBiOYJRGAoIhwDDDsEZKEeqiYMjzMZ0kIDhoC2hLiJ1C7AjaCiL2ipuOHJwCEDOcBwl8hYPFl3uUnxgETSDlpcLBFiGhAxR7EU\/FDUBXMjFhhteKE58OKKRQUgNL3UuOM40LBDrKhfzj9DdM6dzm2IPiAv+CUp\/fsicNQTQk5LFEBlKvoMMNH9BZW\/fZjRed\/rTHAjNr5VdeOXPtuYd\/cO7GNV+fWek7tpjWyGsqkOdQkAWTRSwOkdNgG4deCwctFjpoOYLhSysBXCIxIOsC3hIDqj0dirov3dhxwDu6Lhn63Zd+tuW\/e3sWvqe\/0L3Ct2mmQTnYgJghSX1gxqLFqybj1Pea8W\/+\/DOeV6qs++9Cum1uxHWIGwn5dRabMlSIt2UcmuNYtH93UgBCM2wV8S2vlpSvpRNBiYOIDUiqd06e7WbA5IJn9tEAiQBxAc441KytO1DNRcU6FcrDdVFDqbV9DDvCEOOhBz+900ExRGJitBGoC6B2J67DOSkwIS66pNRedAquDtjE90E4hzTxNqt05Ms\/SSBARaFXwjXnDDQAxVatozmOv5tibEBZaZS4UYd2DaAUzTBK4uCxJLDaUjgFKAuQFOCgsF3Nvrt85PNf3v7sL97yKN31ad3\/e9bhdt3y\/5xZrT+7M0lJTArSoWOKLIQMBM2yPWzkdwDyAzuyMnWjeSdMnMtmwTiO4VQJIygPqLa5F7XPXPxR+sKlo0L6gY+9evHIXX\/+SXt127FlM8JEMZLUocqFq7p\/M\/QM8ky5h9oBEDZ95fSzo761ny3Utx2ipQ5SFiADBY901rkIgkLRJX43Zpn07bjLToCakiCuQTOOoYQC9zrxQFYOJgABUApQCtZp1F3sEkv9beWOjWC5R0jWuKhz9YCV9bo0Z3OKfYaoZ1616nSFyyP1rZVO1xY7N6PkvUr\/euaiShSQFqktKdWtFJWrliVFp7aVedHg\/Yu7uX9xWq8vZraLlEu7i0gLzH4Ld3V\/k4kGgBSWUogDlFCYYNQ0\/vHy\/skIiLZUSgJATvkwlr0IuaPU3+EcIgwBINqXRSnDMpyv9BiCcgxwhKoqY2th9i9Ki5\/yljnP\/ubGR5Xxr1gRr\/7Ka17cU9v83qiy5eg4YnKpIDIMFoLYGkQ7iHKBj5LdftRwjAjVo0y2xoGhnR\/+QgaAjlAvduFB1fHPyox9P4Mjn\/5\/R7512XCr4\/n7+Y9bMr\/ywBtnVPrP7dJqxrABBpz+4n6\/2v5O2YlWA+0N41930fOeEm+560sz7NZjlBkBi\/HcZgA21CuIyH9Z8lp0Y8UOxiqf7ikHkH1rJ4HlLhqavZaAbztuJrcChtUx6qrcn4i6K0VxjY4776va+M6u\/Q64s+OlP79j7yjmEiqXv3O\/gbW3HG3r\/UvayRxqqkNLCoLDi5zM1EjgTAVCKVgb2CxvJB5N\/hHxgyJ2MG7skgPIqgA+j43QuH3ZBN2AzAnkwJRQ9VOZCrEJpa1SEX0mskn3EV+be+LXPkTHHjvyyMf5GPcue8ni4saVr42qm8+dZYf3cfUaDHw6WSANVxcoaDjlS3tELpvx4rkl+Z1evNi3I0CEEBGBE38bVss96bbCzMvNooM+v\/izl\/95Z\/eZiMR9737CedXe3ncbxwtrcdv5h1584\/8+5CnAgxe\/fJHbcNsPu9TQE3SyHZGrQeVQ9oQ9aFWQmg8hiQPP34xzk+7JKEAa5DkXEFcmDuGr98pOFEQXMYxy1RW7Vqpy258SV\/+jiTtW9885ctsdz\/t2ZelOwqo9e9MpXPvT\/ywttH+dFfc+cGBB+AxbHTi9hOGjizRUhhn2RKpQUqGxRizYQUK2eW55yucvc55wEUh0oCwk3tAzMFVCUdq7\/CY1WrwMmVgDMIHKZQzInO3JzCPfNOecyy59ZFcGCKvfd\/oz27asu7DD9J+iXC\/7+0eBXeql1YK0v3Iq9PNZgGzDAZhwz0ZWwEJwwv5ciiecmZQBFaOq25N6135f2b7o4M8duexnmyZ7XkRE3fehl5y6bWj49XP2W\/ipA9\/\/jbsfUgcgt\/5ixqaff+SLXXbLuUI1KKohUilcEgQQw02QMeEQgCkZo9O\/t9IAylRWM+osE0DOjwRjjUS0JNwxmBRm\/7Uazf6B65x\/y36v\/MC6R5ISrshN0ab\/\/ez8stt6mK1sfF3ktj9NJQMzSmwDGjcmzG+BB+yOA3AssOT7JdhqMHRoVEmapUFROXzZhPIpwxkHjn0\/t+8xUkhUJyptB\/69fMATXl98xpf++cgM+S+J7\/nSha8oV7Z\/sCcdOrgID9qSNQAznHUeT9GA0gRnJfN7cE5BfL7mqdRhxqML3XpNvX+BqAi9cdf23sKsz80++yXf6H6+n+A71bX8W1+ce1fXvtuWLl1qHzIHICJ016ee+O55I6s+NsMNlBIREDtwhvxbeINzo7p8GlN3GqkRNSnuk3MA5KehZiBfqCtKrnbO2edJqM0L+bRDAU5pVFFMU1W6S0qzf1vsOeDyvkOPuXH+iR+rPNJr1RuveHfbwH3\/OKVT+p7bkfY\/U7naITGqim0CiIHkCNaUIw167CnfVjpaDIAk33ad\/d6fV6cElsOGLwosOiBYJgCDHgNoTk81zTqvYv\/RRsBa+V9HMarUhVr74m\/zfs9734xnvfsRNH+AcNOHn3dQ98Y73tpd73t1lx2YQYpAqQSZHuPjeY6BWMHautdYUH7ADxk\/lVfCOWLy032cCIgDJ0V5JeuEizIctd8w3DP\/C3ce8IpfnXnBBfWH5hvuodzogS8\/4ZnxlhUXd9nhBewshLyRMY0Zlkk5TJ7Ez9CjJno9yhGM2uVHgxmZhJcTBUtRUAcXEAwce1yBSGCcb9Ih8pJLjjVEgCiOUXF62Kq25dWo+7Lq7GO+u+gVP9hERI86hoqI0LZfnXeI23rnqzCw8ew2DB3SpoZjYwyUFhgDMBOsFUSkYFPfKMTsz79vqx5DfoIOirTZxEHrc\/3s3DcaU6jBDSDKlyGbP28ItIICdqCC4QgEBuAYI5hds3OOedeMV\/3uvx8JjnfF1V9tL\/3+549r3\/rA+9urW08vuyGAMt1D7WV8XYhwiPx34cDYy1xnnRCxhjPSPA8hQmIIxFpQWWOwOKPaX5jzf7VFx1546Ad\/vPqh\/P57xAH0XfzS4+oP3vytjvSBEyJTC7LcoXNOAB4FhVLuU8PcPoz6UXPzGPVct8N7iISpqGDPjQ5NEUwOzoXXKwVrBZI6aO2HYpp4hh1ICzfYYs\/F8X5H\/bl76Y\/WjHUwj9bSVN+l5xxZ37jirKIdPK9dBg7SqEDEwRpv6BGpgHc4X3khAZzK3QgOzV4Jbg4TzOVRvmIjrcKy\/MSFnPZChoZriCtA2HleAFkwAWnqwHEXtus5Kwe7lyxd\/OrL7nw4d\/3q5y84sO\/uqy8oVre\/qNtV9kVaCfm8wJFtOEB2vnXXE7Osxz4zZTUHqMj7BxEC6RiSAtZZkCaYNAWrGL2qtM7OXfiFfc946w\/o7Ddse+i\/7W6uNV+4YEZ35covxXbrq4ypomRr0GIhLnTChR2ksctnPP5R99SOg+8bu39DvsvtcLM1k9kGraDZKRnuY+c0JIq9tJg1qKBzQHXu8\/l6234\/6Tr\/8lWPPUoqABHa\/r2lpxaG1p1Dg5tfVo5GesTUPSBlEj8cVQUTJYJY1WxkItMI27OowKuBacBFAFsIG8gUz5tvmoo9e1EZTxoi8W2xqgQrgCl1YKue982Fb\/zQO4gmprDuLZR\/3YfOenLbg3d\/uGz7zyjaAXK25tV6EIXqcN2z+ig0gxlPHhPxHZo6E+\/IuFAh9XWGwa4AYYUa1ZGyRjWac13SvfBTi756zWUPl7S63t0TVqzf\/HwafuDsUiFF1eW61bKQUgTSkPJyDW270YH2WL0ut0M5qjmxN9cNJ5xzIm70+G7li6xc8Fz9QRMP2dL8P9Z45sX7POm1fyqe+IbHro41kcwErtt4xWeXd62\/9rqRvlVvj+zGk2NVB+JM\/MCBRIfdP5BWsl81EGzvTRX8cNVd3y4EjgGWNKRoHkzkwJIhAZCmYNuPnrbiWb0\/+snPAVzxUO6DK97zonlzh+9\/vt545zvbzPbFyg3DwAAxPLvOid\/xIVCuOWHZKJ+vsrBvKw9REhHgTArS7NNPcSDthRQSPWt4a9zxm9KBR35q0Ud+sfzhnKuwWxHApq8992i34ebfztPbFtgkAWndUN0dJVOc28XHdvXlxS7HOoDROWU+RwgYAnMAnBC6pizAzteiIwXnBCkXMeI61nHb\/E\/0nPayH9Gx7x3Bv9IiwrbvvXxBsuGGz8XpprO7ymlJsQGMBdk4NEIkQE5KzYWoTdjXsDm0psJGIQWwU4wApLEhZEUCQw2SIyARdFyAWAPiMnppv+\/1POO219ORtNerL5dccok6+uqLjp83uPrTHXbw8ayToqGqj3IU4Cx5ObnAtVC5+epZRQSOwE5DHI9KgZwziAoFmNSCFUMihUF0PDDcMf\/T+z3jTd+lf3vdUP5YLsSFvPLpv+mopu3REAB0+D9KxtDw8DCstaOsQSklSinRWosxhqrVavKPf\/xjGFPIZ3fdp4sUtn786G+1Da96ZVknsMYjm9kpGA\/Flxb9qZlOT0Oxr8Er3VEgJHMWjgDRvvVRZVLVCFx8ctDFMvqkY0Q6F\/ycZh71nzNf+j8r8C+81qz5TrHr7z98sR5c9a4o7T22IFWgDpCVHTQFhAgmiKNQUA5WLq9mMrkRaw13Tl7xiMWHzcIcuAuSBYbBORDABSTl+QPbCgvf+80Hrvr2smW017bHjV9\/45xkxTWv7RrZ8sauat8i2BS2xEijCKn1HXpFzRCTNkR6SAjKRiCjAE5glYWI9qlNaDFnZ8HiPK9MF1EnwnChnEoh+sOco0\/6JF3wq2tbHc+Zj3vcopqtfjWBnFTnyHKhXRhMShzBORbPJoeIwDknzjkREVFKWQBaRK4G8K4bbrhh895NAYix5fNnnlWubz2zgDpM6ntYyEkTvR87ghtj6acyvjdqSCHtKLY5SgjReQUdgQ3TrgUOhITaMICZ91fa9v3ywse\/\/jt03Gv68S++DjjgNTWAv9\/7fy9aXtly9weKae\/z2qJNJSWpZ6a5ULrTDmQtWAlcEEsRl4mSZAAhT3nvcKJCnhyYcMQ+wmBpFhpCM1VsN3YVR0Zeds78p\/5+GbDHB5GKSPTgOx93Mt9yxVtn0eCLiujTJnLeGjRAzqJEGpo1pJqAmWFz8yUFALHLxLvBJBAxDXVqDnJeDEadBP3FGRuHSjO+3985+wtzL\/jVpvGOy8QSDfbV902smwst4LTSIKmpxklqOIBRzVtxHENE9unq6pqSTe+SA9jyg7cudit\/\/4FyOjCTGH46NwguE74U7GDkFAA9ailgKTuEI5ngZVaVy2MGQgCLn5lE5GCsg1IC0hoWBVSi2TfyrKM+uPC8X171aCzr7b3l0PPCS26\/69cXvq1941\/XVmq975yp0phdDE0xwAq2VoEqSMj5JYeuuint+q29u6e9svMjcYkYYj12Q6yACDAs0LaCdkkfb83GZwVR0T12DR\/80ttmb3vzUe\/oqmx9aRuGDnRIYFmQRP73kRNEzoEl9U1frJqIf2h9JrIQ5SCkIVaBlQEpB0qkAVw7UUjLHdiu2m4cbuv5j96nvvoPj1\/67gmBzapzti5ioGIwRRBjwcoF7kCOXo3RJXJmhrUW1loamybsFJyd8hlUGvX1t78wTvqPYSQ+7fbZPaxFGNSZ5f+jwT2vohMmSjSa71vvJiRBtlpoh8MMWhxePw8KmjWYY9TSGMPR3N+UDzjxtbNfd9mV08bfei05e9m2whHP+o96+YAPDeie4RFVhC3GsLbuS6kOIEtg6zkU3JxQ0bimU23Jpkbbi8m01MJeWgJJGyRlOGEYpZA4RixpoZxUzqv9+vX77ym4a83bTzlTbrn0p9x33\/vaqO9AoAabGsAxtCgUHCNy8N+XLJyysMrBqGYlg53XZyDlOSeqEGhSqSc7iQUQxxgqdw6vL835hjv08S9f8vU7frUz4wcArZWDgmgoRE5BZVgDebHV\/K6fOQFmbxvGGADganVqxZMpRwBrvvT8Y6PNy1\/SFSVROE9g54l+xHp03i4y\/gScSXSk7fjcMUmFMxAr4DiGo47UFnuuaF982ruKL7ronmkzn3jNfuL7h+Smm768ZcUHuoYG1r8ZdvvMtrKCqpmgUMk+zCULCbMDM7K\/7ELp1FdplMdqyDRo4GTY9xVEAuIERlKAGAXdBmdrx9d7Vz4doG\/tTrl26P8+O2fwhv97OW1cdcFcVdnfFhJUUodYEXQhgkmcb8TJ0s9GYSrgFOJyLFbX3NdYfD0fBBUVAFZIqWB6qbimuN+ST9WPfOGli5e+dXjSe6tiUVDiZQEcXDa3IfAxeJyIi4jQ1taGNE2FR5Fu9nAE8M+LP9NRWH\/bW7vqm45FWkGSWrggTggbQrrgobJdmqRVmS\/3OyehD4dyj1bCFBSigSaYaCIHKgKpiswWdP7v\/d0nvmra+KdglCeemM599VX\/Lt0Hvm642LO2EiYpQ2UKkxokardHprEQ2MZgVwBJFBRxQks22YaTEZdCs4UutWNQzUZSnjVYQbzwkkt+qnYp119zdbH6X2eeNnT1139UHlrzhe6y3b+uxXekEiG1BJdaRBpg9o07jbTHEdgC2go0nOc\/aOdPS6hIJ1AwcQkcxXCOUNHdI1vaF\/4vnnz+M7o\/9ufvHDkF4\/c5QAlaIijlIKoGx3UPoLoSCNGE5ztNfVW7XC7vrQhAqH3TM5\/RZYfPKmIEvpERIFWAsw4EA7Jpbt6FNMU8ciKeUx5fNR5kKEBEjBHuGBjCrO\/ofZ7y2aNf9z9902Y9dVxgv1f+7lebf3CGG64NfrUcmf2cpJ696RiECCKeuiuwAZPhHZqOdoYJ+jmN\/rk2OBohBxUZwDpImoBJoZgQtqalB92M+ZejrfP\/BvZd9Nelpy2dUvclscK9n3j2Sfd\/\/Z2vnJkM\/NvMZOt+HLQePIAHQBPEhgEcrlGG8CCfzqjpAaCk5hwXJwQnHudS5CWbhnQ7am3dV48UZv\/YPO4pvzxk6bKtu3IlmFkclcRL1ycQsX7yNYyffA0a09QljTTAGIPu7m4sXrwYV1111Z53AGu+8+ouvmPdeQUzMFfEgGKP6PqUXkMpAYsJctg75vMZeNcy9BfZYRiWhF4BJc03cDm3wMxIpFipF+d\/FUd\/4VOzn\/nMkWlj3sVIgEhA6tdbvnXqrIG+lZ\/o1H37sHPB0H0U4Mm\/Fn5yjeSmHSGDx0HITUHKUGtpQroI1RrL7NWESeBcCiKGiouopgWj45l\/Lncs+FrH6\/\/3cqIDpjxHYOP3PttmVvzg5bxxxQUdUj8iqg9DswGHKKNB1ZXA33d+qmQW\/jsWmODftI\/yG2EyOd9M5sSP3WYhjFBxsNa98Gc9pz33P+ae9bHV+MK1u3wdegHUlUbEOpRGa1BBak1Ee\/3IMaF\/lv875+Ccm3IEMOkUQK9acVxPuvVUJTVPIw3TM6xJveKps94bUHOuJDk\/drpRunPS1D8KDwnTfUgo8AGkOTmLtCcRCYIuP8FxDCiNEW6TLYV9f9E39\/gv7zNt\/HugNmYx+7xPfK+PFnx1hLoFHHsjIQOg5sPjqABnVZil5rsCjQaMIqQcIREFqCKgCrANrEAaZV3HhDRcYXKMWBQiIShdxgD1bBwozP+P6KAnvbbzDX\/75a4Yv3z\/\/H145U++UKj1fnaWDB3RZgZRkBGwqQMIoqUasEpBlIYDeTFXJljTHOmmINDUxJ0aKSoxDBiaFaIowoPx7PUbZy55X+mQpe8qnbVst5t4SqhC2To0rBepIYaxYefnJpU+L4uf31Cdc9i+ffueTwHW\/OILM+K\/ffU9BRnpdomDaIIUGCTWh3Y5iaOJzgHl6vqjx12jEXI1woDQFmgMEEW+1qg5QsUyqNCOamH2d\/XBJ7x\/vxf+YMu09e6pSOA0s+6S\/\/oC+n5Vqg7e9b5SNBgjqQGKIKmDg4KCBmA9JZbE8+BJIA7QWsM6gdgUTLZZ4Am9\/xIatLSwLzlSjHrUfr9um\/tNjuf8amifZ9+3z5lTbYMlDP3qA3O33HjV67bcftU5cTK0pIyE2Hmx1KwTMT8BnUkaktth0gG4oAHnIM41Zp5IoPxyAEBFFVA3Gq6ta8Ag\/g7NP+aiSz\/0f6uW0Z4hK3V1ddHQ0AayqfESalmpNDTVjaeNSURI0xQjIyNYtWrVnncA9u4\/Pi1C\/WnGpNDtRbBYOJc2u\/ZsLmMXjGntG5Mr5oTqG5FBQ8kmnEfnEWgGQLqEelpHocBwqQVzEVsx84byAU\/+7D4vvGja+PfwWrj03dWhKy78Su2ekcNUbfULtKoTuzCmyqaAjuGsn7hMAkTW\/8O5FAQHZyx0FjcLYEnDOgZSIGJPGIMwjO7eOliY+deka\/HX5p37f38pEjng8ikd630XvbhrZu\/6k6rX\/\/TtM5LKmQUSFekadDoIZh+hwHktQhYFtgi9Kra50biMCalCe4kCaQWQ8SPgRMEaAKRQjdpr1e65dzyAji8d+4oP\/GLmiWdX8OE9p6lzxBFHoL+\/H5VKJUyRosbOLkLjzskQEe98rUWhUKA96gBEJH7g\/Ye\/vEz1YlRuQ1KrQ3PTS\/p6fMiiWpbdqbW+lyDnmSVMuQ0hFzerCMYZL51kFcQ41Eodd3Qf\/MTzO5ZetHLaXPfO6njmsi0bvvvKD8FVF3Sr9BQzNAytYw+iOd\/c5RB2xlAZY+fZcMxesDTD1Vh5Mo3ECiQGdWmvmeKMK+p69n\/3vPXaPxGRxaunakSE+z5y\/FHFtbe+2yT9L203I4WIwkxMl3ojD+G8ZXhQzwZsQlygjaPZnOCle3zjjghcaiHEsI59G2+phK2utM21z\/3Sfq9661fnHPeafnzx7D1+3g888ED84x\/\/AHNWTcsb+sTVF6UUiEja29tljzqA4S8990ndyfaTtAzCqAKcLkPciGdzhRDP87vFN5FkI4+zsh150Kix6+\/IEg611gDMkGTa1RDnJZRjpUBOIy133VfT3R\/+xt0XrwC+PW2pe3EtePUPV2361tM+PDyw9evFqHKIExtmKHrwToIKMIdhFpBMf4FRFwsLIGaCtg5EGkMoJFHHvMsTLv2itt+TLp971tc34W1T3z3v\/tRzDuyp3P+iQm3ty6L60DFFFrLZoEzr50w2gOIwy1DYwZHxKYjL+vh9VJPNeHM6zHw0AkYEcAnQCiNRx2DSNuOyDfXox71nfPxPC487c68q9RhjYK2vmIwGzLml4YfqQYMkNNWld7L7R5vfe+g5s+3gQiaLepqAuNzYuhsTuBvIqjS8a5Pyn4l2oIEI01hkwAVH0ZhwGrwyEdhaqFIJQ9UoGYnm\/mCfj9x+2eTH4E6vXQcFHea97sort35x8beFqstKqBYpzCQQMQ3gtoHyZwItDIglKBUD0KhbBVeeu2a4OPfb7Uc96ZtdT\/7UVuCOqR+O3BQ98LH3PYt7V76jTNWnlN2IAhIgkTC1nWFIhz4UA6EYFlFoSU+hxQ\/obIatBEcajpwXR0GIYgJYXXeEWvvcdfXuBZ\/d9+xzvzf31FcO4qtn7tVTnqYphQXn3JiZGOPoZeTwNCKaMhV4Qgdw\/7def0Q31x\/PnMDVHKJCjLpNIaE3nFyOHYosEmhduW94s7EhDTXThDx04BWBrA+HUoW02POb8snP\/Ark1mnjfOi8AIa7jrtEqsNntyl5AjHDujSoWwUCmMvUGMnr4bECi0PKbRh0bf2ubdYf2+Yv\/tjdc99012lPPm0XJgMT1n7+zAM3fOTVb2yr957fiUqXcnUvv8vsRU4yIU5FSK0LOz+HLj1AwTT1+YPPysa4OTJ+EhMFie6oiIptqySlOX+I9l287O+H\/PKOpaeOVoE+\/\/zzo4ENdx28qX+obZ+FRyUnnHqqGx7pw+VXXsm1oSGOAcQxSUehXV7xilfI6g0b8Le\/\/U0NDQ1xCiAm2nDddddtmSikd84hijScy2tjjAfeenzAGIP+\/v49kwIQa8TbVj9R6sOLkLqgKWfALoHW2Uw\/Cj37rlEBpqD6m2ftZTXixtaeH6IpvgRFodwnyt9MxghUTFAQVF1pjek+6L9mnvHp7dNG+dCuA15zyf3V\/3n6v5vtK36k3OBcxQSb+JY+YcCkDEYRzCWoYCemVKwMo\/SbevnAby087d3\/oEPOHAQumbLh93712Yui4QefV92+8g26PrSkDSMsaa05iAQEV9A+\/CcLLQGYFoYV48lpCNz+0HdimZBCAK1g0zqKEChFSFUZQ9xpaxLfUCnv+w196NLLFrzmnf2tGE6D997b0zfU\/9mRSvW4O++8Nb3zzuU+e2UhVgRLDvWEkNRr+OLXvghjBdYBRhQ7kZpy6X8Q0XfHhuzFYhHOOVhroZSGMQYiAmaGUl7fIrfbNxxG9tBa0x4DAd0P3jt3+\/JfPaMg9aKQz5nYOWgxOUaOCk2iAtXYwaVZ+wHtcP5yvJ5mDpOLCGwi4IJGXABMalHlYlopdf33nLdf8Q9cMB36PxxRQLH99X8ZHvzY90q2\/h6p9pJWDGeBVAhRsQRJIwgXUKXCUF0Xlle47Yfzn3zWj+m4Zf3AlVMH+L541lzU7nuS2r78TcVq39OKJgky3DYIkvjhqIaUryCJAzk\/RRfhd0p8o0rjXmMFqyLUaikKMSFNayhGGuwYFSlJrTjn7j50\/mb+UY\/7+vxXfXUNcN24R1ip1VTNRfNUhH01Mr6D3yQ5lLB9F2\/ojA2zJ8iTqOqpQ0erevnQ0JBPfGl0zT8Tbh0b8rdG3PcIBkDYuOIvT2wf2vb0iAwMFCInILKhjJOV6dmzolh5uqLLkNasIhDGH3EOFGyMx3ajj9r4vEzFGnVRoMSCdQmD1H713ONf+jUiMtPG+PAsWrrUbvvvp\/0vV\/ueW9a8BKkDKQV2GklCQNyOCtpXSqnniz0HP\/H3PWd+bgNw85Q\/52oRfdgnDn9qNHDjW9gOn95uqh1sbNNWnI\/WHXGYiMxhh88iUU87d0RQzgYtQwT2oUCQolAQaBaQIUDK2CpdA648+8e838HfOOhtP71zMvdZX29d6uWSg4qh3EioYTXpwwFCaUyAzm90YAisc63CeaUUae13fq11o82XmSesAGRYgcjUtcVaOoDNV\/97O112ydntMlyyzvphtWGcdybWQ9lWLn68lq+lZqQLCelBuIGcl+hubv854GBUSCBIjICiGC4mDLjitnrHQV+ns5dVps3w4V0zN1151\/aeY74uSD5VouE2kQRWHBJdutsVZ\/2IZhx0Wc+5P78VmDoVVkRo1UePPWnmRxacW3aVM7k+uL9mQFQEQxrsErDz9w+PHT3WoCBrTy0mC8fGm14Y\/+aCarSGAyUWiBSs7qpX2vf\/Q7W04Ludj3\/Vn3rOWDqAt08uTam0lUN3HgPEXvA0N+NekI2e54baFZFXWmQQuFjcYegtAGzfvl18+K\/C7p+BfbRD\/j8e4l+v13cfA6j+9opjOoe3nEZUA5yASQGKYH1TVFOoFzZIfys\/9w0uEAKzRqAQxoSTM1rfJ1eLzWOGQVHYxB2Qtn1+tPAp7\/jDrtxU02sPRwHLyN3zref+vi2RlynZ+jjhtJIw\/xbtsz\/XteQLt9Bpp+1ShLbyK\/82c8PHjn7lnNqWN5XSvkMKbCHkW+6sU0jgEJEXLiUd0syg\/6gzXYJQMZIgY8whTbDCcM5HCnBBx7DYhmEpb0g79v1Kz+Ne8q3usz7cB\/xmagddBlBNyUlQBQr1RQrDZ5z4SUiQZm9ENi7ciSC11NIB3Hbbbejv70ccx966rIFSKpfnjw8CtkTed9UBxPWtZ3W64f0QZu4wXEAjfeMENYSRnDd2URgr\/NF0ApIbQeVapynkWwlYKcSKIGwwrNv\/SXOW\/A89\/mGQh55eLdetXb9e86Tqs345ZBIVF9WXN+xzxK+OXPqzYeC0Kb\/XAxedX457bzqVN93yDq4PPLudjXbMSB2gnQMoBTFBk0CUhOYhBluBWAdq8E2a24mwF\/CEAUARrFIgErD4u3YQnb0jxTl\/Lu9\/0seufOP3V+zqjMeRrWtRbCuDuQhntB8Zn0W\/JIEozY1qlxJPP\/aD5gVE7Frt4IODg6GRtpnjZ+XASfum3W0Guumii6Iipc8km3iPyj6MEYsmkBFeJiG8V87LJu8wRGI8jGJsz4ADOGI4R3DGwlJUL5S7\/3fOa78\/zfZ7BK2lS8lK2yHf4YPOfMGMC\/75wyOXXjo81U1n1arfFe6+8LgnRxv++Pn2gdXf77Gbn9thh7Uxdc\/kUxqkQ9hsHZQTKOsxIkmDIo4iOGI4ZjimhrCUhHIelPLVSQXoUhHDqqPSG8\/9\/fbifm\/ZuuRZ5\/W86Qe3786A17a2Mpy1ZEIPvpDnsjbHWxBy2kkNmNCCQMxgFmrlAE4++WTq7OykbGybUqpBCpoI35OcEvduRwCLKn86kJL6ocQKAhe02wiayEc6jVIehyYvAUk9lF+oORW6oetJo\/T6Rw0ByQDBwCt1AuhCGdWEVxjX\/hMiSqfN7pG19j3vK7vU6w5irPz0GceXf\/rhF7VJ77ldduu+ZBNIYvz9xZHnkDjjW00lzA2QFlsWMRL4UejEDgoWsIHEo4A6FFjHqJqCEdV1bbWj65fm8LO\/e\/DSZb3A8t0+ByMjfrQck\/KkqACMZTMYWXKDV7O6fmAlNkCCFmvx4sVyzTXXiIiDtYBSFFKArEpGLQ09ixicc7tPBHL9W85gZ2KgKbXdYOvnao9oHFRQAm6h+pM\/AY0IYOxASvEeW5wP0yqI0lqx8\/LZH7xq3bS5PTbWHR9\/xn6z0g0vR++K17ZT7aB2VBRGqn5EoPLIuUBAzjX1B3Mq5B7ZV2H8uQOLQ8SprzY5\/ztmhmKDxADDuh3VaPZq1Tnz0\/31wh8O\/8hV6\/akPqSX3zLSKu1u9LyNAeSbbcUCO07s0dfXh0KhgJGREWSDbcdLA\/YKCLjtd9\/vHLnik0\/rYKspL8mVzevbAYoM4Aua5ATJSYNnQyfzZyc\/vCdzCk4AUhqsCcMOG6rzDv09ZNr+H+3r6qsv1Ccuv\/pJbsudH+Ra35PaC64IayAVA9Lw04JTB6jGNInRWwiFuSUcwVIERwzlDNjVwCbkjpGCQKPmGMRFDFDBSse+v4z2O\/6z+5z7vRsgFvh\/e5Y\/smTJEmzcuBHbtm2bUPNyLF03+zvP7suvf\/7zn6jVag3gz5hklPCnc631APN2uVtEoP5bLzmqMxk6qYA6nLNjsncOu\/0O9Qhfh20gns2RYOCsfJGv+Y8eMCFBhslagCOFeMasH8955x+uxbumST+PWsP\/zoXFQ+\/\/3VM7r\/rBuUh7n120I12xMkAlUMgLDIGCcQLHCkwcqkWABfv0kXx\/qEDBief4R84CzsGSAsUKkiRgEVDEqNryYNq5z3X9rv3bw2rBH0581XcG9tb3O+yww1CtVrFt27ZRxj3WGFvt0iICpVTLXfruu++Wvr4+KRQK0Fo33jMD4PMpwKhovPneMjg46HbZAaj+dScXZWS2mASKMzLDGA+GcVoTgxBoXg4sU\/sZ5dHznjH8XrGCE6Bm1SB1z\/7ltJz3o3P97ktvK5wimxere375Gl174JVthZHZaVLzSXEaokXFcFBIUwtiBa0VxHkSGTX6RcI9zC6MfHd+OEmYVERCfrSZLqASdVaGuesumb3oq\/Me97xfzzvlbQ8JXdwYQ865xu6cI+PssENntpCV8sbh9eCII47AjTfeCOcc0jRF9v7Z60ar6LU2kVKptIsgIDN0bfiYkqsUSHLabzxWzTen\/EY7Hgw1xoNKcz58niTcwgnAGCiOYYtdt7nZC1ZNm9KjbTE2\/Pgd+9Hyq19ftkNnF9F3DGQQzlgYASIiuDAUxhkBKUEcMcQYkEmhciSaHUPcJk7soCBgRKxQpwhVbr8haVv0w3jxc37d86J\/Xwv8qXWIPMH7j31uc8fd+dNb7fZjNS\/HpgLOORjjWoa3Rx99NN1xxx3kBUFcQ+xTKW7wasZTBdrV1XAAsuKKmb3fPH+BZgubwEtD0zgaH8h+N3q6j4\/2d9Twd6NBA68NSABlrtAJUuh00LT9YsGdhw9NG9SjZ9314TMO2C8afFZ6629fJKb\/yZEa1tZVoeAAAxSU8opAQV+fyTV0IilLFzPo3DZvr0ZJ2WWho0fR0qgkg7rrDrTNuRQ9B\/587lt+sRLu+pbH9rxnPGm\/jQ+uPzOKS8WKOGdtBAcHuJSstSSWSVRBoJTAOWkvFahSqSCOY07TlKIouvr222+\/bez7pmlKO8vnx9bymz8D1Dgi50opCi29UKopse\/CPILx2ID55iDn3K5hAJW\/XnoAXLrAZ2FoCna28DLSSqw7A25lrL4vWmh7B5ageCoRg0C6fG9b28xf0P9b5qbN6pG\/VlxyYXvH8t+dObe+6j3Ysv3wkjJtpiSoOespt8GmvfQ2NSq+BD9gY+xt5XL6oSqTwCdGmgoQFVATBpe61pliz8XDsw\/8v0Vv\/NXdtJNa\/tb++sGVlD8M52ZZUmCtYKyA\/KxNf0s6n1IUItUA4JIkARG5Uqn0HgC3tXpvay3tbDrSVOvy119\/PQYHBxsGnaYmlwJMzAWYZNQyngNgbLv7tsNLSXWemBA2Gb9DN1F7ycc+aAqsI4grNsNB\/+WbpQvOhS7ETXpkc3x4hIrVf+nuPHHTRF1Y0+vhXyKiNn3r9UuSW3\/5ro5004uovrUzLvvdSScMTRFACk4JDLmgKgyIRLBQoXXXNUa\/ixCElQeTCwxbr0EFQJk0Q5XbMJjQyIju+lWvnv2Fu5a899alS5davGnnG13iYjXsiuVysVRSJDAmBRNDKAaUA4mFFut5BKJRryfo6OhoyGslSdJyr65UKjuE+TtD51vhAuP9zlcAbKMV2FobNAF36mh2jQq86nd3Feiys05oE+mywiCTC0EaB9UC\/Bs1FIKarpyb8+N2jB7GtjUyBmxkqsXy9d3v+Fp92sQeqYuw6dPPOqrv40\/+t+LItnPak75D2faDIz8cVmUbgxMI6SCsnwCcNX+aMBYso8lSg2RGziFNDRBriI6BQgGOIwxI+f7BVN\/EnfMurcw9\/PdHv+5\/hoClkz\/iSAurSNJ6HUUlKJDAWAsX9j0mQIsFQ5BYoFAoIEkSWGuhtXbt7e3jRhjZCK6JooDxf946sT7ppJPknnvuke3btyOKNJRSMMY0SEA7iyiISHaJB9C56jMzCpweUkjrPmQLIomShWz5VKDFsWeSXo0pYC70ATQ8RjO5o9Ag5MIJYqVh4661NG\/xXZB7p+3skbfl05ovvnFRV9+Nz6FNt76+YEeOKSGFaI2KOL97gyDGhRvV+uZYCbz9YGhZjC8htG\/AwoFCHpGnyia6HSPcsb2uOv7OMw\/+2v5n\/+KvdADVgOt3AakfgYJFBANXq0FHCiqQjlQYPGMl62jx+UdOikuGh4dbGlNXV5eEabzj7ug74fC3\/EVfXx+SJGkIgBiTIusO3Jnxh99TFEVTjwD04NoeltoiV6+Bwb60YR1IjSEyZK271CKUCaCOaxH+NObHZBUA5KqaSgNx+cbtM\/a5Z3cHK0yvPWz7v76ovOnDx78WI1tewmb4xK44LQI1wDgQxSjpCGndQJGEoM8rBbnA\/tYiXjQ0IMGeuMcQ0iA4qDCpB0ygQgn9rr1q2\/e7pBp1\/apw0CnXzF36qa27IwJj63WBdZAohlUcqHgWOvSzGzBSLvpqlrMgYxoCm1EUQY2D1gXtvkaZrlX+PV5ZcKJ8vVarNVSAkiSFiG3IfcskdDCJaNcUgZK+TXNUvbJAKw2TeBAwb\/yj74pmaaAVSMjBo1Lo25ZMID6oM+QVmUGElKKUiK8+8vXf7p02uUeI4f\/y4o57rvvGUzdd9bHXlNOhMzq51i42AeqeHOIAILUgpxBzHAZo+LmQXpHH+l5RB6hcAyg1xGMdhBmWFKyKUdPFLaY464a0NPN7+5xw1h\/pjA8OAFft9vcoFBQNDlf8UBKOYZ3xugKU+JFzzLCkYcBgV0OcKwFaa8c11EqlMqpG3wr5nzgtoHEdQKtOwJ2BgLtTDtRgBZRKh6kB6iDroBWDWMOK8WUbph1rAMGKhcai\/RSaOBwcBfICIlgWrxgkBkIEVgRXseBYoebiTaZtwUrgrmnLe5jXJZdcok6569tLHvjzZy7sMf1Pa6P6zAgpJA0qT0EMliV0wGU96hz5dI4MnBWobC4AhwifvcQ7OwdKHHTkAC5iEOXqcDznz2r+Ef8Vzznppn2XfnAAuGZSx7po0aIiAKxdu7Y20e0dKQ0mgbV1rzVBgCH2bbkQsNQRCXmCERGstZlBkda6JWWnXC4HvoBtRLU7M+68IVsr46QsptHM48JsRmv9OdZat5T+zguC7ooj0Nf+5O2lkb\/86ugOUw\/z\/RwMRxDFvpY7xnuN\/pAdacENKcCGzj83MABxAisCJ2HcV1RC1cjGXj1zw7T5PZyLIZe8ct76mz75+rZa3xviZPv8IhkfohNA4jBmkovPml0d0tDd8ypQDF9mgwtX3U96gbAGa0YiQKrKw6Y445p6ce43k\/mv+\/0Br3lNDfi\/yR0pM0455ZRFW7Zsea0xpg\/AF8fHADzrzqQ1r9enfLjuGpOrndcThGe9JmHHVUohTVMUi8VxI4CsDJjf7Sdb9hsvtViyZAmuu+46bNu2raEKlDkDY8wEWIdpHPeUHUB57f0dUkv2V9bBOfEnCg7OhtZetyPrL2t1pGzAJ+XCEGmCgV4Y0YLEgmDBXliocWOklsTq+M62c164GR\/86bQdPgzI\/pYvPn9x9e5bThu6+rLnzZLqGVrSyAFg51M3YtNQcSanABZY5XciYkBJ2pR\/DJUiawDWGhGynIBRVwX0cmmtK868ZjCe9YeOY553xbznvWMz8PfJ3aha47nPfe7x999\/\/1OGhgaeIyKnFYvFCafDWFsX5yziOEK9Xs8RZzgUsGxjx3binUt+1FatVqPxIgCv0usaM\/yy\/a85+zL7N+Vq+Q7OYYc+m2zdeOONMjw8LFrrxry\/pjqQbbnzy2i+jmTViUk7gO7+agesnRMxQDborsH5Rh6Xa8vMeP1qnGEFkgc4sw5B3+KZqZqK9aiDBLSwBhrR3bOu23fRS6ZVfx7iteYL584oblt1hlm74m3tqDyxlPaT1g7OAgpe5NUrWGoP3rFH9p2SsOvbJpMvDHMhJoA1YL2cF0SDohgVVdo8GHVeWZi93\/\/MeeH7\/z73gNNqwNWTPtbTTjvtIGvt89atW3NuvV47OjOGne241lpRSkm9Xh8V3tOooRT+CzDrxojtLNKYCFHP0p+xxLsMNvDtwBm12BuIcxJEPlVLnsDtt98utVpNsp2cmRtVgey4xkqCZxGFtRa1Wg0jIyNTBAGH+mYUknSm1\/fLvoVHdZ2MqdvvwKkOnqfxPB4lYujDK3+zZNUDcYCKNMAFCLf16575d0Nun7bIh2itWrWqEF107vMLq\/5yXqeqHy\/1wR4iBxdFqFZSxOT8ZF9CEH3RcJbhVNgUwlZPWadYlvY5n+KJBqRQRkWKsHHnnaWOGT9zjn7XWzzwnqPf86M+vGdyA0AVMw475pgTbW34nM2bNz4TwP7MXMp20yhipGnKE4OABdq+fTtpraG1Rpop+IyhsHvjdA1qb06Nd9yYOk1Tykp0EwF9o9uAGz3+0sp51Wo1YWYRkcbub4zZqR5A9vsoimTKzUBdLupmJ7Ml4\/Jysw0wFO\/g8pxj1yQESSOUosAUDMBQTtAhyAiNSiGd8SBSnfWg1R3Tjf8PBbIvQr2fe8ER+NoL32UGHzy7J0pmIqmCVGjBTQXKEiiKISaFjQWiLIgE2jFg\/NAWjwACghgOFDTuLIj97jpiCU6XVw8X5lxSnH\/I94pv\/smqEpGdbB1fROhZ\/\/Zviwb6B1\/Wt3Xzq9LEHMpkSOuoAXZ5hpyG1toL7QIt4fp6va6DSg6SJEEUReNEDR7Qy0LvXHnPjWf8ACgzvFZ9\/2PLgPm+fqWUtIoAisUijYyMULbj1+v1UaKgYxuM8hFAmqao1+tSrU4tmNZpfaRcSkxZlxTEWSANoUvEjXiGciCfz59kJ4hjjvyfAwZBhIgZlhnOKZAuDafzX7gZmM7\/96Lh8+qPPnfB5mXPeKHdeNerutP+Y0ucAPUEYIE4L6slqUAVFCRNfQnYBWVbYghcaMOFn6lF2uNAQpAoQp00EoqGa8Lrk6jt6nmHPu7rM87\/\/p3ArcBbJndtzz\/\/hOhvf+vb\/9lPf8pp6zZsOI9YnexH+DUNJ3D0Q688wVrRJ5xwgrr55pvdOMi7ttbGYWx2HuHfwWAzI8rCaWOMWrBggbvrrrtavS9bayMTeAM7pgbSyPuzyEIplRF8It6xtAYAOPLII\/nKK6+MrbWI4xhpmmasxB2A+HxFIAMAebwBAhM5gDYVl4uKyRgLxQQo38DhNdYyLfZ8a19zpDI1OP4e\/Wl4qCwyFIwe9snhwMmLI0Lp\/oVLp1V\/916ef8GMDe95\/NLO2sAbXbX36E4ZUYrqQJp4\/EsF4Q0n\/rqLgWh\/jckQ2DGcUjDK9+jrTAeOGYgUmGOMSNtApdD+Vztj\/i\/c\/BOuvPyIF298w4knTlrLUesIz33uWUde9afbn68ivGT1\/fcfWizE2jkDJ3k1HJfP7aF1DOec2rZtm4JXG2iFjvcBuF5EOtM0FSKyRI3GFXK+zW6Hzr6ABZinPvWp6\/\/yl7+0AgFrRHSTc67qnEsAuAx8ywyzWfKzQkRCRC6Ai9XOzs7140QsCTPfbq0V51ydmRt4gIi4kDeQiJBIXnkDjpnjUql066xZs2pTcgBa8UwKvfu+4YAhgaGV6XmO3fHHdnSNFg3hxojwHCbo\/3AMYgeyDgYW1mHztJnu+bXlovP3qS3\/63M67\/ndMzitntGO6gxj64BLoCjJ0J\/AyvNS2pnUOwGNse\/GGphMxs0AWgEoaQya2Fm03alLs\/4yKOVruo5+2p87Xv6pzb4f\/zOTOsYTTjihnFaHTp01Z9YZ99939+lK04kgIscx6qK9IH1oIW6xA4eGGcOzZs3itWvXtvyMgYGB2+fPn\/\/GoaGhqFwuW2OMY2YXDCirt1OuxCihH0BCCbClAOrixYt7r7766v83d+7ckjHGaa1tLh+n7L1CXg8iEqWUY2bHzPKyl72s75ZbbtnhfQ899NAtvb29F65du7ZsrTWlUklyzqHx7yiKOI5jEhEiIjHGuGq1SqeeeurwxRdf3D8VPgD1vvaoD3UPrPkP0Ukg73iAhxVCiW+0wEH+IoDCVLQQ8ngqOMMqB6sdlAQmWBj+J04HqqhDzRVlqOvAT+7z5ZUfmTbZPRfu3\/beJzy9u2\/Dm2e54We0UVKCs3DOp24kBrAphAQuIghpCHkd\/qZasy\/jpnAQ5Z2Eg\/LcdIpQ1W0reMbcn6SlGb+a96E\/3zXVkW0XXnhhfPPNN598372rXmmS+rPL5dJ+xhiw0hipJlCFMhIBmBWUq4Od2SH8bSLruLRUKr1m+fLlI9NXf9eWtjDtIp4AlOn+g4IaEFGzaSMDHkZdDGSVXn8D5dp\/jVBTMEQQSkoeYGQACtZC3MbpS7BnDH\/tJ1902vLXLHlHT2we35aO9MRuGBADcQ6sCYD22otaA7AgK9AUKNrUBGodaziOwBFBXB1wQOoKfVU94w\/V8oyf1Mozb1r81I9uotNOM\/jw5HYaZsY555wzc\/ny5c\/9yU9\/8gqlomOtqB5VaKOUFMAKdeOgdAwRBw2GSargUDlqCsw2QTClNKrVqhx66KGyfPny6ZtgVx1AoRi3e\/KGBSsCad3oimqqte5Y5mjZ7zxGANTlo\/8wHJRCn4AicgWl+8cODJtek1\/ECuv+39kL1r\/nKa8t9q89b46qLdTGwdoRECxSB0QF9v265Dyop9jr7Zugvx9GbXsFXga0hqgiBh0biWZsFFX4yzCKlz4YH3z1Ez972RAgwLLTJm34J5xwwszu7u6nr1m9+uW1auUZUVQopmkCpTSsCKqVOiIdo1AsoTJSQUQWztZRUuz5I6BRYX++9BXHsWzcOL2H7JYDqNdHOtpc6oUKxQE2q9mPEmb3N9BY9F9atAiHsIDy\/AGHRrqQDRaNGCnHsm3a+HdlMW760PP2mVfd9Kx47fI3dGPkFG1HAFdHmiQoFBRcIMsYC5DKxlM7KOsjPcnSN\/KDNZkjSFRAlXR\/nYsr0TXnrzzvoB\/OfMelK\/w1mvyQJhFRp5566hFJkjxuZGjo7M2btzyr3N7BpGPU61UUIwVxCUSA9kKMxDiMDFdQLEQgSQFjEQOoOeuJRS1WBtg9+OCD07fD7jgAU0s7IA4Uyv8Q8Ts3U0MQJAf9NQYhSy7kp0yzLYxyIWl2gblGWcBBudQ7AgIkiqrGqv7pSzDFcP+aizvW\/uxLz1Rb\/nF+XBt+XLc17doZr7zDgij2gxYp8FOcv1hgrWArBr6\/hUGkAJtAxRGGpIRhal9Pxc7LU1K\/H+zc\/+YjPnrZAzTF8Vki0v7yl7\/82CVLlrxEKf1kY9JDARSKxSKMCVRwrVE3adYj6gk3xIgVwdk0NKAxUicg8mlLpobTrK17Oq2IYN9998V0FLAbDiACtzFxYOf40UqSabiNJUxlZYHsYjQufPAFjuCCHhxZwHGze5hFwLBwAKwjiFV1Q266BDjJtebqq4vqj5959ubvfGJp29DG02bGdi6shbEEUcpLaZOCMMFaA4Q5eUoAVoSk6sBxAcZa6LiMSmqRqPYhFXf+uc\/K9dXynBvKS9977cLHL60CK4Blk0aS+TnPec7+g4ODT3vCE55w2sjIyElKqcUcNpCsrs7km4S8klzUuHc8yczmUkjAkW6mmqPGfzZvxsDsc1EUjRtCvuUtb5nJzEfX6\/WoUCigv7+flFKI45iSJBFmliiKxDknRCQjIyNoa2tDtVqlfCOQtTarCmBkZASFQgGAJwQxMwV+Qcbhl6zCkCSJjGUKpmlKxWIRzExZg09W58+IP1prMDNVq1UJ9f2sxEjFYrHxubVaDRnLcWRkBJ2dnajX69BaN5qHmJlyrxcA2LhxI8+dO3fTOeecs0I7QrRDGr8zTz\/K6scgtOEJLKMjCAljkx0DUBqWYIS77LRp7zTRx6Yvv+mo4UvfcUFhePOL2utDXWXnQBUGLKAUwymCIe9gFTQY7FH\/NPV2YwlxXICNIlQKkasD62ulmVfGsw78znANd9x8wvnDS5e+xOLLS6d8eIcddtjZ\/\/znPz8HYB+tdTkjpWTNN01ZKxp3Ws4uAp8QEbdt27Zx1TCvv\/76EwYHB7\/JzJ2ZYYQmG8qGc2THlG+icc5RJg4aRRFs6N\/NDCsjI2Ulv3zfPnI6+MwsedWgwAPIHEajocg512D8ZToESqmGQGlGIsqozNmx5JmI2WuCw2r8WynllTkCu9A5hyRJaM2aNVfcf\/\/9b9ChgwMZGMcCT++chAJJ6wtKLYBDCmUoLx5pANSccqKmB4BMZPgbv3b+nPq6fy4dvumyt810lUM6pAaCD63ECYgiMBOMc75ZhwJHP7WgTIqHNapcRAWlgQqV1pTn7HsJLVr8ywXPfO79tDAjYf1plw\/TGLOfMeagbCfKWlezGy5T2t2lUzCOs8hotdZaO3\/+fHvvveNKyUXOuR7nXEfW2CMiiON4BzGPjMCTOQmlFMJOPcrwi8UiMjmwzICjKGp857xBZlx+Y8yoST\/Z+Qj8\/cZzQnSCNE0bn1coFBrHmY9KsudnjmUs0zG7Fvk+gvx3NMZ0bt26lXQ2mqtJ3vX9+xk43DhBoyKwIPBMbtS8PwDgQBH12GDWMab8WHEiEAOpFUhBSV3xtANoAfD99YMvnL3PwP3\/Zm74w4s6K71Pbqd6UYuDY4Yhgos8zsJkQc5fg5g0XJqCtABFBTAjsSqtsV45rNquq5b3\/ctBp515Hb3oP9Z6Xv73d99HhRs0M6xqtTrK2LN\/5yfo7IndP+cckr\/+9a\/j8hCstRJFkc0MNoTWDdZf3li11juo8WQ7ct4JZMeePT9LcUKkMKoCku3emdPIMwSzvobsudm5StMUWuuGc8neP8csbEQH+S7B7L2y7zS29yF7j+w1aZoiiiLSVtj4en8IYUYN9Myz\/1o3UeyQOGQBkGtOESKhZltAkIJmBYlLxWkHkFvXvPe9Hfv2\/eVpbs31r5xB9uweqkXkKl6oxTooxVBawSiFOlmIsyiShQJg64AqtGFQF009iu5zOl4edcy4vl4s\/f6bH7\/+7mVEDl+7dc8Ckp5Rp7IbKx\/qZjdd5gh21+BbVQE6OjoqE71vHMc0NDREURTt0DufGXTeeLN0Jdut87t8ns+fdxCZAY+V72LmhrNJ0zQftTTeK4oipGk6iuAUGI6NY0rTtPFeeaeapy5n38E5h6zvoRV3IjuGcIw0MDAADaK6UDa2O4z9kmDw1PTaGalH8lOCW8wAcWF2WzYkhMJrKSsHCKCJkKQ2skldT5u9L5vddcHTju1c97O3l9O+Z7VzdY4WQpIaxBG8A2D4un0KKHDAUQQJHCzHqOmuPleacSO3d\/50Y9x5W23hYWtPefs3tkMs8Im9M2j1wgsvpJ\/\/\/OdtWdia7fSZ0WTGke2ie2Lnz+2wUqvVJmQApmnKSinKG2cWpmfhcj6XHj2Lr9nQk8+x82F19t0y4c58dJIZZbN7kRvvn+3QhUKh8RnNMWCqsUNn\/86MOHNI2fnMXpft9Nk5zsDE7DvnxUtzGIbt6OgQDWDEWgcVc5jeZEHsm3XE5XN8Dn3goa8fo1MCH96Ll1gOhi\/5luCgKec1BwnO2aJOUfwXT\/Rx3weed8j9rzriLXPTgWe2m9qhEdchLoWDg9YElwq4EMOm1nfgMYOVRqQ1UtU+sk3UTZW486+mNOeamfPm3TrvI\/+31ddzr9rrR3\/ppZdqa21nfofKg2Ktcvk95DAhIjaO48rOTnC2IyZJ0hJLmAjTykc0480MzO\/+4\/28hXLPDiBe9prs73wr8dh5g1lElR1Tq12+1evy6U93d7c97rjjRJfLnSM0ouDSBMwEUgriHMQ6YIoXLi8KtIOfJ+d9SGohcNBRXKJqf8e\/qulv+\/6XOof\/9uNzS\/fe\/N5uN7JfZIZ9nwQEVIwhpu5pFUQwVQNVjFGLYwxB17jYvkZKM\/7aNmffbxdnnvLP\/3nLRyvLiB7ykWqdnZ1q27ZtXVmY2nKM3E5bx3dtVSoV29HRMaGSdJYr1+v1xi450fjuyTqtsc+b7GCQ\/HMncj7jaQy2Oqbxfjbe5+QiFOnr64O2sMN+pjc32\/YRun5prBcJaULoHhs7hlBEdhBFHaWTKvCag3EMk9SjiLn7X83wf33RheVD77jiSHfVxW\/vHNj+\/BlSK7taP1AAwAJmFUqmEQgMw4Atl2r9SbJt2PKqas+s\/3uwvODP6qz\/t+q0004zwOXAW5c9LN8lTVMyxrRlSPVOhmFMyqAmCxRGUZTWarUJR4Hn6\/N7GoMYz+D2RHTzUKzBwUHcfPPN0JVKZbAsDjqQSZw1vsFHUSb02jKcaOAFo6AAakqIiZ+80qwyNLvNXGoAR5qSpOdfCd1f+doTHlf60w9fVpbKczpdcqBO63Aa4FghlRQEQLFD3dQRlWdggMsbh1K6ss58s8ztuaV66stvPvZV7x0BVgH\/ddXD\/o0KhYIqFouzJ4oA9tYyxqTAxO3kzjmblekybb1HuhPY1ZmCU3W2zCxdXV3QSkUDxApOUi\/pHDoB4QT5qv5oVWDaARjM\/sGZJLB4AUAhgWUCHIG1jxA8mFFik5rHfgRAhBve\/KxD5vTe94Lu3vWvLknt0FgS358TBVpsoQhDEWqK0xRYW2e+s6M84+\/Dcdv1qxY8bvkZH\/z2AGQt8PVbH1FfzTkXMfOCOI5HCWru\/VNKUErVC4XC1omep7UWIpIMUNvVHXayhrez0Huy7zFeKrWrDqcVrmGtlYGBAdFxobBNKQ2YYNRMDbQ+GwraUAfZSX5HDeNXjeJAJhbqIBAj4IhACqi7lB1o\/mPZ9h+46MKy3HLZUtp451tm2toxBTcSgeswzsABcKaA1BVdzbUPS9eMv\/WT+6krle9Ex4y1+3\/6qu0+YrrjEezbSDPzvEqlMgp82tthb8jle5VS23aWAuQ19XY1RXko10Qg5R7+DM9ujFM3BCGwJogVrwsQdq4dGwJ2PNB8U9DopysILChIRzIpUBzDiQEgaCsW0ZumCx+Lhi8rLomv\/fzXz0j\/+p3Xz64OPbtcrccInHdXijBcKNXrzKvrrnRrSh23Scec3+n5B9+3ZNn3ao+m7sg0TeenadqZLzk9VEtrfc8ZZ5wxuGLFip2lCo2a\/95MAfYmHrCnHEH+2LIqheaEEps6awup0gog44UgnXMAZRxBaoyFanQAEsEPhQ5TAAIjUJgaM0QlCIbowFZzVACBoJiQJHUU2niOiDA9DAj23rn6jBVves7BvZ\/77JsP7XvwVR0YnBnZFEKEGheM4Wj1sC7eU22f8bvB2fv+ru0pZ2485MwL6sA9mOyAjEfS6ujoOGpoaEhnde+8ge0t9D\/ce1IoFJZ\/\/vOfr33hC18Y93lKqVFDPCc6tj15rGNLf\/n339kO38qBTBYTGPve\/v9502rOQfDEkh5o1vEQlB4QKz2jwvxWY85ycwLGTgZuDhBxEAJc6EflXC4MCJx1fiYbBCyu7cEf\/VcPgG2PcsvHbe9+V1vx\/sue0\/HAbe9od5XHxZJiiGK3jYrbpb19ZVIoXFmcc\/Dl+5z17jvotNNqwB3AZ654VKOaSZIckY3IGsv225uhNhElp59++n1EU+sleaSH\/7uKUUwAP034UUAv9Lb6SG+bsVu6S1GPmATWC8SC2XfvCWRS9V2S0U5GxDcTZD8XEThrQRwUgUSgyHXKlrsWPJodgIjQtS897DkzH\/zVK5QZPKOAtGeAeYVF4RoTzbitVxXvdQcdd9dxn\/nRA7B3Af\/1m8dEsHPyySe3b9y48ZB8k0srzv\/u7qRjjSL8eySKovv3xHs\/ltbO0o98NGJMSn19Cpq7ZvTb+pZtJBWYBFBFDaQO4pwXBUF+HqA0df4o7wTCRRcXxoOHnzSavv08Nmblu9ScgzMWrj7cVd+69gAAtz0KDZ9XffCc\/f\/5imNesS\/si4zYspnR88eko+dKkPl7f3zI2mP\/6weBqnrHY+5m6+np6XzwwQcXlEqlxhy7PZ1jt7qZw01eue6669Y\/Cu+Zh90BZWlJR0enLF68D\/Q9MQ8t1oWNMOxn9wWSD4jgxpl2LLn+wbFjlsRPkIIDINmXDM5Cgv4kCFARoaioa2R44AQR+eVUw7mH9UJeeCHf\/L7XPKEwMPAmktKa7sOXvLc+tPn2gXqp75Cv\/qHuqbj\/wGN5VSqV7ra2tgXWWgwPD6O9vX1cuuzObviJmHT5RpkMvAIwUCqVNu8JY9zLSPsuvW53jmk8DGHsVO8o0pg5cyb07Ce8pSK\/\/ehaO9CHKFZeuilD71q+CTWmAoNbdf6HC5dNkglNAUKhV9o1dcKKrqa5sv3YOy\/+aDeA3kfLzX\/N3GIXNs6rdMw76r0\/ete7Ni57rICYU1jr16+fWygUOgFgxowZqNfre8Wgxkk\/702SpD6Z9Ix2ckB72xHsyu6\/NwHUDLLLonZ95Etfmmx+zTEr6xRJiZkYDoACUgMobg0Gjn6noBbmp8f6eL85MUhJ3pu7ps8QQCNFh3IHphtuWPBocgBPevMH+wDcDAB497vxr7h6enoOHxkZKYhIQ\/RjT5cBW+1mIcq45c9\/\/rOd0gCMMXjCQxGC7wq\/YVecwFT6ETJwMHtrhnNAYu9BVBwWGyak2jATMNMHkNEhGYJQozjxj1FNFhS6AwUc5gJKJhBCaAwehQAwdWg7slD1bjoE0+vRBjidTERqbJ\/72BtzPGZbq+eNXY1adVDpAQBjTMLMd0wmZczGco3tvBurNNTqMZk8emePyebj4z1\/su+Z5+S0Cv\/HCpH46V8uHRoa8vPFhgudW6rkVnMUASDYxAGhKcWDf75VOO8IMv\/hU4I8AWiMSEhjVoD4MeHZUxgQ56Drw21pZeT0X773tR3TZvXoWIcddtjiarV6TNZfnhnrnt5V82o3uRv7rn322WdSGuVJkkj+fs3jEzsz0omMaSJDnQoQ91BEGeNxBYxx9Xnz5lkGgE3a9td19ICLNAgqyB1lJkw7AIBjs\/5R4ZUL0UH2JTMlIHEQcb7NUOAHhQIo2DpKZuTxRxS2Lpw2rUfHMsY8rlKpLMjabfNiGJPNcycb2iqlUCgU8mIcK51zkwIAM7myTJxjqoY6GeOeLGlnT6cV47U2j1c52fHcRElb26E+Aii87to+lAt3DlsIQu0\/EwPZYbd3GMVWbZYB84\/RQUBjmnADFVQwoT+QnEOHrR\/cWe07bHywYXo9UpaIqEKhcBwzd2UiG3EcNxvEJhHyT\/WGHxkZQa7j8DYAw5N5bdYAlCnqTlSm3NXwv9WuPtkUYVfShomczkSpwNjUKknMsDH3OwaAE0\/SqVXqNiOqn8EQR2AVtfzSBOzcTsm3AmekoCw9YKIwb55hQzAACNrscFm2bTj8xZc4NW1ij+z1nOc8Z7aIHFUulykXEewVYC2T4YrjOOPz19M0XfWXv\/xlUgNJkyTRmXR3VqKcrJFPJWx\/KHsgppJKjOcovJOWoSc96UkmaAdZpAp3WHEPAA4qUh6xz0kLZeBfUAkZ94JLY3YINcuA8E7A2bzHpDCJCFDkUIR72hfXvaF72sQe2WvVqlVPrNVqJ2SKtznAbY9\/Vl7LPoh73B7H8e1TeD0nScKtugAniwFMNe\/fW7v+nk49jHEjL3nJS2wjJto664C1CaIHnBKYMMILTsYAfAgDPmmHJsEmyujBPrajU4WQQARcwEKJQGfewhqwGT6xbXj7GdNpwCN3LVq0qCgiT2DmGflws5UOXT4dGPvY2U6WPS8vfqmUQrlcvkFEHpgKjJCp7OZlsVu1CY933JMF16YC8I1VB84+f2cpykTH1vp4KFTgCEQKRKrx\/1qtVhORZsJ+6rIrBhNSawxpqEKUxWBNZV+i0Qn9uAdqG88IkwIRuoPCDzwqqK14J+F8VKFQb+tdf+8rt\/7y09PVgEfomj179r5KqePGuxEnsytNtjyWgXiZsVar1eFKpXLHfffdV5\/s8dZqNZv1KmRGlrUFZ5+RAZlTObaJooJJgqiI47ih85+VOfdGFNW02byjIDBzQkTQecSu2DXnjqS3UosoLUoYzNzQBA7h\/KiBQTnV4MkGIDu2LAJiHTQsCpXeJ1RuunUhgDunze2RtyqVyv7OuSV5g5lMPr2r2ECSJI36faFQ2B5F0T1TCXULhYLLdtqMT5D\/O3MIOzvWPBg+NvLZ2XdthdQTEWq12qgZA5m0+M7O184+Y5LpghGRmohglC7\/iO68rcztW60d3I9ZvB79ZA2aJhcmtQwBLaCURVdUbx8eWf8sEN\/pAYLp9UhZJ5xwQjQyMnJaFEVzs3r6VFDrqQplZM\/Naeuv7+7u\/ucUMYT1WusfAWgjIslSlUwnMD9ZJ88RyPQpxnY3tupzyAhJ2UDQyRigcy4b+RWJyAla60NrtVojKtgZW3GqQObY9zHGVGfPnj08JgIAupc8Y0Vy3Q9u1MnwfiUVXpj3eKEPIBP6zGi\/fpBIFgl49D8\/IVByEmP+gPIHCigCnDWIkkF2fQ+8bPk7\/+23R3\/+53dNm90jZ23fvv1wEXl5uVzeJdBpMg0\/rX4XcnVrrb3+xhtvnFID0K233noHgHdi6sDSQwXrty9evPjLxphDs6lEY4VLdmenz3429j2dc5WZM2cOMvNoBzDrgo8NPvi6k6+wta1nk3U6WHI2DrhJJRwzAEAo57ECsEdjxUXC82lsThJ6BsgKoohQttVjZgze9RKQWgaZHh78CFkKwBlRFB0wNiTOz9KbaPrPrqQBYQQ40jTdXCgUfjNV0dGwkz9iR9CLSKm9vX1OrVZrTAuabMrUao7AeIBji6iismnTpmHnHHis46sW2v9sHCp+Cs34QE82BrzFBJBxH75vIPc6ac4S8CLCgnYzqNuGN5654m2nTTMDHyHrO9\/5TkehUDibmWk8xH5XtPAmGtIBoFEFIKI73v3udz\/mRBWe\/exnL0rT9IB8ZWJXd\/qdPT\/DPMK1Gk6SZHBUFSBb1S0996eqcBeyQYXOwYhv4ifiBoqP3EGwMCCMfBo0+RqqZxISFCQxUM6gjatHzaytfYlcItPEoId\/0Sc\/+cnnGWNObKVz16pnf7zyX\/75rZzIePeJUur2173udX2PtRO7YcOGk5MkmZsRnsZGVHmp9YnYhxNFDHkORC4aeFAp1QtgRwdw5KWXJtWofHnNqVwXX272WC6k31MVeyMEIe1HXVuDgqmX1NDAG9Zf9dTDpu3v4V1LliyZV6lUXq+UKllrd2iomcouNB5VttXPshHcIyMjVmv9x0eTYMxk1oUXXsgjIyOnEFE5TdOWKdNkadU7Ew3NSFtZ2ZGI7uvt7W3tAACg3jbrj1ttvMERefpudoGcQByNigBGQX1TqPHmjhLiGIBqtB+LFbTVBw8qDD\/wmt5Pv79r2gwfvpWm6ZOI6PCxueTuOoHJ\/Cyg9beffPLJNz3Wzutvf\/vb+c65g1txAMYa\/66wBXPGjvz05lACvW\/t2rW1cR1Ax6ln3aJn73c5WDW2e9\/p57IWnibnd4z3zvOtJ2qcyAOE5LzWoHAGDBLKMIiqvW\/oXXP1mdNm+PCs008\/fWahUHh5sVjszhDqvCPYE80vrViCuXHYtYMPPvib3\/3ud\/sfa+d248aNR8ZxfEBWmhwPQ8k7ganSi7P+h8y5hPkN1UKhsLGRvrc6uPlv+FjFFAu\/rUDXOAv9pQWSK9IyFZhqnVITQGLhCEjhCYgQiw430hb3rnv7xgtfMWfaHB\/aJSK0evXql1ar1TPK5TKyMtVY2uxUxC+mCg4651bW6\/WrHmvn9sILL+Surq5jrLX7jIyMtBzzvau9AmNfmxl\/NhylVqtt7ezs3DChAwAElX5cQ0S\/Rwb8hXDdNwNhh91\/Vy66NEoCDkhTQPwsISEGrEDbFDPsyKn999984QM3\/bo8bZYP3TrssMOOZ+Y3FovF8sjISIO+Ot61nawwxWTahsM9JUR06dy5c1c\/1s7tN77xjYVDQ0PPBqCyiGpsBLCr2gWtznv2PnEcg5l7H3zwwY07cQDAkh+f1ZtGpT8PSXtdpABHArALNf+shkcgx+FvAYtr6AWQeGyfQI2\/s8ai0T\/Luo08WUg5BkMBRgEi6KAaepLtL97yjY+fNW2WD82aPXt2e7VafZOIHJmmacPwjTETcv8nu1oZfovIYi0R\/fHSSy99rJFBqL29\/clRFJ1ERI2dOUuxxqbQu4qtZCuKogbGEK7ftgULFvTu1AEAy9zWwpy\/D6DrAaIyWPmnWghENQ0WwiBhUCb5LQALgbKHCxqB4B1\/JtQYI2619wPKMij148lAAqQpepL+2fvWN75rzQVPnq4KPASrWCyeDuB52Y2VTdcd2602ajDMmBLf2Eerclb+d2NDYGvtDT09Pfc\/1s7tUUcdNUMp9W9a61JmmFk0lKZpy7LqeFjJWNCwlWMYo4Eg5XJ53XXXXVeZhAMANu3\/gjsRx1clAsccQZxXBCLxVGAhL\/\/dBAJaHUioGIxicY3mEQBN+TEC+XkCHN40IihJEFX7T1Yjve9f+\/UPTGsG7MW1cOHCA51z\/08pNSt\/A46tS4\/deSbTM9\/qOdkNmu2EwREMJUly5ZlnnvmYq\/0bY84QkTPGc5AT7erjga\/jnVtmbkQWhUIBtVrNGGPWAKhPygGctmxZzXV1fM9GvBY2BpMXB7UJ4IRgSGDIwpGFSBAPnYriauPgQ8og3MAEhHy6kdQEUIwODeLh\/peYO\/\/+Rvnd7wrTprrn18EHH1xg5rcVi8UTxrL7piKgOd7\/x7tJ81FGHMeIouiagw466GfLli17THWEHX300W3W2vMAtO\/MeHd27nbGosyca0YwqtfrUEoN1mq125hZJuUAAGDhC879xwiXrgWXgJo0qb8icARYAmymCyg8ql94smVABCZh40fk4MjBERAVAEkd7EgFs6VebO9\/8L13f\/c9b1n1pS9NO4E9uESElFLnRFH0yoyT3uoGHY\/NNxlHMN4Nne8hqNVqQyJy6TXXXPOY2v2JCNVq9bnGmJPHEqomQ\/jZlcpA\/lpprRFF0X1HHHHEVaPO\/U7f5MwL6sPtPT8bSVwF5HV9mAAmQeZHXNitPTdgvIoAxr05yBE4YAleKHAMT0CAgiKoZATdtd7uObUt\/65v+vbSafWgPbf233\/\/U9M0fT8RzSwWi1NCnqcijdUqR80IKoFnsMo595fH2vldsmTJonq9\/i4imrErdOhddOqN9zbGoFQq3fyb3\/ymMioCm8wbzXjSy6+sqOhKqxQcMYQ84KfDJGHX4ASFPx2C3h\/lHv7\/Y3\/u2\/7zasJBUizACuIo8AIElNSg6kPoxnBXV2XzB+++4CmnTDuB3V9PecpT5mmt3xNF0SF5rf+JbqqpINIThas50g+MMeKc+8U999yz5rF2jp1zS5VSx7bSJ5xKWrUrvIsgr25qtdr1O6Rgkzn42a\/7wFBtRs\/X+nXcB60b\/QBkVSjbAcQOIhYyDhNw4t2hOTsAYaYgOQFb8hUF+EGlrAAmA5gaOl3fYZ1b7\/nKfW8++YnTTmDXw9ITTjhh4T333PM5AM\/NBnDkxT4nk8ePvekm4vqPt0NZa5Gm6U09PT3fx0PXj\/9QRVdPrlQqr2bmKEt3JjuhaCpTg8ZLt8N13VSv11fskgMABLUD97tuuKv7b5YVSMcAR4DTgCU4AzjjsOuq0C4Af9KM+zO9QMsQKBghGIifK6oA7RLMM9tO6hpY\/+l7Xnvs40DTTmCqxn\/IIYd0bN269cPFYvEc51yU5aW7qk23KyOxMqqqiNgoin52yy23rHssnee5c+fOMcZcUCwWD5\/K3IE9cd4zZx7wh3vOOOOM+3fRAQCHLLtiEDNmfWlIF9cjKsBBA8ZrBUYc9EOD4+YpPCgDCOB2dPwCjwk4ggMhJYLhMFwYgK3W0V3re8KC4Y0\/XbP0oJdjAlmm6TV6nX766V21Wu0TWutXZ1TUjIgykTrtZPP7Vg5nIgCRma\/t6Oj44cOlsb831otf\/OK4ra3tDVEUnZUrce6SRPhkd\/v8z7KBKCKCUql0ycUXX9y3yw4AECyfeeL1lULHjwZcwUIVwhRgz\/jTjGzSx5TyR18\/EFAYMuokEw2h0e9HOX8AX4YkjoBaHcWRTfv1jDzwHw+8+MDzHrjoomnK8E5WT09P57333vt+pdT5RBRn5aIQhk9pB9\/ZlJyd3Qdhh+oloq\/cfvvtDzxWzvHhhx8eX3fddedYa98tIrGIIIqiSZ3fPbGyaxBGom1yzv2+VUs1T+VNz172zYrad8l3Rrh8kxUCIvY7c93v0qPlwia6+Dvu9JlUmCOCJcpVEx1YLEhcYAwz2BJggNQCVmm4GOjk2v5d9W1f5Wu\/\/tatF39mWlp8nHXSSSfN7Onp+QgRXeCcK2aAX54vni8D7souNRlUOpf7OxH5cU9Pzx8eS+d5cHDwFcz8GaVUV5Za1Wo1RFH0kBk\/4Ov\/xpg\/dHZ2bmv1XJ7qmy\/43B\/udnH7Tyv1tGbZgOIYgiJEtM\/bRyH\/rR\/ixvzMUW6oKMESfO9BNllAHNg5KOegnICtAouCFguyKUyVIIZRprRQHnrgg3TLTz8iv\/nUNGNwx12pZ+vWrZ8G8BZmLmf5YUY1zWSpMy39PYkBtOK4h3+vIaLv3XzzzQOPFWzlrLPOepzW+sMAZuclyYHmpOM9mQJMFIkRUdrV1XXD7bffXtkjDgAi6Dn06J9yR\/ffq47hGCCOfDgeaLxCuV6A\/CPvHwTh+crH967ZEwQhOKFRMwgYgBJAuSY2wM55DgGXkEAjFUG7DM2INq1++6YffPMHt7zmiU+\/UISnTR9YsGDBSQMDA99wzr02TdNy1hyilEKapqMGVExVfHMyjmCs4VtrYa2tW2t\/1NPTc+tjxfgXLlz47DvuuOO\/ReTA\/PCRJEkekt2\/hbO4rb29\/eo8+29sCr5La9X5T3pG28ZV350tlXmKHDgxgEthYh+qqzRAfBzkw+EABix7+\/X9RBEcK2\/IYhrBQHANXnzEeevPJw4sDApQoIWGUxoO\/meRpCBSSBGhL+pe29+z4FPxE9\/w3QNe85rav6jt8wEHHHCkc+7bInJiBg7lb9qJatPjqdJM1Mo79v\/5Wn8cx6jX65ne\/9VEdM66des2PhbO81Of+tQnbdy48T8rlcrJmQTX2HM2kYbfVJSTx9b585LiWcQhIlIulz985513fno8STXaDS+jVr3kyH+fO\/Tgv5fMAGLlCUKpMlAuOADh4AACys8OTgUjdwBLBCH2IX5OAtyPL\/MmL9KcIzDKCYSnOCgYjvxHiSCyKaAJti5QpTK2cHt9e9s+lxf2XfLJgz7703\/8Kw0cWbRoUZGI3uacey8RzZ7qbjaRA2h1w05EAMpXFwLg2NfW1vailStXPuoFP0444YTowQcffJNS6kNRFM3Nyqj5czjRoI6dOYGJxpBlf2utkSQJ4jhGRjVm5jvTNH3lgw8+OG6EtcvhMRHZyj4Hf2c47viLUmU4Y2DFgpw3UhNa+l1+pKCXFAA5wDEgbKGsA9nRRul1AwJWMMZb8RjwkMVBBZBQyMJqgRgLpR0kGUZHZVthYXXz89rvu\/nrW19xypuvPvesJZ7S\/NhdIqIWLlz4eOfcf1prP5AZ\/9hS3J4INSe6SfMrm8EXKg6mWCx+C8A\/Hu3neu7cuQds3779\/QA+ppSauyuju3aW60+EAeQjgCiK8uPUkjRNLy2XyysntOPdPQH3vfKUJ3ZtvOdHM1X\/fi4CYB2sAIYJyjGUIwgThByUeNEQAXz\/v\/P9\/4BgbAW\/8X+SHTg+mZh4FtQIERwYQn46MUPgHKAYADPSukZUKKAiZfTGnTfartmfiU459\/fz3\/CGymPN+M8777yelStXvuLBBx98D4D9xobhk+3w29mk2rEstlaadmPLfZnOP4DfP+EJT3jpD3\/4w8FHc75\/0kknHbN169ZPpml6Zn7MWDZ7cLwdfWez\/ybrdMemFlmUFc7x6s7OzqcvX758Qlr1bm+F1dqz\/jHS0f0\/Q6VupAZg699UGrOBvWaAJSAlwAmDHEEb8oAeuSm7oQxMtMo\/BAIlFsoCyobIgQmpI6TWgeMUsEMop1uwoL7upO5td329fsWy764479STRSR6LBi+iOjzzjvvCVdeeeX\/Pvjgg59I03S\/DHXOQvCx\/fxTvdHGhp75XahVP3v+32magpmhtV7R09PzsUer8RMRLrroomjevHkv27Bhw4+cc2dmop6ZE9gZk3KqVYCJRq7nz312DNVqVay1v7\/99tvXTsaWdntd9\/bnzt13092fnzm88eVtaQXCFjUNaAtEDgARDDFSBiJL0EYAsg0qoJ8PwhjLDxCRxnQi0OgbzBFg2H8B7bzj8S+PIEQwRBDtOxXBBuL8JFTlANYxKqJQi9vWDKJwZTrvwEvbznjaNfPP\/ljl0UZDv+mmm6IXvOAFJzPzqwGcbow5IAu18xNnx95AU8EBJusYWuEFeVaaMSaJoui969at+\/LuVhoejnXJJZfE73vf+46z1r7FGHNGHMfzMgO01jZQ\/laqPnsD6c8bfa1Wa5Qamfn2o4466qW\/+c1v7npIHAAA\/POC5+0\/Z83t3+tJtj9J3DCsBtg2W4aFCCYoAWoL3y5IDtBZBzCNGRoaXjieAwBgmUAQb9Qu5wCEYEkBUYTUJoAyYB0kzVOBjhRc3YFZowKNfirW0\/aZv5556KE\/2DRYvfmQz1+5iYjsI3kXOuSQQzo6OjqWiMiLN23a9Bql1KyxYFtW5mtl0JO5MacKSE2UBqRp6pj5O+3t7R9YtWrVtlaf9eQnP\/nITZs2HVOtVq\/93Oc+t27p0qWPiGtw7rnnFvv7+xffddddL+vt7X19sViclcdSMsQ\/O\/djU6Q96QTGc8DZ5\/pbwL1l\/fr135hsNL3H1soXn3LGrOG135zlBvYHpRBnQUpA2e7sCI4VAAZLqAqwN2x2agwOMJoxmP2u4QyEQaKCY7DN5zgGQUNEAaJAJHBwIDYAGzgSOGJAIpCohnyBVUBNq8FaoXzniC5dUZ2x4E9HPu\/tK+gZLxt4pAwpjeMYH\/\/4x\/e9+OKLTxkaGloaRdGTnHPzW3XvTSanbKUtNzavnAjwa\/X6jE9gjMlKURkJ6Po4jl+yevXqls0+T3ziE7vXr1\/\/rTRNn2OtvaOjo+NnBx544K+vuOKKe4nIPExpVfvxxx9\/\/MDAwIu01mcODQ0dUCwWOWP0TTT2fKJzuzvGvjPlX2PMNfPnzz\/n5ptvXveQOwARUXe\/5LDXzKwNfGFWrdIOqQBRCmM8IEcpwSsIeMMV5WCVBQTQVo06GmnhBPKlAHLKI4kQiEohynlmQBAlZWFfasjehxzAAWwk34okgZHEGU9BESSOMeA0+lX7vbbccUMKvqG4z35\/2v8zf1xFrOxDXUYMevzF5z73uYevXr36GUT05JGRkVPSNO3JDCwTlpzsLr6z3+1M+Xe8n2WcgkKhgHxrsVLqAWZ+2z333POLce6b6IADDnintXaZMaaYOY9SqXQdM19TKpWuOProo2\/88Y9\/PLi3U4c4jnHOOefMvuyyy54+b9680wYHB09P0\/TAbLpOxufPt\/VOZJhj\/7+zIaq7+ruAr\/Rprd+4atWqn6HZM\/fQOQB\/kKsKG177ys\/2bNr81rLpI+FBJMofeJwSyPqdOXMA9ciChRAZalkFaMVfEAJYFGAjgASiDAwbuDDNXLnAGBzzTYXQ6CfwuYk0y5TwbEUrDEcMihhGMWpAvRCX764nfOOQblu52cZrO4869c5DP\/q\/a4iovpd2nuiVr3zlgmuvvXZJvV4\/pFQqHe+cO6VarR4Ux7HOaLX5PH9POICJatVT4fjnnZeI1Ds6Ot5z2GGH\/Xcrie8Xv\/jFasWKFS\/r7e39TyLaJyjXwBiDYrGISqUCpdQDxWLxpnq9foNz7p8vfOEL7\/rKV75yHxHtkc6aNWvWFJctW7b4j3\/845L29vajqtXq49I0PZGIZoyNrrJzP9E0n6k42KmCr+O9X5qmKBaLF5977rnvXLZs2fBUAPU9vu774tvnFq+8+pMz7cBrtd0MUzJIjUXBAlHCPt4GIJFDLbJQEziAzJHt4E0zHUEiOHawTRQQLIFpmFULcsFAlHr8MetHzpiJAKBZQxxBjAEpAqmAVUgBIh1IWNeGmSsj4G26s3M9lYt\/i8rtt1jC\/V1zDhhas2HD0GGzFowA+5uP\/vnPWDlnjgDA4YcfLsuWLcOLX\/zixpdYvXo1t7e3q3e+853R5s2b29ffe2\/nr35z+X6qoE7euHHjk6vV6n5tbW2zlFKdzrni2DxzLKA3Xmlvsg6gBYd8p6\/byUhvOOccEV105JFHfuDyyy9vifovWrTocUNDQ\/+jlFqSjxyy6CY\/3kpEkmKxOFSv17eJyPo4jq+fMWPGDc9\/\/vPXHnHEEf0PPPBA9Vvf+la9VqulbW1tbvbs2Q4AhoeHafPmzXrhwoX6Fa94he7o6GhbuXJl529+85tFaZo+fmBg4PFEtLBcLs80xnQ457SINBiL2TFk05Gy7zeRA9jb4F\/++gfkf3m5XH79mjVrpsSt2Gv986vf\/fJF6p4bPjXT9L60yMNkJA1RgPK6\/\/BbtdFhbpmlUYcz1gG0zFMbFQHfRSiZmlBu7rkE4VJHHmSMUv97IQ8wWs4lHY6gyUMKxgpU7B0MnAKZAO6UYyTioCJCIg7OIbGCvoSj7VWJNqVReRuVO4eWD9jqxXcPbV2TaFdLawJmiNJEFMUA2q3YjtTYNiJqE2PnaaXmxnE8e3BoqJyhyWPrynlueZZrZ2q6U901ducmHe\/Gz8L\/arUKADaKoh8S0fvXrl27qdX7zJ8\/f0G9Xv+C1vpFeeScmRvfMTO+OI4b5yBjuhERoiiqFwqFvmq1utk5t91aO1QoFGpRFNWUUgkAsdbGxphCmqZFa217FEUzC4XCXGPMTOdckZkRxzFqtVoDx4iiqPEZmdGPPaZWXAnai8I040Vo1tpe59w7Nm3a9P0pX8u9mU9tuvAFBxbvvPmbHcObTidJkCqAHEM7DpOAvXigz8szB+AZBCTUCNvHgoIeCJSmAwDBicr6iMBwjQggZEge8INnHwpZCDiAhFmaESIIJyAdEFXScBYALJj9cRoBomIEZwRMgDgLdhqJCFIdo65jUEcX\/rElwWeXD2IdOmGchSAAoOQHbLjwXay1UMRI0wREgigqwJjRk2IzffesvDe2BpzRP6di\/LuS++\/sJs8EKMJu+YtisXjBfffdt77Vc0899dTSunXr\/lNE3pqvXuTQbDDzKIPLG2AOXxjFb8hq8VEUNRxjVgqt1+uN98mcVeZE898h405kzLpsKMp4+MNUyqW76lwn+FxTr9c\/dvzxx\/\/n5ZdfPuWUVO1NB\/C5v93V94pj9l3uxC3R5Pb3H8hgx14\/gAkCB6IwWSjszF5DVAKg5+lElj2jkJBNE0aDxiTZlCHKRouM9m4kmdqAwEHguKlchMAcpMA4lIAketkCB81+ZJFAoFSYb8ICZx3YCRgEk1iwcojYC5rWjcW6qsNVG6ro4xIEfqailWYOaYzXT0TY+ZgVKKguZzfp2FJT9vP8IIn88IfdufF2Jf\/MNxJljkprLcz8h1Kp9JF77713VavXnX\/++dFNN930DgBvZeZC\/j0yA8+PycrhCaPOSf67Z44jj49kqUOOG99wCplRZwaevV8eT8mX+MZSb6ea37favScCU7N\/5x\/5c5J1cYrI7+fMmfPBa6+9dnhXrvledQAQ4Ot3bN30xrOfcM\/QwPDTSiLdRUdA6kAhn4LOjLqZl0vWSJjpB4D9wFAisDhvuJkkeV40iELoLw5EGeKftSD7YSNEzn8eBEQO3GAieocTPqbxAILEsQPYEhQxBIBmgJ1XNSZNYAUociARpBzj3iHB1ZtT9HPJ6xxQQwDNX3iRnKvKbgba4SZvhbKPdxPtLr9\/ZyKU+R02E5vUWjeMJJT\/7hGR89auXXvHeMi4tfYFtVrts865rrHDMcfm1mPHY41F08eeh1ZCm+MZYWZU480\/2JUIaaIx6LsSJeRflx\/RFlKhO0TkPatXr753V6\/5Q9IVc\/BnrrgO8484bySatdwJQEULkTqUFhB7YVGAYDSQ6qY9GiakmmGJoa2CNuydAvlCgoxGDTLzCrthcxhpvpRIoUGRCTnikUyQEPnIwNuvP87s+Br\/JwrRhP9MMQ4mhJ35quFkBmlM5oZo9dgTa6L3azW\/LquFZyG2iNxBRO\/csGHDneOFy\/Pnz3\/+9u3bPwegq1gsjtpx8589VRbiRIrEk3F6kyl57o6o51Q1FFu9vlgsNqIkAANtbW0Xbt68ebcaqh4SB0BEsvirf7o6nXfQ+zcV2lcaUoDyQ0adSf0OrTjk\/rlHrp+A0JQEa+iGyE5lCFuAHq1v8lbXoylXnvkG3uEJ\/m24GY60CBcnukF2RSN+V3f1yUzp2dnK0U2RJEkjf7bWbnHOvWfdunW\/G+\/9Fi9efIy19n1pmi4yxqBarU4p593ZudhZBWRPN+Hsqbx\/IieW\/302Rdg5N+Cc+8Tq1at\/i93krj90fbHisPDrf7hc9j\/htVsL8\/5QLZSQpj6vTmNCTROU1b5M6FsAoJ0gNhaRS2HZwCrnB5O4GGSiMHV456egGQmgmWPs8KBR\/8\/LlnlFo7EXq+k1KJt1Gv5mImiloZhDKkGTMv6d7Xp7oo13MrPmJgpls3w9Q8q11hgcHLyjXq+\/4f77779qvON71rOedbgx5htEdGrmRLKy2lTTkclGMrvqGKeiczDedZlsZDZZHcWsEhRF0VBbW9uny+XyVwAku2uWD3lj\/H5f+v0N3U9\/\/ps2Rz1\/SkslWMWw1oDJejSe\/KgwmCYwD8rmBVoIBOQ0SBQod\/g0QS08j0mIEz+8xLlRjoOJGoUGycIKGZMViH9twO7C2DIeNdyEwu7IxOAA\/k1WNnuyIWweHNuTzmCyYSozI4oiWGtRqVRu6+rqeuf27dt\/CX\/VdlgHHnjgwjVr1lxorT01wxCy77CnjGR3HMbOwvaJ0oM9DbrmtRPz1zlLv5xz\/33DDTd87d57790jJLSHQRlDUHrzF1dvLh\/49i3R7B8P6HaoSEHBQZT1eXWjz9ePCXeBuMfO6wkQjC\/+5bQCGmG6yLjzCTMDzucQjehAmq\/NtAaYaFRVwf++EdBgrMAxEQHcnHgwdqz2RKOeWolmjt1NdjYuairtpRPN6Wt1E7YCs5h5Rblcfve6deuuHO9qn3DCCV3Dw8MfGx4efnFWItzZ8bQalz3RcU8WiNuZEU6mBXqqKVf+PI49t+OtVm3b1tqEmX+47777fmH27NlDe8oaFR6m9e3la7e99fkv+Csl1dTVqse2S1JwQfSfVARnHSTSMAwIGFoInOECFNr\/soiBxt9Rx4Ziu5QHNj6jKV7CmdoZq\/D7oH0gCqkuYk2N8JdNNQxwqREV5I8hzybbWVQw9rtMhoE2FUBxvLA2XwLLnp\/t\/G1tbX+aMWPGG++9997rx3v\/2bNnz+vr6\/s0M7+KmdXYEt54OMlksZGpAps749Lv7Fq0qgJMlu8\/mdLh2GuRpUjh\/9\/r6en5wPLlyzftSTt82BwAAHzlmtsqb\/vST64dvOPPW4l4iYbqiYQgSQKKGdAMKwSGlwFvbLmhnWAqJZSp3lijnpf1JTj2nIDwf08n4BAEuEBjItS5gNU1wt821zGovAMY64QmY6h7q6V0UqFhrtyX1cdD\/l9j5p8rpT6wcuXKFeO9ft68eYvSNP0P\/P\/2rjU2jus6f+fOndldcpe7pESRrEw9WyuWo8pJ1NRCEggMGshw2tR17Cp+FIJRJLBhtGn7p7VdF1KBqLHRwjJiBHHlwglguzbdNn3AgWNJIaLYURRbivW2LMnmY0lxSfG1L+7OzL23P2bucrjaJZcU9bQusAAhUjszd+4995zvnPN9wFbDMHi1Z70cz1XJgM41i1LL5q\/V5a+2LoNhUaAK1Oacv9Dc3Lzt+PHjAwv+nnGFx8qOjsItr576wVj7Z76ZFI0HMhRXKhyCMhVcWQRnLgwCFBlQxAGwabX9Gpwrn1MKfOa7YILYgbfrg9VHmFI9hpqiK9Br3McRCLQgyP5C5Ptnk5Kq5EUEC2uUUplYLPbM448\/\/vCZM2eqcs1t2LChnTG2A8BWy7KMYOpwofgILzbWvhTXqKWOYqawRUukB1KsWcdxfiCE+PtLpZp09WjpEeHYXz3w29GBo38dKw7fFxcjjUq5IJKAa4AE9+TDSEKYHhhoul4MP5sioJrjI3vrny74BlIGFCkIJryuQ+XpGkh4qsWkAEEMaasBPxshfOdYBklzEQizu7xz8WIWYgNU4gbU1wqWvZqmiXw+D6XUB+Fw+NmBgYFXAYxXu1ZHR8fq06dPPyOEuNNxHGO2EGy2kKxaZmQ+80JXQEC2lnbq4H3pJijHcQYMw3jasqwf9fT0jF+q+zNwFY3v\/+rI6GPPfW\/fxLHfDE06Yp0BJ6GUBEGACS\/uF4wgyGMWMqSaOuWpKu5X5iGwMv9g9s9Uq4LXO6CYp4RMKtisoBkMCLYRQvck4RfDzgUhwHxq7OfztzOBZbNx\/Wu33y8\/lvF4vMt13b9NpVL\/AaCqvsLNN9\/8e0NDQ9+VUv6h67pML2ZdxrwQz3oxYcR86wCqxfRz9TJmqjgse8ZTkUjksWQy+eLExMTkJQ31cJWNlo4\/za5+6dAuZ+X6b01E2n8hZAKmw0EkvY1nCJiQ4NIXDsFUKFBOHaBU5Z9rc+M0x5gqEZximhtXReewhBrOR3RJXZa\/nS07EKzLj8fj\/7Vp06ZHhoaGuma6Zmtr6\/JCofCUUuqrWmMwgGBfUn68+brptYYkc\/l9LSFAOQYU7PdwHOcEgL\/s6el5DTWSelxXBsCfILlq50\/fcts2fm3cbHl43FzcX7DqoUIGmKFg+DX8F8gO1nIiSDXto9TUz+VGRGmJskDFYakI6MLYogyHoIuK+RfKCNRC4nnBFHlNNIcZY19fvXr11hdeeOHDGa5Fra2t9zqOsyeXy3Xo01LLYeuOvSs9ai3hnU1rb6FAyXIDIIQo2Lb9PICvnTt37q3LhZMYuIrHswcOF545df7gli989qhiZr0gauVSRhgckPCYgb1ePh859fr6AGKl7cfUVJEfMZ1KJL8ZaLq+wBRoyLzOPGKe288A5oMNJbpz3amoptqTtRUommF8NKmwL1XEBIv4JcOV4+Ba0OhKqrqVYutKMX2l9FV5t1vwu6WU40T0EwCPDQ4O7vnwww+daot469atiYGBgYccx9mmlFqlcY5gmi\/Ywlt+P7NVRVZKqekUaqWNVGuIU2luy9Oy1ea4ViNTjuoHQ6vgv0kpEQ6HP8rn8zsXLVr0nWQyOXg599g1IJGj8Nkf7tu97N9PbEknVv7FaP3SQxnWDEEhzwKQAmMESAWDMzApAemBhJIILvMkzCEJEIBUBAEGlxhcv6TIZVNFh4BXYsCEApMKhvIQfqUq5BUU\/GpEKoUhXlLAVzacqShpnu7lbMBS+e+CbcPl6H5wk\/o558OMsb8ZHBy8J5VKHZjp3h555JHou++++4SU8vuc8xX6O4M6BBpMDNZA1FqKPBcQrZbS3PlkSS7GwwjKgwUJTIioZHSVUiISifxk48aN96XT6R1nz5697FoJHNfIICIXjL38zv1fOrym+aYvDw33fiOhRjZasuBV+AkbJFwQJy9bAADEIMG90154pXueXJmO0aVfQeiTe5S8Ab\/lVnpFR0SB2n8iTNcb9twLkr53IAlSAtKXO5c+O1GtC76WBTpTUUu5wQhShFcTBWWMdcfj8ZeGhoZeHxoaOlJLrH7gwAE5ODj4a6XUbinlV4Inpq4bAFBSxa22uYJtvZUUhy4m7JkPr+F8r1nJs9OcjUEug4CBOFlfX\/88gP9+\/fXXexYyxJjTvsI1ORhOffveW2Lj3Q+y\/PkH6sTE8phMw8nYMA1A+RXFijj0biUoSCUh\/P5\/0vLkun6\/VGWopsiJUHIy\/HJhj1VIMq\/vnynmXYMByu\/LUMQxEYpjzwhhx7FxJM1ExUrAi33ZtVb8BY1AkHLL7+IrGobxn+FweFd3d\/fb86HfbmlpWWHb9p9LKf+MiJZbllU65VzX9RiPKijlzrZ5ZnPh57MpLwVuUO3eg4rIuo\/fZx\/Kx+PxN1pbW3fu37\/\/l1f8YMU1PLq6unhb5798xhn\/6OEmd\/Sr0WJ2SYOyCQXb98X9ON7v3ZdKgpSckh1X8Gp6S6V9nmyx9AHGEqAvA4KlIAjmkZJoA6BIAeR4mQHiSIcasXeMsOPYGPrMhBckzIGBdyFHkAJLp+UAOFLKI1LKf00kEq+eOXPmYl1PHo\/HPx0KhZ6QUm7mnMd0CWuw\/qHas86EfSzk3MyEAcylhLqagSj\/fk3XxhhDPp8XQogzpmn+8+233\/7KG2+8kb8SJ\/51ZQD0+PjFrjBOv\/wp9B29zzrf+ycNMrs6ahQZlKt1x7zF5PcaTEuu6Bp\/ohJFuAqEASwA95NiJZ1DTT8OMqAYg4RT8gDSoQT2jgH\/dDyNPjPheQsBgKwWD2A+ZaaV0GVNl+Uj+7lwOLxv8eLFryaTyd3Dw8OD1XTj5zOeeuqp2M6dO9c3NjZ+M5VK3ckYW6zJQnTcW44H1OKq17Jx52oAat18Mxmhmb6Dcx58z8eLxeK\/xWKxH3d3d\/cs5JzfMABl4\/1v3fn70Yn+P47LzBdNkbvFLGQWR0hAChdKCE+cjBTgekU7jNhUHpExKCWhiHS4D4KEUgKKVCmjENQfUGBQzNMgJACKEdKhRnSNEnacyKCPJzzxkYABqGVhadCuPIceRI8rNdVU4o1jjA1wzg8BeMswjJeTyeTopXwHa9eutcbGxu7J5XJfZ4ytZ4yt1mFB+TzoECE4J0HgspYTulIGoRLmUkvzU6VW6yBeUu2kD3IS+vc+GYlEPrBt++dE9NK5c+cOXpXYGq7HYXAce\/aJ1tjhrs+rsb67zXz6D+KGWkqiAIINBuEzE5tgjvBSAMz0D3rh6xUKMEN3r3kGoAQIGH67sJdwABhBGarUDJQOxfGzMYYdJ9LoNZp8jsLqpbfTbt2Pl13XnYYal3sPwUWnN71G8zXw5jhOr1LqfwH8uKWl5denTp3KzqZcu5Cjra2tTkq5bnJy8humaW4OhUK36HhYk3UGN385sakGEyvhGMHKwmrpupkqHWc7wSuBpwGDOq1bkohK7MJSSlsI8X5TU9MPm5ub9xw8ePD0XFSZbxiAhQ4Pnvl2In\/w7TVRiC+7+ZF74s7YqoidS4SZASYJKDoeTmD4RBXcP94lYJABJSWEdMEMKqX0pKH5CbwCITKYx24MQDGGbLgBXaMM249MoM9s8ijQUTmfPxNRpW4K0fG0VsrRsbxenBpl91H3fF1d3aloNPqi4zj7w+HwBydOnMheyXfQ1tZWF4lEVgH4QjabfVBK+TnHcSKmaU6jPNc0Y\/p5ZuLeLzcAlTZ6NZKVajhEELAsw0ymCZSEQiHYtj1NvEQpNdbY2PhePB7\/USqV2t\/b2\/vRtbA\/rnsDEHDx2MDf\/dFNmXNnb22wi5+D7dxuusUvRsiNMVFgqpgH596MOEUv9reIYJDpg4LS1xIEhCFKlAQeKSimdAoMhlwojj0jwLbDafRbjWCBUztY3FJpcetTR2vR6YUXDodLhJyWZaFYLJaQZSFEgXN+ynGcnzPG3olGo4c0U+zVADQFN1lLS8tyABtyudwGxthXLMu61TTNsDZy2uCVhwHBkKccS6gGrJaf+OUMO+X\/N7jh9bsK0rH7BjYYDtic8yOMsd0A9q1bt+7Q3r17h64l6fNPjAEof+zOzteMe93jLcd++n8P1OdHvxRxJpYbdqalzmIxU7p1FhFUQXoSZOQ1IClfXFAwAUMpGAKQgnyFMuGnHhlyVgK7R4BthyfQb8U9ZqEyqusgQFfO\/a7ltfTfamOgXed8Pp8PhUJjhmF0F4vFk2vWrHn5jjvu+BUAe\/v27fIaMci0YsWKUDweX9\/f3\/8ggN9ljK0QQixSStXrdGI5M9FsG7+acQh6AtWyJUG9P73hNfW55kIwDGPMNM1kLpc7sn79+tfq6ureuVoQ\/RsGYH7HEk7u+m5s4Jf\/81utMrNEZUY\/RYX0+qb6+t+BLVcajrvYEk4kQiJs6RljwlMIEfCq\/pQE4HoVgwYhbSbw1ojC9qMZJM2YRxLKTc9ABBZKMK7Vp4Z2Q13X1aeha5pmnjE2ahjGaSHECaXUUc75sfvvv7\/v6aefThGRqAZ+Xd1T791vZ2en8eijjzaHQqFlhULh05zz9aZp3uo4zppCoZAAUMc5Z+XaAZXA1JlAwpmKfMrDMv9TJKJ0KBT62HGc45zz9zjn7z\/00EPJAwcOpN58883itTbnNwxAjaP\/vffq0i8+uZbSIyvjzkRb1M62cyGbBaHRZbKZlGhmAougKMYhuXLzYFKAiCFnNWDPeRf\/eHgcvTwKgzFYlgmDcYjpBBvBmnMJYJyIBhlj523bHm5oaBhWSvWPjIwkW1tbzz733HOHNm\/enPskzP\/Jkydjd9999+f7+vpWGYbRHolElgJYLKVs4Zy32La9hIjqKoGA5eXG5XRfFXj5XCIa55ynisXiYHNz8yCAwf7+\/oGGhoaPOzo6Dr3yyis916cvfGPMPkXMQOeTT1g3R7Om1X02TNlzMYvcWEgUoxDFepOHE1mn0FrITd5kWFazy81Fb\/eNxr73\/nkrqSyv0sAwJDFTcjM0CchcfSyWa2trGxZCnBsZGelJp9MTnPNcJBKZAJCORqOZu+66q7Bt2zbbNw6f2LFp0yaezWatXC4XEULElVLxsbGxeDgcrl+yZEmLUqo9lUq12rbdxBiLCSEijuMYUkoCQJxzBUBZlmW7rpsLh8Pjy5YtGxJCJDOZzMDw8PBYLBbL1tfXp7PZ7NiWLVuyW7duLa5bt86+lk\/3Gwbgss4kQ+c\/PGlZ+d+E6ifyrLf3vPX8md7Q+RHFikRydHJSxmIx0dTU5Nq27ba3t4tdu3Y5a9euLepU140x9+GHS0Z7e7uVz+dNx3HMSCTCM5mMgUCzGxGJWCwmCoWCvXTpUrezs9O+7bbb7E\/63P8\/l8mvzK2mk6UAAAAASUVORK5CYII=\" alt=\"Onground Media logo\"><\/span>\r\n        <span class=\"brand-name\">Onground Media<\/span>\r\n      <\/a>\r\n      <span class=\"top-note\">Free tools for digital marketers<\/span>\r\n    <\/div>\r\n    <div class=\"hero-body\">\r\n      <div>\r\n        <p class=\"eyebrow\">Schema and structured data<\/p>\r\n        <h1>Generate, check and read <em>schema markup<\/em><\/h1>\r\n        <p class=\"lead\">Fill in a form and get clean JSON-LD for your page. Paste markup you already have to check it, or pull it out of a page's source.<\/p>\r\n      <\/div>\r\n      <div class=\"search\">\r\n        <label for=\"q\">Find a tool<\/label>\r\n        <input id=\"q\" type=\"search\" placeholder=\"Try faq, product, event, validate\" autocomplete=\"off\">\r\n        <small id=\"q-count\"><\/small>\r\n      <\/div>\r\n    <\/div>\r\n  <\/div>\r\n<\/header>\r\n\r\n<div class=\"wrap shell\">\r\n  <nav class=\"rail\" id=\"rail\" aria-label=\"Schema tools\"><\/nav>\r\n  <main class=\"bench\" id=\"bench\"><\/main>\r\n<\/div>\r\n\r\n<footer>\r\n  <div class=\"wrap\">\r\n    <span><strong>Onground Media<\/strong> &nbsp;Schema tools run in your browser. Nothing you type is sent anywhere.<\/span>\r\n    <span>\u00a9 2026 Onground Media<\/span>\r\n  <\/div>\r\n<\/footer>\r\n\r\n<script>\r\n(function () {\r\n  'use strict';\r\n  var $ = function (id) { return document.getElementById(id); };\r\n\r\n  \/* ---------------- helpers ---------------- *\/\r\n  function h(tag, props) {\r\n    var e = document.createElement(tag);\r\n    if (props) Object.keys(props).forEach(function (k) {\r\n      if (k === 'class') e.className = props[k];\r\n      else if (k === 'text') e.textContent = props[k];\r\n      else if (k === 'on') Object.keys(props.on).forEach(function (ev) { e.addEventListener(ev, props.on[ev]); });\r\n      else if (props[k] !== undefined && props[k] !== null && props[k] !== false) e.setAttribute(k, props[k] === true ? '' : props[k]);\r\n    });\r\n    for (var i = 2; i < arguments.length; i++) {\r\n      var c = arguments[i];\r\n      if (c == null || c === false) continue;\r\n      e.appendChild(typeof c === 'string' ? document.createTextNode(c) : c);\r\n    }\r\n    return e;\r\n  }\r\n  var S = function (x) { x = x == null ? '' : String(x).trim(); return x === '' ? undefined : x; };\r\n  var N = function (x) { x = S(x); if (x === undefined) return undefined; var f = Number(x); return isFinite(f) ? f : undefined; };\r\n  var L = function (x) { var a = String(x || '').split(\/\\r?\\n\/).map(function (t) { return t.trim(); }).filter(Boolean); return a.length ? a : undefined; };\r\n  var one = function (a) { return a && a.length === 1 ? a[0] : a; };\r\n  function clean(o, top) {\r\n    if (Array.isArray(o)) { var a = o.map(function (x) { return clean(x); }).filter(function (x) { return x !== undefined; }); return a.length ? a : undefined; }\r\n    if (o && typeof o === 'object') {\r\n      var r = {}, c = 0;\r\n      Object.keys(o).forEach(function (k) { var v = clean(o[k]); if (v !== undefined) { r[k] = v; if (k.charAt(0) !== '@') c++; } });\r\n      return (c || top) ? r : undefined;\r\n    }\r\n    if (o === '' || o == null) return undefined;\r\n    return o;\r\n  }\r\n  function isoDur(txt) {\r\n    txt = S(txt); if (!txt) return undefined;\r\n    if (\/^P\/i.test(txt)) return txt.toUpperCase();\r\n    var p = txt.split(':').map(Number); if (p.some(isNaN) || p.length > 3) return undefined;\r\n    var hh = 0, mm = 0, ss = 0;\r\n    if (p.length === 3) { hh = p[0]; mm = p[1]; ss = p[2]; } else if (p.length === 2) { mm = p[0]; ss = p[1]; } else { mm = p[0]; }\r\n    return 'PT' + (hh ? hh + 'H' : '') + (mm ? mm + 'M' : '') + (ss ? ss + 'S' : '') || 'PT0S';\r\n  }\r\n  function minsToIso(m) {\r\n    m = N(m); if (m === undefined) return undefined;\r\n    var hh = Math.floor(m \/ 60), mm = Math.round(m % 60);\r\n    return 'PT' + (hh ? hh + 'H' : '') + (mm || !hh ? mm + 'M' : '');\r\n  }\r\n  function addr(v, p) {\r\n    return { '@type': 'PostalAddress', streetAddress: S(v[p + 'Street']), addressLocality: S(v[p + 'City']), addressRegion: S(v[p + 'Region']), postalCode: S(v[p + 'Postal']), addressCountry: S(v[p + 'Country']) };\r\n  }\r\n  function addrFields(p, sec, ex) {\r\n    return [\r\n      { id: p + 'Street', label: 'Street address', sec: sec, full: true, ex: ex[0] },\r\n      { id: p + 'City', label: 'City', ex: ex[1] },\r\n      { id: p + 'Region', label: 'State or region', ex: ex[2] },\r\n      { id: p + 'Postal', label: 'Postal code', ex: ex[3] },\r\n      { id: p + 'Country', label: 'Country code', ph: 'IN, US, GB', ex: ex[4], hint: '' }\r\n    ];\r\n  }\r\n  var AVAIL = [['InStock', 'In stock'], ['OutOfStock', 'Out of stock'], ['PreOrder', 'Pre-order'], ['BackOrder', 'Back order'], ['SoldOut', 'Sold out'], ['LimitedAvailability', 'Limited availability']];\r\n  var CURR = [['INR', 'INR'], ['USD', 'USD'], ['EUR', 'EUR'], ['GBP', 'GBP'], ['AED', 'AED'], ['AUD', 'AUD'], ['CAD', 'CAD'], ['SGD', 'SGD']];\r\n  var DAYSETS = {\r\n    'Mon-Fri': ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday'],\r\n    'Mon-Sat': ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\r\n    'Mon-Sun': ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'],\r\n    'Saturday': ['Saturday'], 'Sunday': ['Sunday'], 'Monday': ['Monday'], 'Tuesday': ['Tuesday'], 'Wednesday': ['Wednesday'], 'Thursday': ['Thursday'], 'Friday': ['Friday']\r\n  };\r\n  var DAYOPTS = Object.keys(DAYSETS).map(function (k) { return [k, k.replace('-', ' to ')]; });\r\n  var sc = function (t) { return t ? 'https:\/\/schema.org\/' + t : undefined; };\r\n\r\n  \/* ---------------- tool definitions ---------------- *\/\r\n  var TOOLS = [];\r\n  function tool(t) { TOOLS.push(t); }\r\n\r\n  tool({\r\n    id: 'faq', name: 'FAQ schema', kind: 'gen', kw: 'faq questions answers rich results',\r\n    desc: 'Mark up questions and answers on a page as FAQPage.',\r\n    note: 'Google now shows FAQ rich results only for well-known government and health sites. The markup is still valid and other search engines and AI tools can read it.',\r\n    fields: [\r\n      { id: 'items', type: 'list', label: 'Questions and answers', req: true, addLabel: 'Add question',\r\n        cols: [{ id: 'q', label: 'Question', full: true, req: true }, { id: 'a', label: 'Answer', type: 'textarea', full: true, req: true }],\r\n        ex: [{ q: 'What is a UTM link?', a: 'A UTM link is a normal URL with tracking parameters added so analytics tools can show which campaign sent each visit.' },\r\n             { q: 'Are the tools free to use?', a: 'Yes. Every tool on this page is free and runs in your browser.' }] }\r\n    ],\r\n    build: function (v) {\r\n      return { '@type': 'FAQPage', mainEntity: (v.items || []).filter(function (r) { return S(r.q) && S(r.a); }).map(function (r) {\r\n        return { '@type': 'Question', name: S(r.q), acceptedAnswer: { '@type': 'Answer', text: S(r.a) } };\r\n      }) };\r\n    }\r\n  });\r\n\r\n  tool({\r\n    id: 'local-business', name: 'Local business schema', kind: 'gen', kw: 'local business address phone hours opening store restaurant',\r\n    desc: 'Name, address, phone, opening hours and map position for a business with a physical location.',\r\n    fields: [].concat([\r\n      { id: 'type', label: 'Business type', type: 'select', ex: 'LocalBusiness', opts: [['LocalBusiness', 'Local business (general)'], ['Restaurant', 'Restaurant'], ['CafeOrCoffeeShop', 'Cafe or coffee shop'], ['Store', 'Store'], ['HealthAndBeautyBusiness', 'Health and beauty'], ['ProfessionalService', 'Professional service'], ['LegalService', 'Legal service'], ['Dentist', 'Dentist'], ['AutoRepair', 'Auto repair'], ['RealEstateAgent', 'Real estate agent'], ['TravelAgency', 'Travel agency'], ['FinancialService', 'Financial service'], ['Hotel', 'Hotel']] },\r\n      { id: 'name', label: 'Business name', req: true, ex: 'Sample Coffee Roasters', sec: 'Business' },\r\n      { id: 'url', label: 'Website', type: 'url', ex: 'https:\/\/example.com' },\r\n      { id: 'image', label: 'Image URL', type: 'url', ex: 'https:\/\/example.com\/shop.jpg' },\r\n      { id: 'phone', label: 'Phone', ex: '+91-98765-43210' },\r\n      { id: 'email', label: 'Email', ex: 'hello@example.com' },\r\n      { id: 'price', label: 'Price range', ph: '$$ or \u20b9\u20b9', ex: '$$' },\r\n      { id: 'cuisine', label: 'Cuisine (restaurants)', ph: 'optional', ex: '' }\r\n    ], addrFields('a', 'Address', ['12 MG Road', 'Bengaluru', 'Karnataka', '560001', 'IN']).map(function (f) { if (f.id === 'aStreet' || f.id === 'aCity') f.req = true; return f; }), [\r\n      { id: 'lat', label: 'Latitude', type: 'number', step: 'any', ex: '12.9716', sec: 'Map position' },\r\n      { id: 'lng', label: 'Longitude', type: 'number', step: 'any', ex: '77.5946' },\r\n      { id: 'hours', type: 'list', label: 'Opening hours', sec: 'Hours', addLabel: 'Add hours',\r\n        cols: [{ id: 'days', label: 'Days', type: 'select', opts: DAYOPTS }, { id: 'opens', label: 'Opens', type2: 'time', ph: '09:00' }, { id: 'closes', label: 'Closes', type2: 'time', ph: '18:00' }],\r\n        ex: [{ days: 'Mon-Fri', opens: '09:00', closes: '18:00' }, { days: 'Saturday', opens: '10:00', closes: '16:00' }] },\r\n      { id: 'sameAs', label: 'Profile links (one per line)', type: 'textarea', full: true, ex: 'https:\/\/www.facebook.com\/example\\nhttps:\/\/www.instagram.com\/example', sec: 'Profiles' }\r\n    ]),\r\n    build: function (v) {\r\n      return { '@type': v.type || 'LocalBusiness', name: S(v.name), url: S(v.url), image: S(v.image), telephone: S(v.phone), email: S(v.email), priceRange: S(v.price),\r\n        servesCuisine: S(v.cuisine), address: addr(v, 'a'),\r\n        geo: (N(v.lat) !== undefined && N(v.lng) !== undefined) ? { '@type': 'GeoCoordinates', latitude: N(v.lat), longitude: N(v.lng) } : undefined,\r\n        openingHoursSpecification: (v.hours || []).filter(function (r) { return S(r.opens) && S(r.closes); }).map(function (r) {\r\n          return { '@type': 'OpeningHoursSpecification', dayOfWeek: DAYSETS[r.days] || DAYSETS['Mon-Fri'], opens: S(r.opens), closes: S(r.closes) };\r\n        }), sameAs: L(v.sameAs) };\r\n    }\r\n  });\r\n\r\n  tool({\r\n    id: 'product', name: 'Product schema', kind: 'gen', kw: 'product price rating availability offer ecommerce',\r\n    desc: 'Price, stock status and ratings so products can appear with rich details.',\r\n    fields: [\r\n      { id: 'name', label: 'Product name', req: true, full: true, ex: 'Trail Runner 2 Running Shoes', sec: 'Product' },\r\n      { id: 'image', label: 'Image URLs (one per line)', type: 'textarea', req: true, full: true, ex: 'https:\/\/example.com\/shoe-front.jpg\\nhttps:\/\/example.com\/shoe-side.jpg' },\r\n      { id: 'description', label: 'Description', type: 'textarea', full: true, ex: 'Lightweight trail running shoes with a grippy outsole and breathable mesh upper.' },\r\n      { id: 'brand', label: 'Brand', ex: 'Example Sports' },\r\n      { id: 'sku', label: 'SKU', ex: 'TR2-BLK-42' },\r\n      { id: 'gtin', label: 'GTIN or barcode', ex: '' },\r\n      { id: 'url', label: 'Product page URL', type: 'url', ex: 'https:\/\/example.com\/shoes\/trail-runner-2' },\r\n      { id: 'price', label: 'Price', type: 'number', step: 'any', req: true, sec: 'Offer', ex: '4999' },\r\n      { id: 'currency', label: 'Currency', type: 'select', opts: CURR, ex: 'INR', req: true },\r\n      { id: 'avail', label: 'Availability', type: 'select', opts: AVAIL, ex: 'InStock' },\r\n      { id: 'cond', label: 'Condition', type: 'select', opts: [['NewCondition', 'New'], ['UsedCondition', 'Used'], ['RefurbishedCondition', 'Refurbished']], ex: 'NewCondition' },\r\n      { id: 'until', label: 'Price valid until', type: 'date', ex: '2026-12-31' },\r\n      { id: 'rating', label: 'Average rating', type: 'number', step: '0.1', min: 0, max: 5, sec: 'Ratings (only if shown on the page)', ex: '4.6' },\r\n      { id: 'count', label: 'Number of reviews', type: 'number', min: 0, ex: '212' }\r\n    ],\r\n    build: function (v) {\r\n      var hasR = N(v.rating) !== undefined && N(v.count) !== undefined;\r\n      return { '@type': 'Product', name: S(v.name), image: one(L(v.image)), description: S(v.description), sku: S(v.sku), gtin: S(v.gtin),\r\n        brand: S(v.brand) ? { '@type': 'Brand', name: S(v.brand) } : undefined,\r\n        offers: N(v.price) !== undefined ? { '@type': 'Offer', url: S(v.url), price: N(v.price), priceCurrency: v.currency, priceValidUntil: S(v.until), availability: sc(v.avail), itemCondition: sc(v.cond) } : undefined,\r\n        aggregateRating: hasR ? { '@type': 'AggregateRating', ratingValue: N(v.rating), reviewCount: N(v.count) } : undefined };\r\n    }\r\n  });\r\n\r\n  tool({\r\n    id: 'article', name: 'Article and blog schema', kind: 'gen', kw: 'article blog post news author headline publisher',\r\n    desc: 'Headline, author, dates and publisher for articles and blog posts.',\r\n    fields: [\r\n      { id: 'type', label: 'Type', type: 'select', ex: 'BlogPosting', opts: [['Article', 'Article'], ['BlogPosting', 'Blog post'], ['NewsArticle', 'News article']], sec: 'Article' },\r\n      { id: 'headline', label: 'Headline', req: true, full: true, ex: 'How to Track Every Campaign With UTM Links', hint: 'Keep it under 110 characters.' },\r\n      { id: 'description', label: 'Description', type: 'textarea', full: true, ex: 'A step-by-step guide to tagging links so every visit is credited to the right campaign.' },\r\n      { id: 'url', label: 'Article URL', type: 'url', req: true, full: true, ex: 'https:\/\/example.com\/blog\/utm-links-guide' },\r\n      { id: 'image', label: 'Image URLs (one per line)', type: 'textarea', req: true, full: true, ex: 'https:\/\/example.com\/images\/utm-guide.jpg' },\r\n      { id: 'published', label: 'Date published', type: 'datetime-local', req: true, ex: '2026-10-01T09:00' },\r\n      { id: 'modified', label: 'Date modified', type: 'datetime-local', ex: '2026-10-10T14:30' },\r\n      { id: 'author', label: 'Author name', req: true, sec: 'Author and publisher', ex: 'Anoop Sharma' },\r\n      { id: 'authorUrl', label: 'Author page URL', type: 'url', ex: 'https:\/\/example.com\/authors\/anoop' },\r\n      { id: 'pub', label: 'Publisher name', ex: 'Onground Media' },\r\n      { id: 'pubLogo', label: 'Publisher logo URL', type: 'url', ex: 'https:\/\/example.com\/logo.png' }\r\n    ],\r\n    build: function (v) {\r\n      return { '@type': v.type || 'Article', headline: S(v.headline), description: S(v.description), image: one(L(v.image)), datePublished: S(v.published), dateModified: S(v.modified),\r\n        mainEntityOfPage: S(v.url) ? { '@type': 'WebPage', '@id': S(v.url) } : undefined,\r\n        author: S(v.author) ? { '@type': 'Person', name: S(v.author), url: S(v.authorUrl) } : undefined,\r\n        publisher: S(v.pub) ? { '@type': 'Organization', name: S(v.pub), logo: S(v.pubLogo) ? { '@type': 'ImageObject', url: S(v.pubLogo) } : undefined } : undefined };\r\n    }\r\n  });\r\n\r\n  tool({\r\n    id: 'organization', name: 'Organization schema', kind: 'gen', kw: 'organization brand company logo knowledge panel',\r\n    desc: 'Brand name, logo, contact details and social profiles for your company.',\r\n    fields: [].concat([\r\n      { id: 'type', label: 'Type', type: 'select', ex: 'Organization', opts: [['Organization', 'Organization'], ['Corporation', 'Corporation'], ['NGO', 'Non-profit'], ['EducationalOrganization', 'Educational organization'], ['OnlineStore', 'Online store']], sec: 'Brand' },\r\n      { id: 'name', label: 'Name', req: true, ex: 'Onground Media' },\r\n      { id: 'url', label: 'Website', type: 'url', req: true, ex: 'https:\/\/example.com' },\r\n      { id: 'logo', label: 'Logo URL', type: 'url', req: true, ex: 'https:\/\/example.com\/logo.png', hint: 'Square or wide image, at least 112 by 112 pixels.' },\r\n      { id: 'description', label: 'Description', type: 'textarea', full: true, ex: 'Onground Media builds free tools for digital marketers.' },\r\n      { id: 'email', label: 'Email', ex: 'hello@example.com' },\r\n      { id: 'phone', label: 'Phone', ex: '+91-98765-43210' },\r\n      { id: 'founded', label: 'Founding date', ph: 'YYYY or YYYY-MM-DD', ex: '2024' }\r\n    ], addrFields('a', 'Address (optional)', ['', 'Bengaluru', 'Karnataka', '', 'IN']), [\r\n      { id: 'sameAs', label: 'Profile links (one per line)', type: 'textarea', full: true, sec: 'Profiles', ex: 'https:\/\/www.linkedin.com\/company\/example\\nhttps:\/\/www.youtube.com\/@example\\nhttps:\/\/x.com\/example' }\r\n    ]),\r\n    build: function (v) {\r\n      return { '@type': v.type || 'Organization', name: S(v.name), url: S(v.url), logo: S(v.logo), description: S(v.description), email: S(v.email), telephone: S(v.phone), foundingDate: S(v.founded), address: addr(v, 'a'), sameAs: L(v.sameAs) };\r\n    }\r\n  });\r\n\r\n  tool({\r\n    id: 'breadcrumb', name: 'Breadcrumb schema', kind: 'gen', kw: 'breadcrumb trail navigation path',\r\n    desc: 'Describe the path from your home page to the current page.',\r\n    fields: [\r\n      { id: 'items', type: 'list', label: 'Trail, from home to current page', req: true, addLabel: 'Add level',\r\n        cols: [{ id: 'name', label: 'Name', req: true }, { id: 'url', label: 'URL', type: 'url', req: true }],\r\n        ex: [{ name: 'Home', url: 'https:\/\/example.com\/' }, { name: 'Tools', url: 'https:\/\/example.com\/tools\/' }, { name: 'Schema generators', url: 'https:\/\/example.com\/tools\/schema\/' }] }\r\n    ],\r\n    build: function (v) {\r\n      var rows = (v.items || []).filter(function (r) { return S(r.name) && S(r.url); });\r\n      return { '@type': 'BreadcrumbList', itemListElement: rows.map(function (r, i) { return { '@type': 'ListItem', position: i + 1, name: S(r.name), item: S(r.url) }; }) };\r\n    }\r\n  });\r\n\r\n  tool({\r\n    id: 'review', name: 'Review and rating schema', kind: 'gen', kw: 'review rating stars aggregate',\r\n    desc: 'Mark up a single review or a summary star rating for an item.',\r\n    note: 'Google ignores reviews that a business writes about itself, so do not use this for self-reviews of your own business or organization.',\r\n    fields: [\r\n      { id: 'mode', label: 'What are you marking up?', type: 'select', affects: true, ex: 'review', opts: [['review', 'One review'], ['aggregate', 'Summary rating (many reviews)']], sec: 'Item' },\r\n      { id: 'itemType', label: 'Item type', type: 'select', ex: 'Product', opts: [['Product', 'Product'], ['Book', 'Book'], ['Movie', 'Movie'], ['Course', 'Course'], ['SoftwareApplication', 'Software app'], ['Recipe', 'Recipe']] },\r\n      { id: 'itemName', label: 'Item name', req: true, ex: 'Trail Runner 2 Running Shoes' },\r\n      { id: 'itemImage', label: 'Item image URL', type: 'url', ex: 'https:\/\/example.com\/shoe-front.jpg' },\r\n      { id: 'rating', label: 'Rating value', type: 'number', step: '0.1', req: true, sec: 'Rating', ex: '4.5' },\r\n      { id: 'best', label: 'Best possible', type: 'number', ex: '5' },\r\n      { id: 'worst', label: 'Worst possible', type: 'number', ex: '1' },\r\n      { id: 'count', label: 'Number of ratings', type: 'number', req: true, when: function (v) { return v.mode === 'aggregate'; }, ex: '128' },\r\n      { id: 'author', label: 'Reviewer name', req: true, sec: 'Review', when: function (v) { return v.mode !== 'aggregate'; }, ex: 'Priya Nair' },\r\n      { id: 'date', label: 'Review date', type: 'date', when: function (v) { return v.mode !== 'aggregate'; }, ex: '2026-09-20' },\r\n      { id: 'body', label: 'Review text', type: 'textarea', full: true, when: function (v) { return v.mode !== 'aggregate'; }, ex: 'Great grip on wet trails and comfortable from the first run.' }\r\n    ],\r\n    build: function (v) {\r\n      var rt = { ratingValue: N(v.rating), bestRating: N(v.best), worstRating: N(v.worst) };\r\n      var item = { '@type': v.itemType || 'Product', name: S(v.itemName), image: S(v.itemImage) };\r\n      if (v.mode === 'aggregate') {\r\n        item.aggregateRating = Object.assign({ '@type': 'AggregateRating' }, rt, { ratingCount: N(v.count) });\r\n        return item;\r\n      }\r\n      return { '@type': 'Review', itemReviewed: item, author: S(v.author) ? { '@type': 'Person', name: S(v.author) } : undefined,\r\n        reviewRating: Object.assign({ '@type': 'Rating' }, rt), reviewBody: S(v.body), datePublished: S(v.date) };\r\n    }\r\n  });\r\n\r\n  tool({\r\n    id: 'event', name: 'Event schema', kind: 'gen', kw: 'event date venue tickets online webinar concert',\r\n    desc: 'Dates, venue or online link, and ticket details for an event.',\r\n    fields: [].concat([\r\n      { id: 'name', label: 'Event name', req: true, full: true, ex: 'Digital Marketing Meetup Bengaluru', sec: 'Event' },\r\n      { id: 'description', label: 'Description', type: 'textarea', full: true, ex: 'An evening of talks on SEO, paid media and analytics.' },\r\n      { id: 'image', label: 'Image URL', type: 'url', ex: 'https:\/\/example.com\/meetup.jpg' },\r\n      { id: 'url', label: 'Event page URL', type: 'url', ex: 'https:\/\/example.com\/events\/meetup' },\r\n      { id: 'start', label: 'Starts', type: 'datetime-local', req: true, ex: '2026-11-21T18:00' },\r\n      { id: 'end', label: 'Ends', type: 'datetime-local', ex: '2026-11-21T21:00' },\r\n      { id: 'mode', label: 'Attendance', type: 'select', affects: true, ex: 'offline', opts: [['offline', 'In person'], ['online', 'Online'], ['mixed', 'In person and online']] },\r\n      { id: 'status', label: 'Status', type: 'select', ex: 'EventScheduled', opts: [['EventScheduled', 'Scheduled'], ['EventCancelled', 'Cancelled'], ['EventPostponed', 'Postponed'], ['EventMovedOnline', 'Moved online']] },\r\n      { id: 'venue', label: 'Venue name', sec: 'Location', ex: 'Tech Hub Auditorium', when: function (v) { return v.mode !== 'online'; }, req: true },\r\n      { id: 'online', label: 'Online event link', type: 'url', ex: 'https:\/\/example.com\/live', when: function (v) { return v.mode !== 'offline'; }, req: true }\r\n    ], addrFields('a', '', ['4th Floor, Indiranagar', 'Bengaluru', 'Karnataka', '560038', 'IN']).map(function (f) { f.when = function (v) { return v.mode !== 'online'; }; delete f.sec; return f; }), [\r\n      { id: 'org', label: 'Organizer name', sec: 'People', ex: 'Onground Media' },\r\n      { id: 'orgUrl', label: 'Organizer URL', type: 'url', ex: 'https:\/\/example.com' },\r\n      { id: 'performer', label: 'Performer or speaker', ex: 'Anoop Sharma' },\r\n      { id: 'price', label: 'Ticket price', type: 'number', step: 'any', sec: 'Tickets', ex: '499', hint: 'Use 0 for a free event.' },\r\n      { id: 'currency', label: 'Currency', type: 'select', opts: CURR, ex: 'INR' },\r\n      { id: 'avail', label: 'Availability', type: 'select', opts: AVAIL, ex: 'InStock' },\r\n      { id: 'ticketUrl', label: 'Ticket URL', type: 'url', ex: 'https:\/\/example.com\/tickets' }\r\n    ]),\r\n    build: function (v) {\r\n      var place = { '@type': 'Place', name: S(v.venue), address: addr(v, 'a') };\r\n      var virt = { '@type': 'VirtualLocation', url: S(v.online) };\r\n      var loc = v.mode === 'online' ? virt : v.mode === 'mixed' ? [place, virt] : place;\r\n      return { '@type': 'Event', name: S(v.name), description: S(v.description), image: S(v.image), url: S(v.url), startDate: S(v.start), endDate: S(v.end),\r\n        eventStatus: sc(v.status), eventAttendanceMode: sc({ offline: 'OfflineEventAttendanceMode', online: 'OnlineEventAttendanceMode', mixed: 'MixedEventAttendanceMode' }[v.mode || 'offline']),\r\n        location: loc,\r\n        organizer: S(v.org) ? { '@type': 'Organization', name: S(v.org), url: S(v.orgUrl) } : undefined,\r\n        performer: S(v.performer) ? { '@type': 'Person', name: S(v.performer) } : undefined,\r\n        offers: N(v.price) !== undefined ? { '@type': 'Offer', url: S(v.ticketUrl), price: N(v.price), priceCurrency: v.currency, availability: sc(v.avail) } : undefined };\r\n    }\r\n  });\r\n\r\n  tool({\r\n    id: 'video', name: 'Video schema', kind: 'gen', kw: 'video youtube thumbnail duration upload',\r\n    desc: 'Title, thumbnail, duration and upload date for a video on your page.',\r\n    fields: [\r\n      { id: 'name', label: 'Video title', req: true, full: true, ex: 'UTM Links Explained in 5 Minutes', sec: 'Video' },\r\n      { id: 'description', label: 'Description', type: 'textarea', req: true, full: true, ex: 'Learn how to tag campaign links and read the results in your analytics.' },\r\n      { id: 'thumb', label: 'Thumbnail URLs (one per line)', type: 'textarea', req: true, full: true, ex: 'https:\/\/example.com\/video-thumb.jpg' },\r\n      { id: 'upload', label: 'Upload date', type: 'date', req: true, ex: '2026-09-15' },\r\n      { id: 'duration', label: 'Length', ph: 'm:ss or h:mm:ss', ex: '5:12', hint: 'Converted to ISO 8601 automatically.' },\r\n      { id: 'content', label: 'Video file URL', type: 'url', ex: 'https:\/\/example.com\/media\/utm.mp4', sec: 'Where it plays' },\r\n      { id: 'embed', label: 'Embed URL', type: 'url', ex: 'https:\/\/www.youtube.com\/embed\/VIDEO_ID', hint: 'Give at least one of file URL or embed URL.' }\r\n    ],\r\n    build: function (v) {\r\n      return { '@type': 'VideoObject', name: S(v.name), description: S(v.description), thumbnailUrl: one(L(v.thumb)), uploadDate: S(v.upload), duration: isoDur(v.duration), contentUrl: S(v.content), embedUrl: S(v.embed) };\r\n    }\r\n  });\r\n\r\n  tool({\r\n    id: 'how-to', name: 'How-to schema', kind: 'gen', kw: 'how to howto steps guide tutorial instructions',\r\n    desc: 'Describe the steps, time, supplies and tools for a tutorial.',\r\n    note: 'Google no longer shows how-to rich results. The markup is still valid schema.org and helps other crawlers understand the page.',\r\n    fields: [\r\n      { id: 'name', label: 'Title', req: true, full: true, ex: 'How to Build a UTM Link', sec: 'Guide' },\r\n      { id: 'description', label: 'Description', type: 'textarea', full: true, ex: 'Add campaign tags to any URL so you can track where visits come from.' },\r\n      { id: 'image', label: 'Image URL', type: 'url', ex: 'https:\/\/example.com\/utm-howto.jpg' },\r\n      { id: 'time', label: 'Total time (minutes)', type: 'number', ex: '5' },\r\n      { id: 'cost', label: 'Estimated cost', type: 'number', step: 'any', ex: '0' },\r\n      { id: 'currency', label: 'Currency', type: 'select', opts: CURR, ex: 'INR' },\r\n      { id: 'supply', label: 'Supplies (one per line)', type: 'textarea', ex: 'Landing page URL\\nCampaign name' },\r\n      { id: 'tools', label: 'Tools (one per line)', type: 'textarea', ex: 'UTM link builder' },\r\n      { id: 'steps', type: 'list', label: 'Steps', req: true, sec: 'Steps', addLabel: 'Add step',\r\n        cols: [{ id: 'name', label: 'Step title', req: true, full: true }, { id: 'text', label: 'What to do', type: 'textarea', req: true, full: true }, { id: 'image', label: 'Step image URL', type: 'url', full: true }],\r\n        ex: [{ name: 'Choose the landing page', text: 'Copy the full URL of the page you want people to visit.', image: '' },\r\n             { name: 'Add source, medium and campaign', text: 'Fill in utm_source, utm_medium and utm_campaign in the builder.', image: '' },\r\n             { name: 'Copy and use the link', text: 'Copy the finished URL and use it in your ad, email or post.', image: '' }] }\r\n    ],\r\n    build: function (v) {\r\n      return { '@type': 'HowTo', name: S(v.name), description: S(v.description), image: S(v.image), totalTime: minsToIso(v.time),\r\n        estimatedCost: N(v.cost) !== undefined ? { '@type': 'MonetaryAmount', currency: v.currency, value: String(N(v.cost)) } : undefined,\r\n        supply: (L(v.supply) || []).map(function (t) { return { '@type': 'HowToSupply', name: t }; }),\r\n        tool: (L(v.tools) || []).map(function (t) { return { '@type': 'HowToTool', name: t }; }),\r\n        step: (v.steps || []).filter(function (r) { return S(r.name) && S(r.text); }).map(function (r) { return { '@type': 'HowToStep', name: S(r.name), text: S(r.text), image: S(r.image) }; }) };\r\n    }\r\n  });\r\n\r\n  tool({\r\n    id: 'person', name: 'Person schema', kind: 'gen', kw: 'person author profile bio job title',\r\n    desc: 'Describe an author, expert or team member and link their profiles.',\r\n    fields: [\r\n      { id: 'name', label: 'Full name', req: true, ex: 'Anoop Sharma', sec: 'Person' },\r\n      { id: 'job', label: 'Job title', ex: 'Digital Marketing Consultant' },\r\n      { id: 'url', label: 'Profile or website URL', type: 'url', ex: 'https:\/\/example.com\/about' },\r\n      { id: 'image', label: 'Photo URL', type: 'url', ex: 'https:\/\/example.com\/anoop.jpg' },\r\n      { id: 'email', label: 'Email', ex: 'anoop@example.com' },\r\n      { id: 'phone', label: 'Phone', ex: '' },\r\n      { id: 'works', label: 'Works for', ex: 'Onground Media' },\r\n      { id: 'alumni', label: 'Studied at', ex: '' },\r\n      { id: 'city', label: 'City', ex: 'Bengaluru' },\r\n      { id: 'country', label: 'Country code', ex: 'IN' },\r\n      { id: 'description', label: 'Short bio', type: 'textarea', full: true, ex: 'Helps small businesses grow with search and paid media.' },\r\n      { id: 'sameAs', label: 'Profile links (one per line)', type: 'textarea', full: true, ex: 'https:\/\/www.linkedin.com\/in\/example\\nhttps:\/\/x.com\/example' }\r\n    ],\r\n    build: function (v) {\r\n      return { '@type': 'Person', name: S(v.name), jobTitle: S(v.job), url: S(v.url), image: S(v.image), email: S(v.email), telephone: S(v.phone), description: S(v.description),\r\n        worksFor: S(v.works) ? { '@type': 'Organization', name: S(v.works) } : undefined,\r\n        alumniOf: S(v.alumni) ? { '@type': 'CollegeOrUniversity', name: S(v.alumni) } : undefined,\r\n        address: (S(v.city) || S(v.country)) ? { '@type': 'PostalAddress', addressLocality: S(v.city), addressCountry: S(v.country) } : undefined, sameAs: L(v.sameAs) };\r\n    }\r\n  });\r\n\r\n  tool({\r\n    id: 'job-posting', name: 'Job posting schema', kind: 'gen', kw: 'job posting careers hiring vacancy salary remote',\r\n    desc: 'Title, employer, location and pay for a job so it can appear in job search.',\r\n    fields: [].concat([\r\n      { id: 'title', label: 'Job title', req: true, full: true, ex: 'SEO Specialist', sec: 'Job' },\r\n      { id: 'description', label: 'Description (HTML allowed)', type: 'textarea', req: true, full: true, ex: '<p>Plan and run technical and on-page SEO for client websites.<\/p><ul><li>Audit sites<\/li><li>Report on results<\/li><\/ul>' },\r\n      { id: 'posted', label: 'Date posted', type: 'date', req: true, ex: '2026-10-12' },\r\n      { id: 'valid', label: 'Apply by', type: 'date', ex: '2026-11-30' },\r\n      { id: 'etype', label: 'Employment type', type: 'select', ex: 'FULL_TIME', opts: [['FULL_TIME', 'Full time'], ['PART_TIME', 'Part time'], ['CONTRACTOR', 'Contract'], ['TEMPORARY', 'Temporary'], ['INTERN', 'Internship']] },\r\n      { id: 'direct', label: 'Candidates can apply directly on this page', type: 'check', ex: true, full: true },\r\n      { id: 'org', label: 'Hiring company', req: true, sec: 'Employer', ex: 'Onground Media' },\r\n      { id: 'orgUrl', label: 'Company website', type: 'url', ex: 'https:\/\/example.com' },\r\n      { id: 'logo', label: 'Company logo URL', type: 'url', ex: 'https:\/\/example.com\/logo.png', full: true },\r\n      { id: 'remote', label: 'Fully remote role', type: 'check', affects: true, ex: false, full: true, sec: 'Location' },\r\n      { id: 'remoteCountry', label: 'Candidates must live in (country code)', ex: 'IN', when: function (v) { return !!v.remote; } }\r\n    ], addrFields('l', '', ['12 MG Road', 'Bengaluru', 'Karnataka', '560001', 'IN']).map(function (f) { f.when = function (v) { return !v.remote; }; delete f.sec; return f; }), [\r\n      { id: 'salMin', label: 'Minimum pay', type: 'number', step: 'any', sec: 'Pay', ex: '500000' },\r\n      { id: 'salMax', label: 'Maximum pay', type: 'number', step: 'any', ex: '800000' },\r\n      { id: 'salCur', label: 'Currency', type: 'select', opts: CURR, ex: 'INR' },\r\n      { id: 'salUnit', label: 'Paid per', type: 'select', ex: 'YEAR', opts: [['YEAR', 'Year'], ['MONTH', 'Month'], ['WEEK', 'Week'], ['DAY', 'Day'], ['HOUR', 'Hour']] }\r\n    ]),\r\n    build: function (v) {\r\n      var sal = N(v.salMin) !== undefined || N(v.salMax) !== undefined;\r\n      return { '@type': 'JobPosting', title: S(v.title), description: S(v.description), datePosted: S(v.posted), validThrough: S(v.valid), employmentType: S(v.etype), directApply: v.direct ? true : undefined,\r\n        hiringOrganization: S(v.org) ? { '@type': 'Organization', name: S(v.org), sameAs: S(v.orgUrl), logo: S(v.logo) } : undefined,\r\n        jobLocationType: v.remote ? 'TELECOMMUTE' : undefined,\r\n        applicantLocationRequirements: v.remote && S(v.remoteCountry) ? { '@type': 'Country', name: S(v.remoteCountry) } : undefined,\r\n        jobLocation: !v.remote ? { '@type': 'Place', address: addr(v, 'l') } : undefined,\r\n        baseSalary: sal ? { '@type': 'MonetaryAmount', currency: v.salCur, value: { '@type': 'QuantitativeValue', minValue: N(v.salMin), maxValue: N(v.salMax), unitText: v.salUnit } } : undefined };\r\n    }\r\n  });\r\n\r\n  tool({ id: 'validator', name: 'Schema markup validator', kind: 'chk', kw: 'validate validator check errors json-ld test', desc: 'Paste JSON-LD or a full page and check it for missing and malformed properties.' });\r\n  tool({ id: 'extractor', name: 'Schema extractor', kind: 'chk', kw: 'extract extractor read url source page json-ld', desc: 'Paste a page\u2019s source code and pull out every JSON-LD block it contains.' });\r\n\r\n  \/* ---------------- state ---------------- *\/\r\n  var state = {};\r\n  TOOLS.forEach(function (t) {\r\n    if (!t.fields) return;\r\n    var s = {};\r\n    t.fields.forEach(function (f) { s[f.id] = f.type === 'list' ? JSON.parse(JSON.stringify(f.ex || [])) : (f.ex !== undefined ? f.ex : (f.type === 'check' ? false : '')); });\r\n    state[t.id] = s;\r\n  });\r\n  var vstate = { input: '' };\r\n  var xstate = { input: '' };\r\n  var wrapScript = true;\r\n  var current = null;\r\n  var query = '';\r\n\r\n  \/* ---------------- rail and search ---------------- *\/\r\n  function renderRail() {\r\n    var rail = $('rail'); rail.textContent = '';\r\n    var q = query.trim().toLowerCase(), shown = 0;\r\n    [['gen', 'Generators'], ['chk', 'Check and extract']].forEach(function (g) {\r\n      var items = TOOLS.filter(function (t) { return t.kind === g[0] && (!q || (t.name + ' ' + t.kw + ' ' + t.desc).toLowerCase().indexOf(q) >= 0); });\r\n      if (!items.length) return;\r\n      shown += items.length;\r\n      var grp = h('div', { class: 'rail-group' }, h('div', { class: 'rail-h' }, h('span', { text: g[1] }), h('span', { text: String(items.length) })));\r\n      items.forEach(function (t) {\r\n        grp.appendChild(h('button', { class: 'rail-item' + (t.kind === 'chk' ? ' chk' : ''), type: 'button', 'aria-current': t.id === current ? 'true' : 'false', on: { click: function () { go(t.id); } } }, h('span', { class: 'dot' }), t.name));\r\n      });\r\n      rail.appendChild(grp);\r\n    });\r\n    if (!shown) rail.appendChild(h('p', { class: 'rail-empty', text: 'No tool matches that search.' }));\r\n    $('q-count').textContent = q ? shown + ' of ' + TOOLS.length + ' tools match' : TOOLS.length + ' tools: 12 generators, 1 validator, 1 extractor';\r\n  }\r\n  $('q').addEventListener('input', function (e) { query = e.target.value; renderRail(); });\r\n  $('q').addEventListener('keydown', function (e) {\r\n    if (e.key === 'Enter') {\r\n      var q = query.trim().toLowerCase();\r\n      var m = TOOLS.filter(function (t) { return (t.name + ' ' + t.kw).toLowerCase().indexOf(q) >= 0; })[0];\r\n      if (m) go(m.id);\r\n    }\r\n  });\r\n\r\n  function go(id) {\r\n    current = id;\r\n    try { if (location.hash !== '#' + id) history.replaceState(null, '', '#' + id); } catch (e) { try { location.hash = id; } catch (e2) {} }\r\n    renderRail(); renderTool();\r\n  }\r\n\r\n  \/* ---------------- generic form ---------------- *\/\r\n  function inputFor(f, val, onInput, idBase, inRow) {\r\n    var type = f.type || 'text', el;\r\n    if (type === 'textarea') { el = h('textarea', { id: idBase, placeholder: f.ph || '' }); el.value = val == null ? '' : val; }\r\n    else if (type === 'select') {\r\n      el = h('select', { id: idBase });\r\n      f.opts.forEach(function (o) { el.appendChild(h('option', { value: o[0], text: o[1] })); });\r\n      el.value = val == null || val === '' ? f.opts[0][0] : val;\r\n    } else {\r\n      var t = f.type2 || type;\r\n      el = h('input', { id: idBase, type: t === 'time' ? 'text' : t, placeholder: f.ph || '', step: f.step, min: f.min, max: f.max, autocomplete: 'off', spellcheck: 'false' });\r\n      el.value = val == null ? '' : val;\r\n    }\r\n    el.addEventListener('input', function () { onInput(el.value); });\r\n    el.addEventListener('change', function () { onInput(el.value, true); });\r\n    return el;\r\n  }\r\n\r\n  function renderForm(t) {\r\n    var v = state[t.id];\r\n    var grid = h('div', { class: 'fields' });\r\n    t.fields.forEach(function (f) {\r\n      if (f.when && !f.when(v)) return;\r\n      if (f.sec) grid.appendChild(h('div', { class: 'sec', text: f.sec }));\r\n      var base = 'f-' + t.id + '-' + f.id;\r\n      var lbl = function (text, forId) { return h('label', { for: forId }, text, f.req ? h('span', { class: 'req', 'aria-hidden': 'true', text: '*' }) : null); };\r\n      if (f.type === 'check') {\r\n        var cb = h('input', { id: base, type: 'checkbox' }); cb.checked = !!v[f.id];\r\n        cb.addEventListener('change', function () { v[f.id] = cb.checked; if (f.affects) renderTool(); else update(t); });\r\n        grid.appendChild(h('div', { class: 'field' + (f.full ? ' full' : '') }, h('label', { class: 'check', for: base }, cb, f.label)));\r\n        return;\r\n      }\r\n      if (f.type === 'list') {\r\n        var wrap = h('div', { class: 'field full' }, h('span', { class: 'lbl' }, f.label, f.req ? h('span', { class: 'req', text: '*' }) : null));\r\n        var list = h('div', { class: 'list' });\r\n        v[f.id].forEach(function (row, i) {\r\n          var rf = h('div', { class: 'row-fields' });\r\n          f.cols.forEach(function (c) {\r\n            var cid = base + '-' + i + '-' + c.id;\r\n            var cell = h('div', { class: c.full ? 'full' : '' });\r\n            cell.appendChild(h('label', { class: 'hint', for: cid, text: c.label }));\r\n            cell.appendChild(inputFor(c, row[c.id], function (val) { row[c.id] = val; update(t); }, cid, true));\r\n            rf.appendChild(cell);\r\n          });\r\n          list.appendChild(h('div', { class: 'row' }, h('div', { class: 'row-n', text: f.addLabel.replace(\/^Add \/, '').replace(\/^.\/, function (m) { return m.toUpperCase(); }) + ' ' + (i + 1) }), rf,\r\n            h('button', { class: 'btn-x', type: 'button', 'aria-label': 'Remove row ' + (i + 1), text: '\u00d7', on: { click: function () { v[f.id].splice(i, 1); renderTool(); } } })));\r\n        });\r\n        wrap.appendChild(list);\r\n        wrap.appendChild(h('div', null, h('button', { class: 'btn btn-ghost btn-sm', type: 'button', text: '+ ' + f.addLabel, on: { click: function () {\r\n          var r = {}; f.cols.forEach(function (c) { r[c.id] = c.type === 'select' ? c.opts[0][0] : ''; }); v[f.id].push(r); renderTool(base + '-' + (v[f.id].length - 1) + '-' + f.cols[0].id);\r\n        } } })));\r\n        grid.appendChild(wrap);\r\n        return;\r\n      }\r\n      var inp = inputFor(f, v[f.id], function (val, isChange) { v[f.id] = val; if (f.affects && isChange) renderTool(); else update(t); }, base);\r\n      grid.appendChild(h('div', { class: 'field' + ((f.full || f.type === 'textarea') ? ' full' : '') }, lbl(f.label, base), inp, f.hint ? h('span', { class: 'hint', text: f.hint }) : null));\r\n    });\r\n    return grid;\r\n  }\r\n\r\n  function missing(t) {\r\n    var v = state[t.id], out = [];\r\n    t.fields.forEach(function (f) {\r\n      if (!f.req || (f.when && !f.when(v))) return;\r\n      var val = v[f.id], ok;\r\n      if (f.type === 'list') ok = (val || []).some(function (r) { return f.cols.every(function (c) { return !c.req || S(r[c.id]); }); });\r\n      else ok = S(val) !== undefined;\r\n      if (!ok) out.push(f.label.replace(\/ \\(.*\\)$\/, ''));\r\n    });\r\n    return out;\r\n  }\r\n\r\n  \/* ---------------- JSON output ---------------- *\/\r\n  function esc(s) { return s.replace(\/&\/g, '&amp;').replace(\/<\/g, '&lt;').replace(\/>\/g, '&gt;'); }\r\n  function hl(json) {\r\n    return esc(json).replace(\/(\"(?:\\\\u[a-fA-F0-9]{4}|\\\\[^u]|[^\\\\\"])*\"(\\s*:)?|\\b(?:true|false|null)\\b|-?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?)\/g, function (m) {\r\n      var cls = 'n';\r\n      if (\/^\"\/.test(m)) cls = \/:$\/.test(m) ? 'k' : 's'; else if (\/true|false|null\/.test(m)) cls = 'l';\r\n      return '<span class=\"' + cls + '\">' + m + '<\/span>';\r\n    });\r\n  }\r\n  function buildJson(t) {\r\n    var body = t.build(state[t.id]);\r\n    var c = clean(body, true) || { '@type': body['@type'] };\r\n    var obj = Object.assign({ '@context': 'https:\/\/schema.org' }, c);\r\n    return JSON.stringify(obj, null, 2);\r\n  }\r\n  function asOutput(json) { return wrapScript ? '<script type=\"application\/ld+json\">\\n' + json + '\\n<\\\/script>' : json; }\r\n\r\n  function copyText(text, msgEl, pre) {\r\n    function ok(good) {\r\n      msgEl.textContent = good ? 'Copied to clipboard' : 'Copy was blocked. Select the code and copy it.';\r\n      if (!good && pre) { try { var r = document.createRange(); r.selectNodeContents(pre); var s = getSelection(); s.removeAllRanges(); s.addRange(r); } catch (e) {} }\r\n      setTimeout(function () { msgEl.textContent = ''; }, 2500);\r\n    }\r\n    try { navigator.clipboard.writeText(text).then(function () { ok(true); }, function () { ok(false); }); } catch (e) { ok(false); }\r\n  }\r\n\r\n  function update(t) {\r\n    var json = buildJson(t), pre = $('code'), miss = missing(t);\r\n    pre.innerHTML = wrapScript\r\n      ? '<span class=\"p\">&lt;script type=\"application\/ld+json\"&gt;<\/span>\\n' + hl(json) + '\\n<span class=\"p\">&lt;\/script&gt;<\/span>'\r\n      : hl(json);\r\n    pre.dataset.json = json;\r\n    var st = $('status'); st.textContent = '';\r\n    if (miss.length) { st.appendChild(h('span', { class: 'pill warn', text: miss.length + ' required field' + (miss.length > 1 ? 's' : '') + ' empty' })); st.appendChild(h('span', { class: 'hint', text: miss.join(', ') })); }\r\n    else st.appendChild(h('span', { class: 'pill ok', text: 'All required fields filled' }));\r\n  }\r\n\r\n  \/* ---------------- tool views ---------------- *\/\r\n  function head(t) {\r\n    var kids = [h('div', { class: 'tags' }, h('span', { class: 'pill ' + t.kind, text: t.kind === 'gen' ? 'Generator' : 'Checker' })), h('h2', { text: t.name }), h('p', { text: t.desc })];\r\n    if (t.note) kids.push(h('div', { class: 'notice', text: t.note }));\r\n    var box = h('div', { class: 'bench-head' });\r\n    kids.forEach(function (k) { box.appendChild(k); });\r\n    return box;\r\n  }\r\n\r\n  function renderTool(focusId) {\r\n    var t = TOOLS.filter(function (x) { return x.id === current; })[0] || TOOLS[0];\r\n    current = t.id;\r\n    var b = $('bench'); b.textContent = '';\r\n    b.appendChild(head(t));\r\n    if (t.id === 'validator') renderValidator(b);\r\n    else if (t.id === 'extractor') renderExtractor(b);\r\n    else renderGenerator(t, b);\r\n    if (focusId && $(focusId)) $(focusId).focus();\r\n  }\r\n\r\n  function renderGenerator(t, b) {\r\n    var formCard = h('div', { class: 'card' }, h('div', { class: 'card-h' }, h('h3', { text: 'Details' }), h('span', { class: 'hint', text: '* required. Example values are filled in. Replace them with yours.' })));\r\n    formCard.appendChild(renderForm(t));\r\n    formCard.appendChild(h('div', { class: 'form-actions' }, h('button', { class: 'btn btn-ghost btn-sm', type: 'button', text: 'Clear form', on: { click: function () {\r\n      t.fields.forEach(function (f) { state[t.id][f.id] = f.type === 'list' ? [] : f.type === 'check' ? false : (f.type === 'select' ? (f.opts[0][0]) : ''); });\r\n      state[t.id].mode = state[t.id].mode || undefined; renderTool();\r\n    } } }), h('button', { class: 'btn btn-ghost btn-sm', type: 'button', text: 'Reset to example', on: { click: function () {\r\n      t.fields.forEach(function (f) { state[t.id][f.id] = f.type === 'list' ? JSON.parse(JSON.stringify(f.ex || [])) : (f.ex !== undefined ? f.ex : (f.type === 'check' ? false : '')); });\r\n      renderTool();\r\n    } } })));\r\n\r\n    var copyMsg = h('span', { class: 'okmsg', 'aria-live': 'polite' });\r\n    var pre = h('pre', { class: 'code', id: 'code', tabindex: '0', 'aria-label': 'Generated JSON-LD' });\r\n    var seg = h('div', { class: 'seg', role: 'group', 'aria-label': 'Output format' },\r\n      h('button', { type: 'button', 'aria-pressed': String(wrapScript), text: 'With script tag', on: { click: function () { wrapScript = true; renderTool(); } } }),\r\n      h('button', { type: 'button', 'aria-pressed': String(!wrapScript), text: 'JSON only', on: { click: function () { wrapScript = false; renderTool(); } } }));\r\n    var outCard = h('div', { class: 'card' },\r\n      h('div', { class: 'card-h' }, h('h3', { text: 'Your JSON-LD' }), seg),\r\n      pre,\r\n      h('div', { class: 'status', id: 'status', style: 'margin-top:12px' }),\r\n      h('div', { class: 'out-actions', style: 'margin-top:12px' },\r\n        h('button', { class: 'btn btn-cta', type: 'button', text: 'Copy code', on: { click: function () { copyText(asOutput($('code').dataset.json), copyMsg, pre); } } }),\r\n        h('button', { class: 'btn btn-primary', type: 'button', text: 'Check in validator', on: { click: function () { vstate.input = $('code').dataset.json; vstate.auto = true; go('validator'); } } }),\r\n        copyMsg),\r\n      h('div', { class: 'tips', style: 'margin-top:12px' },\r\n        h('span', null, 'Paste the script tag into the head or body of your page. '),\r\n        h('a', { href: 'https:\/\/search.google.com\/test\/rich-results', target: '_blank', rel: 'noopener', text: 'Google Rich Results Test' }),\r\n        h('a', { href: 'https:\/\/validator.schema.org\/', target: '_blank', rel: 'noopener', text: 'Schema.org validator' })));\r\n    b.appendChild(h('div', { class: 'cols' }, formCard, h('div', { class: 'out-col' }, outCard)));\r\n    update(t);\r\n  }\r\n\r\n  \/* ---------------- validator ---------------- *\/\r\n  var LB = {}; ['LocalBusiness', 'Restaurant', 'CafeOrCoffeeShop', 'Store', 'HealthAndBeautyBusiness', 'ProfessionalService', 'LegalService', 'Dentist', 'AutoRepair', 'RealEstateAgent', 'TravelAgency', 'FinancialService', 'Hotel', 'LodgingBusiness', 'MedicalBusiness', 'FoodEstablishment', 'BarOrPub', 'Bakery', 'HomeAndConstructionBusiness', 'SportsActivityLocation', 'EntertainmentBusiness'].forEach(function (k) { LB[k] = 1; });\r\n  var ORG = {}; ['Organization', 'Corporation', 'NGO', 'EducationalOrganization', 'OnlineStore', 'OnlineBusiness'].forEach(function (k) { ORG[k] = 1; });\r\n  var ART = { Article: 1, BlogPosting: 1, NewsArticle: 1 };\r\n  var RULES = {\r\n    FAQPage: { req: ['mainEntity'], rec: [] },\r\n    Question: { req: ['name', 'acceptedAnswer'], rec: [] },\r\n    Answer: { req: ['text'], rec: [] },\r\n    Product: { req: ['name'], rec: ['image', 'description', 'sku', 'brand', 'offers'], one: [['offers', 'review', 'aggregateRating']] },\r\n    Offer: { req: ['price', 'priceCurrency'], rec: ['availability', 'url'] },\r\n    Article: { req: [], rec: ['headline', 'image', 'datePublished', 'dateModified', 'author'] },\r\n    LocalBusiness: { req: ['name', 'address'], rec: ['telephone', 'url', 'image', 'openingHoursSpecification', 'geo', 'priceRange'] },\r\n    Organization: { req: ['name'], rec: ['url', 'logo', 'sameAs', 'address', 'contactPoint'] },\r\n    BreadcrumbList: { req: ['itemListElement'], rec: [] },\r\n    ListItem: { req: ['position', 'name'], rec: ['item'] },\r\n    Event: { req: ['name', 'startDate', 'location'], rec: ['endDate', 'description', 'image', 'offers', 'eventStatus', 'eventAttendanceMode', 'organizer'] },\r\n    VideoObject: { req: ['name', 'thumbnailUrl', 'uploadDate'], rec: ['description', 'duration', 'contentUrl', 'embedUrl'], one: [['contentUrl', 'embedUrl']] },\r\n    HowTo: { req: ['name', 'step'], rec: ['totalTime', 'image', 'description'] },\r\n    HowToStep: { req: ['text'], rec: ['name'] },\r\n    Person: { req: ['name'], rec: ['url', 'image', 'jobTitle', 'sameAs'] },\r\n    JobPosting: { req: ['title', 'description', 'datePosted', 'hiringOrganization'], rec: ['validThrough', 'employmentType', 'baseSalary', 'directApply', 'identifier'], one: [['jobLocation', 'applicantLocationRequirements']] },\r\n    Review: { req: ['itemReviewed', 'reviewRating', 'author'], rec: ['datePublished', 'reviewBody'] },\r\n    Rating: { req: ['ratingValue'], rec: [] },\r\n    AggregateRating: { req: ['ratingValue'], rec: [], one: [['ratingCount', 'reviewCount']] },\r\n    PostalAddress: { req: [], rec: ['streetAddress', 'addressLocality', 'addressCountry'] }\r\n  };\r\n  var NESTED = { Question: 1, Answer: 1, Offer: 1, ListItem: 1, HowToStep: 1, Rating: 1, AggregateRating: 1 };\r\n  function ruleKey(types) {\r\n    for (var i = 0; i < types.length; i++) {\r\n      var t = types[i];\r\n      if (RULES[t] && t !== 'Article') return { key: t, type: t };\r\n      if (ART[t]) return { key: 'Article', type: t };\r\n      if (LB[t]) return { key: 'LocalBusiness', type: t };\r\n      if (ORG[t]) return { key: 'Organization', type: t };\r\n    }\r\n    return null;\r\n  }\r\n  var URLP = ['url', 'image', 'logo', 'sameAs', 'contentUrl', 'embedUrl', 'thumbnailUrl', 'item', '@id'];\r\n  var DATEP = ['datePublished', 'dateModified', 'startDate', 'endDate', 'uploadDate', 'datePosted', 'validThrough', 'priceValidUntil'];\r\n  var DATE_RE = \/^\\d{4}-\\d{2}-\\d{2}([T ]\\d{2}:\\d{2}(:\\d{2}(\\.\\d+)?)?(Z|[+-]\\d{2}:?\\d{2})?)?$\/;\r\n  var DUR_RE = \/^P(?!$)(\\d+Y)?(\\d+M)?(\\d+W)?(\\d+D)?(T(?=\\d)(\\d+H)?(\\d+M)?(\\d+(\\.\\d+)?S)?)?$\/;\r\n  function has(o, k) { var x = o[k]; if (x == null) return false; if (typeof x === 'string') return x.trim() !== ''; if (Array.isArray(x)) return x.length > 0; if (typeof x === 'object') return Object.keys(x).length > 0; return true; }\r\n  function typesOf(o) { var t = o['@type']; return Array.isArray(t) ? t : (t ? [t] : []); }\r\n\r\n  function validateNode(node, path, out, isRoot) {\r\n    var types = typesOf(node);\r\n    if (!types.length) out.push({ lv: isRoot ? 'error' : 'warn', path: path, msg: 'Missing \"@type\".' });\r\n    var rk = ruleKey(types);\r\n    if (!isRoot && rk && !NESTED[rk.key]) rk = null;\r\n    if (types.length && !rk && isRoot) out.push({ lv: 'warn', path: path, msg: 'No built-in rules for type \"' + types.join(', ') + '\". Only general checks were run.' });\r\n    if (rk) {\r\n      var r = RULES[rk.key];\r\n      r.req.forEach(function (k) { if (!has(node, k)) out.push({ lv: 'error', path: path, msg: 'Missing required property \"' + k + '\".' }); });\r\n      (r.one || []).forEach(function (g) { if (!g.some(function (k) { return has(node, k); })) out.push({ lv: rk.key === 'Product' || rk.key === 'VideoObject' || rk.key === 'JobPosting' || rk.key === 'AggregateRating' ? 'error' : 'warn', path: path, msg: 'Add at least one of: ' + g.join(', ') + '.' }); });\r\n      r.rec.forEach(function (k) { if (!has(node, k)) out.push({ lv: 'warn', path: path, msg: 'Missing recommended property \"' + k + '\".' }); });\r\n      if (rk.key === 'Article' && ART[rk.type] && has(node, 'headline') && String(node.headline).length > 110) out.push({ lv: 'warn', path: path + '.headline', msg: 'Headline is over 110 characters and may be cut off.' });\r\n      if (rk.key === 'Event' && has(node, 'eventAttendanceMode') && \/Online\/.test(String(node.eventAttendanceMode)) && !\/Mixed\/.test(String(node.eventAttendanceMode)) && has(node, 'location') && !JSON.stringify(node.location).match(\/VirtualLocation\/)) out.push({ lv: 'warn', path: path + '.location', msg: 'Online events should use a VirtualLocation with a url.' });\r\n      if (rk.key === 'BreadcrumbList' && Array.isArray(node.itemListElement) && node.itemListElement.length < 2) out.push({ lv: 'warn', path: path + '.itemListElement', msg: 'Google expects at least two breadcrumb items.' });\r\n      if (rk.key === 'FAQPage' && has(node, 'mainEntity') && !(Array.isArray(node.mainEntity) ? node.mainEntity : [node.mainEntity]).every(function (q) { return q && typesOf(q).indexOf('Question') >= 0; })) out.push({ lv: 'error', path: path + '.mainEntity', msg: 'Every mainEntity item must have \"@type\": \"Question\".' });\r\n    }\r\n    Object.keys(node).forEach(function (k) {\r\n      var val = node[k], p = path + '.' + k;\r\n      if (typeof val === 'string' && val.trim() === '' && k.charAt(0) !== '@') out.push({ lv: 'warn', path: p, msg: 'Empty value. Remove it or fill it in.' });\r\n      if (URLP.indexOf(k) >= 0) (Array.isArray(val) ? val : [val]).forEach(function (u) { if (typeof u === 'string' && u.trim() !== '' && !\/^https?:\\\/\\\/\/i.test(u) && !(k === '@id' && \/^#\/.test(u))) out.push({ lv: 'error', path: p, msg: '\"' + u.slice(0, 60) + '\" is not a full URL starting with http:\/\/ or https:\/\/.' }); });\r\n      if (DATEP.indexOf(k) >= 0 && typeof val === 'string' && val.trim() !== '' && !DATE_RE.test(val.trim())) out.push({ lv: 'error', path: p, msg: '\"' + val + '\" is not an ISO 8601 date (for example 2026-10-14 or 2026-10-14T09:00:00+05:30).' });\r\n      if (k === 'duration' && typeof val === 'string' && !DUR_RE.test(val)) out.push({ lv: 'error', path: p, msg: '\"' + val + '\" is not an ISO 8601 duration (for example PT5M12S).' });\r\n      if (k === 'price' && val !== '' && val != null && isNaN(Number(val))) out.push({ lv: 'error', path: p, msg: 'Price must be a number without currency symbols or commas.' });\r\n      if (k === 'ratingValue' && val !== '' && val != null) {\r\n        var rv = Number(val); if (isNaN(rv)) out.push({ lv: 'error', path: p, msg: 'ratingValue must be a number.' });\r\n        else { var best = has(node, 'bestRating') ? Number(node.bestRating) : 5, worst = has(node, 'worstRating') ? Number(node.worstRating) : 1; if (rv > best || rv < worst) out.push({ lv: 'error', path: p, msg: 'Rating ' + rv + ' is outside the range ' + worst + ' to ' + best + '.' }); }\r\n      }\r\n      if (val && typeof val === 'object') {\r\n        (Array.isArray(val) ? val : [val]).forEach(function (child, i) {\r\n          if (child && typeof child === 'object' && !Array.isArray(child)) {\r\n            var cp = Array.isArray(val) ? p + '[' + i + ']' : p;\r\n            if (child['@type']) validateNode(child, cp, out, false); else validateNode(child, cp, out, false);\r\n          }\r\n        });\r\n      }\r\n    });\r\n  }\r\n\r\n  function parseBlocks(text) {\r\n    var blocks = [], errors = [];\r\n    if (\/<script[\\s>]\/i.test(text) || \/<html|<body|<head\/i.test(text)) {\r\n      var doc = new DOMParser().parseFromString(text, 'text\/html');\r\n      doc.querySelectorAll('script[type=\"application\/ld+json\"]').forEach(function (s, i) {\r\n        try { blocks.push({ idx: i + 1, data: JSON.parse(s.textContent), raw: s.textContent.trim() }); } catch (e) { errors.push({ idx: i + 1, msg: e.message, raw: s.textContent.trim() }); }\r\n      });\r\n      return { blocks: blocks, errors: errors, fromHtml: true, doc: doc };\r\n    }\r\n    try { blocks.push({ idx: 1, data: JSON.parse(text), raw: text.trim() }); } catch (e) { errors.push({ idx: 1, msg: e.message, raw: text }); }\r\n    return { blocks: blocks, errors: errors };\r\n  }\r\n  function flatten(data) {\r\n    var items = [];\r\n    (Array.isArray(data) ? data : [data]).forEach(function (d) {\r\n      if (d && typeof d === 'object') { if (Array.isArray(d['@graph'])) d['@graph'].forEach(function (g) { if (g && typeof g === 'object') items.push({ node: g, ctx: d['@context'] }); }); else items.push({ node: d, ctx: d['@context'] }); }\r\n    });\r\n    return items;\r\n  }\r\n\r\n  function runValidation(text, resBox) {\r\n    resBox.textContent = '';\r\n    text = text.trim();\r\n    if (!text) { resBox.appendChild(h('div', { class: 'empty', text: 'Paste some JSON-LD above and press Check markup.' })); return; }\r\n    var p = parseBlocks(text);\r\n    if (p.fromHtml && !p.blocks.length && !p.errors.length) { resBox.appendChild(h('div', { class: 'empty', text: 'No JSON-LD blocks were found in that code. Look for <script type=\"application\/ld+json\">.' })); return; }\r\n    var tE = 0, tW = 0, nItems = 0;\r\n    var cards = h('div', { class: 'res' });\r\n    p.errors.forEach(function (e) {\r\n      tE++;\r\n      cards.appendChild(h('div', { class: 'res-card' }, h('div', { class: 'res-top' }, h('b', { text: 'Block ' + e.idx + ' could not be read' }), h('span', { class: 'pill bad', text: 'Invalid JSON' })),\r\n        h('ul', { class: 'res-list' }, h('li', null, h('span', { class: 'pill bad', text: 'Error' }), h('span', null, 'JSON syntax error: ' + e.msg + '. Check for missing commas, trailing commas and unquoted keys.')))));\r\n    });\r\n    p.blocks.forEach(function (b) {\r\n      flatten(b.data).forEach(function (it, i) {\r\n        nItems++;\r\n        var out = [];\r\n        if (i === 0 || it.ctx) { if (!it.ctx) out.push({ lv: 'error', path: '$', msg: 'Missing \"@context\". Add \"@context\": \"https:\/\/schema.org\".' }); else if (!\/^https?:\\\/\\\/schema\\.org\\\/?$\/i.test(JSON.stringify(it.ctx).replace(\/\"\/g, ''))) out.push({ lv: 'warn', path: '$', msg: '\"@context\" should be \"https:\/\/schema.org\".' }); }\r\n        validateNode(it.node, '$', out, true);\r\n        var e = out.filter(function (x) { return x.lv === 'error'; }).length, w = out.filter(function (x) { return x.lv === 'warn'; }).length;\r\n        tE += e; tW += w;\r\n        var ul = h('ul', { class: 'res-list' });\r\n        if (!out.length) ul.appendChild(h('li', null, h('span', { class: 'pill ok', text: 'Pass' }), h('span', { text: 'No problems found.' })));\r\n        out.sort(function (a, b2) { return (a.lv === 'error' ? 0 : 1) - (b2.lv === 'error' ? 0 : 1); }).forEach(function (x) {\r\n          ul.appendChild(h('li', null, h('span', { class: 'pill ' + (x.lv === 'error' ? 'bad' : 'warn'), text: x.lv === 'error' ? 'Error' : 'Warning' }), h('span', null, x.msg + ' ', h('code', { text: x.path }))));\r\n        });\r\n        cards.appendChild(h('div', { class: 'res-card' }, h('div', { class: 'res-top' }, h('b', { text: typesOf(it.node).join(', ') || 'Unknown type' }),\r\n          h('span', { class: 'res-sum' }, h('span', { class: 'pill ' + (e ? 'bad' : 'ok'), text: e + ' error' + (e === 1 ? '' : 's') }), h('span', { class: 'pill ' + (w ? 'warn' : 'ok'), text: w + ' warning' + (w === 1 ? '' : 's') }))), ul));\r\n      });\r\n    });\r\n    resBox.appendChild(h('div', { class: 'res-sum', style: 'margin-bottom:12px' }, h('span', { class: 'pill chk', text: nItems + ' item' + (nItems === 1 ? '' : 's') + ' checked' }), h('span', { class: 'pill ' + (tE ? 'bad' : 'ok'), text: tE + ' error' + (tE === 1 ? '' : 's') }), h('span', { class: 'pill ' + (tW ? 'warn' : 'ok'), text: tW + ' warning' + (tW === 1 ? '' : 's') }), h('span', { class: 'hint', id: 'v-done', text: 'Check complete' })));\r\n    resBox.appendChild(cards);\r\n  }\r\n\r\n  var V_EXAMPLE = JSON.stringify({ '@context': 'https:\/\/schema.org', '@type': 'Product', name: 'Trail Runner 2 Running Shoes', image: 'https:\/\/example.com\/shoe.jpg', offers: { '@type': 'Offer', price: '4,999', priceCurrency: 'INR', availability: 'https:\/\/schema.org\/InStock' }, aggregateRating: { '@type': 'AggregateRating', ratingValue: 6, reviewCount: 212 } }, null, 2);\r\n\r\n  function renderValidator(b) {\r\n    var resBox = h('div', { id: 'v-res' });\r\n    var ta = h('textarea', { class: 'ta', id: 'v-in', style: 'min-height:260px;font-family:var(--font-mono);font-size:13px', spellcheck: 'false', placeholder: 'Paste JSON-LD, or the full source of a page' });\r\n    ta.value = vstate.input || V_EXAMPLE;\r\n    ta.addEventListener('input', function () { vstate.input = ta.value; });\r\n    var run = function () { vstate.input = ta.value; runValidation(ta.value, resBox); };\r\n    b.appendChild(h('div', { class: 'cols' },\r\n      h('div', { class: 'card' }, h('div', { class: 'card-h' }, h('h3', { text: 'Markup to check' }), h('span', { class: 'hint', text: vstate.input ? '' : 'Example with deliberate mistakes' })), ta,\r\n        h('div', { class: 'form-actions' }, h('button', { class: 'btn btn-cta', type: 'button', text: 'Check markup', on: { click: run } }),\r\n          h('button', { class: 'btn btn-ghost', type: 'button', text: 'Clear', on: { click: function () { ta.value = ''; vstate.input = ''; resBox.textContent = ''; ta.focus(); } } })),\r\n        h('p', { class: 'hint', style: 'margin-top:12px', text: 'This checks structure against the properties Google documents for each type. It does not replace Google\u2019s own test, which also looks at page content.' }),\r\n        h('div', { class: 'tips', style: 'margin-top:8px' }, h('a', { href: 'https:\/\/search.google.com\/test\/rich-results', target: '_blank', rel: 'noopener', text: 'Google Rich Results Test' }), h('a', { href: 'https:\/\/validator.schema.org\/', target: '_blank', rel: 'noopener', text: 'Schema.org validator' }))),\r\n      h('div', { class: 'card' }, h('div', { class: 'card-h' }, h('h3', { text: 'Results' })), resBox)));\r\n    run();\r\n  }\r\n\r\n  \/* ---------------- extractor ---------------- *\/\r\n  var X_EXAMPLE = '<!doctype html>\\n<html><head>\\n<title>Sample page<\/title>\\n<script type=\"application\/ld+json\">\\n{\"@context\":\"https:\/\/schema.org\",\"@type\":\"Organization\",\"name\":\"Example Co\",\"url\":\"https:\/\/example.com\",\"logo\":\"https:\/\/example.com\/logo.png\"}\\n<\\\/script>\\n<script type=\"application\/ld+json\">\\n{\"@context\":\"https:\/\/schema.org\",\"@type\":\"BreadcrumbList\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/example.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Tools\"}]}\\n<\\\/script>\\n<\/head>\\n<body itemscope itemtype=\"https:\/\/schema.org\/WebPage\">\\n<h1>Hello<\/h1>\\n<\/body><\/html>';\r\n\r\n  function renderExtractor(b) {\r\n    var resBox = h('div', { id: 'x-res' });\r\n    var ta = h('textarea', { class: 'ta', id: 'x-in', style: 'min-height:260px;font-family:var(--font-mono);font-size:13px', spellcheck: 'false', placeholder: 'Paste the page source here' });\r\n    ta.value = xstate.input || X_EXAMPLE;\r\n    ta.addEventListener('input', function () { xstate.input = ta.value; });\r\n    var run = function () { xstate.input = ta.value; runExtract(ta.value, resBox); };\r\n    b.appendChild(h('div', { class: 'notice', text: 'A web page cannot read another site\u2019s code from your browser, so paste the source instead. Open the page, right-click, choose View page source, select all, copy, then paste it below.' }));\r\n    b.appendChild(h('div', { class: 'cols' },\r\n      h('div', { class: 'card' }, h('div', { class: 'card-h' }, h('h3', { text: 'Page source' }), h('span', { class: 'hint', text: xstate.input ? '' : 'Example page' })), ta,\r\n        h('div', { class: 'form-actions' }, h('button', { class: 'btn btn-cta', type: 'button', text: 'Extract schema', on: { click: run } }),\r\n          h('button', { class: 'btn btn-ghost', type: 'button', text: 'Clear', on: { click: function () { ta.value = ''; xstate.input = ''; resBox.textContent = ''; ta.focus(); } } }))),\r\n      h('div', { class: 'card' }, h('div', { class: 'card-h' }, h('h3', { text: 'Found on the page' })), resBox)));\r\n    run();\r\n  }\r\n\r\n  function runExtract(text, box) {\r\n    box.textContent = '';\r\n    text = text.trim();\r\n    if (!text) { box.appendChild(h('div', { class: 'empty', text: 'Paste a page\u2019s source and press Extract schema.' })); return; }\r\n    var doc = new DOMParser().parseFromString(text, 'text\/html');\r\n    var scripts = Array.prototype.slice.call(doc.querySelectorAll('script[type=\"application\/ld+json\"]'));\r\n    var micro = Array.prototype.slice.call(doc.querySelectorAll('[itemscope][itemtype]')).map(function (e) { return e.getAttribute('itemtype').replace(\/^https?:\\\/\\\/schema\\.org\\\/\/, ''); });\r\n    var rdfa = Array.prototype.slice.call(doc.querySelectorAll('[typeof]')).map(function (e) { return e.getAttribute('typeof'); });\r\n    var types = [];\r\n    var cards = h('div', { class: 'res' });\r\n    scripts.forEach(function (s, i) {\r\n      var raw = s.textContent.trim(), data, err;\r\n      try { data = JSON.parse(raw); } catch (e) { err = e.message; }\r\n      if (err) {\r\n        cards.appendChild(h('div', { class: 'res-card' }, h('div', { class: 'res-top' }, h('b', { text: 'Block ' + (i + 1) }), h('span', { class: 'pill bad', text: 'Invalid JSON' })), h('ul', { class: 'res-list' }, h('li', null, h('span', { class: 'pill bad', text: 'Error' }), h('span', { text: err })))));\r\n        return;\r\n      }\r\n      var tl = flatten(data).map(function (x) { return typesOf(x.node).join('\/') || '?'; });\r\n      types = types.concat(tl);\r\n      var json = JSON.stringify(data, null, 2), msg = h('span', { class: 'okmsg' });\r\n      var pre = h('pre', { class: 'code ex-pre', style: 'max-height:260px' }); pre.innerHTML = hl(json);\r\n      cards.appendChild(h('div', { class: 'res-card' }, h('div', { class: 'res-top' }, h('b', { text: 'Block ' + (i + 1) + ': ' + tl.join(', ') }),\r\n        h('span', { class: 'out-actions' }, h('button', { class: 'btn btn-ghost btn-sm', type: 'button', text: 'Copy', on: { click: function () { copyText(json, msg, pre); } } }),\r\n          h('button', { class: 'btn btn-primary btn-sm', type: 'button', text: 'Check in validator', on: { click: function () { vstate.input = json; go('validator'); } } }), msg)),\r\n        h('div', { style: 'padding:0 14px 14px' }, pre)));\r\n    });\r\n    var sum = h('div', { class: 'res-sum', style: 'margin-bottom:12px' },\r\n      h('span', { class: 'pill ' + (scripts.length ? 'ok' : 'warn'), text: scripts.length + ' JSON-LD block' + (scripts.length === 1 ? '' : 's') }),\r\n      micro.length ? h('span', { class: 'pill chk', text: micro.length + ' microdata item' + (micro.length === 1 ? '' : 's') + ': ' + micro.slice(0, 4).join(', ') }) : null,\r\n      rdfa.length ? h('span', { class: 'pill chk', text: rdfa.length + ' RDFa item' + (rdfa.length === 1 ? '' : 's') }) : null);\r\n    box.appendChild(sum);\r\n    if (!scripts.length) box.appendChild(h('div', { class: 'empty', text: micro.length || rdfa.length ? 'This page uses microdata or RDFa rather than JSON-LD. Only the item types are listed above.' : 'No schema markup was found in that source.' }));\r\n    else box.appendChild(cards);\r\n  }\r\n\r\n  \/* ---------------- start ---------------- *\/\r\n  var start = 'faq';\r\n  try { var hash = (location.hash || '').replace('#', ''); if (TOOLS.some(function (t) { return t.id === hash; })) start = hash; } catch (e) {}\r\n  current = start;\r\n  renderRail(); renderTool();\r\n  window.addEventListener('hashchange', function () {\r\n    var hs = (location.hash || '').replace('#', '');\r\n    if (hs && hs !== current && TOOLS.some(function (t) { return t.id === hs; })) { current = hs; renderRail(); renderTool(); }\r\n  });\r\n})();\r\n<\/script>\r\n\r\n<\/body>\r\n<\/html>\r\n\t\t\t\t<\/div>\n\t\t\n<\/div>\n\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Onground Schema Tools Onground Media Free tools for digital marketers Schema and structured data Generate, check and read schema markup [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"site-sidebar-layout":"no-sidebar","site-content-layout":"","ast-site-content-layout":"full-width-container","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"disabled","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"default","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"set","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"class_list":["post-295","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/ongroundmedia.com\/index.php?rest_route=\/wp\/v2\/pages\/295","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ongroundmedia.com\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/ongroundmedia.com\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/ongroundmedia.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/ongroundmedia.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=295"}],"version-history":[{"count":4,"href":"https:\/\/ongroundmedia.com\/index.php?rest_route=\/wp\/v2\/pages\/295\/revisions"}],"predecessor-version":[{"id":299,"href":"https:\/\/ongroundmedia.com\/index.php?rest_route=\/wp\/v2\/pages\/295\/revisions\/299"}],"wp:attachment":[{"href":"https:\/\/ongroundmedia.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=295"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}