{"id":38958,"date":"2026-04-20T15:23:09","date_gmt":"2026-04-20T13:23:09","guid":{"rendered":"https:\/\/www.recharge.com\/blog\/muisgevoeligheid-converter-calculator-voor-23-fps-games"},"modified":"2026-04-21T10:21:30","modified_gmt":"2026-04-21T08:21:30","slug":"muisgevoeligheid-converter-calculator-voor-23-fps-games","status":"publish","type":"post","link":"https:\/\/www.recharge.com\/blog\/nl-be\/be\/muisgevoeligheid-converter-calculator-voor-23-fps-games","title":{"rendered":"Muisgevoeligheid Converter Calculator voor 23 FPS Games"},"content":{"rendered":"\n\n<!--\n  RECHARGE \u2014 Muisgevoeligheidsomzetter (WordPress Inbedding)\n  Plaats dit in een Aangepast HTML-blok in WordPress.\n  Alle CSS is beperkt tot .rc-widget om thema-conflicten te vermijden.\n-->\n<link rel=\"stylesheet\" href=\"https:\/\/fonts.googleapis.com\/css2?family=Inter:wght@400;500;600;700;800&#038;display=swap\">\n<style>\n.rc-widget {\n  --bg: #F5F7F8;\n  --bg-deep: #EDF0F2;\n  --bg-card: rgba(255, 255, 255, 0.7);\n  --bg-card-solid: #FFFFFF;\n  --bg-input: #F0F3F5;\n  --bg-input-hover: #E6EBED;\n\n  --accent: #059669;\n  --accent-hover: #047857;\n  --accent-glow: rgba(5, 150, 105, 0.12);\n  --accent-soft: rgba(5, 150, 105, 0.06);\n\n  --text: #111827;\n  --text-secondary: #4B5563;\n  --text-muted: #9CA3AF;\n  --text-label: #6B7280;\n  --text-dark: #FFFFFF;\n\n  --border: #E5E7EB;\n  --border-focus: #059669;\n  --border-error: #EF4444;\n\n  --gold: #D97706;\n  --danger: #EF4444;\n\n  --radius: 12px;\n  --radius-lg: 16px;\n  --radius-xl: 20px;\n  --radius-full: 9999px;\n\n  --shadow: 0 1px 3px rgba(0,0,0,0.06), 0 4px 16px rgba(0,0,0,0.04);\n  --shadow-lg: 0 4px 24px rgba(0,0,0,0.08), 0 8px 32px rgba(0,0,0,0.04);\n\n  --font: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\n\n  font-family: var(--font);\n  color: var(--text);\n  line-height: 1.6;\n  -webkit-font-smoothing: antialiased;\n  max-width: 780px;\n  margin: 0 auto;\n  padding: 8px 0;\n}\n\n.rc-widget *, .rc-widget *::before, .rc-widget *::after {\n  box-sizing: border-box;\n  margin: 0;\n  padding: 0;\n}\n\n\/* \u2500\u2500 Dynamic H2 Heading \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.rc-widget .rc-converter-heading {\n  font-size: 1.5rem;\n  font-weight: 700;\n  color: var(--text);\n  text-align: center;\n  margin-bottom: 20px;\n  letter-spacing: -0.5px;\n  line-height: 1.3;\n  min-height: 2em;\n  transition: opacity 0.3s ease;\n}\n.rc-widget .rc-converter-heading .rc-h2-accent { color: var(--accent); }\n.rc-widget .rc-converter-heading.empty { opacity: 0; min-height: 0; margin-bottom: 0; }\n\n\/* \u2500\u2500 Game Note Banner \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.rc-widget .rc-game-note {\n  background: rgba(217,119,6,0.06);\n  border: 1px solid rgba(217,119,6,0.2);\n  border-radius: var(--radius);\n  padding: 10px 16px;\n  margin-top: 12px;\n  font-size: 13px;\n  color: var(--gold);\n  display: none;\n  align-items: flex-start;\n  gap: 8px;\n  line-height: 1.5;\n}\n.rc-widget .rc-game-note.visible { display: flex; }\n.rc-widget .rc-game-note-icon { flex-shrink: 0; margin-top: 1px; }\n\n\/* \u2500\u2500 Card \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.rc-widget .rc-card {\n  background: var(--bg-card-solid);\n  border: 1px solid var(--border);\n  border-radius: var(--radius-xl);\n  padding: 36px 32px 28px;\n  margin-bottom: 20px;\n  position: relative;\n  box-shadow: var(--shadow);\n  animation: rcFadeIn 0.4s ease forwards;\n}\n.rc-widget .rc-card:nth-child(3) { animation-delay: 0.1s; }\n\n.rc-widget .rc-card-title {\n  font-size: 0.8rem;\n  font-weight: 700;\n  text-transform: uppercase;\n  letter-spacing: 1px;\n  color: var(--text-muted);\n  margin-bottom: 24px;\n}\n\n\/* \u2500\u2500 Grid Layouts \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.rc-widget .rc-grid-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; position: relative; }\n.rc-widget .rc-grid-3 { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 16px; }\n.rc-widget .rc-grid-full { grid-column: 1 \/ -1; }\n\n\/* \u2500\u2500 Floating Label Input \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.rc-widget .rc-field { position: relative; width: 100%; }\n\n.rc-widget .rc-field input,\n.rc-widget .rc-field select {\n  width: 100%;\n  height: 60px;\n  padding: 26px 16px 8px;\n  font-size: 16px;\n  font-weight: 500;\n  font-family: var(--font);\n  color: var(--text);\n  background: var(--bg-input);\n  border: 1.5px solid var(--border);\n  border-radius: var(--radius);\n  outline: none;\n  transition: border-color 0.2s, box-shadow 0.2s, background-color 0.2s;\n  appearance: none;\n  -webkit-appearance: none;\n}\n\n.rc-widget .rc-field input::placeholder { color: transparent; }\n.rc-widget .rc-field input:hover,\n.rc-widget .rc-field select:hover { background: var(--bg-input-hover); }\n\n.rc-widget .rc-field input:focus,\n.rc-widget .rc-field select:focus {\n  border-color: var(--border-focus);\n  box-shadow: 0 0 0 4px var(--accent-glow);\n}\n\n.rc-widget .rc-field label {\n  position: absolute;\n  top: 50%;\n  left: 16px;\n  transform: translateY(-50%);\n  font-size: 15px;\n  font-weight: 500;\n  color: var(--text-label);\n  pointer-events: none;\n  transition: all 0.2s ease;\n  z-index: 2;\n  line-height: 1;\n}\n\n.rc-widget .rc-field input:focus + label,\n.rc-widget .rc-field input:not(:placeholder-shown) + label,\n.rc-widget .rc-field select:focus + label,\n.rc-widget .rc-field.has-value label {\n  top: 14px;\n  transform: translateY(0);\n  font-size: 12px;\n  font-weight: 600;\n  color: var(--accent);\n}\n\n.rc-widget .rc-field select {\n  cursor: pointer;\n  padding-right: 44px;\n  background-image: url(\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 24 24' fill='none' stroke='%239CA3AF' stroke-width='2'%3E%3Cpolyline points='6 9 12 15 18 9'\/%3E%3C\/svg%3E\");\n  background-repeat: no-repeat;\n  background-position: right 14px center;\n  background-size: 18px;\n}\n.rc-widget .rc-field select:focus {\n  background-image: url(\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 24 24' fill='none' stroke='%23059669' stroke-width='2'%3E%3Cpolyline points='6 9 12 15 18 9'\/%3E%3C\/svg%3E\");\n}\n.rc-widget .rc-field select option { background: var(--bg-card-solid); color: var(--text); padding: 12px; }\n\n\/* \u2500\u2500 Searchable Game Dropdown \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.rc-widget .rc-game-select-wrap { position: relative; width: 100%; overflow: visible !important; }\n.rc-widget .rc-card { overflow: visible !important; }\n.rc-widget .rc-grid-2 { overflow: visible !important; }\n\n.rc-widget .rc-game-input {\n  width: 100%;\n  height: 60px;\n  padding: 26px 44px 8px 16px;\n  font-size: 16px;\n  font-weight: 500;\n  font-family: var(--font);\n  color: var(--text);\n  background: var(--bg-input);\n  border: 1.5px solid var(--border);\n  border-radius: var(--radius);\n  outline: none;\n  transition: border-color 0.2s, box-shadow 0.2s, background-color 0.2s;\n  cursor: pointer;\n}\n\n.rc-widget .rc-game-input:hover { background: var(--bg-input-hover); }\n.rc-widget .rc-game-input:focus {\n  border-color: var(--border-focus);\n  box-shadow: 0 0 0 4px var(--accent-glow);\n  cursor: text;\n}\n\n.rc-widget .rc-game-label {\n  position: absolute;\n  top: 50%; left: 16px;\n  transform: translateY(-50%);\n  font-size: 15px; font-weight: 500;\n  color: var(--text-label);\n  pointer-events: none;\n  transition: all 0.2s ease;\n  z-index: 2; line-height: 1;\n}\n\n.rc-widget .rc-game-select-wrap.focused .rc-game-label,\n.rc-widget .rc-game-select-wrap.has-value .rc-game-label {\n  top: 14px; transform: translateY(0);\n  font-size: 12px; font-weight: 600; color: var(--accent);\n}\n\n.rc-widget .rc-game-arrow {\n  position: absolute; right: 14px; top: 50%; transform: translateY(-50%);\n  width: 18px; height: 18px; pointer-events: none;\n  transition: transform 0.2s; color: var(--text-muted);\n}\n.rc-widget .rc-game-select-wrap.open .rc-game-arrow { transform: translateY(-50%) rotate(180deg); color: var(--accent); }\n\n.rc-widget .rc-dropdown {\n  position: absolute;\n  top: calc(100% + 6px); left: 0; right: 0;\n  background: var(--bg-card-solid);\n  border: 1px solid var(--border);\n  border-radius: var(--radius);\n  box-shadow: var(--shadow-lg);\n  z-index: 999999;\n  max-height: 260px;\n  overflow-y: auto;\n  display: none;\n  scrollbar-width: thin;\n  scrollbar-color: #D1D5DB transparent;\n}\n.rc-widget .rc-dropdown.open { display: block !important; }\n\n.rc-widget .rc-dropdown-item {\n  padding: 12px 16px; font-size: 14px; font-weight: 500;\n  color: var(--text-secondary); cursor: pointer;\n  transition: all 0.15s;\n  border-bottom: 1px solid rgba(0,0,0,0.04);\n}\n.rc-widget .rc-dropdown-item:last-child { border-bottom: none; }\n.rc-widget .rc-dropdown-item:hover,\n.rc-widget .rc-dropdown-item.highlighted { background: var(--accent); color: var(--text-dark); }\n\n.rc-widget .rc-dropdown-empty { padding: 16px; text-align: center; color: var(--text-muted); font-size: 14px; }\n\n.rc-widget .rc-dropdown::-webkit-scrollbar { width: 6px; }\n.rc-widget .rc-dropdown::-webkit-scrollbar-track { background: transparent; }\n.rc-widget .rc-dropdown::-webkit-scrollbar-thumb { background: #D1D5DB; border-radius: 3px; }\n\n\/* \u2500\u2500 Swap Button \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.rc-widget .rc-swap-wrap { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); z-index: 10; }\n\n.rc-widget .rc-swap-btn {\n  width: 40px; height: 40px;\n  background: var(--bg-card-solid);\n  border: 1.5px solid var(--border);\n  border-radius: 50%; cursor: pointer;\n  display: flex; align-items: center; justify-content: center;\n  color: var(--text-muted); transition: all 0.2s; padding: 0;\n}\n.rc-widget .rc-swap-btn:hover { border-color: var(--accent); color: var(--accent); background: var(--accent-soft); transform: scale(1.08); }\n.rc-widget .rc-swap-btn:active { transform: scale(0.95); }\n.rc-widget .rc-swap-btn svg { width: 18px; height: 18px; }\n\n\/* \u2500\u2500 Result Display \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.rc-widget .rc-result-section { margin-top: 28px; padding-top: 24px; border-top: 1px solid var(--border); }\n\n.rc-widget .rc-result-main { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 16px; }\n.rc-widget .rc-result-left { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; }\n.rc-widget .rc-result-label { font-size: 1.1rem; font-weight: 600; color: var(--text); }\n\n.rc-widget .rc-result-pill {\n  display: inline-flex; align-items: center; gap: 10px;\n  background: rgba(5,150,105,0.08);\n  border: 1px solid rgba(5,150,105,0.2);\n  padding: 6px 10px 6px 20px;\n  border-radius: var(--radius-full);\n  font-size: 1.25rem; font-weight: 700; color: var(--accent);\n  min-width: 120px; transition: all 0.3s;\n}\n.rc-widget .rc-result-pill.waiting { color: var(--text-muted); background: rgba(0,0,0,0.03); border-color: var(--border); }\n\n.rc-widget .rc-copy-btn {\n  width: 34px; height: 34px; background: transparent; border: none;\n  cursor: pointer; color: var(--accent);\n  display: flex; align-items: center; justify-content: center;\n  border-radius: 50%; transition: all 0.2s; padding: 0; flex-shrink: 0;\n}\n.rc-widget .rc-copy-btn:hover { background: rgba(5,150,105,0.1); }\n.rc-widget .rc-copy-btn:active { transform: scale(0.9); }\n.rc-widget .rc-copy-btn.copied { background: var(--accent); color: var(--text-dark); }\n.rc-widget .rc-copy-btn svg { width: 16px; height: 16px; }\n\n\/* \u2500\u2500 Buttons \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.rc-widget .rc-btn-group { display: flex; gap: 8px; flex-wrap: wrap; }\n\n.rc-widget .rc-btn {\n  padding: 8px 20px; border-radius: var(--radius-full);\n  border: 1.5px solid var(--border); background: transparent;\n  color: var(--text-secondary); font-size: 14px; font-weight: 600;\n  font-family: var(--font); cursor: pointer;\n  display: inline-flex; align-items: center; gap: 6px;\n  transition: all 0.2s; white-space: nowrap;\n}\n.rc-widget .rc-btn:hover { border-color: var(--accent); color: var(--accent); background: var(--accent-soft); transform: translateY(-1px); }\n.rc-widget .rc-btn:active { transform: scale(0.97); }\n.rc-widget .rc-btn svg { width: 14px; height: 14px; }\n.rc-widget .rc-btn.active { border-color: var(--accent); color: var(--accent); background: var(--accent-soft); }\n.rc-widget .rc-btn.active .rc-toggle-arrow { transform: rotate(180deg); }\n.rc-widget .rc-toggle-arrow { transition: transform 0.2s; }\n\n\/* \u2500\u2500 Advanced Results \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.rc-widget .rc-advanced { display: none; margin-top: 20px; padding-top: 20px; border-top: 1px solid var(--border); }\n.rc-widget .rc-advanced.visible { display: block; }\n.rc-widget .rc-adv-grid { display: flex; flex-wrap: wrap; gap: 12px; }\n.rc-widget .rc-adv-item { display: flex; align-items: center; gap: 8px; }\n.rc-widget .rc-adv-label { font-size: 14px; font-weight: 500; color: var(--text-muted); }\n.rc-widget .rc-adv-pill {\n  padding: 5px 16px; border-radius: var(--radius-full);\n  background: rgba(0,0,0,0.03); border: 1px solid var(--border);\n  font-size: 14px; font-weight: 600; color: var(--text);\n  display: flex; align-items: center; gap: 6px;\n}\n\n\/* \u2500\u2500 eDPI Calculator \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.rc-widget .rc-edpi-output {\n  background: rgba(5,150,105,0.05);\n  border: 1px solid rgba(5,150,105,0.15);\n  border-radius: var(--radius-lg);\n  padding: 24px; text-align: center;\n  display: flex; flex-direction: column; justify-content: center;\n  min-height: 132px;\n}\n.rc-widget .rc-edpi-label { font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: 1px; color: var(--text-muted); margin-bottom: 8px; }\n.rc-widget .rc-edpi-value-wrap { display: flex; align-items: center; justify-content: center; gap: 10px; }\n.rc-widget .rc-edpi-value { font-size: 2rem; font-weight: 800; color: var(--accent); line-height: 1; transition: all 0.3s; }\n.rc-widget .rc-edpi-value.waiting { color: var(--text-muted); }\n\n\/* \u2500\u2500 Pro Presets \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.rc-widget .rc-presets-section { margin-top: 20px; padding-top: 20px; border-top: 1px solid var(--border); }\n.rc-widget .rc-presets-title { font-size: 13px; font-weight: 700; color: var(--text-muted); text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 12px; }\n.rc-widget .rc-presets-grid { display: flex; flex-wrap: wrap; gap: 8px; }\n\n.rc-widget .rc-preset-chip {\n  padding: 6px 14px; border-radius: var(--radius-full);\n  border: 1.5px solid var(--border); background: transparent;\n  color: var(--text-secondary); font-size: 13px; font-weight: 600;\n  font-family: var(--font); cursor: pointer; transition: all 0.2s;\n  display: flex; align-items: center; gap: 6px;\n}\n.rc-widget .rc-preset-chip:hover { border-color: var(--gold); color: var(--gold); background: rgba(217,119,6,0.06); }\n.rc-widget .rc-preset-chip .preset-game { font-weight: 500; color: var(--text-muted); font-size: 11px; }\n\n\/* \u2500\u2500 Toast \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.rc-widget .rc-toast {\n  position: fixed; top: 20px; right: 20px;\n  background: var(--accent); color: var(--text-dark);\n  padding: 12px 20px; border-radius: var(--radius);\n  font-size: 14px; font-weight: 600;\n  box-shadow: 0 4px 16px rgba(5,150,105,0.3);\n  z-index: 10000; opacity: 0; transform: translateY(-10px);\n  transition: all 0.3s ease; pointer-events: none;\n}\n.rc-widget .rc-toast.visible { opacity: 1; transform: translateY(0); }\n\n\/* \u2500\u2500 Error States \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.rc-widget .rc-field.error input,\n.rc-widget .rc-game-select-wrap.error .rc-game-input {\n  border-color: var(--danger) !important;\n  box-shadow: 0 0 0 3px rgba(239,68,68,0.1) !important;\n}\n\n\/* \u2500\u2500 Footer \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.rc-widget .rc-footer { text-align: center; padding: 24px 0; color: var(--text-muted); font-size: 0.8rem; }\n.rc-widget .rc-footer a { color: var(--accent); text-decoration: none; }\n.rc-widget .rc-footer a:hover { text-decoration: underline; }\n\n\/* \u2500\u2500 Screen Reader \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.rc-widget .sr-only {\n  position: absolute; width: 1px; height: 1px;\n  padding: 0; margin: -1px; overflow: hidden;\n  clip: rect(0,0,0,0); white-space: nowrap; border: 0;\n}\n\n\/* \u2500\u2500 Responsive \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n@media (max-width: 640px) {\n  .rc-widget .rc-converter-heading { font-size: 1.15rem; }\n  .rc-widget .rc-card { padding: 24px 18px 20px; }\n  .rc-widget .rc-grid-2 { grid-template-columns: 1fr; }\n  .rc-widget .rc-grid-3 { grid-template-columns: 1fr; }\n  .rc-widget .rc-swap-wrap { position: relative; top: auto; left: auto; transform: none; display: flex; justify-content: center; margin: -4px 0; z-index: 10; }\n  .rc-widget .rc-swap-btn svg { transform: rotate(90deg); }\n  .rc-widget .rc-result-main { flex-direction: column; align-items: flex-start; }\n  .rc-widget .rc-result-left { width: 100%; }\n  .rc-widget .rc-adv-grid { flex-direction: column; }\n  .rc-widget .rc-presets-grid { gap: 6px; }\n  .rc-widget .rc-edpi-row { grid-template-columns: 1fr !important; }\n  .rc-widget .rc-edpi-output { min-height: auto; padding: 20px; }\n}\n\n\/* \u2500\u2500 Animations \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n@keyframes rcFadeIn {\n  from { opacity: 0; transform: translateY(8px); }\n  to { opacity: 1; transform: translateY(0); }\n}\n@keyframes rcPulse {\n  0%, 100% { opacity: 1; }\n  50% { opacity: 0.6; }\n}\n.rc-widget .rc-result-pill.calculating { animation: rcPulse 0.5s ease; }\n<\/style>\n<div class=\"rc-widget\" id=\"rcWidget\">\n\n  <!-- Dynamic H2: updates to \"[Game] to [Game] Sensitivity Converter\" -->\n  <h2 class=\"rc-converter-heading empty\" id=\"converterHeading\"><\/h2>\n\n  <!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550 CONVERTER CARD \u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n  <div class=\"rc-card\" id=\"converterCard\">\n    <div class=\"rc-card-title\">Gevoeligheidsomzetter<\/div>\n\n    <!-- Game selects -->\n    <div class=\"rc-grid-2\" style=\"margin-bottom: 16px;\">\n      <div class=\"rc-game-select-wrap\" id=\"fromGameWrap\">\n        <input class=\"rc-game-input\" type=\"text\" id=\"fromGameInput\" placeholder=\" \" autocomplete=\"off\" role=\"combobox\" aria-expanded=\"false\" aria-haspopup=\"listbox\" aria-label=\"Source game\">\n        <label class=\"rc-game-label\">Van spel<\/label>\n        <svg class=\"rc-game-arrow\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><polyline points=\"6 9 12 15 18 9\"\/><\/svg>\n        <div class=\"rc-dropdown\" id=\"fromDropdown\" role=\"listbox\"><\/div>\n        <input type=\"hidden\" id=\"fromGameValue\">\n      <\/div>\n\n      <div class=\"rc-swap-wrap\">\n        <button class=\"rc-swap-btn\" id=\"swapBtn\" aria-label=\"Swap games\" title=\"Wissel spellen\">\n          <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M7 16l-4-4 4-4\"\/><path d=\"M17 8l4 4-4 4\"\/><line x1=\"3\" y1=\"12\" x2=\"21\" y2=\"12\"\/><\/svg>\n        <\/button>\n      <\/div>\n\n      <div class=\"rc-game-select-wrap\" id=\"toGameWrap\">\n        <input class=\"rc-game-input\" type=\"text\" id=\"toGameInput\" placeholder=\" \" autocomplete=\"off\" role=\"combobox\" aria-expanded=\"false\" aria-haspopup=\"listbox\" aria-label=\"Target game\">\n        <label class=\"rc-game-label\">Naar spel<\/label>\n        <svg class=\"rc-game-arrow\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><polyline points=\"6 9 12 15 18 9\"\/><\/svg>\n        <div class=\"rc-dropdown\" id=\"toDropdown\" role=\"listbox\"><\/div>\n        <input type=\"hidden\" id=\"toGameValue\">\n      <\/div>\n    <\/div>\n\n    <!-- Sensitivity + DPI -->\n    <div class=\"rc-grid-3\">\n      <div class=\"rc-field\">\n        <input type=\"number\" id=\"fromSens\" placeholder=\" \" step=\"any\" min=\"0\" inputmode=\"decimal\" aria-label=\"Current sensitivity\">\n        <label for=\"fromSens\">Gevoeligheid<\/label>\n      <\/div>\n      <div class=\"rc-field\">\n        <input type=\"number\" id=\"fromDPI\" placeholder=\" \" value=\"800\" min=\"1\" inputmode=\"numeric\" aria-label=\"Current DPI\">\n        <label for=\"fromDPI\">Van DPI<\/label>\n      <\/div>\n      <div class=\"rc-field\">\n        <input type=\"number\" id=\"toDPI\" placeholder=\" \" value=\"800\" min=\"1\" inputmode=\"numeric\" aria-label=\"Target DPI\">\n        <label for=\"toDPI\">Naar DPI<\/label>\n      <\/div>\n    <\/div>\n\n    <!-- Game notes -->\n    <div class=\"rc-game-note\" id=\"gameNote\">\n      <span class=\"rc-game-note-icon\">&#9888;&#65039;<\/span>\n      <span id=\"gameNoteText\"><\/span>\n    <\/div>\n\n    <!-- Result -->\n    <div class=\"rc-result-section\">\n      <div class=\"rc-result-main\">\n        <div class=\"rc-result-left\">\n          <span class=\"rc-result-label\">Nieuwe gevoeligheid<\/span>\n          <span class=\"rc-result-pill waiting\" id=\"resultPill\">\n            <span id=\"resultValue\">0.00<\/span>\n            <button class=\"rc-copy-btn\" id=\"copyResultBtn\" aria-label=\"Copy result\" title=\"Kopi\u00ebren naar klembord\">\n              <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"9\" y=\"9\" width=\"13\" height=\"13\" rx=\"2\"\/><path d=\"M5 15H4a2 2 0 01-2-2V4a2 2 0 012-2h9a2 2 0 012 2v1\"\/><\/svg>\n            <\/button>\n          <\/span>\n        <\/div>\n        <div class=\"rc-btn-group\">\n          <button class=\"rc-btn\" id=\"advancedToggle\" aria-expanded=\"false\">\n            Geavanceerd\n            <svg class=\"rc-toggle-arrow\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><polyline points=\"6 9 12 15 18 9\"\/><\/svg>\n          <\/button>\n          <button class=\"rc-btn\" id=\"resetBtn\">\n            <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M3 12a9 9 0 019-9 9.75 9.75 0 016.74 2.74L21 8\"\/><path d=\"M21 3v5h-5\"\/><path d=\"M21 12a9 9 0 01-9 9 9.75 9.75 0 01-6.74-2.74L3 16\"\/><path d=\"M3 21v-5h5\"\/><\/svg>\n            Resetten\n          <\/button>\n        <\/div>\n      <\/div>\n\n      <div class=\"rc-advanced\" id=\"advancedSection\">\n        <div class=\"rc-adv-grid\">\n          <div class=\"rc-adv-item\">\n            <span class=\"rc-adv-label\">eDPI<\/span>\n            <span class=\"rc-adv-pill\" id=\"advEDPI\">0.00<\/span>\n          <\/div>\n          <div class=\"rc-adv-item\">\n            <span class=\"rc-adv-label\">cm\/360&deg;<\/span>\n            <span class=\"rc-adv-pill\" id=\"advCm\">0.00<\/span>\n          <\/div>\n          <div class=\"rc-adv-item\">\n            <span class=\"rc-adv-label\">in\/360&deg;<\/span>\n            <span class=\"rc-adv-pill\" id=\"advInch\">0.00<\/span>\n          <\/div>\n        <\/div>\n      <\/div>\n    <\/div>\n\n    <!-- Pro Presets -->\n    <div class=\"rc-presets-section\">\n      <div class=\"rc-presets-title\">Snel toepassen: Pro-instellingen<\/div>\n      <div class=\"rc-presets-grid\" id=\"presetsGrid\"><\/div>\n    <\/div>\n  <\/div>\n\n  <!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550 eDPI CALCULATOR CARD \u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n  <div class=\"rc-card\">\n    <div class=\"rc-card-title\">eDPI-calculator<\/div>\n    <div class=\"rc-edpi-row\" style=\"display: grid; grid-template-columns: 1fr 1fr 200px; gap: 16px; align-items: start;\">\n      <div class=\"rc-field\">\n        <input type=\"number\" id=\"edpiSens\" placeholder=\" \" step=\"any\" min=\"0\" inputmode=\"decimal\" aria-label=\"Game sensitivity\">\n        <label for=\"edpiSens\">Gevoeligheid<\/label>\n      <\/div>\n      <div class=\"rc-field\">\n        <input type=\"number\" id=\"edpiDPI\" placeholder=\" \" min=\"1\" inputmode=\"numeric\" aria-label=\"Mouse DPI\">\n        <label for=\"edpiDPI\">Muis DPI<\/label>\n      <\/div>\n      <div class=\"rc-edpi-output\">\n        <div class=\"rc-edpi-label\">Jouw eDPI<\/div>\n        <div class=\"rc-edpi-value-wrap\">\n          <span class=\"rc-edpi-value waiting\" id=\"edpiResult\">0.0<\/span>\n          <button class=\"rc-copy-btn\" id=\"copyEdpiBtn\" aria-label=\"Copy eDPI\" title=\"Kopieer eDPI\">\n            <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"9\" y=\"9\" width=\"13\" height=\"13\" rx=\"2\"\/><path d=\"M5 15H4a2 2 0 01-2-2V4a2 2 0 012-2h9a2 2 0 012 2v1\"\/><\/svg>\n          <\/button>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n\n  <!-- Footer -->\n  <div class=\"rc-footer\">\n    <p>Conversieformules gebaseerd op geverifieerde yaw-waarden van games (2024&ndash;2025). Resultaten kunnen vari\u00ebren voor games met niet-lineaire gevoeligheidscurves.<\/p>\n  <\/div>\n\n  <!-- Toast -->\n  <div class=\"rc-toast\" id=\"toast\">Gekopieerd naar klembord!<\/div>\n\n  <!-- Screen reader -->\n  <div class=\"sr-only\" aria-live=\"polite\" id=\"srAnnounce\"><\/div>\n<\/div>\n<script>\n(function(){var c=atob(\"ICAndXNlIHN0cmljdCc7CgogIC8qIOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkAogICAgIEdBTUUgREFUQUJBU0UKICAgICDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZAgKi8KICB2YXIgR0FNRVMgPSBbCiAgICB7IGlkOiAiY3MyIiwgICAgICAgICAgIG5hbWU6ICJDb3VudGVyLVN0cmlrZSAyIiwgICAgICAgIHlhdzogMC4wMjIsICAgICAgY2F0OiAiRlBTIiB9LAogICAgeyBpZDogImNzZ28iLCAgICAgICAgICBuYW1lOiAiQ1M6R08iLCAgICAgICAgICAgICAgICAgICB5YXc6IDAuMDIyLCAgICAgIGNhdDogIkZQUyIgfSwKICAgIHsgaWQ6ICJ2YWxvcmFudCIsICAgICAgbmFtZTogIlZhbG9yYW50IiwgICAgICAgICAgICAgICAgeWF3OiAwLjA3LCAgICAgICBjYXQ6ICJGUFMiIH0sCiAgICB7IGlkOiAib3ZlcndhdGNoMiIsICAgIG5hbWU6ICJPdmVyd2F0Y2ggMiIsICAgICAgICAgICAgIHlhdzogMC4wMDY2LCAgICAgY2F0OiAiRlBTIiB9LAogICAgeyBpZDogImFwZXgiLCAgICAgICAgICBuYW1lOiAiQXBleCBMZWdlbmRzIiwgICAgICAgICAgICB5YXc6IDAuMDIyLCAgICAgIGNhdDogIkJSIiB9LAogICAgeyBpZDogImZvcnRuaXRlIiwgICAgICBuYW1lOiAiRm9ydG5pdGUiLCAgICAgICAgICAgICAgICB5YXc6IDAuMDA1NTU1LCAgIGNhdDogIkJSIiwgICAgICAgbm90ZTogIkVudGVyIHRoZSBwZXJjZW50YWdlIHZhbHVlIGZyb20gaW4tZ2FtZSAoZS5nLiA3IGZvciA3JSkuIEZPVi1kZXBlbmRlbnQgYXQgZGVmYXVsdCA4MC4iIH0sCiAgICB7IGlkOiAiY29kLW13MyIsICAgICAgIG5hbWU6ICJDb0Q6IE1vZGVybiBXYXJmYXJlIElJSSIsIHlhdzogMC4wMDY2LCAgICAgY2F0OiAiRlBTIiB9LAogICAgeyBpZDogImNvZC13YXJ6b25lIiwgICBuYW1lOiAiQ29EOiBXYXJ6b25lIiwgICAgICAgICAgICB5YXc6IDAuMDA2NiwgICAgIGNhdDogIkJSIiB9LAogICAgeyBpZDogImNvZC1ibzYiLCAgICAgICBuYW1lOiAiQ29EOiBCbGFjayBPcHMgNiIsICAgICAgICB5YXc6IDAuMDA2NiwgICAgIGNhdDogIkZQUyIgfSwKICAgIHsgaWQ6ICJyNi1zaWVnZSIsICAgICAgbmFtZTogIlJhaW5ib3cgU2l4IFNpZWdlIiwgICAgICAgeWF3OiAwLjAwNTczMCwgICBjYXQ6ICJGUFMiIH0sCiAgICB7IGlkOiAiYmYyMDQyIiwgICAgICAgIG5hbWU6ICJCYXR0bGVmaWVsZCAyMDQyIiwgICAgICAgIHlhdzogMC4wMDY2LCAgICAgY2F0OiAiRlBTIiB9LAogICAgeyBpZDogInRmMiIsICAgICAgICAgICBuYW1lOiAiVGVhbSBGb3J0cmVzcyAyIiwgICAgICAgICB5YXc6IDAuMDIyLCAgICAgIGNhdDogIkZQUyIgfSwKICAgIHsgaWQ6ICJxdWFrZSIsICAgICAgICAgbmFtZTogIlF1YWtlIENoYW1waW9ucyIsICAgICAgICAgeWF3OiAwLjAyMiwgICAgICBjYXQ6ICJGUFMiIH0sCiAgICB7IGlkOiAiZGVhZGxvY2siLCAgICAgIG5hbWU6ICJEZWFkbG9jayIsICAgICAgICAgICAgICAgIHlhdzogMC4wNDQsICAgICAgY2F0OiAiRlBTIiB9LAogICAgeyBpZDogIm1hcnZlbC1yaXZhbHMiLCAgbmFtZTogIk1hcnZlbCBSaXZhbHMiLCAgICAgICAgICAgeWF3OiAwLjAwNjYsICAgICBjYXQ6ICJGUFMiIH0sCiAgICB7IGlkOiAidGhlLWZpbmFscyIsICAgIG5hbWU6ICJUaGUgRmluYWxzIiwgICAgICAgICAgICAgIHlhdzogMC4wMDY2LCAgICAgY2F0OiAiRlBTIiB9LAogICAgeyBpZDogImRlc3RpbnkyIiwgICAgICBuYW1lOiAiRGVzdGlueSAyIiwgICAgICAgICAgICAgICB5YXc6IDAuMDA2NiwgICAgIGNhdDogIkZQUyIgfSwKICAgIHsgaWQ6ICJoYWxvLWluZmluaXRlIiwgIG5hbWU6ICJIYWxvIEluZmluaXRlIiwgICAgICAgICAgIHlhdzogMC4wMjIsICAgICAgY2F0OiAiRlBTIiwgICAgICBub3RlOiAiWWF3IG5lZWRzIGNvbW11bml0eSB2ZXJpZmljYXRpb24uIiB9LAogICAgeyBpZDogInB1YmciLCAgICAgICAgICBuYW1lOiAiUFVCRyIsICAgICAgICAgICAgICAgICAgICB5YXc6IDAuMDAyMjIyLCAgIGNhdDogIkJSIiwgICAgICAgbm90ZTogIkhpcGZpcmUgeWF3IG9ubHkuIFBlci1zY29wZSBzZW5zaXRpdml0aWVzIHZhcnkuIiB9LAogICAgeyBpZDogInJ1c3QiLCAgICAgICAgICBuYW1lOiAiUnVzdCIsICAgICAgICAgICAgICAgICAgICB5YXc6IDAuMDAyMjIsICAgIGNhdDogIlN1cnZpdmFsIiwgIG5vdGU6ICJZYXcgdW52ZXJpZmllZCAtIHJlc3VsdHMgbWF5IGJlIGFwcHJveGltYXRlLiIgfSwKICAgIHsgaWQ6ICJ0YXJrb3YiLCAgICAgICAgbmFtZTogIkVzY2FwZSBmcm9tIFRhcmtvdiIsICAgICAgeWF3OiAwLjEyNSwgICAgICBjYXQ6ICJGUFMiLCAgICAgIG5vdGU6ICJDb21wbGV4IHN5c3RlbSB3aXRoIHBlci1vcHRpYyBtdWx0aXBsaWVycy4gUmVzdWx0cyBhcHByb3hpbWF0ZS4iIH0sCiAgICB7IGlkOiAiZnJhZ3B1bmsiLCAgICAgIG5hbWU6ICJGcmFnUHVuayIsICAgICAgICAgICAgICAgIHlhdzogMC4wNTU2LCAgICAgY2F0OiAiRlBTIiB9LAogICAgeyBpZDogInNwbGl0Z2F0ZTIiLCAgICBuYW1lOiAiU3BsaXRnYXRlIDIiLCAgICAgICAgICAgICB5YXc6IDAuMDExMTYsICAgIGNhdDogIkZQUyIgfQogIF07CgogIHZhciBHQU1FX01BUCA9IHt9OwogIEdBTUVTLmZvckVhY2goZnVuY3Rpb24oZykgeyBHQU1FX01BUFtnLmlkXSA9IGc7IH0pOwoKICB2YXIgUFJPX1BSRVNFVFMgPSBbCiAgICB7IGxhYmVsOiAiZG9uayIsICAgICAgICBnYW1lOiAiY3MyIiwgICAgICAgIHNlbnM6IDEuMjUsICBkcGk6IDgwMCB9LAogICAgeyBsYWJlbDogInMxbXBsZSIsICAgICAgZ2FtZTogImNzMiIsICAgICAgICBzZW5zOiAzLjA5LCAgZHBpOiA0MDAgfSwKICAgIHsgbGFiZWw6ICJaeXdPbyIsICAgICAgIGdhbWU6ICJjczIiLCAgICAgICAgc2VuczogMi4wLCAgIGRwaTogNDAwIH0sCiAgICB7IGxhYmVsOiAibTBORVNZIiwgICAgICBnYW1lOiAiY3MyIiwgICAgICAgIHNlbnM6IDEuMTUsICBkcGk6IDgwMCB9LAogICAgeyBsYWJlbDogIk5pS28iLCAgICAgICAgZ2FtZTogImNzMiIsICAgICAgICBzZW5zOiAxLjU1LCAgZHBpOiA0MDAgfSwKICAgIHsgbGFiZWw6ICJUZW5aIiwgICAgICAgIGdhbWU6ICJ2YWxvcmFudCIsICAgc2VuczogMC4xMzksIGRwaTogMTYwMCB9LAogICAgeyBsYWJlbDogImFzcGFzIiwgICAgICAgZ2FtZTogInZhbG9yYW50IiwgICBzZW5zOiAwLjQsICAgZHBpOiA4MDAgfSwKICAgIHsgbGFiZWw6ICJEZW1vbjEiLCAgICAgIGdhbWU6ICJ2YWxvcmFudCIsICAgc2VuczogMC4xLCAgIGRwaTogMTYwMCB9LAogICAgeyBsYWJlbDogInlheSIsICAgICAgICAgZ2FtZTogInZhbG9yYW50IiwgICBzZW5zOiAwLjI3LCAgZHBpOiA4MDAgfSwKICAgIHsgbGFiZWw6ICJJbXBlcmlhbEhhbCIsIGdhbWU6ICJhcGV4IiwgICAgICAgc2VuczogMS4xLCAgIGRwaTogODAwIH0sCiAgICB7IGxhYmVsOiAiR2VuYnVydGVuIiwgICBnYW1lOiAiYXBleCIsICAgICAgIHNlbnM6IDEuNSwgICBkcGk6IDgwMCB9LAogICAgeyBsYWJlbDogIlBldGVyYm90IiwgICAgZ2FtZTogImZvcnRuaXRlIiwgICBzZW5zOiA1LjAsICAgZHBpOiA4MDAgfSwKICAgIHsgbGFiZWw6ICJCdWdoYSIsICAgICAgIGdhbWU6ICJmb3J0bml0ZSIsICAgc2VuczogNy4wLCAgIGRwaTogODAwIH0sCiAgICB7IGxhYmVsOiAiU1A5UksxRSIsICAgICBnYW1lOiAib3ZlcndhdGNoMiIsIHNlbnM6IDYuNzUsICBkcGk6IDgwMCB9LAogICAgeyBsYWJlbDogIlN0YWxrM3IiLCAgICAgZ2FtZTogIm92ZXJ3YXRjaDIiLCBzZW5zOiAzLjU4LCAgZHBpOiAxNjAwIH0KICBdOwoKICAvKiDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZAKICAgICBNQVRICiAgICAg4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQICovCiAgZnVuY3Rpb24gc2Vuc1RvSW5jaDM2MChzZW5zLCBkcGksIHlhdykgeyByZXR1cm4gMzYwIC8gKHNlbnMgKiBkcGkgKiB5YXcpOyB9CiAgZnVuY3Rpb24gaW5jaDM2MFRvU2VucyhpbmNoMzYwLCBkcGksIHlhdykgeyByZXR1cm4gMzYwIC8gKGluY2gzNjAgKiBkcGkgKiB5YXcpOyB9CgogIGZ1bmN0aW9uIGNvbnZlcnQoZnJvbUlkLCB0b0lkLCBmcm9tU2VucywgZnJvbURQSSwgdG9EUEkpIHsKICAgIHZhciBmZyA9IEdBTUVfTUFQW2Zyb21JZF0sIHRnID0gR0FNRV9NQVBbdG9JZF07CiAgICBpZiAoIWZnIHx8ICF0ZykgcmV0dXJuIG51bGw7CiAgICB2YXIgaSA9IHNlbnNUb0luY2gzNjAoZnJvbVNlbnMsIGZyb21EUEksIGZnLnlhdyk7CiAgICB2YXIgbnMgPSBpbmNoMzYwVG9TZW5zKGksIHRvRFBJLCB0Zy55YXcpOwogICAgcmV0dXJuIHsgbmV3U2VuczogcGFyc2VGbG9hdChucy50b0ZpeGVkKDQpKSwgZURQSTogcGFyc2VGbG9hdCgobnMgKiB0b0RQSSkudG9GaXhlZCgyKSksIGluY2gzNjA6IHBhcnNlRmxvYXQoaS50b0ZpeGVkKDMpKSwgY20zNjA6IHBhcnNlRmxvYXQoKGkgKiAyLjU0KS50b0ZpeGVkKDIpKSB9OwogIH0KCiAgLyog4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQCiAgICAgRE9NIOKAlCB3YWl0IGZvciBlbGVtZW50cyB0byBleGlzdAogICAgIOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkCAqLwogIGZ1bmN0aW9uIGluaXRXaWRnZXQoKSB7CiAgICB2YXIgZ2V0RWwgPSBmdW5jdGlvbihpZCkgeyByZXR1cm4gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpOyB9OwoKICAgIHZhciBmcm9tR2FtZUlucHV0ID0gZ2V0RWwoJ2Zyb21HYW1lSW5wdXQnKSwgZnJvbUdhbWVWYWx1ZSA9IGdldEVsKCdmcm9tR2FtZVZhbHVlJyk7CiAgICB2YXIgZnJvbUdhbWVXcmFwID0gZ2V0RWwoJ2Zyb21HYW1lV3JhcCcpLCBmcm9tRHJvcGRvd24gPSBnZXRFbCgnZnJvbURyb3Bkb3duJyk7CiAgICB2YXIgdG9HYW1lSW5wdXQgPSBnZXRFbCgndG9HYW1lSW5wdXQnKSwgdG9HYW1lVmFsdWUgPSBnZXRFbCgndG9HYW1lVmFsdWUnKTsKICAgIHZhciB0b0dhbWVXcmFwID0gZ2V0RWwoJ3RvR2FtZVdyYXAnKSwgdG9Ecm9wZG93biA9IGdldEVsKCd0b0Ryb3Bkb3duJyk7CiAgICB2YXIgZnJvbVNlbnMgPSBnZXRFbCgnZnJvbVNlbnMnKSwgZnJvbURQSSA9IGdldEVsKCdmcm9tRFBJJyksIHRvRFBJID0gZ2V0RWwoJ3RvRFBJJyk7CiAgICB2YXIgcmVzdWx0UGlsbCA9IGdldEVsKCdyZXN1bHRQaWxsJyksIHJlc3VsdFZhbHVlID0gZ2V0RWwoJ3Jlc3VsdFZhbHVlJyk7CiAgICB2YXIgY29weVJlc3VsdEJ0biA9IGdldEVsKCdjb3B5UmVzdWx0QnRuJyk7CiAgICB2YXIgYWR2YW5jZWRUb2dnbGUgPSBnZXRFbCgnYWR2YW5jZWRUb2dnbGUnKSwgYWR2YW5jZWRTZWN0aW9uID0gZ2V0RWwoJ2FkdmFuY2VkU2VjdGlvbicpOwogICAgdmFyIHJlc2V0QnRuID0gZ2V0RWwoJ3Jlc2V0QnRuJyk7CiAgICB2YXIgYWR2RURQSSA9IGdldEVsKCdhZHZFRFBJJyksIGFkdkNtID0gZ2V0RWwoJ2FkdkNtJyksIGFkdkluY2ggPSBnZXRFbCgnYWR2SW5jaCcpOwogICAgdmFyIGVkcGlTZW5zID0gZ2V0RWwoJ2VkcGlTZW5zJyksIGVkcGlEUEkgPSBnZXRFbCgnZWRwaURQSScpLCBlZHBpUmVzdWx0ID0gZ2V0RWwoJ2VkcGlSZXN1bHQnKTsKICAgIHZhciBjb3B5RWRwaUJ0biA9IGdldEVsKCdjb3B5RWRwaUJ0bicpOwogICAgdmFyIGNvbnZlcnRlckhlYWRpbmcgPSBnZXRFbCgnY29udmVydGVySGVhZGluZycpOwogICAgdmFyIGdhbWVOb3RlID0gZ2V0RWwoJ2dhbWVOb3RlJyksIGdhbWVOb3RlVGV4dCA9IGdldEVsKCdnYW1lTm90ZVRleHQnKTsKICAgIHZhciB0b2FzdCA9IGdldEVsKCd0b2FzdCcpLCBzckFubm91bmNlID0gZ2V0RWwoJ3NyQW5ub3VuY2UnKTsKCiAgICAvKiBCYWlsIG91dCBpZiBjcml0aWNhbCBlbGVtZW50cyBhcmUgbWlzc2luZyAqLwogICAgaWYgKCFmcm9tR2FtZUlucHV0IHx8ICF0b0dhbWVJbnB1dCB8fCAhZnJvbVNlbnMgfHwgIXJlc3VsdFZhbHVlKSB7CiAgICAgIGNvbnNvbGUuZXJyb3IoJ1JDIFdpZGdldDogQ3JpdGljYWwgRE9NIGVsZW1lbnRzIG5vdCBmb3VuZC4gV2lkZ2V0IGNhbm5vdCBpbml0aWFsaXplLicpOwogICAgICByZXR1cm47CiAgICB9CgogICAgLyog4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQCiAgICAgICBTRUFSQ0hBQkxFIERST1BET1dOCiAgICAgICDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZAgKi8KICAgIGZ1bmN0aW9uIHNldHVwR2FtZURyb3Bkb3duKGlucHV0RWwsIGRyb3Bkb3duRWwsIHdyYXBFbCwgaGlkZGVuRWwpIHsKICAgICAgdmFyIGhpZ2hsaWdodElkeCA9IC0xLCBpc09wZW4gPSBmYWxzZSwgc2F2ZWRWYWx1ZSA9ICcnOwogICAgICB2YXIgc2tpcE5leHRCbHVyID0gZmFsc2U7CgogICAgICBmdW5jdGlvbiBnZXRGaWx0ZXJlZCgpIHsKICAgICAgICB2YXIgcSA9IGlucHV0RWwudmFsdWUudG9Mb3dlckNhc2UoKS50cmltKCk7CiAgICAgICAgaWYgKCFxIHx8IGlucHV0RWwudmFsdWUgPT09IHNhdmVkVmFsdWUpIHJldHVybiBHQU1FUzsKICAgICAgICByZXR1cm4gR0FNRVMuZmlsdGVyKGZ1bmN0aW9uKGcpIHsgcmV0dXJuIGcubmFtZS50b0xvd2VyQ2FzZSgpLmluZGV4T2YocSkgIT09IC0xOyB9KTsKICAgICAgfQoKICAgICAgZnVuY3Rpb24gcmVuZGVyT3B0aW9ucygpIHsKICAgICAgICB2YXIgZmlsdGVyZWQgPSBnZXRGaWx0ZXJlZCgpOwogICAgICAgIGhpZ2hsaWdodElkeCA9IC0xOwogICAgICAgIGlmICghZmlsdGVyZWQubGVuZ3RoKSB7IGRyb3Bkb3duRWwuaW5uZXJIVE1MID0gJzxkaXYgY2xhc3M9InJjLWRyb3Bkb3duLWVtcHR5Ij5ObyBnYW1lcyBmb3VuZDwvZGl2Pic7IHJldHVybjsgfQogICAgICAgIGRyb3Bkb3duRWwuaW5uZXJIVE1MID0gZmlsdGVyZWQubWFwKGZ1bmN0aW9uKGcsIGkpIHsKICAgICAgICAgIHJldHVybiAnPGRpdiBjbGFzcz0icmMtZHJvcGRvd24taXRlbSIgZGF0YS1pZD0iJyArIGcuaWQgKyAnIiBkYXRhLWlkeD0iJyArIGkgKyAnIiByb2xlPSJvcHRpb24iPicgKyBlc2MoZy5uYW1lKSArICc8L2Rpdj4nOwogICAgICAgIH0pLmpvaW4oJycpOwogICAgICAgIHZhciBpdGVtcyA9IGRyb3Bkb3duRWwucXVlcnlTZWxlY3RvckFsbCgnLnJjLWRyb3Bkb3duLWl0ZW0nKTsKICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGl0ZW1zLmxlbmd0aDsgaisrKSB7CiAgICAgICAgICAoZnVuY3Rpb24oaXRlbSkgewogICAgICAgICAgICBpdGVtLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTsKICAgICAgICAgICAgICBza2lwTmV4dEJsdXIgPSB0cnVlOwogICAgICAgICAgICAgIHNlbGVjdEdhbWUoaXRlbS5nZXRBdHRyaWJ1dGUoJ2RhdGEtaWQnKSk7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICBpdGVtLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZW50ZXInLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICBjbGVhckhMKCk7CiAgICAgICAgICAgICAgaXRlbS5jbGFzc0xpc3QuYWRkKCdoaWdobGlnaHRlZCcpOwogICAgICAgICAgICAgIGhpZ2hsaWdodElkeCA9IHBhcnNlSW50KGl0ZW0uZ2V0QXR0cmlidXRlKCdkYXRhLWlkeCcpKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgICB9KShpdGVtc1tqXSk7CiAgICAgICAgfQogICAgICB9CgogICAgICBmdW5jdGlvbiBjbGVhckhMKCkgewogICAgICAgIHZhciBlbHMgPSBkcm9wZG93bkVsLnF1ZXJ5U2VsZWN0b3JBbGwoJy5yYy1kcm9wZG93bi1pdGVtJyk7CiAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBlbHMubGVuZ3RoOyBqKyspIHsgZWxzW2pdLmNsYXNzTGlzdC5yZW1vdmUoJ2hpZ2hsaWdodGVkJyk7IH0KICAgICAgfQoKICAgICAgZnVuY3Rpb24gb3BlbigpIHsKICAgICAgICBpZiAoaXNPcGVuKSByZXR1cm47IGlzT3BlbiA9IHRydWU7IHNhdmVkVmFsdWUgPSBpbnB1dEVsLnZhbHVlOwogICAgICAgIGlmIChoaWRkZW5FbC52YWx1ZSkgaW5wdXRFbC52YWx1ZSA9ICcnOwogICAgICAgIGRyb3Bkb3duRWwuY2xhc3NMaXN0LmFkZCgnb3BlbicpOwogICAgICAgIGRyb3Bkb3duRWwuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7CiAgICAgICAgd3JhcEVsLmNsYXNzTGlzdC5hZGQoJ29wZW4nLCAnZm9jdXNlZCcpOwogICAgICAgIGlucHV0RWwuc2V0QXR0cmlidXRlKCdhcmlhLWV4cGFuZGVkJywgJ3RydWUnKTsKICAgICAgICByZW5kZXJPcHRpb25zKCk7CiAgICAgIH0KCiAgICAgIGZ1bmN0aW9uIGNsb3NlKCkgewogICAgICAgIGlmICghaXNPcGVuKSByZXR1cm47IGlzT3BlbiA9IGZhbHNlOwogICAgICAgIGRyb3Bkb3duRWwuY2xhc3NMaXN0LnJlbW92ZSgnb3BlbicpOwogICAgICAgIGRyb3Bkb3duRWwuc3R5bGUuZGlzcGxheSA9ICcnOwogICAgICAgIHdyYXBFbC5jbGFzc0xpc3QucmVtb3ZlKCdvcGVuJywgJ2ZvY3VzZWQnKTsKICAgICAgICBpbnB1dEVsLnNldEF0dHJpYnV0ZSgnYXJpYS1leHBhbmRlZCcsICdmYWxzZScpOwogICAgICAgIGlmIChoaWRkZW5FbC52YWx1ZSkgeyBpbnB1dEVsLnZhbHVlID0gR0FNRV9NQVBbaGlkZGVuRWwudmFsdWVdID8gR0FNRV9NQVBbaGlkZGVuRWwudmFsdWVdLm5hbWUgOiAnJzsgd3JhcEVsLmNsYXNzTGlzdC5hZGQoJ2hhcy12YWx1ZScpOyB9CiAgICAgICAgZWxzZSB7IGlucHV0RWwudmFsdWUgPSAnJzsgd3JhcEVsLmNsYXNzTGlzdC5yZW1vdmUoJ2hhcy12YWx1ZScpOyB9CiAgICAgIH0KCiAgICAgIGZ1bmN0aW9uIHNlbGVjdEdhbWUoaWQpIHsKICAgICAgICBoaWRkZW5FbC52YWx1ZSA9IGlkOwogICAgICAgIHZhciBnYW1lID0gR0FNRV9NQVBbaWRdOwogICAgICAgIGlucHV0RWwudmFsdWUgPSBnYW1lID8gZ2FtZS5uYW1lIDogJyc7CiAgICAgICAgd3JhcEVsLmNsYXNzTGlzdC5hZGQoJ2hhcy12YWx1ZScpOyB3cmFwRWwuY2xhc3NMaXN0LnJlbW92ZSgnZXJyb3InKTsKICAgICAgICBjbG9zZSgpOyBkb0NvbnZlcnRlckNhbGMoKTsgYW5ub3VuY2UoJ1NlbGVjdGVkOiAnICsgKGdhbWUgPyBnYW1lLm5hbWUgOiAnJykpOwogICAgICB9CgogICAgICBpbnB1dEVsLmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgZnVuY3Rpb24oZSkgewogICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAgICAgb3BlbigpOwogICAgICB9LCB0cnVlKTsKCiAgICAgIGlucHV0RWwuYWRkRXZlbnRMaXN0ZW5lcignYmx1cicsIGZ1bmN0aW9uKCkgewogICAgICAgIGlmIChza2lwTmV4dEJsdXIpIHsgc2tpcE5leHRCbHVyID0gZmFsc2U7IHJldHVybjsgfQogICAgICAgIHNldFRpbWVvdXQoY2xvc2UsIDIwMCk7CiAgICAgIH0pOwoKICAgICAgaW5wdXRFbC5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsIGZ1bmN0aW9uKGUpIHsKICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpOwogICAgICAgIGlmICghaXNPcGVuKSBvcGVuKCk7CiAgICAgICAgcmVuZGVyT3B0aW9ucygpOwogICAgICB9KTsKCiAgICAgIGlucHV0RWwuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbihlKSB7CiAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTsKICAgICAgICBpZiAoIWlzT3Blbikgb3BlbigpOwogICAgICB9KTsKCiAgICAgIGlucHV0RWwuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgZnVuY3Rpb24oZSkgewogICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAgIH0pOwoKICAgICAgaW5wdXRFbC5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgZnVuY3Rpb24oZSkgewogICAgICAgIHZhciBpdGVtcyA9IGRyb3Bkb3duRWwucXVlcnlTZWxlY3RvckFsbCgnLnJjLWRyb3Bkb3duLWl0ZW0nKTsKICAgICAgICBpZiAoZS5rZXkgPT09ICdBcnJvd0Rvd24nKSB7IGUucHJldmVudERlZmF1bHQoKTsgZS5zdG9wUHJvcGFnYXRpb24oKTsgaWYgKCFpc09wZW4pIG9wZW4oKTsgaWYgKGl0ZW1zLmxlbmd0aCkgeyBoaWdobGlnaHRJZHggPSBNYXRoLm1pbihoaWdobGlnaHRJZHggKyAxLCBpdGVtcy5sZW5ndGggLSAxKTsgY2xlYXJITCgpOyBpdGVtc1toaWdobGlnaHRJZHhdLmNsYXNzTGlzdC5hZGQoJ2hpZ2hsaWdodGVkJyk7IGl0ZW1zW2hpZ2hsaWdodElkeF0uc2Nyb2xsSW50b1ZpZXcoe2Jsb2NrOiAnbmVhcmVzdCd9KTsgfSB9CiAgICAgICAgZWxzZSBpZiAoZS5rZXkgPT09ICdBcnJvd1VwJykgeyBlLnByZXZlbnREZWZhdWx0KCk7IGUuc3RvcFByb3BhZ2F0aW9uKCk7IGlmIChpdGVtcy5sZW5ndGgpIHsgaGlnaGxpZ2h0SWR4ID0gTWF0aC5tYXgoaGlnaGxpZ2h0SWR4IC0gMSwgMCk7IGNsZWFySEwoKTsgaXRlbXNbaGlnaGxpZ2h0SWR4XS5jbGFzc0xpc3QuYWRkKCdoaWdobGlnaHRlZCcpOyBpdGVtc1toaWdobGlnaHRJZHhdLnNjcm9sbEludG9WaWV3KHtibG9jazogJ25lYXJlc3QnfSk7IH0gfQogICAgICAgIGVsc2UgaWYgKGUua2V5ID09PSAnRW50ZXInKSB7IGUucHJldmVudERlZmF1bHQoKTsgZS5zdG9wUHJvcGFnYXRpb24oKTsgaWYgKGhpZ2hsaWdodElkeCA+PSAwICYmIGl0ZW1zW2hpZ2hsaWdodElkeF0pIHNlbGVjdEdhbWUoaXRlbXNbaGlnaGxpZ2h0SWR4XS5nZXRBdHRyaWJ1dGUoJ2RhdGEtaWQnKSk7IH0KICAgICAgICBlbHNlIGlmIChlLmtleSA9PT0gJ0VzY2FwZScpIHsgZS5zdG9wUHJvcGFnYXRpb24oKTsgY2xvc2UoKTsgaW5wdXRFbC5ibHVyKCk7IH0KICAgICAgfSk7CgogICAgICByZXR1cm4geyBzZWxlY3RHYW1lOiBzZWxlY3RHYW1lLCBjbG9zZTogY2xvc2UsIGdldFZhbHVlOiBmdW5jdGlvbigpIHsgcmV0dXJuIGhpZGRlbkVsLnZhbHVlOyB9IH07CiAgICB9CgogICAgdmFyIGZyb21HYW1lREQgPSBzZXR1cEdhbWVEcm9wZG93bihmcm9tR2FtZUlucHV0LCBmcm9tRHJvcGRvd24sIGZyb21HYW1lV3JhcCwgZnJvbUdhbWVWYWx1ZSk7CiAgICB2YXIgdG9HYW1lREQgPSBzZXR1cEdhbWVEcm9wZG93bih0b0dhbWVJbnB1dCwgdG9Ecm9wZG93biwgdG9HYW1lV3JhcCwgdG9HYW1lVmFsdWUpOwoKICAgIC8qIOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkAogICAgICAgQ09OVkVSVEVSCiAgICAgICDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZAgKi8KICAgIGZ1bmN0aW9uIHVwZGF0ZUhlYWRpbmcoKSB7CiAgICAgIHZhciBmID0gZnJvbUdhbWVWYWx1ZS52YWx1ZSwgdCA9IHRvR2FtZVZhbHVlLnZhbHVlOwogICAgICBpZiAoZiAmJiB0KSB7IGNvbnZlcnRlckhlYWRpbmcuaW5uZXJIVE1MID0gJzxzcGFuIGNsYXNzPSJyYy1oMi1hY2NlbnQiPicgKyBlc2MoR0FNRV9NQVBbZl0gPyBHQU1FX01BUFtmXS5uYW1lIDogZikgKyAnPC9zcGFuPiB0byA8c3BhbiBjbGFzcz0icmMtaDItYWNjZW50Ij4nICsgZXNjKEdBTUVfTUFQW3RdID8gR0FNRV9NQVBbdF0ubmFtZSA6IHQpICsgJzwvc3Bhbj4gU2Vuc2l0aXZpdHkgQ29udmVydGVyJzsgY29udmVydGVySGVhZGluZy5jbGFzc0xpc3QucmVtb3ZlKCdlbXB0eScpOyB9CiAgICAgIGVsc2UgaWYgKGYpIHsgY29udmVydGVySGVhZGluZy5pbm5lckhUTUwgPSAnPHNwYW4gY2xhc3M9InJjLWgyLWFjY2VudCI+JyArIGVzYyhHQU1FX01BUFtmXSA\/IEdBTUVfTUFQW2ZdLm5hbWUgOiBmKSArICc8L3NwYW4+IFNlbnNpdGl2aXR5IENvbnZlcnRlcic7IGNvbnZlcnRlckhlYWRpbmcuY2xhc3NMaXN0LnJlbW92ZSgnZW1wdHknKTsgfQogICAgICBlbHNlIGlmICh0KSB7IGNvbnZlcnRlckhlYWRpbmcuaW5uZXJIVE1MID0gJ0NvbnZlcnQgdG8gPHNwYW4gY2xhc3M9InJjLWgyLWFjY2VudCI+JyArIGVzYyhHQU1FX01BUFt0XSA\/IEdBTUVfTUFQW3RdLm5hbWUgOiB0KSArICc8L3NwYW4+JzsgY29udmVydGVySGVhZGluZy5jbGFzc0xpc3QucmVtb3ZlKCdlbXB0eScpOyB9CiAgICAgIGVsc2UgeyBjb252ZXJ0ZXJIZWFkaW5nLmlubmVySFRNTCA9ICcnOyBjb252ZXJ0ZXJIZWFkaW5nLmNsYXNzTGlzdC5hZGQoJ2VtcHR5Jyk7IH0KICAgIH0KCiAgICBmdW5jdGlvbiB1cGRhdGVHYW1lTm90ZXMoKSB7CiAgICAgIHZhciBmID0gZnJvbUdhbWVWYWx1ZS52YWx1ZSwgdCA9IHRvR2FtZVZhbHVlLnZhbHVlLCBub3RlcyA9IFtdOwogICAgICBpZiAoZiAmJiBHQU1FX01BUFtmXSAmJiBHQU1FX01BUFtmXS5ub3RlKSBub3Rlcy5wdXNoKEdBTUVfTUFQW2ZdLm5hbWUgKyAnOiAnICsgR0FNRV9NQVBbZl0ubm90ZSk7CiAgICAgIGlmICh0ICYmIEdBTUVfTUFQW3RdICYmIEdBTUVfTUFQW3RdLm5vdGUgJiYgdCAhPT0gZikgbm90ZXMucHVzaChHQU1FX01BUFt0XS5uYW1lICsgJzogJyArIEdBTUVfTUFQW3RdLm5vdGUpOwogICAgICBpZiAobm90ZXMubGVuZ3RoKSB7IGdhbWVOb3RlVGV4dC50ZXh0Q29udGVudCA9IG5vdGVzLmpvaW4oJyBcdTAwQjcgJyk7IGdhbWVOb3RlLmNsYXNzTGlzdC5hZGQoJ3Zpc2libGUnKTsgfQogICAgICBlbHNlIHsgZ2FtZU5vdGUuY2xhc3NMaXN0LnJlbW92ZSgndmlzaWJsZScpOyB9CiAgICB9CgogICAgZnVuY3Rpb24gZG9Db252ZXJ0ZXJDYWxjKCkgewogICAgICB2YXIgZiA9IGZyb21HYW1lVmFsdWUudmFsdWUsIHQgPSB0b0dhbWVWYWx1ZS52YWx1ZTsKICAgICAgdmFyIHMgPSBwYXJzZUZsb2F0KGZyb21TZW5zLnZhbHVlKSwgZEYgPSBwYXJzZUZsb2F0KGZyb21EUEkudmFsdWUpLCBkVCA9IHBhcnNlRmxvYXQodG9EUEkudmFsdWUpOwogICAgICB1cGRhdGVIZWFkaW5nKCk7IHVwZGF0ZUdhbWVOb3RlcygpOwogICAgICBpZiAoIWYgfHwgIXQgfHwgaXNOYU4ocykgfHwgcyA8PSAwIHx8IGlzTmFOKGRGKSB8fCBkRiA8PSAwIHx8IGlzTmFOKGRUKSB8fCBkVCA8PSAwKSB7CiAgICAgICAgcmVzdWx0VmFsdWUudGV4dENvbnRlbnQgPSAnMC4wMCc7IHJlc3VsdFBpbGwuY2xhc3NMaXN0LmFkZCgnd2FpdGluZycpOyByZXN1bHRQaWxsLmNsYXNzTGlzdC5yZW1vdmUoJ2NhbGN1bGF0aW5nJyk7CiAgICAgICAgYWR2RURQSS50ZXh0Q29udGVudCA9ICcwLjAwJzsgYWR2Q20udGV4dENvbnRlbnQgPSAnMC4wMCc7IGFkdkluY2gudGV4dENvbnRlbnQgPSAnMC4wMCc7IHJldHVybjsKICAgICAgfQogICAgICB2YXIgciA9IGNvbnZlcnQoZiwgdCwgcywgZEYsIGRUKTsgaWYgKCFyKSByZXR1cm47CiAgICAgIHJlc3VsdFBpbGwuY2xhc3NMaXN0LnJlbW92ZSgnd2FpdGluZycpOyByZXN1bHRQaWxsLmNsYXNzTGlzdC5hZGQoJ2NhbGN1bGF0aW5nJyk7CiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHJlc3VsdFBpbGwuY2xhc3NMaXN0LnJlbW92ZSgnY2FsY3VsYXRpbmcnKTsgfSwgMzAwKTsKICAgICAgcmVzdWx0VmFsdWUudGV4dENvbnRlbnQgPSByLm5ld1NlbnM7IGFkdkVEUEkudGV4dENvbnRlbnQgPSByLmVEUEk7IGFkdkNtLnRleHRDb250ZW50ID0gci5jbTM2MDsgYWR2SW5jaC50ZXh0Q29udGVudCA9IHIuaW5jaDM2MDsKICAgICAgYW5ub3VuY2UoJ0NvbnZlcnRlZDogJyArIHIubmV3U2VucyArICcgc2Vuc2l0aXZpdHkgaW4gJyArIChHQU1FX01BUFt0XSA\/IEdBTUVfTUFQW3RdLm5hbWUgOiB0KSk7CiAgICB9CgogICAgZnJvbVNlbnMuYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCBkb0NvbnZlcnRlckNhbGMpOwogICAgZnJvbURQSS5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsIGRvQ29udmVydGVyQ2FsYyk7CiAgICB0b0RQSS5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsIGRvQ29udmVydGVyQ2FsYyk7CgogICAgLyogU3dhcCAqLwogICAgZ2V0RWwoJ3N3YXBCdG4nKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKCkgewogICAgICB2YXIgdGYgPSBmcm9tR2FtZVZhbHVlLnZhbHVlLCB0biA9IGZyb21HYW1lSW5wdXQudmFsdWUsIHRkID0gZnJvbURQSS52YWx1ZTsKICAgICAgZnJvbUdhbWVWYWx1ZS52YWx1ZSA9IHRvR2FtZVZhbHVlLnZhbHVlOyBmcm9tR2FtZUlucHV0LnZhbHVlID0gdG9HYW1lSW5wdXQudmFsdWU7CiAgICAgIGZyb21HYW1lV3JhcC5jbGFzc0xpc3QudG9nZ2xlKCdoYXMtdmFsdWUnLCAhIWZyb21HYW1lVmFsdWUudmFsdWUpOwogICAgICB0b0dhbWVWYWx1ZS52YWx1ZSA9IHRmOyB0b0dhbWVJbnB1dC52YWx1ZSA9IHRuOwogICAgICB0b0dhbWVXcmFwLmNsYXNzTGlzdC50b2dnbGUoJ2hhcy12YWx1ZScsICEhdG9HYW1lVmFsdWUudmFsdWUpOwogICAgICBmcm9tRFBJLnZhbHVlID0gdG9EUEkudmFsdWU7IHRvRFBJLnZhbHVlID0gdGQ7CiAgICAgIHZhciBjdiA9IHBhcnNlRmxvYXQocmVzdWx0VmFsdWUudGV4dENvbnRlbnQpOwogICAgICBpZiAoIWlzTmFOKGN2KSAmJiBjdiA+IDApIGZyb21TZW5zLnZhbHVlID0gY3Y7CiAgICAgIGRvQ29udmVydGVyQ2FsYygpOyBhbm5vdW5jZSgnR2FtZXMgYW5kIHNldHRpbmdzIHN3YXBwZWQnKTsKICAgIH0pOwoKICAgIC8qIEFkdmFuY2VkIHRvZ2dsZSAqLwogICAgYWR2YW5jZWRUb2dnbGUuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbigpIHsKICAgICAgdmFyIHYgPSBhZHZhbmNlZFNlY3Rpb24uY2xhc3NMaXN0LnRvZ2dsZSgndmlzaWJsZScpOwogICAgICBhZHZhbmNlZFRvZ2dsZS5jbGFzc0xpc3QudG9nZ2xlKCdhY3RpdmUnLCB2KTsKICAgICAgYWR2YW5jZWRUb2dnbGUuc2V0QXR0cmlidXRlKCdhcmlhLWV4cGFuZGVkJywgdik7CiAgICAgIGFubm91bmNlKHYgPyAnQWR2YW5jZWQgcmVzdWx0cyBzaG93bicgOiAnQWR2YW5jZWQgcmVzdWx0cyBoaWRkZW4nKTsKICAgIH0pOwoKICAgIC8qIFJlc2V0ICovCiAgICByZXNldEJ0bi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKCkgewogICAgICBmcm9tR2FtZVZhbHVlLnZhbHVlID0gJyc7IGZyb21HYW1lSW5wdXQudmFsdWUgPSAnJzsgZnJvbUdhbWVXcmFwLmNsYXNzTGlzdC5yZW1vdmUoJ2hhcy12YWx1ZScsICdlcnJvcicpOwogICAgICB0b0dhbWVWYWx1ZS52YWx1ZSA9ICcnOyB0b0dhbWVJbnB1dC52YWx1ZSA9ICcnOyB0b0dhbWVXcmFwLmNsYXNzTGlzdC5yZW1vdmUoJ2hhcy12YWx1ZScsICdlcnJvcicpOwogICAgICBmcm9tU2Vucy52YWx1ZSA9ICcnOyBmcm9tRFBJLnZhbHVlID0gJzgwMCc7IHRvRFBJLnZhbHVlID0gJzgwMCc7CiAgICAgIHJlc3VsdFZhbHVlLnRleHRDb250ZW50ID0gJzAuMDAnOyByZXN1bHRQaWxsLmNsYXNzTGlzdC5hZGQoJ3dhaXRpbmcnKTsKICAgICAgYWR2RURQSS50ZXh0Q29udGVudCA9ICcwLjAwJzsgYWR2Q20udGV4dENvbnRlbnQgPSAnMC4wMCc7IGFkdkluY2gudGV4dENvbnRlbnQgPSAnMC4wMCc7CiAgICAgIHVwZGF0ZUhlYWRpbmcoKTsgdXBkYXRlR2FtZU5vdGVzKCk7IGFubm91bmNlKCdBbGwgZmllbGRzIHJlc2V0Jyk7CiAgICB9KTsKCiAgICAvKiBDb3B5IOKAlCB3aXRoIGZhbGxiYWNrIGZvciBIVFRQIC8gaWZyYW1lIC8gb2xkZXIgYnJvd3NlcnMgKi8KICAgIGZ1bmN0aW9uIGNvcHlUb0NsaXBib2FyZCh0ZXh0LCBidG4pIHsKICAgICAgaWYgKCF0ZXh0IHx8IHRleHQgPT09ICcwLjAwJyB8fCB0ZXh0ID09PSAnMC4wJykgeyBhbm5vdW5jZSgnTm8gdmFsdWUgdG8gY29weScpOyByZXR1cm47IH0KCiAgICAgIGZ1bmN0aW9uIG9uU3VjY2VzcygpIHsKICAgICAgICBidG4uY2xhc3NMaXN0LmFkZCgnY29waWVkJyk7CiAgICAgICAgYnRuLmlubmVySFRNTCA9ICc8c3ZnIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMi41IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjxwb2x5bGluZSBwb2ludHM9IjIwIDYgOSAxNyA0IDEyIi8+PC9zdmc+JzsKICAgICAgICBzaG93VG9hc3QoKTsgYW5ub3VuY2UoJ0NvcGllZDogJyArIHRleHQpOwogICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAgICBidG4uY2xhc3NMaXN0LnJlbW92ZSgnY29waWVkJyk7CiAgICAgICAgICBidG4uaW5uZXJIVE1MID0gJzxzdmcgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjxyZWN0IHg9IjkiIHk9IjkiIHdpZHRoPSIxMyIgaGVpZ2h0PSIxMyIgcng9IjIiLz48cGF0aCBkPSJNNSAxNUg0YTIgMiAwIDAxLTItMlY0YTIgMiAwIDAxMi0yaDlhMiAyIDAgMDEyIDJ2MSIvPjwvc3ZnPic7CiAgICAgICAgfSwgMjAwMCk7CiAgICAgIH0KCiAgICAgIGZ1bmN0aW9uIGZhbGxiYWNrQ29weSgpIHsKICAgICAgICB0cnkgewogICAgICAgICAgdmFyIHRhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGV4dGFyZWEnKTsKICAgICAgICAgIHRhLnZhbHVlID0gdGV4dDsKICAgICAgICAgIHRhLnN0eWxlLnBvc2l0aW9uID0gJ2ZpeGVkJzsKICAgICAgICAgIHRhLnN0eWxlLmxlZnQgPSAnLTk5OTlweCc7CiAgICAgICAgICB0YS5zdHlsZS50b3AgPSAnLTk5OTlweCc7CiAgICAgICAgICB0YS5zdHlsZS5vcGFjaXR5ID0gJzAnOwogICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0YSk7CiAgICAgICAgICB0YS5mb2N1cygpOwogICAgICAgICAgdGEuc2VsZWN0KCk7CiAgICAgICAgICB2YXIgb2sgPSBkb2N1bWVudC5leGVjQ29tbWFuZCgnY29weScpOwogICAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZCh0YSk7CiAgICAgICAgICBpZiAob2spIHsgb25TdWNjZXNzKCk7IH0gZWxzZSB7IGFubm91bmNlKCdDb3B5IGZhaWxlZCcpOyB9CiAgICAgICAgfSBjYXRjaCAoZXJyKSB7IGFubm91bmNlKCdDb3B5IGZhaWxlZCcpOyB9CiAgICAgIH0KCiAgICAgIGlmIChuYXZpZ2F0b3IuY2xpcGJvYXJkICYmIHdpbmRvdy5pc1NlY3VyZUNvbnRleHQpIHsKICAgICAgICBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dCh0ZXh0KS50aGVuKG9uU3VjY2VzcykuY2F0Y2goZmFsbGJhY2tDb3B5KTsKICAgICAgfSBlbHNlIHsKICAgICAgICBmYWxsYmFja0NvcHkoKTsKICAgICAgfQogICAgfQoKICAgIGNvcHlSZXN1bHRCdG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbigpIHsgY29weVRvQ2xpcGJvYXJkKHJlc3VsdFZhbHVlLnRleHRDb250ZW50LCBjb3B5UmVzdWx0QnRuKTsgfSk7CiAgICBjb3B5RWRwaUJ0bi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKCkgeyBjb3B5VG9DbGlwYm9hcmQoZWRwaVJlc3VsdC50ZXh0Q29udGVudCwgY29weUVkcGlCdG4pOyB9KTsKCiAgICBmdW5jdGlvbiBzaG93VG9hc3QoKSB7IHRvYXN0LmNsYXNzTGlzdC5hZGQoJ3Zpc2libGUnKTsgc2V0VGltZW91dChmdW5jdGlvbigpIHsgdG9hc3QuY2xhc3NMaXN0LnJlbW92ZSgndmlzaWJsZScpOyB9LCAyNTAwKTsgfQoKICAgIC8qIGVEUEkgQ2FsY3VsYXRvciAqLwogICAgZnVuY3Rpb24gZG9FZHBpQ2FsYygpIHsKICAgICAgdmFyIHMgPSBwYXJzZUZsb2F0KGVkcGlTZW5zLnZhbHVlKSwgZCA9IHBhcnNlRmxvYXQoZWRwaURQSS52YWx1ZSk7CiAgICAgIGlmIChpc05hTihzKSB8fCBzIDw9IDAgfHwgaXNOYU4oZCkgfHwgZCA8PSAwKSB7IGVkcGlSZXN1bHQudGV4dENvbnRlbnQgPSAnMC4wJzsgZWRwaVJlc3VsdC5jbGFzc0xpc3QuYWRkKCd3YWl0aW5nJyk7IHJldHVybjsgfQogICAgICB2YXIgZSA9IHMgKiBkOwogICAgICBlZHBpUmVzdWx0LnRleHRDb250ZW50ID0gcGFyc2VGbG9hdChlLnRvRml4ZWQoMSkpOyBlZHBpUmVzdWx0LmNsYXNzTGlzdC5yZW1vdmUoJ3dhaXRpbmcnKTsKICAgICAgYW5ub3VuY2UoJ2VEUEk6ICcgKyBlLnRvRml4ZWQoMSkpOwogICAgfQogICAgZWRwaVNlbnMuYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCBkb0VkcGlDYWxjKTsKICAgIGVkcGlEUEkuYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCBkb0VkcGlDYWxjKTsKCiAgICAvKiBQcm8gcHJlc2V0cyAqLwogICAgZnVuY3Rpb24gcmVuZGVyUHJlc2V0cygpIHsKICAgICAgdmFyIGdyaWQgPSBnZXRFbCgncHJlc2V0c0dyaWQnKTsKICAgICAgaWYgKCFncmlkKSByZXR1cm47CiAgICAgIGdyaWQuaW5uZXJIVE1MID0gUFJPX1BSRVNFVFMubWFwKGZ1bmN0aW9uKHApIHsKICAgICAgICB2YXIgZ2FtZSA9IEdBTUVfTUFQW3AuZ2FtZV07CiAgICAgICAgdmFyIHNuID0gZ2FtZSA\/IGdhbWUubmFtZS5yZXBsYWNlKCdDb3VudGVyLVN0cmlrZSAyJywgJ0NTMicpLnJlcGxhY2UoJ092ZXJ3YXRjaCAyJywgJ09XMicpLnJlcGxhY2UoJ0FwZXggTGVnZW5kcycsICdBcGV4JykucmVwbGFjZSgnRXNjYXBlIGZyb20gVGFya292JywgJ0VGVCcpIDogcC5nYW1lOwogICAgICAgIHJldHVybiAnPGJ1dHRvbiBjbGFzcz0icmMtcHJlc2V0LWNoaXAiIGRhdGEtZ2FtZT0iJyArIHAuZ2FtZSArICciIGRhdGEtc2Vucz0iJyArIHAuc2VucyArICciIGRhdGEtZHBpPSInICsgcC5kcGkgKyAnIj4nICsgZXNjKHAubGFiZWwpICsgJyA8c3BhbiBjbGFzcz0icHJlc2V0LWdhbWUiPicgKyBzbiArICcgJyArIHAuc2VucyArICdAJyArIHAuZHBpICsgJzwvc3Bhbj48L2J1dHRvbj4nOwogICAgICB9KS5qb2luKCcnKTsKICAgICAgdmFyIGNoaXBzID0gZ3JpZC5xdWVyeVNlbGVjdG9yQWxsKCcucmMtcHJlc2V0LWNoaXAnKTsKICAgICAgZm9yICh2YXIgY2kgPSAwOyBjaSA8IGNoaXBzLmxlbmd0aDsgY2krKykgewogICAgICAgIChmdW5jdGlvbihjaGlwKSB7CiAgICAgICAgICBjaGlwLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGZyb21HYW1lREQuc2VsZWN0R2FtZShjaGlwLmdldEF0dHJpYnV0ZSgnZGF0YS1nYW1lJykpOwogICAgICAgICAgICBmcm9tU2Vucy52YWx1ZSA9IGNoaXAuZ2V0QXR0cmlidXRlKCdkYXRhLXNlbnMnKTsKICAgICAgICAgICAgZnJvbURQSS52YWx1ZSA9IGNoaXAuZ2V0QXR0cmlidXRlKCdkYXRhLWRwaScpOwogICAgICAgICAgICBkb0NvbnZlcnRlckNhbGMoKTsgYW5ub3VuY2UoJ0FwcGxpZWQgJyArIGNoaXAudGV4dENvbnRlbnQudHJpbSgpICsgJyBzZXR0aW5ncycpOwogICAgICAgICAgfSk7CiAgICAgICAgfSkoY2hpcHNbY2ldKTsKICAgICAgfQogICAgfQoKICAgIC8qIENsb3NlIGRyb3Bkb3ducyBvbiBvdXRzaWRlIGNsaWNrIOKAlCB1c2UgdGltZW91dCB0byBhdm9pZCByYWNlIHdpdGggb3BlbiAqLwogICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgZnVuY3Rpb24oZSkgewogICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAgICAgIGlmICghZnJvbUdhbWVXcmFwLmNvbnRhaW5zKGUudGFyZ2V0KSkgZnJvbUdhbWVERC5jbG9zZSgpOwogICAgICAgIGlmICghdG9HYW1lV3JhcC5jb250YWlucyhlLnRhcmdldCkpIHRvR2FtZURELmNsb3NlKCk7CiAgICAgIH0sIDEwKTsKICAgIH0pOwoKICAgIC8qIEluaXQgKi8KICAgIHJlbmRlclByZXNldHMoKTsKICB9CgogIC8qIFV0aWxpdGllcyAob3V0c2lkZSBpbml0V2lkZ2V0IHNvIHRoZXkgYXJlIGF2YWlsYWJsZSkgKi8KICBmdW5jdGlvbiBlc2MocykgeyB2YXIgZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOyBkLnRleHRDb250ZW50ID0gU3RyaW5nKHMpOyByZXR1cm4gZC5pbm5lckhUTUw7IH0KICBmdW5jdGlvbiBhbm5vdW5jZShtc2cpIHsKICAgIHZhciBlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzckFubm91bmNlJyk7CiAgICBpZiAoZWwpIHsgZWwudGV4dENvbnRlbnQgPSBtc2c7IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IGVsLnRleHRDb250ZW50ID0gJyc7IH0sIDE1MDApOyB9CiAgfQoKICAvKiDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZAKICAgICBTQUZFIElOSVQg4oCUIHdvcmtzIGV2ZW4gaWYgc2NyaXB0IGlzIG1vdmVkL2RlZmVycmVkCiAgICAg4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQICovCiAgaWYgKGRvY3VtZW50LnJlYWR5U3RhdGUgPT09ICdsb2FkaW5nJykgewogICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGluaXRXaWRnZXQpOwogIH0gZWxzZSB7CiAgICBpbml0V2lkZ2V0KCk7CiAgfQoK\");var s=document.createElement(\"script\");s.textContent=c;document.currentScript.parentNode.insertBefore(s,document.currentScript);})()\n<\/script>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-mouse-sensitivity-converter-convert-your-sens-between-23-fps-games-instantly\">Muisgevoeligheidsomzetter \u2014 Zet je gevoeligheid direct om tussen 23 FPS-games<\/h2>\n\n\n\n<p>Een muisgevoeligheidsomzetter is een gratis, browsergebaseerde calculator die je muisinstellingen van de ene game naar de andere vertaalt met behulp van geverifieerde yaw-waarden. Spiermemorie is cruciaal voor een consistente richtprecisie. Als je honderden uren hebt besteed aan het perfectioneren van je flick shots in <em>Counter-Strike 2<\/em>, hoef je je richtprecisie niet opnieuw te leren wanneer je overschakelt naar <em>Valorant<\/em> of <em>Deadlock<\/em>.<\/p>\n\n\n\n<p>Deze tool zorgt ervoor dat een 360-graden draai in je bronspel exact dezelfde fysieke muisbeweging vereist in je doelspel. Het gebruikt de universele <code>inches_per_360<\/code> formule om wiskundige nauwkeurigheid te garanderen over 23 belangrijke pc-titels.<\/p>\n\n\n\n<div style=\"background-color: #f9f9f9; padding: 20px; border-radius: 8px; margin-bottom: 20px;\">\n<h3 style=\"margin-top: 0;\">Samenvatting<\/h3>\n<p>Je vertrouwt op spiermemorie om je schoten te raken. Wanneer je wisselt tussen FPS-games, interpreteren verschillende game-engines je muisbewegingen anders. Dit artikel legt uit hoe je je gevoeligheidsinstellingen direct kunt omzetten om een consistente 360-graden draaiafstand te behouden in al je favoriete shooters. Je vindt hier geverifieerde conversieberekeningen voor de toptitels van 2026, instellingen van pro-spelers, en een duidelijke uitleg van technische termen zoals eDPI en cm\/360.<\/p>\n<\/div>\n\n\n\n<div style=\"background-color: #fff3cd; border-left: 4px solid #ffc107; padding: 20px; margin-bottom: 20px;\">\n<h3 style=\"margin-top: 0;\">TL;DR<\/h3>\n<ul style=\"margin-bottom: 0;\">\n<li><strong>Consistentie is cruciaal:<\/strong> Je moet je fysieke muisafstand (cm\/360) gelijk houden in alle games om spiermemorie te behouden.<\/li>\n<li><strong>Game-engines vari\u00ebren:<\/strong> Een gevoeligheid van &#8220;2.0&#8221; in CS2 is niet hetzelfde als &#8220;2.0&#8221; in Apex Legends of Overwatch vanwege verschillende &#8220;yaw&#8221;-waarden.<\/li>\n<li><strong>DPI is belangrijk:<\/strong> Je kunt deze tool gebruiken om je gevoeligheid aan te passen, zelfs als je je muis-DPI verandert (bijv. van 400 naar 1600).<\/li>\n<li><strong>Ken je eDPI:<\/strong> Je ware gevoeligheid is een combinatie van je hardware-DPI en in-game instellingen.<\/li>\n<li><strong>Gebruik de tool:<\/strong> Voer je huidige game en instellingen hierboven in om direct je exacte waarden voor je nieuwe game te krijgen.<\/li>\n<\/ul>\n<\/div>\n\n\n\n<div style=\"background: linear-gradient(135deg, #07F288 0%, #7BF8BE 100%); color: #0a3d2e; padding: 25px; border-radius: 12px; margin-bottom: 30px;\">\n<h3 style=\"margin-top: 0; color: #0a3d2e;\">\ud83d\udccd Inhoudsopgave<\/h3>\n<ul style=\"list-style-type: none; padding-left: 0;\">\n<li style=\"margin-bottom: 8px;\"><a style=\"text-decoration: none; color: #0a3d2e; font-weight: 600;\" href=\"#how-to-convert\">Hoe je muisgevoeligheid om te zetten in 4 stappen<\/a><\/li>\n<li style=\"margin-bottom: 8px;\"><a style=\"text-decoration: none; color: #0a3d2e; font-weight: 600;\" href=\"#cs2-converter\">Counter-Strike 2 (CS2) Gevoeligheidsomzetter<\/a><\/li>\n<li style=\"margin-bottom: 8px;\"><a style=\"text-decoration: none; color: #0a3d2e; font-weight: 600;\" href=\"#valorant-converter\">Valorant Gevoeligheidsomzetter<\/a><\/li>\n<li style=\"margin-bottom: 8px;\"><a style=\"text-decoration: none; color: #0a3d2e; font-weight: 600;\" href=\"#overwatch2-converter\">Overwatch 2 Gevoeligheidsomzetter<\/a><\/li>\n<li style=\"margin-bottom: 8px;\"><a style=\"text-decoration: none; color: #0a3d2e; font-weight: 600;\" href=\"#apex-converter\">Apex Legends Gevoeligheidsomzetter<\/a><\/li>\n<li style=\"margin-bottom: 8px;\"><a style=\"text-decoration: none; color: #0a3d2e; font-weight: 600;\" href=\"#fortnite-converter\">Fortnite Gevoeligheidsomzetter<\/a><\/li>\n<li style=\"margin-bottom: 8px;\"><a style=\"text-decoration: none; color: #0a3d2e; font-weight: 600;\" href=\"#cod-converter\">Call of Duty Gevoeligheidsomzetter<\/a><\/li>\n<li style=\"margin-bottom: 8px;\"><a style=\"text-decoration: none; color: #0a3d2e; font-weight: 600;\" href=\"#other-games\">Andere populaire shooters (R6, BF2042, Deadlock, enz.)<\/a><\/li>\n<li style=\"margin-bottom: 8px;\"><a style=\"text-decoration: none; color: #0a3d2e; font-weight: 600;\" href=\"#technical-guide\">Technische gids: cm\/360 en eDPI<\/a><\/li>\n<li style=\"margin-bottom: 8px;\"><a style=\"text-decoration: none; color: #0a3d2e; font-weight: 600;\" href=\"#pro-settings\">Gevoeligheidsinstellingen van pro-spelers (2025)<\/a><\/li>\n<li style=\"margin-bottom: 8px;\"><a style=\"text-decoration: none; color: #0a3d2e; font-weight: 600;\" href=\"#faq\">Veelgestelde vragen<\/a><\/li>\n<\/ul>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"how-to-convert\">Hoe je muisgevoeligheid om te zetten in 4 stappen<\/h2>\n\n\n\n<p>Je kunt je richtprecisie in elke game in je bibliotheek binnen enkele seconden synchroniseren. Volg deze vier eenvoudige stappen met behulp van de calculator hierboven:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Selecteer Bronspel:<\/strong> Kies het spel dat je momenteel speelt en waar je vertrouwd mee bent uit het keuzemenu.<\/li>\n\n\n\n<li><strong>Voer Instellingen in:<\/strong> Voer je huidige in-game gevoeligheid en je muis-DPI in (bijv. 800 of 1600).<\/li>\n\n\n\n<li><strong>Selecteer Doelspel:<\/strong> Kies het nieuwe spel dat je wilt spelen.<\/li>\n\n\n\n<li><strong>Bekijk Resultaat:<\/strong> De tool toont direct je nieuwe omgezette gevoeligheid, eDPI en cm\/360 statistieken.<\/li>\n<\/ol>\n\n\n\n<p><strong>Tip:<\/strong> Gebruik de &#8220;Swap&#8221;-functie als je de berekening snel wilt omkeren om te zien hoe je nieuwe instellingen eruit zouden zien in je originele game.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"cs2-converter\">Counter-Strike 2 (CS2) Gevoeligheidsomzetter<\/h2>\n\n\n\n<p>CS2 blijft de gouden standaard voor gevoeligheidsafstemming vanwege de legacy Source engine-mechanismen. De meeste omzetters gebruiken CS2 als de basis &#8220;1.0&#8221; voor berekeningen. De game gebruikt een standaard <code>m_yaw<\/code> waarde van <strong>0.022<\/strong>.<\/p>\n\n\n\n<div style=\"background-color: #e3f2fd; border-left: 5px solid #2196f3; padding: 15px; margin: 20px 0;\"><strong>Pro Context (2026):<\/strong> Hoewel 400 DPI de historische standaard was voor Counter-Strike, zijn veel top-pro&#8217;s zoals m0NESY en NiKo overgestapt op hogere DPI&#8217;s (800 of 1600) om de inputvertraging te verminderen. Ze passen hun in-game gevoeligheid lager aan om dit te compenseren, waardoor hun effectieve snelheid hetzelfde blijft.<\/div>\n\n\n\n<p>Een typisch eDPI-bereik voor competitieve CS2-spelers ligt tussen 560 en 1236. Als je buiten dit bereik valt, kan je richtprecisie inconsistent zijn vergeleken met de gemiddelde spelersbasis.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"valorant-converter\">Valorant Gevoeligheidsomzetter<\/h2>\n\n\n\n<p>Bij het omzetten van CS2 naar Valorant is de berekening eenvoudig. Valorant gebruikt een yaw-waarde van <strong>0.07<\/strong>. Omdat 0.07 ongeveer 3.18 keer groter is dan 0.022, deel je eenvoudigweg je CS2-gevoeligheid door 3.18 om je Valorant-gevoeligheid te krijgen.<\/p>\n\n\n\n<p><strong>Belangrijke overwegingen:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Hardware:<\/strong> Lichtgewicht draadloze muizen, zoals de Razer Viper V3 Pro, domineren het toneel. Pro&#8217;s zoals TenZ en aspas verkiezen deze voor micro-aanpassingen.<\/li>\n\n\n\n<li><strong>Gezichtsveld (FOV):<\/strong> Valorant heeft een vaste FOV van 103\u00b0.<\/li>\n\n\n\n<li><strong>Scopes:<\/strong> Gevoeligheidsmultipliers voor scopes zijn hier specifiek. De meeste spelers laten ze op 1.0 staan, maar sommigen passen ze aan om een &#8220;1:1&#8221; gevoel te bereiken ten opzichte van hipfire.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"overwatch2-converter\">Overwatch 2 Gevoeligheidsomzetter<\/h2>\n\n\n\n<p>Overwatch 2 is sneller en verticaler dan tactische shooters. De game gebruikt een yaw-waarde van <strong>0.0066<\/strong>. Omdat het volgen van snel bewegende doelen (zoals Tracer of Genji) essentieel is, is de gemiddelde eDPI hier over het algemeen hoger (3000\u20136600) dan in CS2 of Valorant.<\/p>\n\n\n\n<p>Je moet ook opmerken dat Overwatch specifieke instellingen per held toestaat. Bijvoorbeeld, Widowmaker en Ana-spelers stellen hun &#8220;Relative Aim Sensitivity While Zoomed&#8221; vaak in op <strong>37.89%<\/strong>. Dit specifieke getal zorgt ervoor dat kleine flicks tijdens het inzoomen identiek aanvoelen aan je hipfire-richtprecisie.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"apex-converter\">Apex Legends Gevoeligheidsomzetter<\/h2>\n\n\n\n<p>Apex Legends is gebouwd op een sterk gemodificeerde versie van de Source engine. Dit is goed nieuws voor de conversie: het deelt exact dezelfde <strong>0.022<\/strong> yaw-waarde als CS2. Als je CS2 speelt met gevoeligheid 1.5, is je Apex Legends hipfire-gevoeligheid ook 1.5.<\/p>\n\n\n\n<p>Hoewel de hipfire-conversie 1:1 is, moet je rekening houden met ADS (Aim Down Sights) multipliers. De meeste spelers houden de ADS-multiplier op 1.0 voor consistentie. Bovendien is de standaard competitieve FOV in Apex meestal gemaximaliseerd op 110, wat de gevoeligheid visueel &#8220;anders&#8221; kan doen aanvoelen, zelfs als de afstand fysiek hetzelfde is.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"fortnite-converter\">Fortnite Gevoeligheidsomzetter<\/h2>\n\n\n\n<p>De Fortnite-gevoeligheidsconversie vereist zorgvuldige aandacht omdat de game een percentage-gebaseerde schuifregelaar gebruikt. Als je &#8220;7&#8221; invoert in de instellingen, leest de game-engine dit als 7.0% (of een interne multiplier van 0.07). De technische yaw-waarde is <strong>0.005555<\/strong>.<\/p>\n\n\n\n<p><strong>Instellingen om op te letten:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>X- en Y-as:<\/strong> Je kunt de horizontale (X) en verticale (Y) gevoeligheid afzonderlijk instellen. De meeste competitieve spelers houden deze op hetzelfde getal vergrendeld voor consistentie van de spiermemorie.<\/li>\n\n\n\n<li><strong>Richtmultiplier:<\/strong> Dit be\u00efnvloedt je richtsnelheid wanneer je de rechtermuisknop ingedrukt houdt.<\/li>\n<\/ul>\n\n\n\n<p>Top-pro&#8217;s zoals Peterbot of Bugha geven vaak de voorkeur aan ruwe eDPI-clusters tussen 40 en 56, waarbij ze snelheid voor bouwmechanismen verkiezen boven pure precisie-richtprecisie.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"cod-converter\">Call of Duty Gevoeligheidsomzetter \u2014 Modern Warfare III, Warzone &amp; Black Ops 6<\/h2>\n\n\n\n<p>Recente Call of Duty-titels, waaronder <em>Modern Warfare III<\/em>, <em>Warzone<\/em> en <em>Black Ops 6<\/em>, vereenvoudigen de zaken door een uniforme engine-standaard te delen. Ze gebruiken allemaal de <strong>0.0066<\/strong> yaw-waarde, die identiek is aan Overwatch 2.<\/p>\n\n<p>Bij het instellen van je muis, let op de &#8220;ADS Sensitivity Transition Timing.&#8221; Je hebt ook een keuze tussen de &#8220;Legacy&#8221; en &#8220;Relative&#8221; ADS muisgevoeligheidsmodi. De &#8220;Monitor Distance Coefficient&#8221; (standaard 1.33) is ontworpen om je richten te standaardiseren over verschillende zoomniveaus, zodat je consistent op doelen kunt richten, ongeacht de optiek die je gebruikt.<\/p>\n<!-- \/wp:post-content -->\n\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\" id=\"other-games\">Andere Populaire Shooters<\/h2>\n<!-- \/wp:heading -->\n\n<!-- wp:html -->\n<div style=\"grid-template-columns: 1fr 1fr; gap: 20px;\">\n<div>\n<h3 style=\"margin-top: 0;\">Rainbow Six Siege<\/h3>\n<p>Siege gebruikt Ubisoft&#8217;s &#8220;visuomotor gain&#8221; model met een standaard yaw van <strong>0.00573<\/strong>. De complexiteit hier ligt in de scopes; je hebt sliders voor 1.0x, 2.5x en meer, vari\u00ebrend van 1\u2013200. Deze tool berekent je standaard hipfire, wat dient als de basislijn voor alle scopes.<\/p>\n<\/div>\n<div>\n<h3 style=\"margin-top: 0;\">Battlefield 2042<\/h3>\n<p>Battlefield 2042, draaiend op de Frostbite engine, gebruikt een yaw van <strong>0.0066<\/strong>. Dit komt overeen met de CoD standaard. Consistent richten is hier essentieel om soepel over te schakelen tussen grootschalige voertuigoorlogvoering en intense infanteriegevechten.<\/p>\n<\/div>\n<\/div>\n<!-- \/wp:html -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\" id=\"h-team-fortress-2-quake-champions-sensitivity-converter\">Team Fortress 2 &amp; Quake Champions Gevoeligheidsconverter<\/h3>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Dit zijn de grootvaders van het moderne richten. Beide games draaien op klassieke engines (Source en id Tech) en gebruiken de standaard <strong>0.022<\/strong> yaw. Dit betekent dat je een directe 1:1 conversie hebt met CS2 en Apex Legends. Als je op zoek bent naar andere <a href=\"https:\/\/www.recharge.com\/blog\/en-gb\/ie\/steam-games-to-try\">populaire Steam games<\/a> om je ruwe richtvaardigheid te testen, blijven deze titels de beste trainingsgronden.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\" id=\"h-deadlock-sensitivity-converter\">Deadlock Gevoeligheidsconverter<\/h3>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Als Valve&#8217;s nieuwe MOBA-shooter hybride, werkt Deadlock op Source 2. De berekening is echter iets anders. Het gebruikt een yaw van <strong>0.044<\/strong>. Dit is precies <strong>2x<\/strong> de CS2 yaw. Als je CS2 gevoeligheid 2.0 is, moet je Deadlock gevoeligheid ingesteld worden op 1.0.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\" id=\"h-marvel-rivals-sensitivity-converter\">Marvel Rivals Gevoeligheidsconverter<\/h3>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Gebouwd op Unreal Engine 5, gebruikt Marvel Rivals een yaw van <strong>0.0066<\/strong>. Spelers die van Overwatch 2 komen, zullen de gevoeligheidsschaal identiek vinden (1:1 conversie), wat de overgang naar deze hero shooter naadloos maakt.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\" id=\"h-the-finals-sensitivity-converter\">The Finals Gevoeligheidsconverter<\/h3>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>The Finals, een Unreal Engine 5 shooter van Embark, gebruikt een gecorrigeerde yaw van <strong>0.0066<\/strong>. Competitieve gevoeligheid varieert hier typisch van 14\u201357 bij 800 DPI, sterk afhankelijk van of je de snelle &#8220;Light&#8221; klasse of de tragere &#8220;Heavy&#8221; klasse speelt.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\" id=\"h-destiny-2-sensitivity-converter\">Destiny 2 Gevoeligheidsconverter<\/h3>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Destiny 2 deelt de gemeenschappelijke <strong>0.0066<\/strong> yaw-waarde die ook in CoD en Overwatch te vinden is. Houd er rekening mee dat Destiny 2 een harde limiet heeft op de draaisnelheid tijdens het sprinten. Geen enkele toename van gevoeligheid kan deze enginebeperking opheffen.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\" id=\"h-halo-infinite-sensitivity-converter\">Halo Infinite Gevoeligheidsconverter<\/h3>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Halo Infinite gebruikt een yaw van <strong>0.022<\/strong>, wat overeenkomt met CS2 en Apex. Hoewel Halo traditioneel controller-dominant is, vertrouwen Mouse and Keyboard (MnK) spelers op deze 1:1 conversie om hun trackingvaardigheden van tactische shooters te behouden.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\" id=\"h-pubg-sensitivity-converter\">PUBG Gevoeligheidsconverter<\/h3>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>PUBG heeft een hipfire yaw van <strong>0.002222<\/strong>. De game beschikt over een zeer complex per-scope systeem (General, Vehicle, 2x, 3x, enz.). Deze tool converteert de &#8220;General\/Hipfire&#8221; gevoeligheid, die de basislijn vormt voor alle andere scopes.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\" id=\"h-escape-from-tarkov-sensitivity-converter\">Escape from Tarkov Gevoeligheidsconverter<\/h3>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Tarkov is uniek. De yaw is ongeveer <strong>0.125<\/strong>, maar je werkelijke draaisnelheid wordt be\u00efnvloed door je in-game bepantsering, helmstraffen en wapenergonomie. De converter geeft je <em>basislijn<\/em> gevoeligheid, maar je uitrusting zal veranderen hoe de muis aanvoelt in elke raid.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\" id=\"h-rust-sensitivity-converter\">Rust Gevoeligheidsconverter<\/h3>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Rust gebruikt een yaw van ongeveer <strong>0.00222<\/strong>. Vanwege frequente Unity updates, moet je deze resultaten behandelen als een startpunt voor fijnafstemming in plaats van een absolute regel.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\" id=\"h-fragpunk-sensitivity-converter\">FragPunk Gevoeligheidsconverter<\/h3>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>FragPunk, een van de <a href=\"https:\/\/www.recharge.com\/blog\/en-gb\/ie\/new-games-2025\">nieuwe games die in 2025 worden uitgebracht<\/a>, heeft een bevestigde yaw van <strong>0.0556<\/strong>. Deze afwijkende waarde vereist een precieze conversie als je van traditionele tactische shooters komt.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\" id=\"h-splitgate-2-sensitivity-converter\">Splitgate 2 Gevoeligheidsconverter<\/h3>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Voor het op portals gebaseerde shooter-vervolg is de bevestigde yaw <strong>0.01116<\/strong>. Dit zorgt ervoor dat je portal flicks nauwkeurig blijven.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\" id=\"technical-guide\">Wat is cm\/360 en waarom het belangrijk is voor richten<\/h2>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>cm\/360 (centimeters per 360-graden draai) is de enige &#8220;echte&#8221; universele taal van gevoeligheid. Een gevoeligheidsinstelling van &#8220;2.0&#8221; betekent iets anders in elke game engine, maar &#8220;34cm\/360&#8221; is overal dezelfde fysieke afstand op je muismat.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Door gevoeligheid in centimeters te meten, verwijder je de verwarring van game engines. Een speler met lage gevoeligheid zou bijvoorbeeld 50cm\/360 kunnen gebruiken (de muis 50cm bewegen om een volledige cirkel te maken), terwijl een speler met hoge gevoeligheid 20cm\/360 zou kunnen gebruiken.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\" id=\"h-understanding-edpi-your-real-sensitivity-number\">eDPI Begrijpen \u2014 Je Werkelijke Gevoeligheidsnummer<\/h2>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>eDPI staat voor &#8220;effective Dots Per Inch.&#8221; De formule is eenvoudig: <code>eDPI = Gevoeligheid \u00d7 DPI<\/code>.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Dit nummer stelt spelers met verschillende muizen in staat om hun &#8220;ware&#8221; in-game snelheid te vergelijken. Speler A, die 400 DPI en gevoeligheid 2.0 gebruikt, heeft bijvoorbeeld een eDPI van 800. Speler B, die 800 DPI en gevoeligheid 1.0 gebruikt, heeft <em>ook<\/em> een eDPI van 800. Hun richtsnelheid is identiek.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>eDPI is echter niet overdraagbaar tussen verschillende games. Een eDPI van 800 in CS2 is enorm verschillend van een eDPI van 800 in Valorant. Als je <a href=\"https:\/\/www.recharge.com\/blog\/en-gb\/ie\/build-a-cheap-gaming-pc\">je gaming PC setup optimaliseert<\/a>, is het kiezen van een standaard DPI (zoals 800 of 1600) de eerste stap naar consistent richten.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\" id=\"pro-settings\">Gevoeligheidsinstellingen van Pro Spelers (2025)<\/h2>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Zien wat de pro&#8217;s gebruiken kan je een goede basislijn geven. Merk de trend op naar 1600 DPI en lichtere muizen (onder 60g) in de afgelopen jaren.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:html -->\n<div>\n<table style=\"width: 100%; border-collapse: collapse; margin-bottom: 20px;\">\n<thead>\n<tr style=\"background-color: #000; color: #fff; text-align: left;\">\n<th style=\"padding: 12px; border: 1px solid #ddd;\">Naam Speler<\/th>\n<th style=\"padding: 12px; border: 1px solid #ddd;\">Spel<\/th>\n<th style=\"padding: 12px; border: 1px solid #ddd;\">DPI<\/th>\n<th style=\"padding: 12px; border: 1px solid #ddd;\">Gevoeligheid<\/th>\n<th style=\"padding: 12px; border: 1px solid #ddd;\">eDPI<\/th>\n<th style=\"padding: 12px; border: 1px solid #ddd;\">Muis<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">donk<\/td>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">CS2<\/td>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">800<\/td>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">1.25<\/td>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">1000<\/td>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">Logitech G Pro X SL 2<\/td>\n<\/tr>\n<tr style=\"background-color: #f9f9f9;\">\n<td style=\"padding: 10px; border: 1px solid #ddd;\">m0NESY<\/td>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">CS2<\/td>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">400<\/td>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">2.30<\/td>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">920<\/td>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">Logitech G Pro X SL 2<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">TenZ<\/td>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">Valorant<\/td>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">1600<\/td>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">0.175<\/td>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">280<\/td>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">Razer Viper V3 Pro<\/td>\n<\/tr>\n<tr style=\"background-color: #f9f9f9;\">\n<td style=\"padding: 10px; border: 1px solid #ddd;\">aspas<\/td>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">Valorant<\/td>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">800<\/td>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">0.40<\/td>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">320<\/td>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">Razer DeathAdder V3<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">ImperialHal<\/td>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">Apex Legends<\/td>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">800<\/td>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">1.3<\/td>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">1040<\/td>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">Logitech G Pro X SL<\/td>\n<\/tr>\n<tr style=\"background-color: #f9f9f9;\">\n<td style=\"padding: 10px; border: 1px solid #ddd;\">Bugha<\/td>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">Fortnite<\/td>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">800<\/td>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">6.0%<\/td>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">48<\/td>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">Logitech G Pro X SL<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">Stalk3r<\/td>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">Overwatch 2<\/td>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">800<\/td>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">7.00<\/td>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">5600<\/td>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">Logitech G Pro X SL 2<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<!-- \/wp:html -->\n\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\" id=\"h-how-the-conversion-formula-works\">Hoe de Conversieformule Werkt<\/h2>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Wij geloven in transparantie. De tool berekent uw instellingen met behulp van de standaardfysica van muisbeweging. De kernformule om de fysieke afstand van een 360-graden draai te vinden is:<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph {\"align\":\"center\"} -->\n<p class=\"has-text-align-center\">inches_per_360 = 360 \/ (sensitivity \u00d7 DPI \u00d7 yaw)<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>De converter keert deze formule om voor uw doelspel. Als u bijvoorbeeld een CS2-gevoeligheid van 2.0 bij 400 DPI omzet naar Valorant, ziet de berekening er zo uit: <code>2.0 \/ 3.1818 = 0.628<\/code>.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:separator -->\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n<!-- \/wp:separator -->\n\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\" id=\"faq\">Veelgestelde Vragen<\/h2>\n<!-- \/wp:heading -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\" id=\"h-how-do-i-convert-cs2-sensitivity-to-valorant\">Hoe converteer ik CS2-gevoeligheid naar Valorant?<\/h3>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Deel uw CS2-gevoeligheid door **3.1818**. U kunt ook eenvoudig de bovenstaande tool gebruiken voor een onmiddellijke, precieze berekening.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\" id=\"h-is-cm-360-the-same-as-edpi\">Is cm\/360 hetzelfde als eDPI?<\/h3>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Nee. eDPI is een digitaal getal specifiek voor \u00e9\u00e9n game-engine. cm\/360 is een fysieke meting van de muisafstand op uw bureau, die van toepassing is op de echte wereld.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\" id=\"h-does-sensitivity-conversion-work-for-scoped-ads\">Werkt gevoeligheidsconversie voor scoped\/ADS?<\/h3>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Deze converter berekent uw hipfire (algemene) gevoeligheid. De meeste spellen hebben afzonderlijke vermenigvuldigers voor ADS (Aim Down Sights) die schalen van deze hipfire-waarde, dus het correct instellen van de hipfire is de eerste stap.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\" id=\"h-can-i-convert-between-different-dpis\">Kan ik converteren tussen verschillende DPI&#8217;s?<\/h3>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Ja. Onze tool stelt u in staat om een andere DPI in te voeren voor uw doelspel. Het zal de vereiste gevoeligheid wiskundig aanpassen om uw cm<\/p>\n<!-- \/wp:paragraph -->","protected":false},"excerpt":{"rendered":"<p>Convert mouse sensitivity instantly between CS2, Valorant, Overwatch 2, and 20+ FPS games. Maintain muscle memory with accurate eDPI and cm\/360 calculations.<\/p>\n","protected":false},"author":46,"featured_media":38381,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"cos_headline_score":0,"cos_seo_score":0,"cos_headline_text":"","cos_headline_has_been_analyzed":false,"cos_last_analyzed_headline":[],"_hreflang_tags":"","footnotes":"","jetpack_publicize_message":"","jetpack_is_tweetstorm":false,"jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","enabled":false}}},"categories":[542],"tags":[],"class_list":["post-38958","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-digitale-levensstijl-nl-be"],"jetpack_publicize_connections":[],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.4 (Yoast SEO v21.0) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Muisgevoeligheid Converter Calculator voor 23 FPS Games<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.recharge.com\/blog\/nl-be\/be\/muisgevoeligheid-converter-calculator-voor-23-fps-games\" \/>\n<meta property=\"og:locale\" content=\"nl_BE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Muisgevoeligheid Converter Calculator voor 23 FPS Games\" \/>\n<meta property=\"og:description\" content=\"Convert mouse sensitivity instantly between CS2, Valorant, Overwatch 2, and 20+ FPS games. Maintain muscle memory with accurate eDPI and cm\/360 calculations.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.recharge.com\/blog\/nl-be\/be\/muisgevoeligheid-converter-calculator-voor-23-fps-games\" \/>\n<meta property=\"og:site_name\" content=\"Recharge Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-04-20T13:23:09+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-04-21T08:21:30+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/creativegroup-blog-prd-eu-west-1-recharge-blog.s3.eu-west-1.amazonaws.com\/blog\/wp-content\/uploads\/2026\/02\/27164737\/hero-image-en-110.png\" \/>\n\t<meta property=\"og:image:width\" content=\"900\" \/>\n\t<meta property=\"og:image:height\" content=\"491\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Mustafa Aybek\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.recharge.com\/blog\/nl-be\/be\/muisgevoeligheid-converter-calculator-voor-23-fps-games\",\"url\":\"https:\/\/www.recharge.com\/blog\/nl-be\/be\/muisgevoeligheid-converter-calculator-voor-23-fps-games\",\"name\":\"Muisgevoeligheid Converter Calculator voor 23 FPS Games\",\"isPartOf\":{\"@id\":\"https:\/\/www.recharge.com\/blog\/nl-be\/#website\"},\"datePublished\":\"2026-04-20T13:23:09+00:00\",\"dateModified\":\"2026-04-21T08:21:30+00:00\",\"author\":{\"@id\":\"https:\/\/www.recharge.com\/blog\/nl-be\/#\/schema\/person\/fe07f56ab88d14f3fd7cc1d3727b3bc0\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.recharge.com\/blog\/nl-be\/be\/muisgevoeligheid-converter-calculator-voor-23-fps-games#breadcrumb\"},\"inLanguage\":\"nl-BE\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.recharge.com\/blog\/nl-be\/be\/muisgevoeligheid-converter-calculator-voor-23-fps-games\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.recharge.com\/blog\/nl-be\/be\/muisgevoeligheid-converter-calculator-voor-23-fps-games#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.recharge.com\/blog\/nl-be\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Muisgevoeligheid Converter Calculator voor 23 FPS Games\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.recharge.com\/blog\/nl-be\/#website\",\"url\":\"https:\/\/www.recharge.com\/blog\/nl-be\/\",\"name\":\"Recharge Blog\",\"description\":\"Everything about online safety, smart spending &amp; your digital lifestyle.\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.recharge.com\/blog\/nl-be\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"nl-BE\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.recharge.com\/blog\/nl-be\/#\/schema\/person\/fe07f56ab88d14f3fd7cc1d3727b3bc0\",\"name\":\"Mustafa Aybek\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"nl-BE\",\"@id\":\"https:\/\/www.recharge.com\/blog\/nl-be\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/3cce4b63f035e5797940f6410bda57e8ab49eb7f8670c96fa692ca9eba585b49?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/3cce4b63f035e5797940f6410bda57e8ab49eb7f8670c96fa692ca9eba585b49?s=96&d=mm&r=g\",\"caption\":\"Mustafa Aybek\"},\"url\":\"https:\/\/www.recharge.com\/blog\/nl-be\/author\/mustafa-aybek\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Muisgevoeligheid Converter Calculator voor 23 FPS Games","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.recharge.com\/blog\/nl-be\/be\/muisgevoeligheid-converter-calculator-voor-23-fps-games","og_locale":"nl_BE","og_type":"article","og_title":"Muisgevoeligheid Converter Calculator voor 23 FPS Games","og_description":"Convert mouse sensitivity instantly between CS2, Valorant, Overwatch 2, and 20+ FPS games. Maintain muscle memory with accurate eDPI and cm\/360 calculations.","og_url":"https:\/\/www.recharge.com\/blog\/nl-be\/be\/muisgevoeligheid-converter-calculator-voor-23-fps-games","og_site_name":"Recharge Blog","article_published_time":"2026-04-20T13:23:09+00:00","article_modified_time":"2026-04-21T08:21:30+00:00","og_image":[{"width":900,"height":491,"url":"https:\/\/creativegroup-blog-prd-eu-west-1-recharge-blog.s3.eu-west-1.amazonaws.com\/blog\/wp-content\/uploads\/2026\/02\/27164737\/hero-image-en-110.png","type":"image\/png"}],"author":"Mustafa Aybek","twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.recharge.com\/blog\/nl-be\/be\/muisgevoeligheid-converter-calculator-voor-23-fps-games","url":"https:\/\/www.recharge.com\/blog\/nl-be\/be\/muisgevoeligheid-converter-calculator-voor-23-fps-games","name":"Muisgevoeligheid Converter Calculator voor 23 FPS Games","isPartOf":{"@id":"https:\/\/www.recharge.com\/blog\/nl-be\/#website"},"datePublished":"2026-04-20T13:23:09+00:00","dateModified":"2026-04-21T08:21:30+00:00","author":{"@id":"https:\/\/www.recharge.com\/blog\/nl-be\/#\/schema\/person\/fe07f56ab88d14f3fd7cc1d3727b3bc0"},"breadcrumb":{"@id":"https:\/\/www.recharge.com\/blog\/nl-be\/be\/muisgevoeligheid-converter-calculator-voor-23-fps-games#breadcrumb"},"inLanguage":"nl-BE","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.recharge.com\/blog\/nl-be\/be\/muisgevoeligheid-converter-calculator-voor-23-fps-games"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.recharge.com\/blog\/nl-be\/be\/muisgevoeligheid-converter-calculator-voor-23-fps-games#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.recharge.com\/blog\/nl-be"},{"@type":"ListItem","position":2,"name":"Muisgevoeligheid Converter Calculator voor 23 FPS Games"}]},{"@type":"WebSite","@id":"https:\/\/www.recharge.com\/blog\/nl-be\/#website","url":"https:\/\/www.recharge.com\/blog\/nl-be\/","name":"Recharge Blog","description":"Everything about online safety, smart spending &amp; your digital lifestyle.","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.recharge.com\/blog\/nl-be\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"nl-BE"},{"@type":"Person","@id":"https:\/\/www.recharge.com\/blog\/nl-be\/#\/schema\/person\/fe07f56ab88d14f3fd7cc1d3727b3bc0","name":"Mustafa Aybek","image":{"@type":"ImageObject","inLanguage":"nl-BE","@id":"https:\/\/www.recharge.com\/blog\/nl-be\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/3cce4b63f035e5797940f6410bda57e8ab49eb7f8670c96fa692ca9eba585b49?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/3cce4b63f035e5797940f6410bda57e8ab49eb7f8670c96fa692ca9eba585b49?s=96&d=mm&r=g","caption":"Mustafa Aybek"},"url":"https:\/\/www.recharge.com\/blog\/nl-be\/author\/mustafa-aybek"}]}},"jetpack_featured_media_url":"https:\/\/creativegroup-blog-prd-eu-west-1-recharge-blog.s3.eu-west-1.amazonaws.com\/blog\/wp-content\/uploads\/2026\/02\/27164737\/hero-image-en-110.png","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.recharge.com\/blog\/nl-be\/wp-json\/wp\/v2\/posts\/38958","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.recharge.com\/blog\/nl-be\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.recharge.com\/blog\/nl-be\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.recharge.com\/blog\/nl-be\/wp-json\/wp\/v2\/users\/46"}],"replies":[{"embeddable":true,"href":"https:\/\/www.recharge.com\/blog\/nl-be\/wp-json\/wp\/v2\/comments?post=38958"}],"version-history":[{"count":3,"href":"https:\/\/www.recharge.com\/blog\/nl-be\/wp-json\/wp\/v2\/posts\/38958\/revisions"}],"predecessor-version":[{"id":39144,"href":"https:\/\/www.recharge.com\/blog\/nl-be\/wp-json\/wp\/v2\/posts\/38958\/revisions\/39144"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.recharge.com\/blog\/nl-be\/wp-json\/wp\/v2\/media\/38381"}],"wp:attachment":[{"href":"https:\/\/www.recharge.com\/blog\/nl-be\/wp-json\/wp\/v2\/media?parent=38958"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.recharge.com\/blog\/nl-be\/wp-json\/wp\/v2\/categories?post=38958"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.recharge.com\/blog\/nl-be\/wp-json\/wp\/v2\/tags?post=38958"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}